Gigatoken: BPE Tokenizer in Rust Encodes Text at 24.53 GB/s, Up to 989x Faster Than HuggingFace Tokenizers
OpenAI
Hugging Face
Google/DeepMind
Meta
Alibaba/Qwen
DeepSeek
Moonshot AI
NVIDIA
Microsoft
Allen Institute for AI
Answer.AI
Mistral
Stanford PhD student Marcel Roed released Gigatoken, a BPE tokenizer in Rust with Python bindings, achieving speeds of up to 24.53 GB/s on a 144-core AMD EPYC, 989x faster than HuggingFace Tokenizers and 681x faster than tiktoken. The speedup comes from a handwritten SWAR pre-tokenizer and pre-token caching.
Gigatoken은 BPE(byte-pair encoding) 방식을 사용하는 토크나이징 라이브러리로, Rust로 작성되었고 Python 바인딩을 제공합니다. MIT 라이선스로 출시되었으며, 스탠퍼드 대학원생 마르셀 뢰드(Marcel Rød)가 개발했습니다. 버전 0.9.0은 PyPI에서 설치 가능합니다(pip install gigatoken). 두 개의 144코어 AMD EPYC 9565가 탑재된 시스템에서 GPT-2 대상 벤치마크 결과, Gigatoken은 24.53GB/s의 데이터 처리 속도를 기록했습니다. 비교 대상으로 OpenAI의 tiktoken은 36.0MB/s, HuggingFace tokenizers는 24.8MB/s로, Gigatoken이 각각 681배, 989배 더 빠릅니다. Apple M4 Max(16코어)에서는 8.79GB/s(HuggingFace 대비 1268배, tiktoken 대비 140배), AMD Ryzen 7 9800X3D에서는 6.27GB/s(각각 106배, 68배)의 속도를 보였습니다. 이러한 속도 향상은 BPE 병합 루프 자체의 개선보다는, SWAR(SIMD Within A Register) 기법을 활용한 수제 프리토크나이저와 프리토큰 캐싱 덕분입니다. 원래 정규 표현식 기반 프리토크나이저는 약 47MB/s의 속도를 보였으나, 수동 유한 상태 기계, SWAR, ILP(명령어 수준 병렬성)를 적용한 이중 커서 등의 최적화를 통해 1049MB/s로 22.3배 향상되었습니다. 지원되는 토크나이저 제품군은 총 23개로, GPT-2, GPT-OSS, Llama 3/4, Qwen 2-3.6, DeepSeek V3/R1/V4, GLM 4/5, Kimi K2, Nemotron 3, Phi-4, OLMo 2/3, ModernBERT, Gemma, Mistral 등이 포함됩니다. 두 가지 모드가 제공됩니다: 호환 모드(HuggingFace/tiktoken과 정확히 동일한 출력을 보장하지만 속도 향상은 200~300배에 그침)와 네이티브 모드(최대 속도). SentencePiece 토크나이저는 7~22배 속도 향상을 보이며, WordPiece는 지원되지 않습니다. KrabArena(4 vCPU Intel Xeon)에서의 독립적인 재현 실험에서는 tiktoken 대비 26.2배, tokenizers 대비 83.4배의 속도 향상이 확인되었습니다.
출처: MarkTechPost —
원문
