GigaToken ускоряет токенизацию текста для нейросетей в тысячу раз

Разработчик Марсель Рёд опубликовал открытую библиотеку GigaToken, инструмент для токенизации текста, то есть разбиения текста на фрагменты перед обучением языковых моделей. По заявлению автора, она работает примерно в 1000 раз быстрее HuggingFace Tokenizers, хотя оба инструмента написаны на многопоточном Rust. Библиотека распространяется как обычный Python-пакет: устанавливается командой pip install gigatoken.
В приведённых автором тестах на Apple M4 Max (16 ядер) GigaToken обработал 11,9 ГБ текста за 1,432 секунды (8327 МБ/с, 1887 млн токенов в секунду), тогда как HuggingFace Tokenizers на том же файле показал 6,15 МБ/с, разница в 1353 раза. На двухпроцессорном сервере с AMD EPYC 9565 (144 ядра) GigaToken достиг 24 532 МБ/с против 24,8 МБ/с у HuggingFace, разница в 989 раз. Тестовым набором служил файл owt_train.txt (11,9 ГБ) из датасета OpenWebText, который считается репрезентативным приближением текста, полученного при очистке Common Crawl. При скорости, показанной на EPYC, теоретически можно токенизировать весь Common Crawl (по оценке автора, около 130 триллионов токенов, что часто называют «всем интернетом») меньше чем за 6,5 часа. Корректность результатов проверялась сверкой: в тестовом прогоне все 20 401 документ совпали с эталонным выводом HuggingFace Tokenizers.
Библиотеку можно использовать в двух режимах. Режим совместимости подключается почти без изменения существующего кода и работает как прямая замена для HuggingFace Tokenizers или tiktoken, но из-за необходимости точно повторять их вывод теряет часть скорости. Собственный API Gigatoken даёт максимальную производительность, читая данные напрямую из Rust и обходя часть накладных расходов Python, но требует немного переписать код. Библиотека поддерживает токенизаторы, используемые большинством современных открытых моделей: семейства Llama 3/3.1/3.2/3.3, Qwen 2/2.5/3, DeepSeek V3/R1/V4, GLM 4/5, Nemotron 3, Kimi K2, Phi-4-mini, Gemma 3/4 и другие.
Основной технический приём, оптимизация под SIMD-инструкции процессора той части токенизации (предварительного разбиения текста), которая обычно выполняется через движок регулярных выражений, плюс минимизация ветвлений в коде и тщательная оптимизация кэша уже встречавшихся фрагментов слов. По словам автора, кэширование в этой задаче, сложная проблема, потому что кэш быстро растёт, а распределение фрагментов имеет длинный «хвост» редких вариантов. Дополнительный прирост даёт минимизация взаимодействия с Python и отказ от обмена данными между потоками.
Автор прямо указывает на нерешённые ограничения: перенос итерации по объектам Python в Rust пока опирается на упрощённый интерфейс ABI3, а не на версии-специфичные API CPython, из-за чего теряется часть скорости, по предварительным оценкам, здесь можно выиграть ещё до 2 раз. Запись результатов напрямую в файл через собственный API пока не реализована. Токенизатор WordPiece не поддерживается вовсе. Токенизаторы на основе SentencePiece (в основном используются в моделях Google и BERT-подобных архитектурах) оптимизированы слабо и остаются в списке низкоприоритетных задач. Поддержка Windows почти не тестировалась, автор рекомендует использовать WSL.
В разделе о применении ИИ автор указывает, что основная часть кода написана вручную, это видно по истории коммитов в git, а ИИ применялся точечно на финальных этапах: для реализации пользовательского API, расширения совместимости (перенос реализаций предварительного разбиения текста на новые токенизаторы), переноса SIMD-стратегий между наборами инструкций AVX512, AVX2 и NEON, финальной профилировки (по словам автора, отсюда взялось около 4-кратного дополнительного ускорения за счёт устранения ветвлений и улучшения иерархии кэша), а также рефакторинга и переиспользования кода.
Ключевые факты
- GigaToken, открытая Python-библиотека для токенизации текста от разработчика Марселя Рёда; устанавливается командой pip install gigatoken.
- В тестах автора она обрабатывает данные в 989, 1353 раза быстрее HuggingFace Tokenizers, хотя тот тоже написан на многопоточном Rust; корректность подтверждена сверкой 20 401 документа с эталонным выводом.
- На сервере с AMD EPYC 9565 скорость достигает около 24,5 ГБ/с, теоретически весь массив Common Crawl (порядка 130 трлн токенов) можно токенизировать меньше чем за 6,5 часа.
- Работает в двух режимах: как прямая замена HuggingFace Tokenizers и tiktoken почти без изменения кода, либо через собственный API для максимальной скорости.
- Поддерживает токенизаторы большинства актуальных открытых моделей (Llama, Qwen, DeepSeek, GLM, Gemma, Kimi K2, Phi-4-mini и другие); WordPiece не поддерживается, SentencePiece оптимизирован слабо, поддержка Windows почти не тестировалась.
Почему это важно
Токенизация, обязательный и часто узкое место в подготовке данных для обучения и дообучения языковых моделей: перед тем как модель увидит текст, его нужно разбить на токены, а объёмы обучающих корпусов измеряются терабайтами. Ускорение этого шага в сотни-тысячу раз, если оценка автора подтвердится на практике, переводит подготовку датасетов масштаба всего Common Crawl из категории многодневной задачи в задачу на часы.
Кому это важно
Инструмент адресован инженерам и исследователям, которые сами обучают или дообучают языковые модели и готовят для этого большие текстовые корпуса, а также разработчикам, уже использующим HuggingFace Tokenizers или tiktoken в своих пайплайнах, для них GigaToken заявлен как замена без переписывания архитектуры кода.
Как это применить
Библиотека ставится командой pip install gigatoken; для быстрой проверки без установки автор приводит команду через uvx. Есть два пути внедрения: режим совместимости, подключаемый почти без правок к существующему коду на HuggingFace Tokenizers или tiktoken, и собственный API Gigatoken для максимальной скорости, требующий чуть больше изменений. Поддерживаются токенизаторы моделей Llama, Qwen, DeepSeek, GLM, Nemotron, Kimi K2, Phi-4-mini, Gemma и ряда других.
Можно ли доверять
Проект открытый, и в тестах автора вывод GigaToken сверялся с эталонным выводом HuggingFace Tokenizers на 20 401 документе без расхождений, что подтверждает корректность результатов на этом наборе проверок. Автор отдельно и прозрачно раскрывает роль ИИ в разработке: основной код написан вручную, ИИ применялся точечно, для части API, расширения совместимости, переноса SIMD-кода и финальной профилировки. При этом это проект одного разработчика без участия крупных компаний или независимого стороннего аудита, а заявленные цифры, это тесты самого автора на выбранных им конфигурациях.
Риски и подводные камни
Автор сам перечисляет незакрытые ограничения: токенизатор WordPiece не поддерживается вообще, токенизаторы на основе SentencePiece (используются в моделях Google и BERT-подобных архитектурах) оптимизированы слабо, запись результатов напрямую в файл через собственный API ещё не реализована, а поддержка Windows почти не тестировалась, рекомендуется WSL. Часть заявленного ускорения также упирается в технические ограничения текущей реализации (упрощённый интерфейс ABI3 вместо версии-специфичных API CPython), которые автор планирует устранить позже.
«Скорее всего нет! Несмотря на достаточно широкое тестирование, я не смог учесть каждый сценарий использования, поэтому сообщайте обо всём найденном через GitHub Issue, я разберусь как можно скорее.»
— Марсель Рёд, автор GigaToken