피드로 돌아가기
How to train a new language model from scratch using Transformers and Tokenizers
Hugging Face BlogHugging Face Blog
AI/ML

Hugging Face가 Transformers와 Tokenizers 라이브러리를 개선해 맨 처음부터 언어 모델을 학습하는 프로세스를 단순화

How to train a new language model from scratch using Transformers and Tokenizers

2020년 2월 14일12intermediate

Context

새로운 언어로 된 언어 모델을 처음부터 학습하려면 토크나이저 학습, 모델 아키텍처 구성, 사전학습, 다운스트림 태스크 파인튜닝 등 복잡한 단계를 거쳐야 했다. 특히 저자원 언어의 경우 이 프로세스가 진입장벽이 높았다.

Technical Solution

  • Byte-level BPE 토크나이저 학습: 단일 바이트 알파벳에서 시작하여 모든 단어를 토큰으로 분해 가능하게 함으로써 <unk> 토큰 제거
  • 언어별 최적화 토크나이저: Esperanto 고유의 발음 기호(ĉ, ĝ, ĥ, ĵ, ŝ, ŭ)를 네이티브로 인코딩하여 시퀀스 길이 약 30% 단축
  • 토크나이저 학습 스크립트 간소화: ByteLevelBPETokenizer를 통해 파일 경로와 어휘 크기만 지정하면 약 5분 내에 토크나이저 생성 완료
  • 마스크 언어 모델링을 통한 사전학습: run_language_modeling.py 스크립트에서 --model_name_or_path 값을 None으로 설정하여 처음부터 학습 지원
  • 다운스트림 태스크 파인튜닝: 토큰 분류 태스크(품사 태깅)에 대해 run_ner.py 스크립트를 재사용하여 3 에포크, 배치 크기 64 GPU당으로 수렴 달성
  • 모델 공유 자동화: transformers-cli upload를 통해 학습된 모델을 huggingface.co에 등록하고 AutoModel.from_pretrained()로 로드 가능하도록 구현

Impact

인코딩된 시퀀스 평균 길이가 GPT-2 사전학습 토크나이저 대비 약 30% 감소. 토크나이저 학습 시간 약 5분.

Key Takeaway

저자원 언어도 통일된 라이브러리와 스크립트를 활용하면 처음부터 맞춤형 언어 모델을 단계적으로 구축할 수 있으며, 토크나이저를 언어 특성에 맞춰 최적화하면 이후 모델 학습 효율을 크게 향상시킬 수 있다.


새로운 언어나 저자원 언어에 대해 언어 모델을 개발하는 팀에서 Transformers 라이브러리의 ByteLevelBPETokenizer와 run_language_modeling.py를 조합하면, 토크나이저 학습(약 5분) → 사전학습 → 파인튜닝의 전체 파이프라인을 통합된 인터페이스로 구현할 수 있으며, 특히 언어 고유의 문자와 발음 기호를 네이티브로 인코딩함으로써 시퀀스 길이를 30% 단축하고 모델 효율을 높일 수 있다.

원문 읽기