Диагностика Mock-интервью
Главная · LLM: обучение и инференс

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

Как перенести качество большой модели в маленькую: knowledge distillation и мягкие метки, температура softmax, дистилляция рассуждений для LLM, pruning — и чем всё это отличается от квантизации.

Интуиция

Большая модель умна, но дорога: у неё выше латентность, ей нужны дорогие GPU, а на телефон её не поставить вовсе. Хочется модель в 10–100 раз меньше, которая на наших задачах отвечает почти так же. Просто обучить маленькую модель с нуля на тех же данных — можно, но результат будет хуже: маленькой модели трудно самой выкопать все закономерности из сырых данных.

Дистилляция знаний (knowledge distillation) предлагает другое: пусть большая модель-учитель (teacher) объяснит материал маленькой модели-ученику (student). Учитель уже переварил данные и умеет не только называть правильный ответ, но и показывать, насколько правдоподобны остальные варианты. Ученик, который учится на этих «объяснениях», усваивает больше, чем из голых правильных ответов, — как студент, которому преподаватель показывает ход решения, а не только ответ в конце задачника.

Как это работает: мягкие метки и температура

Жёсткая метка (hard label) — это one-hot: «на фото кошка», и всё. Учитель же выдаёт распределение вероятностей: «кошка 0.8, рысь 0.13, лиса 0.03, собака 0.02, волк 0.01». Такие мягкие метки (soft labels) несут дополнительную информацию: кошка похожа на рысь и совсем не похожа на волка. Хинтон назвал это тёмным знанием (dark knowledge) — структура ошибок учителя кодирует его понимание мира, и именно её перенимает ученик.

Проблема: у хорошо обученного учителя распределение почти one-hot — малые вероятности прижаты к нулю и не видны. Их «проявляет» температура дистилляции T: логиты учителя делят на T перед softmax:

pi = exp(zi / T) / Σj exp(zj / T)

При T = 1 — обычный softmax, почти one-hot. При T = 3–5 распределение размягчается, и отношения между классами становятся заметными для лосса. Итоговый лосс ученика — смесь двух слагаемых: KL-дивергенция между смягчёнными распределениями учителя и ученика плюс обычная кросс-энтропия на истинных метках:

L = α · T² · KL(pучительT ‖ pученикT) + (1 − α) · CE(y, pученик)

Множитель T² компенсирует то, что при большой температуре градиенты KL-слагаемого уменьшаются.

💡 Ключевая мысль Мягкие метки несут в разы больше информации на пример, чем один правильный класс: ученик получает от учителя не ответы, а «ход мыслей» — какие варианты почти верны, а какие абсурдны.

Проведи эксперимент: обучи ученика на жёстких метках — он выжмет из 40 точек около 82% на трейне, но на holdout получит лишь ~72%: границы изломаны, ученик выучил шум разметки в зонах перекрытия классов. Теперь переключись на мягкие метки при T ≈ 3–5 и обучи снова: точность на трейне честно упадёт, зато на holdout вырастет до ~78% — распределение учителя сгладило шум, и границы стали плавнее. Заодно посмотри на бары сверху: при T = 1 учитель почти one-hot, а при T = 5 видно его «знание» о том, что кот похож на рысь.

Дистилляция LLM: рассуждения переносимы

Для языковых моделей есть два основных режима. Logit-дистилляция — классика Хинтона потокенно: ученик приближает распределение учителя над словарём на каждом шаге; нужна общая токенизация (см. BPE) и доступ к логитам учителя. Sequence-level дистилляция проще и популярнее: учитель генерирует данные — ответы, диалоги, цепочки рассуждений, — а ученик дообучается на них обычным SFT. Именно так рассуждения DeepSeek R1 перенесли в модели 7B: учителем сгенерировали сотни тысяч примеров с развёрнутыми reasoning-цепочками и дообучили на них маленькие базовые модели — те стали рассуждать заметно лучше своих сверстников без всякого RL.

Pruning, квантизация — и чем они отличаются

Дистилляция — не единственный способ сжатия. Прунинг (pruning) удаляет часть модели: неструктурный обнуляет отдельные «неважные» веса (маска разреженности, ускорение только на специальном железе), структурный выбрасывает целые головы внимания, каналы или слои — модель реально становится меньше и быстрее. Квантизация уменьшает точность чисел: fp16 → int8/int4 (разобрана в теме про инференс).

Классический вопрос собеседования — про разницу. Квантизация сжимает числа той же самой модели: архитектура и знания не меняются, просто каждый параметр кодируется грубее. Дистилляция переносит знание в другую архитектуру — обычно намного меньшую, с иным числом слоёв и размерностью. Они не конкурируют, а комбинируются: сначала дистиллируют 70B в 8B, потом квантуют 8B в int4 — итоговое сжатие перемножается.

Практика: каскады, edge и потолок ученика

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

⚠️ Подводный камень Дистилляция — не бесплатное сжатие «всего». Перенести в 7B все способности большой модели нельзя — не хватит ёмкости; хорошо переносится узкий срез (домен, формат, стиль рассуждений). И следите за температурой: при слишком большой T распределение учителя стремится к равномерному, и «тёмное знание» растворяется в шуме.
🎤 На собеседовании
  • «Чем дистилляция отличается от квантизации?» — квантизация сжимает числа той же модели (fp16 → int4), дистилляция переносит знание в другую, меньшую архитектуру через обучение на предсказаниях учителя; их комбинируют.
  • «Зачем температура в дистилляции?» — размягчить softmax учителя: при T = 1 распределение почти one-hot, а при T = 3–5 видны отношения между классами — то самое dark knowledge.
  • «Как перенести reasoning в маленькую модель?» — sequence-level дистилляция: учитель генерирует цепочки рассуждений, ученик дообучается на них SFT (так сделали дистилляты R1).
  • «Может ли ученик превзойти учителя?» — на распределении учителя нет, это потолок; выигрыш — в цене и латентности, и на узком домене разрыв минимален.