Суть эксперимента: дистилляция 8B → 0.6B для обогащения чанков
Дистилляция 8B-модели в Qwen3-0.6B на Mac с MLX для задачи обогащения чанков финансовых документов дала парадоксальный результат. Ученик достиг 100% точности категоризации секций против 98.4% у учителя. Faithfulness - метрика фактической верности суммаризации - рухнул с 0.98 до 0.73. Модель научилась угадывать структуру, но разучилась передавать факты.
Второй удар - few-shot примеры. 14 из 21 суммаризации дистиллированной модели описывали компанию из контекстного примера, а не целевую фирму из документа. Маленькая модель не обобщает - она копирует ближайший шаблон. Дистилляция переносит стиль письма, а не знания. Модель копирует привычки учителя, но не его намерения.
Эксперимент подтверждает: перед дистилляцией нужен аудит учителя. Без него вы рискуете получить быструю и точную по форме модель, которая врёт по содержанию. Разберём методологию, цифры и практические выводы.
Методология: как мы проводили дистилляцию на Mac с MLX
Почему MLX на Mac?
MLX - фреймворк Apple для машинного обучения на Apple Silicon. Он использует unified memory архитектуру: GPU и CPU работают с одним пулом памяти без копирования данных. Для дистилляции это критично - учитель на 8B параметров и ученик на 0.6B должны одновременно помещаться в оперативную память.
На MacBook Pro с чипом M3 Max (36 ГБ unified memory) дистилляция проходит локально, без облачных GPU. Никаких затрат на аренду инстансов. Никакой утечки данных за пределы устройства. Для финансового домена с чувствительными документами это решающий фактор. Локальный пайплайн на MLX даёт полный контроль над процессом: от подготовки данных до инференса.
Задача обогащения чанков: что именно мы дистиллировали
Задача - обогащение чанков финансовых документов. На вход подаётся фрагмент документа: отчёт о прибылях, раздел рисков, примечания к отчётности. На выходе модель должна сгенерировать два элемента: суммаризацию чанка (1-3 предложения) и категориальную метку секции (например, «риски», «финансовые показатели», «корпоративное управление»).
Это узкий навык. Модель не должна рассуждать о макроэкономике или писать эссе. Она выполняет структурированное извлечение: сжать текст и классифицировать. Учитель - 8B-модель - справлялся с этим на уровне faithfulness 0.98. Казалось бы, идеальный кандидат для дистилляции: задача простая, метрики высокие, домен узкий.
Процесс дистилляции строился на генерации синтетических данных учителем. 8B-модель обработала корпус финансовых чанков, сгенерировав пары «вход - целевой выход». На этих парах обучалась Qwen3-0.6B. Объём данных и гиперпараметры подбирались под задачу, но ключевой момент - качество разметки учителя. И здесь скрывалась ловушка.
Результаты: точность секции 100%, но faithfulness рухнул
Метрики на тестовой выборке из 200 чанков:
| Метрика | Учитель (8B) | Ученик (0.6B) |
|---|---|---|
| Точность секции | 98.4% | 100% |
| Faithfulness | 0.98 | 0.73 |
| Загрязнение few-shot | 0/21 | 14/21 |
Точность секции выросла до 100%. Ученик безошибочно определял, к какому разделу относится чанк. Но faithfulness - мера того, насколько суммаризация соответствует фактам из исходного текста - упал на 25 процентных пунктов. Модель выдавала грамматически правильные, структурно безупречные суммаризации, которые противоречили содержанию чанка.
Почему faithfulness упал: модель копирует привычки, а не намерения
Дистилляция сжимает модель. 0.6B параметров физически не могут хранить ту же информацию, что 8B. При обучении на синтетических данных ученик ищет самые сильные паттерны в ответах учителя. И находит стиль: структуру предложений, характерные формулировки, типовые переходы. Фактическая точность требует запоминания деталей документа - а это слабый сигнал по сравнению со стилистическими паттернами.
Конкретный пример из эксперимента. Исходный чанк описывал снижение выручки компании А на 12% из-за валютных колебаний. Учитель суммаризировал: «Выручка компании А сократилась на 12% год к году, основное давление оказали валютные курсы». Ученик выдал: «Компания А показала рост выручки на 8%, драйвером выступил потребительский сегмент». Структура ответа - та же. Факты - противоположные. Модель выучила, что в финансовых отчётах обсуждают выручку и драйверы. Она подставила правдоподобные, но неверные цифры.
Это ключевой инсайт: дистилляция переносит форму, а не содержание. Учитель-8B может иметь привычку писать «выручка сократилась» или «драйвером выступил». Ученик копирует эти речевые обороты, но не способен привязать их к конкретным цифрам из документа. Faithfulness падает, потому что модель галлюцинирует в стиле учителя.
Эффект загрязнения few-shot: когда примеры вредят
Вторая часть эксперимента проверяла, помогут ли few-shot примеры улучшить качество. В промпт добавлялись 2-3 пары «чанк - правильная суммаризация» перед целевым запросом. Логика: модель увидит образец и точнее выполнит задачу.
Результат оказался разрушительным. 14 из 21 суммаризации дистиллированной 0.6B-модели описывали компанию из few-shot примера, а не компанию из целевого чанка. Модель просто копировала имя компании и факты из контекстного примера. Например, если few-shot содержал суммаризацию про «Ромашку», то 0.6B выдавала «Ромашка показала рост EBITDA на 15%» для любого входного чанка - хоть про металлургический холдинг, хоть про банк.
Учитель-8B не демонстрировал такого поведения. Он использовал few-shot примеры как ориентир по формату, но не переносил факты.
Почему 0.6B так чувствительна к контексту
У маленьких моделей ограниченная ёмкость внимания. 0.6B параметров - это примерно 12-16 слоёв трансформера. Механизм внимания в таких моделях не может одновременно удерживать few-shot пример и целевой чанк как независимые сущности. Происходит «смешивание»: модель воспринимает весь контекст как единый источник фактов. Ближайший по позиции текст - few-shot пример - получает наибольший вес внимания. Модель честно «суммаризирует» то, что видит последним.
Этот эффект известен в литературе как context contamination, но его редко проверяют на дистиллированных моделях. Эксперимент показал: для 0.6B few-shot не просто бесполезен, он вреден. Модель не обобщает паттерн задачи - она запоминает контент примера и воспроизводит его.
Уроки эксперимента: аудит учителя и выбор стратегии дистилляции
Как аудировать учителя перед дистилляцией
Эксперимент выявил системную проблему: учитель-8B имел скрытые дефекты, которые усилились при дистилляции. Модель иногда упрощала формулировки в ущерб точности, использовала шаблонные фразы, пропускала редкие термины. На уровне faithfulness 0.98 это казалось незначительным. После сжатия в 0.6B эти дефекты стали доминирующим поведением.
Методика аудита учителя перед дистилляцией:
- Замер faithfulness на репрезентативной выборке. Не на той, на которой учитель учился. Минимум 100 примеров из целевого домена. Faithfulness ниже 0.95 - красный флаг: дефекты усилятся.
- Анализ ошибок по категориям. Разбейте ошибки на типы: галлюцинации цифр, пропуск сущностей, неверная атрибуция, стилистические упрощения. Каждый тип ошибки учителя будет усилен учеником.
- Оценка стилистического разнообразия. Если учитель использует 5-7 шаблонных конструкций для 80% ответов - ученик выучит только их. Низкое разнообразие стиля = высокий риск копирования формы без содержания.
- Проверка на few-shot чувствительность. Прогоните учителя с 2-3 few-shot примерами. Если он начинает путать сущности из примеров с целевыми - дистилляция умножит этот эффект.
Аудит занимает 2-3 часа, но экономит дни на отладку сломанной дистиллированной модели. Модель копирует привычки, а не намерения - проверьте привычки до того, как запустите обучение.
Альтернативы few-shot для маленьких моделей
Если few-shot неприменим для 0.6B, что использовать? Три проверенных альтернативы:
- Zero-shot с жёстким шаблоном вывода. Вместо примеров задайте структуру ответа: «Секция: [название]. Суммаризация: [одно предложение, только факты из текста]». Маленькая модель лучше следует структурным ограничениям, чем извлекает паттерны из примеров.
- Дообучение на целевом домене. 200-500 реальных примеров «чанк - суммаризация», размеченных вручную или учителем с верификацией, дают больший прирост faithfulness, чем few-shot. Модель запоминает домен, а не примеры.
- Увеличение размера модели. Переход с 0.6B на 1.5B или 3B резко снижает эффект загрязнения. Если задача требует few-shot, минимальный порог для эксперимента - 3B параметров.
Дистилляция узкого навыка - мощный инструмент. Дистилляция как фактор успеха китайских AI-моделей - тема, где мы разбирали, насколько этот метод определяет рыночные позиции. Эксперимент с 0.6B добавляет важный нюанс: дистилляция работает, когда вы контролируете метрики качества, а не только точность классификации.
Ограничения эксперимента и следующие шаги
Эксперимент проведён на одной задаче - обогащение чанков финансовых документов - и одной паре моделей: 8B-учитель и Qwen3-0.6B-ученик. Результаты нельзя автоматически переносить на другие домены или архитектуры. Медицинские тексты, юридические документы, техническая документация могут показать другую динамику faithfulness.
Платформа - Mac с MLX. На других связках (Linux + vLLM, Windows + ONNX) поведение few-shot загрязнения может отличаться из-за разной реализации attention-механизмов. Требуется кросс-платформенная валидация.
Направления для дальнейших исследований:
- Дистилляция с учётом faithfulness. Добавление штрафа за расхождение фактов в функцию потерь. Ученик должен оптимизировать одновременно точность секции и фактическую верность суммаризации.
- Методы борьбы с контекстным загрязнением. Проверка механизмов явного разделения контекста: специальные токены-разделители, маскирование внимания между few-shot примерами и целевым чанком.
- Масштабирование эксперимента. Повтор на цепочке 8B → 1.5B → 0.6B для проверки, на каком этапе сжатия происходит обвал faithfulness.
Для тех, кто работает со спекулятивным декодированием, схожая проблематика поднималась в разборе оптимизации Qwen3-8B на Intel Core Ultra. Draft-модель на 0.6B ускоряет генерацию, но качество её предсказаний критически зависит от домена.
Эксперимент показал главное: дистилляция узкого навыка - это не сжатие знаний, а сжатие поведения. Модель учится действовать как учитель, а не знать то, что знает учитель. Разница между «действовать» и «знать» измеряется падением faithfulness с 0.98 до 0.73. Проверяйте обе метрики. Аудируйте учителя. И держите few-shot подальше от маленьких моделей.