Проблема: «мусорный» словарь в доменных моделях
Обычно токенизатор наследуется от базовой модели (например, Qwen3-4B или Gemma) и остается неизменным при дообучении. Для универсальных моделей это нормально, но для узкоспециализированных систем это создает два вида потерь:
- Фрагментация: Токенизатор разбивает часто повторяющиеся в домене фразы (например, JSON-обертки ответов или юридические клише) на множество мелких токенов.
- Избыточность: Модель вычисляет вероятности для десятков тысяч токенов, которые в данной задаче никогда не используются (например, китайские иероглифы в португальском текстовом анализаторе).
В случае с автоматическим оценщиком эссе на португальском языке (база Qwen3-4B) размер словаря составлял 151 669 записей. При генерации ответа модель каждый шаг обрабатывала весь этот массив, что критично замедляет инференс.
Почему стандартные методы не работают
Существующие подходы, такие как Fast Vocabulary Transfer (FVT) или Multi-Word Tokenization (MWT), оптимизируют словарь, исходя из частоты встречаемости токенов. Однако это не учитывает реальную стоимость вычислений:
- Чтение дешевле генерации: На этапе prefill (ввод) веса читаются один раз, а на этапе decode (генерация) — каждый шаг. Генерация одного токена стоит примерно в 7.4 раза дороже, чем чтение входного токена (из-за ограничений пропускной способности памяти GPU и работы с KV-cache).
- Стоимость LM Head: Последний слой модели (LM head) содержит матрицу параметров размером, равной размеру словаря. Уменьшение словаря снижает объем данных, которые нужно перемещать в памяти при каждом шаге генерации.
Решение VocabX: оптимизация по стоимости, а не по частоте
Метод VocabX, представленный в статье Dharma-AI, решает две ключевые проблемы одновременно:
- Приоритет генерации: Токены, которые модель пишет (в ответе), имеют вес, умноженный на коэффициент стоимости (в примере — 7.4x), по сравнению с токенами, которые она читает (в промпте).
- Двухуровневая оптимизация: Метод работает как на уровне подслов (sub-word), так и на уровне целых фраз (macros), объединяя повторяющиеся конструкции в единые токены.
Результаты и метрики
Применение VocabX к модели Qwen3-4B в задаче оценки эссе позволило сократить размер словаря с ~152 000 до ~65 000 записей. Это привело к значительному снижению затрат на инференс без изменения архитектуры базовой модели или данных обучения.
| Параметр | До VocabX (Базовый Qwen3-4B) | После VocabX | Эффект |
|---|---|---|---|
| Размер словаря (Vocab Size) | 151 669 | ~65 000 | Сокращение ~57% |
| Стоимость инференса | База | Снижена | Экономия до 77% |
| Критерий отбора токенов | Частота (Frequency) | Стоимость вычислений (Cost) | Фокус на этапе Decode |
| Оптимизируемые слои | Обычно один уровень | Sub-word + Macros | Комплексное сжатие |
Почему это важно для индустрии
Для разработчиков, использующих малые языковые модели (SLM) в продакшене, VocabX предлагает способ радикально снизить затраты на inference без необходимости перехода на более мощное «железо» или переобучения модели с нуля. Оптимизация токенизации под конкретную задачу (домен) становится таким же важным шагом, как и fine-tuning весов.
Источник: Hugging Face blog ↗
