TRL (обучение RLHF/DPO)

TRL (Transformer Reinforcement Learning) — официальная библиотека HuggingFace для обучения языковых моделей с использованием методов обучения с подкреплением. Имея более 10K звёзд на GitHub, она предоставляет передовые реализации RLHF, DPO, PPO, GRPO и других алгоритмов выравнивания для больших языковых моделей.

circle-check

Что такое TRL?

TRL — это библиотека, стоящая за многими из современных моделей с хорошим выравниванием. Она предоставляет:

  • SFT (Supervised Fine-Tuning) — стандартную донастройку по инструкциям в формате ChatML

  • RLHF/PPO — классический Proximal Policy Optimization с моделью вознаграждения

  • DPO — Direct Preference Optimization (модель вознаграждения не требуется!)

  • GRPO — Group Relative Policy Optimization (метод DeepSeek-R1)

  • KTO — Kahneman-Tversky Optimization (работает с непарными предпочтениями)

  • Моделирование вознаграждения — обучение модели вознаграждения на данных с человеческими предпочтениями

  • IterativeSFT — онлайн RL с более простой настройкой

  • ORPO — Odds Ratio Preference Optimization

TRL нативно интегрируется с экосистемой HuggingFace: transformers, peft, datasets, accelerate, и bitsandbytes.

circle-info

Какой алгоритм вам следует использовать?

  • DPO — самый простой и стабильный. Используйте, когда у вас есть парные данные предпочтений (выбрано/отклонено).

  • PPO — самый мощный, но сложный. Используйте, когда у вас есть модель вознаграждения или функция оценки.

  • GRPO — отлично подходит для задач, требующих рассуждений/математики. Метод обучения DeepSeek-R1.

  • SFT — всегда начинайте с этого перед применением любых методов RL.


Требования к серверу

Компонент
Минимум
Рекомендуется

GPU

RTX 3090 (24 ГБ)

A100 80 ГБ / H100

VRAM

16 ГБ (SFT/DPO 7B + LoRA)

80 ГБ (полная донастройка 7B)

ОЗУ

32 ГБ

64 ГБ+

CPU

8 ядер

16+ ядер

Хранилище

100 ГБ

300 ГБ+

ОС

Ubuntu 20.04+

Ubuntu 22.04

Python

3.9+

3.11

CUDA

11.8+

12.1+

VRAM по задаче

Задача
Модель
Метод
VRAM

SFT

Llama 3 8B

QLoRA 4-бит

~8 ГБ

DPO

Llama 3 8B

LoRA

~20 ГБ

PPO

Llama 3 8B

Полная

~80 ГБ (2×A100)

GRPO

Qwen 7B

LoRA

~24 ГБ

SFT

Llama 3 70B

QLoRA 4-бит

~48 ГБ

DPO

Llama 3 70B

LoRA

~80 ГБ


Порты

Порт
Сервис
Примечания

22

SSH

Доступ к терминалу, передача файлов, мониторинг

TRL — это библиотека для обучения — она запускается как CLI/Python-скрипт, веб-сервер не требуется.


Установка на Clore.ai

Шаг 1 — Арендуйте сервер

  1. Перейдите на Clore.ai Marketplacearrow-up-right

  2. Отфильтруйте по VRAM ≥ 24 ГБ (RTX 3090, A100 или H100)

  3. Выберите PyTorch или CUDA 12.1 базовый образ

  4. Выберите Хранилище ≥ 200 ГБ для моделей и наборов данных

  5. Откройте порт 22 для доступа по SSH

Шаг 2 — Подключитесь по SSH

Шаг 3 — Установите TRL

Шаг 4 — Аутентификация HuggingFace

Шаг 5 — По желанию: отслеживание Weights & Biases


Супервизированная донастройка (SFT)

SFT всегда является первым шагом перед любой техникой RL.

Подготовьте ваш набор данных

Скрипт обучения SFT


DPO (Direct Preference Optimization)

DPO — самый популярный метод выравнивания — модель вознаграждения не нужна, достаточно пар предпочтений.

Подготовьте набор данных для DPO

Скрипт обучения DPO


PPO (Proximal Policy Optimization)

PPO — классический подход RLHF — используйте, когда у вас есть сигнал вознаграждения:


GRPO (Group Relative Policy Optimization)

GRPO используется в DeepSeek-R1 для обучения рассуждению:


Обучение на нескольких GPU

Используйте accelerate для распределённого обучения:


Использование TRL CLI

TRL предоставляет удобные команды CLI:


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


Рекомендации Clore.ai по GPU

Обучение TRL — одна из самых требовательных по VRAM рабочих нагрузок. Выбирайте GPU в зависимости от размера модели и метода:

Задача
GPU
Примечания

SFT / DPO на 7–8B (QLoRA)

RTX 3090 24 ГБ

~8 ГБ для QLoRA 4-бит; помещается с запасом; ~0.12$/ч на Clore.ai

SFT / DPO на 7–8B (LoRA bf16)

RTX 4090 24 ГБ

Такая же память, как у 3090, но вычисления на 30% быстрее; отлично для ускорения итераций

Полная SFT на 7B или DPO на 13B

A100 40 ГБ

40 ГБ хватает для обучения 7B в полноточной точности; ECC-память предотвращает молчаливые ошибки

PPO / полная донастройка 7B, или любой 70B QLoRA

A100 80 ГБ

PPO требует 2× модели (политика+референт) в VRAM; 80 ГБ позволяет запустить обе без OOM

Практический совет: Начните на RTX 3090 с QLoRA для экспериментов — обучите Llama 3 8B примерно за ~2 часа на 10K примерах. После проверки конвейера переходите на A100 80GB для полноточных прогонов или моделей 70B.

Показатели скорости (Llama 3 8B SFT, QLoRA, batch=4, seq=2048):

  • RTX 3090: ~1 100 токенов/сек пропускная способность при обучении

  • RTX 4090: ~1 450 токенов/сек

  • A100 80GB: ~2 800 токенов/сек (полный bf16, без квантизации)


Устранение неполадок

CUDA: недостаточно памяти (Out of Memory)

Loss равен NaN

DPO: chosen_rewards > rejected_rewards равно False

Обучение очень медленное

tokenizer.pad_token предупреждение

Доступ запрещён / HuggingFace 401


Сохранение и публикация вашей модели


Полезные ссылки

Последнее обновление

Это было полезно?