Direct Preference Optimization (DPO)
Direct Preference Optimization (DPO) революционизировала выравнивание предпочтений, предоставляя более простой и стабильный альтернатифну Reinforcement Learning from Human Feedback (RLHF). Вместо обучения отдельных моделей вознаграждения и использования сложных алгоритмов обучения с подкреплением DPO прямо оптимизирует языковые модели с использованием данных о предпочтениях людей.
Понимание DPO
Традиционные подходы RLHF требуют множества компонентов и этапов обучения. Как показано на диаграмме, это включает:
- Обучение модели вознаграждения для прогнозирования человеческих предпочтений на основе предпочитаемых и отклоненных откликов.
- Использование алгоритмов обучения с подкреплением, таких как PPO, для оптимизации политики против модели вознаграждения.
DPO радикально упрощает этот процесс, пропуская модель вознаграждения и используя бинарную функцию потерь перекрестной энтропии для прямой оптимизации языковой модели.
- Сначала обучение модели SFT следовать инструкциям.
- Затем обучение модели DPO для прямой оптимизации языковой модели с использованием данных предпочтений.
DPO оказался настолько эффективным, что его использовали для обучения производственных моделей, таких как серия Llama от Meta, и многих других передовых языковых моделей.
Как работает DPO
DPO перекодирует выравнивание предпочтений в задачу классификации. При заданном запросе и двух ответах (один предпочитаемый, другой отклоненный) DPO обучает модель увеличивать вероятность предпочитаемого ответа и уменьшать вероятность отклоненного ответа.
Процесс обучения
Процесс DPO требует контролируемого тонкого дообучения (SFT) для адаптации модели к целевой области. Это создает основу для обучения предпочтениям, обучая модель на стандартных наборах данных для следования инструкциям. Мデル обучает базовые действия по выполнению задачи, сохраняя общие возможности.
Затем идет обучение предпочтениям, где модель обучается на парах выводов - один предпочитаемый и один непредпочитаемый. Пары предпочтений помогают модели понять, какие ответы лучше соответствуют человеческим ценностям и ожиданиям.
Основная инновация DPO заключается в ее прямом подходе к оптимизации. Вместо того чтобы обучать отдельную модель вознаграждения, DPO использует функцию потерь бинарной перекрестной энтропии для прямого обновления весов модели на основе данных предпочтений. Этот упрощенный процесс делает обучение более стабильным и эффективным, при этом достигается сопоставимый или лучший результат по сравнению с традиционной RLHF.
Функция потерь DPO
Основная инновация DPO заключается в ее функции потерь, которая напрямую оптимизирует политику (языковую модель) с использованием данных предпочтений:
$$L_ = -\mathbb_ \left[\log \sigma\left(\beta \log \frac(y_w|x)} - \beta \log \frac(y_l|x)}\right)\right]$$
Где:
π_θ, обучающаяся модельπ_ref, эталонная модель (обычно SFT-модель)y_w, предпочитаемый (выигравший) откликy_l, отклоненный (проигравший) откликβ, параметр температуры, контролирующий интенсивность оптимизацииσ, сигмоидальная функция
Формат набора данных DPO
Для обучения DPO требуется предпочтительные наборы данных, в которых каждый пример содержит:
| Поле | Описание | Пример |
|---|---|---|
prompt |
Входной запрос или вопрос | "Объясните квантовые вычисления в простых терминах" |
chosen |
Предпочитаемый ответ | "Квантовые вычисления используют принципы квантовой механики..." |
rejected |
Менее предпочитаемый ответ | "Квантовые вычисления очень сложны и трудны дляа..." |
Также набор данных может включать дополнительные функции для улучшения качества обучения. В него можно включать системные запросы, предоставляющие инструкции по поведению модели. также можно интегрировать многоходовые диалоги с комплексными беседами и аннотациями предпочтений. Наконец, он может содержать метаданные, предоставляющие дополнительный контекст, например, силу предпочтения или согласие аннотаторов.
Мы можем увидеть пример набора данных DPO ниже:
Высококачественные предпочтительные наборы данных имеют ключевое значение для успешного обучения DPO. Предпочтения должны быть четкими, последовательными и соответствовать целевому сценарию использования. Посмотрите на коллекцию предпочтительных наборов данных HuggingFace для примеров.
Реализация с помощью TRL
Библиотека TRL (Transformers Reinforcement Learning) упрощает реализацию DPO:
from trl import DPOConfig, DPOTrainer
from transformers import AutoModelForCausalLM, AutoTokenizer
from datasets import load_dataset
# Load model and tokenizer
model = AutoModelForCausalLM.from_pretrained("HuggingFaceTB/SmolLM3-3B")
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM3-3B")
# Configure DPO training
training_args = DPOConfig(
beta=0.1, # Параметр температуры
learning_rate=5e-7, # Нижняя СО для стабильности
max_prompt_length=512, # Максимальная длина запроса
max_length=1024, # Максимальная общая длина
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
num_train_epochs=1,
)
# Initialize trainer
trainer = DPOTrainer(
model=model,
args=training_args,
train_dataset=preference_dataset,
processing_class=tokenizer,
)
# Train the model
trainer.train()
Ожидаемый тип набора данных
DPO требует предпочтительного набора данных. DPOTrainer поддерживает как разговорные, так и стандартные форматы наборов данных. При предоставлении разговорного набора данных тренер автоматически применит шаблон чата к набору данных.
Хотя DPOTrainer поддерживает как явные, так и неявные промпты, рекомендуется использовать явные промпты. Если предоставлен набор данных с неявным промптом, тренер автоматически извлечет промпт из столбцов "chosen" и "rejected". Для получения дополнительной информации обратитесь к разделу формата предпочтений.
| Параметр | Описание | Рекомендации |
|---|---|---|
| Бета (β) | Регулирует интенсивность оптимизации предпочтений | Диапазон: 0.1 до 0.5Низкие значения: Более консервативно, ближе к базовой моделиВысокие значения: Сильнее выравнивание предпочтений, риск переобучения |
| Скорость обучения | Скорость обучения DPO | Рекомендация: Значительно ниже, чем стандартовое дообучение (5e-7 до 5e-6)Обоснование: Предотвращение катастрофического забывания и поддержание стабильностиНастройка: Уменьшить еще больше, если обучение становится нестабильным |
| Размер и качество набора данных | Требования к набору предпочтений | Минимум: ~1 000 качественных пар предпочтений для специфических задачРекомендуется: 10 000+ пар для надежного выравниванияКачество против количества: Лучше иметь меньше высококачественных пар, чем много плохих |
Рекомендуемые практики
Качество данных
Качество данных имеет ключевое значение для успешного обучения DPO. В набор предпочтений должна быть включена разнообразная информации, охватывающая различные аспекты желаемого поведения. Четкие рекомендации по аннотации гарантируют последовательное нанесение меток предпочтительных и отклоненных ответов. Вы можете улучшить производительность модели, улучшая качество набора предпочтений. Например, с фильтрацией больших наборов данных, чтобы включить только высококачественные примеры или те, которые касаются вашего варианта использования.
Во время обучения внимательно наблюдайте за сходимостью потерь и проверяйте производительность на отложенных данных. Параметр бета может потребовать настройки для балансирования обучения предпочтениям с поддержанием широких возможностей модели. Регулярная оценка на разнообразных промптах помогает убедиться, что модель учится намеренным предпочтениям, не переобучаясь.
Сравните выходные данные модели с базовой моделью для проверки улучшения выравнивания предпочтений. Тестирование на различных промптах, включая краевые случаи, помогает обеспечить надежное обучение предпочтений в разных сценариях.
Стабильность обучения
Внимательно отслеживайте сходимость потерь во время обучения, потеря DPO должна плавно уменьшаться без колебаний или неожиданного поведения. Регулярно сравнивайте выходные данные вашей модели с базовой моделью для обеспечения осмысленных улучшений в выравнивании предпочтений. Используйте обрезку градиента для предотвращения нестабильности обучения, особенно при работе с высокими скоростями обучения или сложными наборами данных. Реализуйте механизмы раннего останова для прекращения обучения, если производительность достигает плато или начинает ухудшаться, предотвращая переобучение и расточительную трату вычислительных ресурсов.
Оцените производительство модели с разнообразными подсказками, включая краевые случаи, чтобы обеспечить надежное обучение приоритетов через различные сценарии. Сравните выводы модели со ссылочной моделью, чтобы подтвердить улучшение выравнивания приоритетов.
Избегайте типичных проблем
При реализации DPO следите за переобучением к приоритетам, что может заставить модель становиться монотонной или терять общие возможности. Если это произойдет, уменьшите параметр бета, сократите время обучения или увеличьте разнообразие данных, чтобы сохранить широкие возможности. С другой стороны, если вы заметите незначительные или отсутствие улучшений в выравнивании при обучении, предпочтительный сигнал может быть недостаточным - попробуйте увеличить параметр бета, улучшить качество базы данных или продлить продолжительность обучения.
Другая распространенная проблема - сдвиг распределения, когда модель хорошо работает в обучении по домену, но плохо обобщает на новые сценарии. Чтобы избежать этого, убедитесь, что ваша предпочтительная база данных охватывает целевые использоваться по делу и включать разнообразные примеры, которые представляют реальные мир приложений. Цель - достичь надежного обучения приоритетов, который сохраняет полезность модели в разных контекстах.
Следующие шаги
- Обучение SmolLM3 с вашими предпочтительными данными
- Оценка качества выравнивания и производительности модели
- Развертывание выровненной модели
После освоения DPO исследуйте продвинутые методики в разделе advanced DPO methods.