Оптимизация прямых предпочтений (предварительная версия)

Прямая оптимизация предпочтений (DPO) — это метод выравнивания для больших языковых моделей, используемый для настройки весов моделей на основе человеческих предпочтений. Он отличается от обучения с подкреплением от человеческой обратной связи (RLHF) в том, что он не требует настройки модели вознаграждения и использует более простые двоичные параметры данных для обучения. Это вычислительно менее ресурсоемкий и быстрый метод, чем RLHF, при этом он одинаково эффективен в согласовании.

Почему DPO полезно?

DPO особенно полезен в сценариях, где нет четкого правильного ответа, а субъективные элементы, такие как тон, стиль или определенные предпочтения контента, важны. Этот подход также позволяет модели изучать как положительные примеры (то, что считается правильным или идеальным), так и отрицательными примерами (что менее нужно или неправильно).

DPO упрощает создание высококачественных наборов данных для обучения. Хотя многие организации пытаются создать достаточно большие наборы данных для контролируемой тонкой настройки, они часто имеют данные предпочтений, уже собранные на основе журналов пользователей, тестов A/B или более мелких усилий по аннотированию вручную.

Формат набора данных для оптимизации прямого предпочтения

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

В наборе данных используются три поля верхнего уровня:

Поле Обязательно Описание
input Да Содержит системное сообщение и исходное сообщение пользователя
preferred_output Да Должно содержать по крайней мере одно сообщение от помощника (роли: помощник, только инструмент)
non_preferred_output Да Должно содержать по крайней мере одно сообщение от помощника (роли: помощник, только инструмент)
{  
  "input": {  
    "messages": [{"role": "system", "content": ...}],  
    "tools": [...],  
    "parallel_tool_calls": true  
  },  
  "preferred_output": [{"role": "assistant", "content": ...}],  
  "non_preferred_output": [{"role": "assistant", "content": ...}]  
}  

Обучающие наборы данных должны быть в jsonl формате:

{{"input": {"messages": [{"role": "system", "content": "You are a chatbot assistant. Given a user question with multiple choice answers, provide the correct answer."}, {"role": "user", "content": "Question: Janette conducts an investigation to see which foods make her feel more fatigued. She eats one of four different foods each day at the same time for four days and then records how she feels. She asks her friend Carmen to do the same investigation to see if she gets similar results. Which would make the investigation most difficult to replicate? Answer choices: A: measuring the amount of fatigue, B: making sure the same foods are eaten, C: recording observations in the same chart, D: making sure the foods are at the same temperature"}]}, "preferred_output": [{"role": "assistant", "content": "A: Measuring The Amount Of Fatigue"}], "non_preferred_output": [{"role": "assistant", "content": "D: making sure the foods are at the same temperature"}]}
}

Поддержка модели оптимизации прямых предпочтений

Следующие модели поддерживают прямую настройку оптимизации предпочтений.

Модель Поддержка DPO Доступность региона
gpt-4o-2024-08-06 Да Просмотр моделей тонкой настройки
gpt-4.1-2025-04-14 Да Просмотр моделей тонкой настройки
gpt-4.1-mini-2025-04-14 Да Просмотр моделей тонкой настройки

Вы можете использовать настройку предпочтений с базовыми моделями и моделями, уже настроенными с использованием контролируемой точной настройки, если они являются поддерживаемыми моделями и версиями.

Настройка тонкой оптимизации прямых предпочтений

  1. Перейдите к разделу Build в верхней части AI foundry.
  2. Выберите "Точно настроить" в боковом меню.
  3. Подготовьте jsonl наборы данных в предпочтительном формате.
  4. Выберите модель и выберите метод настройки прямой оптимизации предпочтений.
  5. Отправка наборов данных — обучение и проверка. Предварительный просмотр по мере необходимости.
  6. Выберите гиперпараметры, рекомендуется использовать параметры по умолчанию для начальных экспериментов.
  7. Просмотрите выбранные параметры и создайте задание тонкой настройки.

Оптимизация прямых предпочтений — REST API

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs'
-H "api-key: $AZURE_OPENAI_API_KEY" 
-H 'Content-Type: application/json' 
-H 'task_type: chat' 
--data '{ "model": "gpt-4.1-mini-2025-04-14", "training_file": "file-d02c607351994d29987aece550ac81c0", "validation_file": "file-d02c607351994d29987aece550ac81c0", "prompt_loss_weight": 0.1, "suffix": "Pause_Resume", "method":{ "type":"dpo", "dpo":{ "beta":0.1, "l2_multiplier":0.1 }}}'

Дальнейшие действия