피드로 돌아가기
Tokenization in Transformers v5: Simpler, Clearer, and More Modular
Hugging Face BlogHugging Face Blog
Backend

Hugging Face가 Transformers v5에서 토크나이저를 파이썬 2개 파일(slow/fast)에서 1개 파일로 통합하고 아키텍처를 명시적으로 노출해 커스터마이제이션 가능성 향상

Tokenization in Transformers v5: Simpler, Clearer, and More Modular

2025년 12월 18일9intermediate

Context

Transformers v4에서는 토크나이저가 직렬화된 파일에 숨겨진 아키텍처와 모델별 slow/fast 2개 파일 구조로 관리되어 검사 및 커스터마이제이션이 어려웠다. 사용자가 토크나이저를 블랙박스로 취급할 수밖에 없는 상황이 지속되었다.

Technical Solution

  • 파일 구조 통합: 모델별 tokenization_X.py와 tokenization_X_fast.py 2개 파일을 단일 tokenization_X.py로 통합
  • 기본 백엔드 표준화: Rust 기반 TokenizersBackend를 기본값으로 설정하여 Python/Rust 분리 제거
  • 아키텍처 명시화: Normalizer, Pre-tokenizer, Model, Post-processor, Decoder 각 컴포넌트를 클래스 정의에서 직접 접근 가능하게 공개 (tokenizer.normalizer, tokenizer.pre_tokenizer 등)
  • 부모 클래스 재설계: PreTrainedTokenizer, PreTrainedTokenizerFast에서 TokenizersBackend(또는 SentencePieceBackend, PythonBackend)로 변경하여 백엔드별 명확한 계층 구조 제공
  • 학습 템플릿 제공: tokenizer.train(files=[...])으로 파이프라인을 수동 구성하지 않고 직접 커스텀 토크나이저 학습 가능

Key Takeaway

토크나이저를 학습된 가중치와 분리된 아키텍처로 재설계하면 PyTorch처럼 신경망 아키텍처와 학습된 가중치를 분리하는 방식으로 투명성과 모듈화를 확보할 수 있다. 이는 토크나이저를 검사, 커스터마이제이션, 처음부터 학습하는 과정을 단순화한다.


LLM 토크나이저를 커스터마이징하거나 특정 도메인 데이터셋에 맞게 새로 학습해야 하는 엔지니어는 Transformers v5에서 tokenizer._tokenizer.normalizer, tokenizer._tokenizer.model 등의 공개 속성을 통해 각 파이프라인 단계를 직접 검사하고 수정할 수 있으며, tokenizer.train()으로 파이프라인 구성 없이 즉시 학습을 시작할 수 있다.

원문 읽기