Синтетические данные для LLM: модель коллапс, Phi, Alpaca, Constitutional AI | AiManual
AiManual Logo Ai / Manual.
18 Янв 2026 Гайд

Синтетические данные для LLM: как не сжечь модель и получить Phi-1 за копейки

Практический гайд по работе с синтетическими данными для обучения LLM. Разбираем модель коллапс, успешные кейсы (Phi-1, Alpaca) и учимся фильтровать данные как

Синтетические данные - это как дешевый виски: можно получить гениальный результат или отравление

Представьте, что вы учите студента готовить, показывая ему только рецепты, которые он сам придумал. Сначала получается странно, потом сюрреалистично, а через несколько итераций - несъедобно. Примерно так работает рекурсивное обучение LLM на синтетических данных без контроля качества.

В 2023 году все говорили: "Синтетические данные - будущее машинного обучения! Не нужно платить аннотаторам!" В 2024 мы получили исследования, показывающие, что после 3-5 итераций обучения на собственных выходах модель деградирует до уровня случайного генератора текста. Это и есть модельный коллапс - необратимая потеря разнообразия и качества генерации.

Модельный коллапс - не миф. В исследовании "The Curse of Recursion" показано: уже на третьей итерации обучения GPT-4 на собственных выходах качество падает на 34%. К пятой итерации модель забывает базовые факты и начинает генерировать бессмыслицу.

Почему Phi-1 работает, а ваш fine-tuning превращается в катастрофу?

Microsoft выпустила Phi-1 - модель на 1.3B параметров, которая на синтетических данных по программированию обгоняет CodeLlama в 3 раза больше. Секрет не в магии, а в жесткой фильтрации. Они взяли 6B токенов синтетики, оставили 1B после фильтрации. Отсеяли 83% данных.

Сравните с типичным сценарием:

Как делают новички Как сделали Phi-1
Генерация через ChatGPT API без проверки Генерация + 4 этапа фильтрации
"Чем больше данных, тем лучше" "Чем качественнее данные, тем лучше"
Обучение на всем, что сгенерировалось Отбор по сложности, уникальности, корректности

1 Первый фильтр: убираем мусор до того, как он попадет в пайплайн

Phi-1 использовала простую, но эффективную стратегию:

  • Фильтр по длине - слишком короткие примеры (менее 100 символов) почти всегда содержат ошибки или тривиальные решения
  • Проверка на выполнимость кода - каждый синтетический пример кода запускался в изолированной среде
  • Сложность задач - отбирали задачи, требующие нетривиального решения, но не запредельно сложные

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

💡
Фильтрация синтетических данных - это не роскошь, а экономия. Обучение на 1B качественных токенов дает лучший результат, чем на 10B мусорных. Ваша GPU скажет спасибо.

Alpaca: когда демократизация обучения LLM чуть не привела к катастрофе

Станфорд выпустил Alpaca - инструктивно настроенную LLaMA на 52K примерах, сгенерированных ChatGPT. Результат впечатлил, но скрытая проблема проявилась позже: наследование стиля и ошибок учителя.

Alpaca научилась не только выполнять инструкции, но и копировать:

  • Стилистические штампы ChatGPT ("Как искусственный интеллект, я...")
  • Избыточную вежливость и дипломатичность
  • Даже баги в рассуждениях, если они были в исходных данных

Это проблема всех синтетических данных: вы получаете не "знания", а стилизованную имитацию. Как построить пайплайн, который отделяет зерна от плевел, читайте в гайде по семантическим пайплайнам.

2 Второй фильтр: ловим стилистические артефакты

Для борьбы с наследованием стиля:

# Пример простого детектора ChatGPT-стиля
def has_chatgpt_patterns(text):
    patterns = [
        "как искусственный интеллект",
        "я обученная языковая модель",
        "мои знания ограничены",
        "я не могу формировать мнения",
        "на основе моих тренировочных данных"
    ]
    
    text_lower = text.lower()
    return any(pattern in text_lower for pattern in patterns)

# Фильтруем датасет
filtered_data = [
    example for example in dataset 
    if not has_chatgpt_patterns(example['response'])
]

Но это только поверхностный фильтр. Настоящая проблема глубже: как отличить корректное рассуждение от красивого, но ошибочного? Для этого нужны референсные проверки.

Constitutional AI: когда модель сама себя исправляет

Anthropic пошла другим путем. Вместо фильтрации через внешние модели они научили модель оценивать собственные выходы по набору принципов (конституции).

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

  1. Модель генерирует ответ на промпт
  2. Тот же промпт + ответ подаются обратно с инструкцией: "Критикуй этот ответ по принципам: быть полезным, честным, безвредным"
  3. Модель генерирует критику
  4. На основе критики генерирует исправленный ответ

Результат - модель, которая не просто повторяет учителя, а самостоятельно оценивает качество своих ответов. Это дороже в разработке, но дешевле в долгосрочной перспективе.

Constitutional AI показал: можно создать синтетические данные, которые не просто имитируют, а улучшают исходные. Ключ - в итеративном процессе с обратной связью, а не в одноразовой генерации.

Практический план: как создать синтетические данные и не угробить модель

3 Шаг 1: Генерация с избытком (oversampling)

Генерируйте в 3-5 раз больше данных, чем нужно. Почему? Потому что отбросить лишнее дешевле, чем генерировать заново. Используйте несколько разных моделей-учителей, если есть возможность. Разнообразие источников снижает риск наследования системных ошибок.

Где брать данные для старта, если нет бюджета на API вызовы? Есть варианты - от скрапинга до открытых датасетов. Подробный разбор в статье про источники данных для обучения.

4 Шаг 2: Многоуровневая фильтрация

Создайте конвейер фильтров, каждый из которых удаляет определенный тип проблем:

# Псевдокод пайплайна фильтрации
class SyntheticDataPipeline:
    def __init__(self):
        self.filters = [
            LengthFilter(min_chars=100, max_chars=2000),
            StyleFilter(forbidden_patterns=[...]),
            QualityFilter(quality_model='...'),
            DiversityFilter(embedding_model='...', threshold=0.8),
            FactualityFilter(knowledge_base='...')
        ]
    
    def process(self, raw_data):
        filtered = raw_data
        for filter in self.filters:
            filtered = filter.apply(filtered)
            logging.info(f"После {filter.name}: {len(filtered)} примеров")
        return filtered

5 Шаг 3: Валидация на контрольной группе

Не доверяйте автоматической фильтрации на 100%. Отберите случайную выборку (100-200 примеров) и отдайте людям на оценку. Если люди находят проблемы в более чем 5% случаев - пересмотрите фильтры.

Как тестировать LLM-приложения, чтобы не пропустить критические ошибки? Есть целый набор инструментов и методологий, которые мы разбираем в практическом руководстве по тестированию LLM.

Типичные ошибки, которые гарантированно приведут к модельному коллапсу

Ошибка 1: Обучение на выходах той же модели, которую вы пытаетесь улучшить. Это как пытаться поднять себя за волосы. Результат - быстрое накопление ошибок и коллапс.

Ошибка 2: Использование только одного источника синтетических данных. Все модели имеют свои системные смещения. Смешайте данные от разных моделей (GPT-4, Claude, Gemini) или даже от разных инстансов одной модели с разными температурами.

Ошибка 3: Игнорирование разнообразия. Модель учится на том, что видит. Если все примеры в датасете имеют одинаковую структуру или стиль, модель станет специалистом по генерации именно таких текстов. Добавляйте вариативность намеренно.

Синтетические данные 2.0: что будет дальше?

Тренд ясен: эпоха "генерируй и учи" закончилась. На смену приходит итеративное улучшение с жестким контролем качества.

Что изменится в ближайшем будущем:

  • Специализированные модели для оценки качества - вместо универсальных ChatGPT появятся модели, обученные именно на обнаружении ошибок в синтетических данных
  • Автоматические конституции - системы, которые сами генерируют принципы для Constitutional AI на основе целевого использования модели
  • Гибридные подходы - смесь синтетических и реальных данных, где синтетика заполняет пробелы, а реальные данные задают направление

Если вам интересна тема улучшения reasoning-способностей моделей без огромных бюджетов, посмотрите сравнение KEF и OpenAI o3 - два подхода к прокачке логического мышления у LLM.

Синтетические данные - это не серебряная пуля. Это опасный инструмент, который в неумелых руках ломает модели, а в умелых - создает шедевры вроде Phi-1. Разница между этими исходами - не в бюджете, а в дисциплине работы с данными.

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