Тонкая настройка с подкреплением

Уточнение с подкреплением (RFT) — это метод улучшения моделей рассуждений, обучая их посредством процесса на основе вознаграждения, вместо того чтобы полагаться только на помеченные данные. RFT помогает моделям развивать лучшее мышление и навыки решения проблем, особенно в тех случаях, когда помеченные примеры являются ограниченными или сложным поведением.

Примечание

Служба тонкой настройки автоматически приостанавливает задания RFT после того, как они достигнут $5000 в общей стоимости тренировок (тренировки и оценивание). Вы можете восстановить последнюю контрольную точку или возобновить тренировочное задание. Если вы решите возобновить задание, выставление счетов будет продолжаться для задания без дальнейших ограничений связанных с затратами.

Поддержка модели

Для следующих моделей поддерживается тонкая настройка с подкреплением.

Модель Версия Поддержка RFT Статус
o4-mini 2025-04-16 Да GA
gpt-5 2025-08-07 Да Частная предварительная версия

Примечание

Поддержка GPT-5 для точной настройки с подкреплением доступна в частной предварительной версии и может быть недоступна в вашей подписке.

Требования

Для настройки с подкреплением (RFT) требуется обучение и проверка данных, отформатированных как JSONL и содержащих массив messages с использованием формата завершения чата.

Однако RFT имеет больше требований:

  • Данные
    • Окончательное сообщение в данных должно быть назначено на роль user.
    • Данные могут содержать дополнительные поля и значения для использования классировщиком.
    • Необходимо предоставить обучение и набор данных проверки.
  • Грейдеры
    • Для оценки качества вашей точно настроенной модели и управления обучением необходимо определить критерии оценки.
    • Можно предоставить только одного проверяющего, но с помощью мультиградера можно объединить несколько проверяющих.

Примеры обучающих данных

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

{
  "messages": [
    {
      "role": "developer",
      "content": "Your task is to solve logic puzzles. The user will provide an expression with ?'s as placeholders for arithmetic operations. Replace the ?'s with arithmetic operation signs (+, -, *, /) to obtain a valid equation."
    },
    {
      "role": "user",
      "content": "1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8 ? 9 = 100"
    }
  ],
  "solution": "1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 * 9 = 100"
}

Примечание

Этот пример разделен на несколько строк только для демонстрационных целей. Она должна быть одной строкой в JSONL-файле.

Грейдеры

Оценщики предоставляют функцию вознаграждения, используемую во время тренировки, и имеют доступ к любым пользовательским полям в наборе данных. Доступны различные типы грейдеров:

  • Сравнение текста: оценка содержимого ответа на основе его текста
  • модель: оценка ответов с помощью языковой модели и запроса
  • пользовательский код: оценка ответов с помощью пользовательского кода
  • multigrader: оценка на основе комбинации оценок от других оценщиков

Большинство классировщиков выполняют подстановку данных среды выполнения с помощью шаблонов. Любые входные или ссылочные свойства могут включать подстановку переменных, заключенную в двойные фигурные скобки ({{ }}), содержащую ссылку на переменную.

Каждая ссылка на шаблон должна содержать пространство имен, используя такой шаблон, как {{ namespace.variable }}. Для любых сложных вложенных данных поддерживается синтаксис, подобный JSON-path.

Поддерживаются следующие пространства имен:

  • sample — выходные данные модели для оценки отображаются в sample пространстве имен в формате, аналогичном ответу завершения чата.
  • item — это необязательные дополнительные поля, предоставляемые в обучающих данных, которые отображаются в пространстве имен item.

Некоторые примеры подстановки шаблонов, которые используют указанные выше пространства имен:

  • {{ sample.output_text }} — замените выходные данные модели строкой
  • {{ sample.output_json }} — если модель произвела структурированные выходные данные, сослаться на них в формате JSON
  • {{ item.answer }} — замените поле "ответ" в наборе данных
  • {{ item.ground_truth.date }} — замените поле "date" у объекта "ground_truth", который определен в наборе данных.

В следующих разделах описаны отдельные классы и приведены спецификации JSON для определения с помощью API.

Оценки сравнения текста

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

String-check-grader

Классификаторы строк применяют заданную операцию к входным данным и ссылке для возврата 0 или 1, предоставляя простую функцию pass/fail.

{
    "type": "string_check",
    "name": string,
    "operation": "eq" | "ne" | "like" | "ilike",
    "input": string,
    "reference": string,
}

Операции:

Операции Возвращает значение 1, когда Учет регистра
eq Входные данные совпадают с эталоном Да
ne Входные данные не соответствуют ссылке Да
like Входные данные содержат ссылку Да
ilike Входные данные содержат ссылку Нет

Сходство текста

Оценщики текстового сходства вычисляют оценку на основе выбранного алгоритма для количественной оценки сходства между входным текстом и заданным эталонным текстом.

Спецификация:

{
    "type": "text_similarity",
    "name": string,
    "input": string,
    "reference": string,
    "pass_threshold": number,
    "evaluation_metric": "fuzzy_match" | "bleu" | "gleu" | "meteor" | "rouge_1" | "rouge_2" | "rouge_3" | "rouge_4" | "rouge_5" | "rouge_l" 
}

Метрики оценки:

  • fuzzy_match— нечеткое соответствие строк с помощью алгоритма RapidFuzz
  • bleu — вычисляет оценку BLEU (двуязычная оценка подстановки) между строками
  • gleu — вычисляет показатель Google BLEU между строками
  • meteor — вычисляет оценку METEOR между строками
  • rouge-* — как определено библиотекой Python rouge

Классы моделей

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

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

Модель Можно использовать в качестве классировщика
gpt-4o-2024-08-06 Да
o3-mini-2025-01-31 Да

Примечание

Для оценки моделей не требуются развертывания моделей в Foundry.

Модель оценки

Оценщики модельных оценок выводят числовые оценки на основе заданных входных данных и запроса. Любая предоставленная sampling_params позволяет управлять поведением модели оценки и настраивать такие параметры, как температура и степень обоснования.

{
    "type": "score_model",
    "name": string,
    "input": Message[],
    "model": string,
    "pass_threshold": number,
    "range": number[],
    "sampling_params": object
}

Оценщики кода

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

Python классировщик

Грейдер Python позволяет выполнять произвольный код на Python для создания оценочного балла.

Предоставленный grade код должен определить функцию, ожидающую два позиционных аргумента: sample и item. Функция должна возвращать числовую оценку.

{
    "type": "python",
    "name": string,
    "source": "def grade(sample, item):\n    return 1.0"
}

Код Python выполняется в ограниченной среде со следующими ограничениями:

Ресурс Предел
Размер кода 256 КБ
Сети Нет доступа
Память 2 ГБ
Место на диске 1 ГБ
ЦП 1 ядро
Рантайм 2 минуты

Совет

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

В среде выполнения Python доступны следующие модули и версии для использования указанным кодом:

  • numpy==2.2.4
  • scipy==1.15.2
  • sympy==1.13.3
  • pandas==2.2.3
  • rapidfuzz==3.10.1
  • scikit-learn==1.6.1
  • rouge-score==0.1.2
  • deepdiff==8.4.2
  • jsonschema==4.23.0
  • pydantic==2.10.6
  • pyyaml==6.0.2
  • nltk==3.9.1
  • sqlparse==0.5.3
  • rdkit==2024.9.6
  • scikit-bio==0.6.3
  • ast-grep-py==0.36.2

Грейдер конечных точек (предварительная версия)

Классировщики конечных точек вызывают удаленную конечную точку через HTTP-API для оценки ответа модели. Они идеально подходят для случаев использования, требующих доступа к эталонным данным для точной оценки или возможности реализовать решение на языке, отличном от Python.

Хотя в закрытой предварительной версии API для рангов конечных точек остается неопубликованным.

Мультиградер

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

{  
  "type": "multi",
  "name": string,
  "graders": dict[str, Grader],
  "calculate_output": string
}

При вычислении calculate_output многоградителя выражение ссылается на отдельные оценки, предоставленные graders ключом в объекте graders .

Операторы:

Оператор Описание
+ Дополнение
- Вычитание
* Умножение
/ Отдел
^ Мощность

Функции:

Функции Описание
min Вычисление минимального значения
max Вычисление максимального значения
abs Вычисление абсолютного значения
floor Округлите значение в меньшую сторону
ceil Округлить значение в большую сторону
exp Вычисление e на мощность предоставленного значения
sqrt Возьмите квадратный корень значения
log Вычисление логарифма предоставленного значения

Например, мультигрейдер, определенный с двумя грейдерами, "оценка-сходства" и "проверка-меток", который должен усреднять их выходные данные, может выглядеть следующим образом:

{
  "type": "multi",
  "name": "Example multigrader",
  "graders": {
    "similarity_score": {
      "type": "text_similarity",
      "name": "similarity grader",
      "input": "{{ sample.output_text }}",
      "reference": "{{ item.summary }}",
      "evaluation_metric": "bleu"
    },
    "label_checker": {
      "type": "string_check",
      "name": "label grader",
      "input": "{{ sample.output_text }}",
      "reference": "{{ item.label }}",
      "operation": "eq"
    }
  },
  "calculate_output": "(similarity_score + label_checker) / 2"
}

Формат ответа (необязательно)

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

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

Чтобы продолжить работу с предыдущим примером, если модель должна выводить ответ в структурированном формате, например:

{ "solution": "1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 * 9 = 100" }

Следующая схема JSON описывает формат ответа:

{
  "type": "json_schema",
  "name": "puzzles_assistant",
  "schema": {
    "type" : "object",
    "properties": {
      "solution": {
        "type": "string",
        "title": "solution"
      }
    },
    "required": [
      "solution",
    ],
    "additionalProperties": false
  },
  "strict": true
}

Выбор гиперпараметра

Уточненная настройка подкреплений поддерживает те же гиперпараметры, что и в защищенной настройке. Кроме того, следующие функции управления гиперпараметрами, характерные для RFT:

Имя гиперпараметра Значение По умолчанию Описание
eval_interval Целое число auto Количество шагов обучения между этапами оценки.
eval_samples Целое число auto Количество примеров, используемых во время оценки.
compute_multiplier Номер auto Множитель, применяемый к объему вычислительных ресурсов для исследования пространства во время обучения.
reasoning_effort low medium high medium Усилия по рассуждению, использованные моделью во время обучения.

Примечание

Служба обучения автоматически заменяет гиперпараметры, установленные на auto, значениями по умолчанию, основанными на эвристике, на основе предоставленных обучающих данных.

Интерпретация результатов обучения

Настройка с подкреплением обеспечивает автоматическую оценку модели во время обучения и метрик обучения в режиме реального времени.

Метрики обучения

При мониторинге выполняемого задания или проверке завершенного задания метрики "вознаграждение" и "логика" предоставляют индикатор успешности обучения.

Награда

Метрики вознаграждения отслеживают полученные оценки от классировщика, выступающего в качестве функции вознаграждения.

  • train_reward_mean: средняя награда по пакету обучающих данных на заданном шаге. Так как каждый пакет может отличаться по шагам, тенденция этой метрики важнее, чем сравнение значений между шагами.
  • valid_reward_mean: среднее вознаграждение по образцам, взятым из набора валидации на заданном шаге.

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

Токены рассуждения

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

  • train_reasoning_tokens_mean: среднее количество токенов рассуждения, созданных в пакете обучающей выборки на заданном шаге.
  • valid_reasoning_tokens_mean: среднее число токенов рассуждения, созданных на конкретном шаге.

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

Автоматическая оценка

Оценка создается автоматически для каждого задания RFT. Через регулярные интервалы, определенные eval_interval гиперпараметром, система обучения выполняет выполнение оценки с помощью данных проверки. Оценки для каждого запуска доступны с помощью связанной оценки, доступной для обнаружения из пользовательского интерфейса Foundry.

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

Примеры проектов и наборов данных

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

  • Демонстрация обратного отсчета — полный пример использования RFT для улучшения математического рассуждения.
  • MedMCQ — пример набора данных и классировщиков для ответа на вопросы с несколькими вариантами из медицинского домена.
  • СопоставлениеКлауз — пример набора данных и средств оценки, демонстрирующих как резюмирование, так и интерпретацию содержимого в юридическом домене.