Марсель Рёд (Marcel Rød) выпустил проект Gigatoken — новый токенизатор для языковых моделей, который в сотни и тысячи раз быстрее стандартных решений от HuggingFace и OpenAI. На тестовом файле owt_train.txt (11,9 ГБ) на двух сокетах AMD EPYC 9565 (144 ядра) GPT-2 через Gigatoken выдаёт 24,53 ГБ/с — против 24,8 МБ/с у HF tokenizers и 36,0 МБ/с у tiktoken. Разница — 989× и 681× соответственно. На Apple M4 Max (16 ядер) разрыв ещё больше: 8,79 ГБ/с против 6,9 МБ/с — ускорение 1268×.
Gigatoken написан на Rust, но в отличие от HF tokenizers и tiktoken, которые уже работают многопоточно, он дополнительно оптимизирует претокенизацию через SIMD-инструкции (AVX512, AVX2, NEON), минимизирует ветвления и кэширует сопоставления претокенов — если слово уже встречалось, его закодированные токены подтягиваются из кэша. Это ключевой прирост скорости, поскольку кэширование в этой области считается сложной задачей из-за быстрого роста и длиннохвостого распределения претокенов.
Библиотека поддерживает почти все популярные токенизаторы — от Llama, Qwen, DeepSeek до Phi и GPT — и может работать как полноценная замена HuggingFace Tokenizers или Tiktoken без изменения кода (режим совместимости). Однако в этом режиме часть производительности теряется из-за накладных расходов на совместимость. Полную скорость даёт собственный API Gigatoken, который читает данные напрямую в Rust, обходя лишние прослойки.
Слабее всего оптимизированы SentencePiece-токенизаторы (Gemma, Mistral 7B, CodeLlama). Они ускоряются лишь в 7–20 раз — всё ещё быстрее, но до гигабайтов в секунду не дотягивают. Марсель приоритетом считает BPE-токенизаторы. WordPiece пока не поддерживается, файловые приёмники не реализованы, на Windows библиотека почти не тестировалась (рекомендуется WSL).
Автор утверждает, что токенизатор оптимизирован под все комбинации CPU и токенизаторов, и результаты стабильны на современных x86 и ARM. На EPYC 9565 Gigatoken может обработать весь Common Crawl (порядка 130 триллионов токенов) за 6,5 часов. Код в основном написан без ИИ, AI использовался только на финальных этапах для реализации пользовательского API, расширения совместимости и портирования SIMD-стратегий.