huggingface/tokenizers

💥 Fast State-of-the-Art Tokenizers optimized for Research and Production

🤖 huggingface/tokenizers란 무엇인가요?

Rust로 작성된 고성능 오픈소스 토큰화 라이브러리로, Python, Node.js 및 (계획 중인) 기타 언어용 바인딩을 제공합니다. BPE, Unigram, WordPiece, WordLevel 등 현대의 거의 모든 LLM에서 사용하는 토크나이저를 구현하며, 원시 텍스트를 모델이 이해할 수 있는 정수 ID로 변환(및 역변환)하는 업계 표준 엔진을 목표로 합니다.


🚀 퀵 스타트 (Python)

pip install --pre tokenizers   # pre‑release contains the new v1 API
from tokenizers import Tokenizer

# Load a pretrained tokenizer (e.g. Llama‑3.1) directly from the Hub
tokenizer = Tokenizer.from_pretrained("meta-llama/Llama-3.1-8B")

ids = tokenizer.encode("Hello, y'all! How are you 😁 ?").ids
print(ids)
# → [128000, 9906, 11, 379, 65948, 0, 2650, 527, 499, 27623, 223, 949]

print(tokenizer.decode([15339, 1917]))   # → "hello world"

⚙️ 핵심 설계

  • Rust 코어 – 참조 구현체로, 필수적인 SIMD 의존성 없이 매우 작은(gzipped 기준 약 325 KB) 바이너리로 컴파일됩니다.
  • 모듈화된 Crates – 추론(tk‑encode), 사전 토큰화(bitcannon), JSON 로딩(tk‑serialize), 레거시 변환(tk‑convert), 학습(tk‑train) 및 개발 전용 비트맵 생성기를 위한 독립적인 서브 crate.
  • 제로 카피, 배치 지향 API – 향후 v1 기능에는 인코딩된 ID에 대한 제로 카피 뷰와 배치 인코딩 API가 포함됩니다.
  • 하드웨어 인식 경로 – ARM의 NEON, 최신 x86의 AVX‑512/VBMI 및 이식 가능한 폴백을 지원합니다. SIMD는 선택 사항이며 정확성을 위해 필수는 아닙니다.

📦 언어 바인딩

언어 상태
Rust (참조) ✅
Python ✅
Node.js ✅
C / C++ / Java / Go 🚧 계획 중
Ruby 커뮤니티 유지 관리 외부 저장소

🛣️ 로드맵 하이라이트 (v1.0.0)

  • Python API – 전체 학습, 배치 인코딩, 오프셋 출력, 패딩 및 스트림 디코딩 기능 복구.
  • 성능 – bitnorm 정규화, 더 빠른 학습, 향상된 디코딩 속도, 단어 캐시 최적화.
  • GPU 준비 프로토타입 – tk‑devices를 통해 대규모 배치 디코딩을 위해 어휘와 ID를 장치에 유지하는 방법 탐색.
  • 추가 바인딩 – C/C++ 코어 이후 Java, Go, Swift 등.

📈 성능 및 풋프린트

  • 라이브러리의 crate 크기는 gzipped 기준 325 KB이며, 전체 Rust 소스 코드(선택적 SIMD 커널 포함)는 1 MB 미만입니다.
  • 벤치마크(링크된 대화형 데모 참조)에 따르면, 모든 주요 사전 토큰화 정규식에서 CPU 기반 기존 토크나이저보다 뛰어난 성능을 보여줍니다.

📚 문서 및 리소스


🎯 누가 사용해야 하나요?

  • 모델 개발자: 학습이나 추론을 위해 빠르고 정확한 토큰화가 필요한 분.
  • 프로덕션 서비스: LLM을 대규모로 서비스하며 작고 의존성 없는 런타임을 원하는 분.
  • 연구원: 사용자 정의 토크나이저를 구축하거나 새로운 사전 토큰화 알고리즘을 실험하는 분.

📜 라이선스

MIT – 저장소의 LICENSE 파일을 참조하세요.

관련

  • Dispatch
  • 프로젝트
  • Dispatch
  • Dispatch
  • Dispatch