Gigatoken: токенизатор на Rust, обрабатывающий текст со скоростью 24,53 ГБ/с — до 989 раз быстрее HuggingFace Tokenizers

OpenAIOpenAI Hugging FaceHugging Face
Исследователь из Стэнфорда Марсель Рёд выпустил токенизатор Gigatoken с открытым исходным кодом (лицензия MIT), который на 144-ядерном AMD EPYC обрабатывает текст со скоростью 24,53 ГБ/с — это в 989 раз быстрее HuggingFace Tokenizers и в 681 раз быстрее tiktoken. Ускорение достигается за счёт рукописного SWAR-претокенизатора и кэширования претокенов, а не оптимизации BPE-цикла.
Marcel Rød, аспирант Стэнфорда, выпустил под лицензией MIT библиотеку Gigatoken — токенизатор BPE на Rust с Python-привязками. В бенчмарке на GPT-2 с корпусом 11,9 ГБ owt_train.txt и 144-ядерным AMD EPYC 9565 достигнута скорость 24,53 ГБ/с. Для сравнения: tiktoken от OpenAI показывает 36,0 МБ/с, HuggingFace Tokenizers — 24,8 МБ/с (ускорение в 681x и 989x соответственно). На Apple M4 Max (16 ядер) скорость — 8,79 ГБ/с, на AMD Ryzen 7 9800X3D — 6,27 ГБ/с. Gigatoken поддерживает 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. Ускорение достигнуто не за счёт лучшего BPE-цикла, а двумя методами: рукописным претокенизатором с техникой SWAR (обработка 8 байт за один такт через u64) и кэшированием уже закодированных слов. В режиме совместимости с HuggingFace точность выхода сохраняется, но скорость падает до 200–300x из-за накладных расходов Python. Бенчмарк подтверждён независимым тестом на KrabArena: на 4-ядерном Intel Xeon Gigatoken достиг 277,8 МБ/с против 10,62 МБ/с у tiktoken и 3,33 МБ/с у tokenizers. SentencePiece-токенизаторы ускоряются лишь в 7–22 раза, WordPiece не поддерживается.
Сокращения
BPE = Byte-Pair Encoding — кодирование пар байтов
SWAR = SIMD Within A Register — SIMD внутри регистра
SIMD = Single Instruction, Multiple Data — один поток команд, множество данных
NEON = ARM NEON (Advanced SIMD extension) — ARM NEON (расширение SIMD для ARM)
ILP = Instruction-Level Parallelism — параллелизм на уровне инструкций
LLVM = Low Level Virtual Machine — низкоуровневая виртуальная машина
PyPI = Python Package Index — индекс пакетов Python
Источник: MarkTechPost — оригинал

Наши прошлые публикации по теме

Есть свежие новости