AI-инжиниринг
Synthetic Data: GPT-4 обучает Llama - как работает data distillation
Цели урока
- Понять почему реальных размеченных данных всегда не хватает и сколько они стоят
- Освоить Self-Instruct и Evol-Instruct как методы генерации датасетов
- Разобраться как фильтровать синтетику: дедупликация, LLM-as-judge, diversity metrics
- Собрать production pipeline с Distilabel и форматированием для fine-tuning
Alpaca (Stanford, 2023): 52 000 instruction-following примеров сгенерировано за USD 500. LLaMA-7B fine-tuned на этих данных был неотличим от text-davinci-003 в blind evaluation. WizardLM с Evol-Instruct обошёл ChatGPT. Phi-1 с 1.3B параметрами обошёл 13B модели - на чисто синтетических данных. Принцип scale laws перевернули с ног на голову: качество данных важнее размера модели.
- Alpaca (Stanford) - первая публичная дистилляция: USD 500 на генерацию, результат сопоставим с GPT-3.5
- WizardLM-70B с Evol-Instruct превзошёл ChatGPT на Vicuna benchmark в 2023
- Phi-1.5 (Microsoft) - 1.3B параметров, синтетические данные, обходит 13B модели на coding tasks
- Meta Llama 3 использует синтетически сгенерированные данные как значительную часть обучающего набора
От Web Crawl до Synthetic Curricula
**2022 - Self-Instruct** (Wang et al., ACL 2023): bootstrap через 175 seed задач, инструкция-следование без RLHF. **Март 2023 - Alpaca** (Stanford): 52K примеров за USD 500 через text-davinci-003, первая публичная дистилляция в open-source. **Апрель 2023 - WizardLM** (Microsoft): Evol-Instruct - усложнение инструкций пятью операторами, 70B модель обходит ChatGPT. **Июнь 2023 - Phi-1** (Microsoft Research): 1.3B параметров на 'textbook-quality' синтетике обходит 13B модели. **2024 - Distilabel 1.0**: production-grade фреймворк для синтетических pipeline. **2025**: синтетические данные - стандартный компонент обучения всех frontier моделей, включая Llama 3 и Gemini.
Предварительные знания
Почему реальных данных всегда не хватает
Fine-tuning требует данных. Доменные данные - редки. Разметка - дорогая. Это фундаментальный треугольник: хочется модель в узком домене, данных нет, разметчики стоят дорого. Решение пришло неожиданно: попросить сильную модель сгенерировать данные для обучения слабой.
Конкретные числа: Llama 2 Chat потребовал около 40 000 пар question-answer с RLHF-разметкой. Каждая пара - это работа человека-аннотатора: USD 1-2 за пример. Итого USD 40 000-80 000 только за instruction-following датасет, без учёта preference data. Для большинства компаний - непозволительно.
| Тип данных | Стоимость разметки | Доступность | Альтернатива |
|---|---|---|---|
| Instruction following | USD 1-2 / пример | Умеренная | Self-Instruct генерация |
| RLHF preference pairs | USD 3-5 / пара | Низкая | Constitutional AI |
| Domain Q&A | USD 2-5 / вопрос | Низкая (нет экспертов) | GPT-4 distillation |
| Code reviews | USD 5-20 / review | Очень низкая | Evol-Instruct + code LLM |
Phi-1 (Microsoft, 2023) - модель 1.3B параметров обученная на 'textbook-quality' синтетических данных. На coding benchmarks обошла CodeLlama 13B и GPT-3.5-turbo. Вывод исследователей: **качество данных важнее объёма и размера модели**. Это изменило подход к fine-tuning в индустрии.
Alpaca (Stanford, 2023) - первая публичная демонстрация дистилляции: 52 000 instruction-following примеров сгенерировано GPT-3 text-davinci-003 за USD 500. Fine-tuned LLaMA-7B вёл себя как instruction-following модель, неотличимо от text-davinci-003 в blind evaluations. Начало эпохи data distillation.
Вывод из исследования Phi-1 (Microsoft, 2023) о синтетических данных:
Self-Instruct и Evol-Instruct: bootstrap через LLM
**Self-Instruct** (Wang et al., 2022) - метод bootstrap: начать с небольшого seed-набора задач (175 примеров) и попросить LLM генерировать новые задачи в том же духе. Каждая новая задача проверяется на непохожесть с существующими (ROUGE similarity < 0.7), плохие отфильтровываются.
**Evol-Instruct** (Xu et al., WizardLM, 2023) - эволюция: взять существующую инструкцию и усложнить её. Пять операторов усложнения: add constraints, increase reasoning, concretize, increase input length, complicate. Результат: WizardLM-70B превзошёл ChatGPT (GPT-3.5-turbo) на Vicuna benchmark.
WizardCoder (2023, WizardLM team) применил Evol-Instruct к code generation: StarCoder 15B с эволюционными данными набрал 57.3% на HumanEval, обогнав GPT-3.5 (48.1%) и Claude-v1 (56.0%). Модель в 4 раза меньше GPT-3.5 - но с лучшими данными.
Что отличает Evol-Instruct от Self-Instruct?
Качество vs количество: как не сгенерировать мусор
1 миллион синтетических примеров - звучит хорошо. На практике без фильтрации это 60-80% мусора: повторяющиеся шаблоны, неверные ответы, слишком лёгкие задачи, галлюцинации генератора. Модель, обученная на таком датасете, учится быть уверенной мусорщицей.
**Phi-1 и 'textbook quality'**: Microsoft отфильтровал 6 триллионов токенов Common Crawl до 7 миллиардов 'учебного качества' с помощью LLM-классификатора. Потом синтетически сгенерировали ещё 1 миллиард. Итог: модель 1.3B обошла 13B модели. Качество > количество.
Diversity metrics: после фильтрации проверить разнообразие через embedding clustering. Если 70% датасета кластеризуется в 3 кластера - данные однородные, модель обучится на узком distribution. Инструмент: Argilla + UMAP-визуализация эмбеддингов датасета.
Почему Microsoft Phi-1 обошёл модели в 10 раз крупнее, используя синтетические данные?
Pipeline синтетики на практике
Полный pipeline: seed примеры -> генерация -> фильтрация -> дедупликация -> форматирование для fine-tuning. Каждый этап влияет на итоговое качество модели.
**Инструменты экосистемы** для production-grade синтетики:
| Инструмент | Назначение | Плюсы |
|---|---|---|
| Distilabel (Argilla) | Pipeline для синтетики с built-in фильтрацией | Declarative API, поддержка любых LLM |
| Argilla | Аннотация + обзор синтетических данных | UI для human review, интеграция с HuggingFace |
| LabelStudio | Universal annotation tool | Supports QA, NER, preferences - всё в одном |
| DataDreamer | Synthetic dataset generation framework | Research-ориентированный, воспроизводимый |
Дистилляция из OpenAI/Anthropic API запрещена Terms of Service (нельзя использовать выход GPT-4 для обучения конкурирующей модели). Для коммерческого использования: генерировать данные через open-source модели (Llama 3, Mixtral) или покупать лицензию. Meta разрешает использовать Llama для дистилляции в другие модели при соблюдении Meta Community License.
Почему нельзя использовать выход GPT-4 для обучения собственной модели в коммерческих целях?
Синтетические данные хуже реальных - модель учится галлюцинациям генератора
При правильной фильтрации синтетика превосходит нефильтрованные реальные данные по эффективности обучения
Phi-1 и WizardLM доказали это эмпирически. Ключевые условия: сильный генератор (GPT-4 или Llama 70B), многоуровневая фильтрация, diversity контроль. Нефильтрованный синтез действительно токсичен - поэтому фильтрация критична.
Больше данных = лучше модель; нужно генерировать миллионы примеров
10 000 высококачественных примеров часто лучше 1 000 000 низкокачественных
LIMA (Less Is More for Alignment, 2023): 1000 высококачественных instruction-following примеров дали модель, сопоставимую с RLHF-обученным Llama на 50x больших данных. Quality over quantity - не метафора, а измеренный эффект.
Итоги
- Разметка данных вручную стоит USD 1-5 за пример - дистилляция через LLM в 100x дешевле
- Self-Instruct генерирует новые задачи из seed; Evol-Instruct усложняет существующие через 5 операторов
- Качество фильтрации важнее объёма: дедупликация + LLM-as-judge + diversity metrics
- Phi-1 (1.3B) обходит 13B модели на синтетике - quality beats scale
- Коммерческое ограничение: OpenAI/Anthropic ToS запрещает использовать их вывод для обучения конкурентов
Вопросы для размышления
- Для какой задачи в текущем проекте можно создать синтетический датасет? Какой seed набор нужен для старта?
- Как проверить что синтетически обученная модель не переобучилась на distribution генератора?
- Если нельзя использовать GPT-4 для генерации (ToS), какие open-source альтернативы подойдут для домена?
Связанные темы
Синтетические данные - топливо для fine-tuning. Следующий вопрос: как запустить и оценить обученную модель.
- Fine-tuning — Применение синтетических данных - полный цикл fine-tuning
- Локальные модели — Дистиллированные модели часто запускаются локально для экономии
- Evaluation — Как измерить качество модели обученной на синтетических данных