Дистилляция звучит как что-то из исследовательских лабораторий, но на практике это инженерная задача с понятными этапами. Если вы решили обучить компактную модель на 29M параметров и передать ей знания от более крупной, начинать стоит не с обучения, а с диагностики. Первые шаги — осмотр слоёв, пристрелочные тесты и выбор базовой модели — занимают немного времени, но экономят дни работы в дальнейшем. Разберём, как подойти к этому этапу без лишних затрат и типичных ошибок.
Зачем вообще смотреть на слои
Прежде чем что-то обучать, полезно понять, как устроена выбранная архитектура и что вы собираетесь дистиллировать. Компактная модель на 29M параметров — это не «маленькая копия» большой, а отдельная система со своими ограничениями по ёмкости. Просмотр слоёв даёт ответы на базовые вопросы: сколько блоков, какая размерность скрытого состояния, есть ли отдельные слои эмбеддингов и как устроен выход. Это не праздное любопытство: от этих параметров зависит, какие слои учителя имеет смысл использовать как ориентир и где вообще поместится передаваемая информация.
Практический шаг здесь простой: выгрузите конфигурацию модели и пройдитесь по ней вручную. Посмотрите на число слоёв, размерность, тип нормализации и наличие позиционных кодировок. Запишите эти значения в отдельный файл — они понадобятся, когда вы будете сопоставлять выходы учителя и ученика. Типичная ошибка — сразу переходить к коду обучения, не зафиксировав базовые характеристики. Потом оказывается, что размерности не совпадают, и приходится переделывать весь пайплайн.
Пристрелочные тесты: что и зачем проверять
Пристрелочные тесты — это быстрые проверки, которые показывают общее направление работы. Их задача не измерить качество финальной модели, а понять, где ученик уже справляется, а где проваливается. На этом этапе не нужны большие датасеты и долгие прогоны: достаточно небольшого набора примеров, на которых видно поведение модели.
- Проверка выходов: подайте несколько простых запросов и посмотрите, что модель выдаёт до обучения. Это базовая линия, с которой вы будете сравнивать результат.
- Сравнение с учителем: возьмите те же запросы и прогоните через крупную модель. Разница в ответах покажет, что именно предстоит передать.
- Проверка размерностей: убедитесь, что скрытые состояния ученика и учителя можно сопоставить напрямую или через проекцию.
- Замер скорости: оцените, сколько времени занимает один прогон. Это поможет спланировать бюджет на обучение.
Важно не увлекаться: пристрелочные тесты должны занимать часы, а не недели. Если вы ловите себя на желании собрать полноценный бенчмарк на этом этапе, остановитесь. Задача — определить направление, а не доказать гипотезу.
Как выбрать базовую модель для дистилляции
Выбор учителя — один из ключевых моментов. Здесь работает несколько критериев, и каждый из них стоит проверить до начала работы.
- Совместимость архитектуры: учитель и ученик должны допускать сопоставление внутренних представлений. Если архитектуры слишком разные, дистилляция усложняется.
- Доступность: модель должна быть доступна для локального запуска или через API с понятными условиями использования.
- Качество на вашей задаче: учитель должен действительно хорошо справляться с тем, чему вы хотите научить ученика. Нет смысла дистиллировать знания из модели, которая на ваших примерах отвечает хуже.
- Стоимость прогонов: если учитель работает через API, посчитайте, сколько будет стоить обработка датасета. Это частая статья расходов, которую забывают учесть.
Типичная ошибка — брать самую крупную доступную модель «на всякий случай». Большая модель не всегда лучше для конкретной задачи, а стоимость её прогонов может оказаться неоправданной. Другая ошибка — выбирать учителя без проверки на пристрелочных тестах. Даже известная модель может плохо работать на узкой предметной области.
Что зафиксировать перед переходом к следующему этапу
Первый этап короткий, но его результаты должны быть оформлены. Запишите конфигурацию ученика, список проверенных моделей-учителей с результатами пристрелочных тестов, выбранного кандидата и обоснование выбора. Зафиксируйте базовые метрики и примеры ответов до обучения — они понадобятся для сравнения. Если этого не сделать, на следующих этапах придётся возвращаться назад и восстанавливать контекст.
Отдельно стоит подумать о том, какие слои вы планируете использовать для дистилляции. Не обязательно брать все: иногда достаточно выходных представлений или нескольких промежуточных слоёв. Решение зависит от задачи и от того, насколько ученик способен вместить передаваемую информацию. Для модели на 29M параметров это ограничение особенно ощутимо, поэтому лучше заранее определить приоритеты, чем пытаться передать всё сразу.
И последнее: не пытайтесь оптимизировать то, что ещё не работает. На этом этапе достаточно рабочего пайплайна, который запускается и даёт воспроизводимые результаты. Скорость, качество и тонкая настройка — задачи следующих шагов. Первый этап нужен для того, чтобы понять, куда двигаться, и не потратить ресурсы впустую.