Абсолютное лидерство в скорости
Новый open-source проект Gigatoken (версия 0.9.0, лицензия MIT) демонстрирует беспрецедентные результаты на бенчмарках. На серверной конфигурации с процессором AMD EPYC 9565 (144 ядра, двухсокетная система) библиотека обрабатывает корпус owt_train.txt (11.9 ГБ) со скоростью 24.53 ГБ/с. Для сравнения, традиционные решения показывают следующие результаты на том же железе:
| Токенизатор | Скорость (GB/s) | Ускорение относительно Gigatoken |
|---|---|---|
| Gigatoken (Native) | 24.53 | — |
| OpenAI tiktoken | 0.036 | 681x |
| HuggingFace tokenizers | 0.0248 | 989x |
На потребительском оборудовании разрыв также огромен. На Apple M4 Max (16 ядер) Gigatoken выдает 8.79 ГБ/с (в 1268 раз быстрее HuggingFace), а на AMD Ryzen 7 9800X3D — 6.27 ГБ/с (в 106 раз быстрее HF). Эти цифры подтверждают, что проблема не в архитектуре CPU, а в алгоритмической эффективности.
Секрет производительности: SWAR и ILP
Прирост скорости достигается не за счет оптимизации самого цикла слияния BPE, а благодаря радикальному пересмотру этапов предтокенизации и кэширования. Автор проекта отказался от стандартных regex-движков в пользу ручного написания конечных автоматов и использования специфичных низкоуровневых техник:
- SWAR (SIMD Within A Register): Вместо архитектурно-зависимых NEON-инструкций используется арифметика без ветвлений, позволяющая проверять 8 байт одновременно через 64-битное целое число.
- Двукурсорная эксплуатация ILP: Для преодоления задержек (latency) в цепочке вычислений применяются два независимых курсора, что позволяет процессору интерливингировать потоки выполнения на пустых портах.
- Кэширование предтокенизации: Введен механизм хранения результатов для часто встречающихся слов, что критично при работе с длиннохвостыми распределениями токенов.
Поддержка экосистемы и совместимость
Gigatoken поддерживает 23 семейства токенизаторов, включая GPT-2, Llama 3-4, Qwen 2-3.6, DeepSeek V3/R1/V4, Gemma, Mistral и другие. Библиотека доступна через PyPI и состоит на 66.2% из кода на Rust и на 33.3% на Python.
Существует два режима работы:
- Native API: Максимальная скорость (указанные выше цифры). Rust читает файлы напрямую, минимизируя накладные расходы Python.
- Compatibility Mode: Обертка над существующими токенизаторами HuggingFace или tiktoken. Гарантирует полную парность выходных данных, но скорость снижается до 200–300x ускорения из-за накладных расходов на создание списков и конвертацию строк в байты в Python.
Ограничения и независимая проверка
Не все форматы выигрывают одинаково. Токенизаторы на базе SentencePiece (например, Gemma, CodeLlama) показывают ускорение в 7–10 раз, а WordPiece пока не поддерживается. Независимая репродукция тестов на платформе KrabArena на виртуальной машине Intel Xeon подтвердила тренд: Gigatoken превзошел tiktoken в 26.2 раза, а HuggingFace tokenizers — в 83.4 раза на 4-ядерной конфигурации.
Источник: MarkTechPost ↗
