marcelroed/gigatoken

Language model tokenization at GB/s

해결하는 문제

Gigatoken은 언어 모델링을 위한 대규모 데이터셋 준비 과정에서 발생하는 텍스트 토크나이징 병목 현상을 제거하도록 설계되었습니다. HuggingFace의 tokenizers 및 tiktoken과 같은 표준 라이브러리는 기가바이트 또는 테라바이트 단위의 텍스트를 처리할 때 수십 배 느려질 수 있지만, Gigatoken은 고성능 대안을 제공합니다.

작동 원리

Rust로 작성된 Gigatoken은 표준 정규 표현식 기반의 프리토크나이징을 커스텀 SIMD 최적화 구현으로 교체하여 속도를 달성합니다. 분기를 최소화하고 스레드 간 통신을 줄이며, 프리토큰 매핑을 위해 고도로 최적화된 캐시 계층을 사용하여 일반적인 단어의 중복 인코딩을 방지합니다. HuggingFace 및 tiktoken과의 호환 모드를 통해 바로 교체하여 사용할 수도 있고, 파일에서 데이터를 직접 읽어 최대 성능을 내는 자체 네이티브 API를 사용할 수도 있습니다.

대상 사용자

주로 다양한 CPU 아키텍처(x86 및 ARM)에서 방대한 양의 텍스트 데이터(예: Common Crawl)를 토크나이징해야 하는 대규모 언어 모델 학습 분야의 연구자 및 엔지니어를 대상으로 합니다.

주요 특징

  • 극한의 처리량: 고코어 CPU에서 최대 24 GB/s의 속도에 도달할 수 있으며, HuggingFace 토크나이저 대비 최대 1000배의 속도 향상을 제공합니다.
  • 폭넓은 호환성: Llama 3, Qwen, DeepSeek, GPT-2를 포함한 광범위한 인기 토크나이저를 지원합니다.
  • 유연한 API: 고속 네이티브 API와 기존 HF 및 tiktoken 워크플로우를 위한 호환 래퍼를 모두 제공합니다.
  • 하드웨어 최적화: AVX512, AVX2, NEON을 사용하는 SIMD 전략을 통해 최신 CPU에 최적화되었습니다.

관련

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