COMRAD404 / GLOSSARY

Дистилляция моделей

Дистилляция моделей — это перенос поведения большой нейросети в меньшую, чтобы ускорить вывод и снизить стоимость эксплуатации с умеренной потерей качества.

Дистилляция моделей — это способ перенести поведение большой, медленной или дорогой модели в более компактную модель-«студента», обучая её не только на правильных ответах, но и на выходах сильной модели-«учителя». На практике метод нужен, когда важны задержка, память, энергопотребление или стоимость вывода. Он подходит не всегда: если учитель сам ошибается, если студент слишком мал для задачи, если данные в продакшене заметно отличаются от данных обучения или если требуется сохранить точную калибровку вероятностей, дистилляция может дать слабый результат.

Простыми словами

Представьте опытного специалиста и новичка. Новичок учится не только по инструкции, но и по тому, как именно специалист рассуждает в похожих случаях. В машинном обучении это выглядит так: большая модель уже умеет решать задачу хорошо, а маленькую модель обучают повторять её ответы.

Ключевая идея в том, что обычная разметка даёт «жёсткий» ответ: например, для изображения правильный класс только один. Учитель же выдаёт распределение вероятностей: не просто «это кошка», а «кошка — 0.82, лиса — 0.11, собака — 0.05». Эти дополнительные сигналы показывают, какие классы похожи и где границы неопределённости. Для студента это часто полезнее, чем одна бинарная метка.

Поэтому дистилляция — не просто сжатие весов. Это перенос структуры знаний из одной модели в другую. Студент может иметь другую архитектуру, меньше параметров и работать на другом оборудовании, но при этом сохранять значимую часть качества учителя.

Как это работает

Базовая схема

  1. Обучают или берут готовую сильную модель-учителя.
  2. Пропускают через неё обучающие данные и получают выходы: логиты, вероятности или промежуточные представления.
  3. Обучают модель-студента по смешанной функции потерь: на истинных метках и на сигналах учителя.
  4. Проверяют компромисс между качеством, скоростью и размером модели.

Что именно передают от учителя

  • Мягкие вероятности — самый классический вариант. Студент повторяет распределение классов учителя.
  • Логиты — значения до softmax. Иногда с ними удобнее работать, чем с вероятностями.
  • Промежуточные признаки — скрытые представления, карты внимания, эмбеддинги.
  • Поведение на неразмеченных данных — полезно, если размеченных данных мало, а сырых много.

Температура и смешанная потеря

В классической дистилляции используют параметр temperature. Он делает распределение учителя более «мягким»: различия между классами становятся менее резкими. Это помогает студенту увидеть, какие варианты учитель считает близкими, а не только победивший класс.

Обычно функция потерь состоит из двух частей:

  • потеря по истинным меткам;
  • потеря по выходам учителя.

Вес этих частей подбирают экспериментально. Если слишком доверять учителю, студент унаследует его систематические ошибки. Если почти игнорировать учителя, эффект дистилляции будет слабым.

Типовые варианты

Вариант Что передаётся Когда полезен
Response-based Вероятности или логиты Классификация, базовый сценарий
Feature-based Промежуточные признаки Когда важна структура представлений
Relation-based Отношения между объектами или токенами Сложные архитектуры, метрическое обучение
Self-distillation Сигнал от более сильной версии той же модели Когда отдельного учителя нет

Для языковых моделей дистилляция может включать повторение распределений по токенам, attention-паттернов, скрытых состояний и поведения на специально собранных промптах. Но в LLM это дороже и сложнее, чем в обычной классификации: объём выходов велик, а деградация качества на редких навыках заметнее.

Зачем нужно

Главная цель — получить более дешёвую и быструю модель без полного переобучения большой архитектуры под продакшен-ограничения.

  • Снижение задержки. Маленькая модель отвечает быстрее.
  • Меньше памяти. Это важно для мобильных устройств, edge-среды и плотного размещения сервисов.
  • Снижение стоимости вывода. Меньше вычислений — ниже эксплуатационные затраты.
  • Упрощение деплоя. Компактную модель легче масштабировать и обновлять.
  • Передача знаний с неразмеченных данных. Учитель может разметить большой массив данных своими предсказаниями.

На практике дистилляцию часто комбинируют с другими методами: pruning, quantization, архитектурной оптимизацией, кешированием или изменением длины контекста. Сама по себе дистилляция не гарантирует лучшую скорость: если студент выбран неудачно, он может оказаться компактнее по параметрам, но плохо оптимизироваться на конкретном железе.

Пример

Допустим, у команды есть BERT-подобная модель для классификации обращений в поддержку по 40 категориям. Учитель даёт высокое качество, но слишком дорог в онлайне: на пике сервис не укладывается в целевую задержку. Задача — упростить модель, не потеряв критично качество на редких классах.

  1. Команда берёт сильную модель-учителя и фиксирует её версию.
  2. На обучающем и дополнительном неразмеченном корпусе прогоняет учителя и сохраняет логиты по 40 классам.
  3. Выбирает студента: более компактный трансформер или даже CNN/MLP над эмбеддингами, если требования к качеству умеренные.
  4. Обучает студента по смеси двух потерь: кросс-энтропия по истинным меткам и KL-дивергенция по логитам учителя с температурой.
  5. Отдельно проверяет качество на редких категориях, калибровку вероятностей и скорость на целевом сервере.

Что здесь важно practically:

  • Если учитель путает две похожие категории, студент почти наверняка унаследует эту ошибку.
  • Если не включить неразмеченные данные, студент увидит слишком мало вариантов формулировок и эффект будет слабее.
  • Если измерять только среднюю accuracy, можно пропустить деградацию на редких, но бизнес-критичных классах.
  • Если сравнивать модели не на целевом железе, выигрыш по скорости может оказаться иллюзией.

В хорошем сценарии команда получает модель с заметно меньшей задержкой и умеренной потерей качества. В плохом — студент становится быстрее, но теряет устойчивость на длинных текстах, редких категориях и нестандартных формулировках. Поэтому дистилляцию всегда оценивают не только по среднему метрику, но и по продакшен-срезам.

Заблуждения и ограничения

Частые заблуждения

  • «Дистилляция всегда улучшает маленькую модель». Нет. Если студент слишком слабый или данные плохие, выигрыша может не быть.
  • «Это просто сжатие модели». Не совсем. Сжатие может быть чисто техническим, а дистилляция — это обучение по сигналам учителя.
  • «Если учитель очень большой, студент обязательно будет хорошим». Размер учителя не компенсирует ошибки данных, плохую постановку задачи и неподходящую архитектуру студента.
  • «Можно дистиллировать один раз и забыть». При смене домена, данных или продуктовых требований студента часто приходится переучивать.

Ограничения метода

  • Передача ошибок учителя. Студент копирует не только силу, но и смещения учителя.
  • Потеря редких навыков. Особенно заметно в больших языковых моделях и мультимодальных системах.
  • Требовательность к подбору гиперпараметров. Температура, веса потерь, выбор слоёв для согласования — всё это влияет на итог.
  • Неочевидный выигрыш на железе. Меньше параметров не всегда означает меньше реальную задержку.
  • Проблемы с калибровкой. Студент может стать увереннее или менее уверен в ответах, чем нужно.

Когда метод не подходит

Дистилляция плохо подходит, если у вас нет сильного учителя, если домен быстро меняется, если задача требует максимального качества без компромиссов или если студент должен уметь то, чего учитель сам не умеет. Для safety-критичных сценариев одной дистилляции недостаточно: после неё нужны отдельные проверки на устойчивость, калибровку и граничные случаи.

Частые вопросы

Всегда ли студент меньше учителя?

Обычно да, но не обязательно. Главное — чтобы студент был дешевле или удобнее в эксплуатации. Иногда архитектура меняется не только ради размера, но и ради совместимости с конкретной платформой.

Можно ли дистиллировать без разметки?

Частично да. Учитель может генерировать мягкие метки для неразмеченных данных. Но без набора с реальной разметкой трудно проверить, не накапливает ли студент ошибки учителя.

Чем дистилляция отличается от pruning и quantization?

Pruning удаляет параметры или связи, quantization снижает точность представления весов, а дистилляция обучает отдельную модель по сигналам учителя. Их часто комбинируют.

Подходит ли дистилляция для LLM?

Да, но с оговорками. Метод работает, однако становится дороже в обучении и чаще теряет редкие способности, длинный контекст и качество инструкционного поведения. Нужна тщательная оценка на реальных сценариях использования.

Что важнее всего при внедрении?

Не средний offline-метрик, а проверка на целевом железе, на продакшен-данных и на критичных срезах: редкие классы, длинные запросы, калибровка, задержка и стабильность после обновлений.

Связанные понятия

  • Teacher model / student model — роли в процессе передачи знаний.
  • Logits — выходы модели до нормализации softmax.
  • Temperature scaling — параметр смягчения распределения.
  • KL-divergence — частая мера различия между распределениями учителя и студента.
  • Model compression — более широкая область, куда входят pruning, quantization и distillation.
  • Self-distillation — вариант, где модель учится у собственной более сильной версии или у своих промежуточных слоёв.
  • Pseudo-labeling — использование предсказаний модели как разметки; похоже по механике, но не тождественно дистилляции.

Читайте также

LINKS