Как работает synthetic data для RLHF (предпочтения)?
Краткий тезис
Synthetic data (синтетические данные) для RLHF (Reinforcement Learning from Human Feedback) — это автоматически сгенерированные пары предпочтений (chosen/rejected), которые заменяют дорогую человеческую разметку. Основные подходы: RLAIF (RL from AI Feedback) с конституцией, Evol-instruct для создания улучшенных/ухудшенных версий ответов и Cross-model сравнение ответов разных моделей. Синтетические данные позволяют масштабировать сбор предпочтений до миллионов пар, снижая стоимость и время, но требуют тщательной валидации для избежания шума и смещения.
1. Термин: RLHF и роль данных предпочтений
RLHF — это метод выравнивания (alignment) языковых моделей, при котором модель обучается на предпочтениях людей. Классический пайплайн включает три этапа:
- SFT (Supervised Fine-Tuning) — дообучение на качественных примерах.
- Обучение reward model (модели вознаграждения) на парах предпочтений (chosen — предпочтительный ответ, rejected — непредпочтительный).
- Оптимизация политики (PPO, DPO и др.) с использованием reward model.
Ключевой узкий этап — сбор preference data (данных предпочтений). Ручная разметка дорога, медленна и субъективна. Synthetic data — это автоматически сгенерированные пары, которые имитируют человеческие предпочтения, используя другую LLM, правила или сравнение моделей.
2. RLAIF (Constitutional AI)
RLAIF (Reinforcement Learning from AI Feedback) — подход, в котором LLM сама оценивает свои ответы на основе заданного набора принципов — конституции (constitution). Конституция — это список правил, например: «Ответ должен быть полезным, безвредным и честным».
Как работает генерация пар
- Для заданного промпта LLM генерирует два ответа (или один, а затем модифицирует).
- LLM-критик (та же или другая модель) оценивает каждый ответ по конституции.
- Ответ, который лучше соответствует конституции, помечается как chosen, другой — как rejected.
- Полученные пары используются для обучения reward model или напрямую для DPO.
Пример конституции (упрощённо):
- Ответ не должен содержать вредные инструкции.
- Ответ должен быть информативным и по делу.
- Ответ должен избегать предвзятости.
Преимущества
- Не требует людей.
- Масштабируется до миллионов пар.
- Конституцию можно настраивать под конкретные ценности.
Недостатки
- Качество зависит от LLM-критика (может быть зашумлено).
- Конституция может быть неполной или противоречивой.
- Риск «зацикливания» — модель учится имитировать собственные предпочтения.
3. Evol-instruct для предпочтений
Evol-instruct — метод, изначально предложенный для генерации инструкций (WizardLM). Адаптирован для создания пар предпочтений:
- Берём исходный ответ (например, от базовой модели).
- Эволюция вверх (evolve-up): LLM улучшает ответ — делает его более подробным, точным, структурированным. Это chosen.
- Эволюция вниз (evolve-down): LLM ухудшает ответ — вносит ошибки, опускает детали, делает его менее полезным. Это rejected.
- Пара (улучшенный, ухудшенный) используется как preference data.
Вариант можно генерировать несколько версий ответа и ранжировать их с помощью LLM-критика, выбирая лучший и худший.
Пример кода (псевдо):
def evolve_pair(prompt, response, model):
chosen = model.generate(f"Улучши следующий ответ: {response}")
rejected = model.generate(f"Ухудши следующий ответ: {response}")
return chosen, rejected
Преимущества
- Контролируемое качество: улучшенный ответ действительно лучше.
- Не требует конституции — достаточно инструкции «улучши/ухудши».
Недостатки
- Зависит от способности LLM понимать, что значит «улучшить».
- Может генерировать искусственные артефакты (например, слишком длинные ответы).
4. Cross-model подход
Cross-model — сравнение ответов разных моделей. Идея: ответ от более сильной модели (например, GPT-4) считается chosen, ответ от более слабой (например, LLaMA-2-7B) — rejected.
Как работает
- Для каждого промпта генерируем ответ от модели A (сильная) и модели B (слабая).
- Пара (A, B) добавляется в датасет предпочтений.
- Можно также использовать несколько моделей и ранжировать их по известному качеству (например, по оценкам на бенчмарках).
Преимущества
- Простота: не нужен отдельный критик.
- Естественное ранжирование: сильная модель объективно лучше.
Недостатки
- Требуется доступ к сильной модели (дорого, если это API).
- Разрыв в качестве может быть слишком большим — модель учится имитировать сильную, но не учится тонким предпочтениям.
- Не учитывает контекст: сильная модель может ошибаться в специфических доменах.
Сравнение методов
| Метод | Источник предпочтений | Масштабируемость | Затраты | Риск шума |
|---|---|---|---|---|
| RLAIF | LLM-критик + конституция | Высокая | Средние (вызовы LLM) | Средний |
| Evol-instruct | Эволюция ответа | Высокая | Средние | Низкий-средний |
| Cross-model | Сравнение моделей | Очень высокая | Низкие (если слабая модель своя) | Низкий (если сильная модель надёжна) |
| Человеческая разметка | Люди | Низкая | Очень высокие | Низкий (но субъективный) |
5. Другие методы генерации synthetic preference data
- Self-play / SPIN (Self-Play Fine-Tuning): модель генерирует ответы, затем играет роль критика, выбирая лучший из пары. Итеративно улучшается.
- Chain-of-Thought критика: LLM пишет объяснение, почему один ответ лучше, затем использует это для генерации пар.
- Аугментация с помощью шума: к хорошему ответу добавляются типичные ошибки (фактические, стилистические) для создания rejected.
- Использование reward model: обученная reward model ранжирует ответы, и пары с большим разрывом в оценке берутся как synthetic preference.
6. Преимущества и ограничения synthetic data для RLHF
Преимущества
- Масштаб: можно сгенерировать миллионы пар за дни, а не месяцы.
- Стоимость: в 10–100 раз дешевле человеческой разметки.
- Контроль: можно точно задать критерии (конституция, эволюция).
- Итеративность: легко перегенерировать датасет при изменении требований.
Ограничения
- Шум: synthetic данные могут содержать ошибки, которые модель выучит.
- Смещение (bias): если LLM-критик предвзят (например, предпочитает длинные ответы), модель перенимает это смещение.
- Отсутствие разнообразия: synthetic данные могут быть менее разнообразными, чем человеческие.
- Риск коллапса: если модель учится на собственных предпочтениях, она может зациклиться и не улучшаться.
7. Оценка качества synthetic preference data
Для валидации synthetic данных используют:
- Согласованность с человеком (human agreement): небольшая выборка пар проверяется людьми. Доля совпадений с synthetic меткой — метрика качества.
- Внутренняя согласованность: если несколько LLM-критиков оценивают одну пару, насколько их мнения совпадают (Cohen’s kappa).
- Влияние на downstream: обучаем reward model на synthetic данных и проверяем её accuracy на человеческом тестовом наборе.
- Анализ распределения: проверяем, что synthetic данные покрывают разные типы ошибок (фактические, этические, стилистические).
Пример метрики
Accuracy@k = доля пар, где synthetic метка совпадает с человеческой
8. Инструменты и библиотеки
- TRL (Transformer Reinforcement Learning) от Hugging Face: поддерживает обучение с DPO на synthetic preference data.
- Axolotl: фреймворк для fine-tuning, включает поддержку synthetic data pipelines.
- LangChain / LlamaIndex: могут использоваться для построения пайплайнов генерации пар (RLAIF, Evol-instruct).
- OpenAI Evals: для оценки качества synthetic данных.
- Собственные скрипты: часто проще написать пайплайн на Python с вызовами API LLM.
Пример пайплайна на Python (упрощённо):
import openai
def generate_preference_pair(prompt, model="gpt-4"):
# Генерируем два ответа
response_a = openai.ChatCompletion.create(model=model, messages=[{"role": "user", "content": prompt}])
response_b = openai.ChatCompletion.create(model=model, messages=[{"role": "user", "content": prompt}])
# Используем LLM как критика
critic_prompt = f"Какой ответ лучше? A: {response_a} B: {response_b}. Ответь только 'A' или 'B'."
judgement = openai.ChatCompletion.create(model="gpt-4", messages=[{"role": "user", "content": critic_prompt}])
chosen = response_a if judgement == "A" else response_b
rejected = response_b if judgement == "A" else response_a
return chosen, rejected
9. Практические рекомендации
- Комбинируйте методы: используйте synthetic данные для начального обучения, затем дообучайте на небольшом наборе человеческих предпочтений для коррекции смещения.
- Используйте несколько LLM-критиков и усредняйте их оценки (ансамбль).
- Проверяйте качество на каждом этапе: если synthetic данные слишком шумные, лучше уменьшить их объём.
- Начинайте с Cross-model как самого простого подхода, затем добавляйте RLAIF для тонкой настройки.
- Документируйте конституцию и процесс генерации — это поможет при отладке.
Пет-проект для закрепления
Задача: Создать synthetic preference dataset для обучения reward model на задаче генерации рецептов.
Инструменты: Python, OpenAI API (или локальная модель), библиотека TRL.
Шаги:
- Соберите 1000 промптов вида «Напиши рецепт блюда X».
- Для каждого промпта сгенерируйте два ответа с помощью GPT-4 (или другой модели).
- Используйте Evol-instruct: попросите GPT-4 улучшить один ответ (добавить детали, шаги) и ухудшить другой (убрать важные шаги).
- Сформируйте пары (chosen=улучшенный, rejected=ухудшенный).
- Обучите reward model на этих данных с помощью TRL (класс
RewardTrainer). - Оцените reward model на 100 парах, размеченных вручную (accuracy).
Ожидаемый результат: Reward model с accuracy >70% на тестовой выборке. Вы увидите, как synthetic данные влияют на качество.
Связь с другими вопросами
| Вопрос | Тема |
|---|---|
| 685 | Основы RLHF: пайплайн, reward model, PPO |
| 687 | DPO (Direct Preference Optimization) — альтернатива PPO |
| 688 | PPO (Proximal Policy Optimization) для RLHF |
| 689 | Обучение reward model: архитектура, функции потерь |
| 690 | Alignment (выравнивание) LLM: цели и методы |
| 500 | Fine-tuning LLM: SFT, LoRA, QLoRA |
Навигация
- Предыдущий: 685
- Следующий: 687
- Индекс: 00. Индекс разборов