Мой блог
Как специализация словаря языковых моделей снижает стоимость инференса на 77%
Оптимизация параметров генерации для узких доменов часто затрагивает только веса и обучающие датасеты, в то время как токенизатор остается неизменным. Специализация словаря языковых моделей позволяет кардинально сократить издержки на вычисления в реальных задачах без дообучения базовой архитектуры.
В производственных системах стандартные универсальные словари создают избыточную нагрузку. В материале рассматривается методика VocabX, которая перестраивает токенизацию с учетом реальной стоимости токенов и снижает затраты на инференс на 77% на примере специализированного автоматического оценщика эссе.
Универсальные словари и их скрытые недостатки
Передовые языковые модели обрабатывают текст с помощью токенов, которые формируются токенизатором. Базовые версии таких инструментов обучаются на массивных многоязычных массивах данных, включающих исходный код, юридические контракты и тексты на разных языках. Для универсального применения такой подход оправдан, однако при настройке модели под конкретную узкую задачу он порождает существенные потери.
Первый недостаток заключается в фрагментации. Токенизатор разбивает на множество мелких фрагментов именно те конструкции, которые домен использует чаще всего. Например, в автоматических средствах проверки работ каждый ответ начинается с одинаковых структур разметки, стандартных фраз и оценочных категорий. В юридических документах ту же роль играют шаблонные пункты, а в коде — идентификаторы. В результате стандартная последовательность расходует больше токенов, чем требуется, а система оплачивает каждый из них при любом обращении.
Второй недостаток связан с избыточностью. Словарь содержит десятки тысяч элементов, которые целевая область применения никогда не задействует. При этом нейросеть вычисляет вероятности для всех этих компонентов на каждом шаге генерации. Модель, настроенная на проверку академических тестов на определенном языке, практически не пишет иероглифами, но все равно рассчитывает их веса на каждой итерации.
Разница между чтением и генерацией текста
Простой подсчет количества токенов не отражает реальную стоимость работы системы, поскольку генерация обходится дороже обработки входящих данных. Процесс инференса делится на фазы префилла и декодирования. На первом этапе сеть обрабатывает весь ввод за один проход, где веса из памяти видеокарты многократно переиспользуются, а главным ограничением выступают вычислительные мощности. На этапе генерации модель выдает ответ по одному токену, а каждый шаг требует повторного обращения к памяти для чтения весов и кэша внимания.
В протестированных сценариях генерация одного выходного токена обходится дороже обработки входного в несколько раз. Дополнительным фактором затрат выступает сам словарь. Последний слой модели преобразует внутреннее состояние в оценки для каждого возможного токена, удерживая отдельную строку параметров для каждой записи. В компактных моделях этот слой занимает заметную долю параметров, причем матрица умножается целиком на каждом шаге генерации. Добавление неиспользуемых элементов увеличивает объем данных, перемещаемых в памяти при каждом цикле.
Ограничения существующих решений
Существующие методы адаптации словарного состава, такие как перенос токенов, токенизация из нескольких слов и расширение базовых алгоритмов на месте, борются с фрагментацией, но обладают двумя ограничениями. Они выбирают новые элементы по частоте встречаемости, а не по реальной стоимости обслуживания, избавляясь от распространенных во вводе конструкций вместо дорогих элементов ответа. Кроме того, эти подходы работают только на одном уровне, настраивая разбиение слов или объединяя целые фразы, но не решая обе задачи одновременно.
Методология VocabX
Разработанный подход решает указанные проблемы за счет изменения критериев оптимизации, одновременной работы с подсловами и макротокенами, а также статистической оценки редких элементов.
Учет стоимости вместо частоты
Алгоритм оценивает не количество сэкономленных элементов, а итоговую экономию времени и ресурсов. Каждый устраненный токен умножается на стоимость того поля, где он располагается: системного промпта, сообщения пользователя или ответа модели. За счет этого элементы, удаленные из генерируемой части, получают больший приоритет.
Многоуровневая оптимизация
Система перестраивает разбиение доменных слов на подсловы и одновременно находит повторяющиеся длинные фрагменты, включая полные строки и структуры с разметкой вроде JSON, превращая их в единые макротокены. Поиск таких последовательностей осуществляется с помощью специализированных автоматических анализаторов повторяющихся элементов.
Оценка невидимых элементов
Для определения эффективности кандидатов алгоритм использует статистические оценки на основе поведения видимых аналогов. Это позволяет возвращать в процедуру оптимизации редкие в тестовой выборке, но частые в общем корпусе конструкции, повышая общую степень сжатия текста.
Результаты применения в реальной задаче
Сравнение семи версий модели с одинаковыми параметрами, но разными токенизаторами показало, что сокращение словаря и оптимизация структуры ответов позволили уменьшить средний объем ответа модели с 350 до 101 токена. Измеренные затраты на инференс снизились на 77%, при этом качество оценки, объединяющее точность проверки и отсесеивание нерелевантных текстов, выросло с 0,703 до 0,810.
Тестирование метода на других публичных доменах, включая медицинские и научные публикации, новости, контракты и программный код на Python, подтвердило превосходство такого подхода над стандартными методами компрессии во всех исследованных комбинациях.
