huggingface/trl

Train transformer language models with reinforcement learning.

Обучение⭐ 19 348Pythonпоследний релиз: v1.13.0
Открыть на GitHub ↗Сайт проекта ↗

Что это за инструмент

TRL — это библиотека для дообучения (post-training) трансформерных языковых моделей с использованием методов обучения с подкреплением, таких как SFT, DPO и GRPO.

Зачем нужен

Инструмент позволяет эффективно настраивать базовые модели под конкретные задачи, улучшая их поведение и соответствие предпочтениям пользователей. Он упрощает внедрение сложных алгоритмов оптимизации, делая процесс дообучения доступным через простые API и CLI.

Что можно реализовать

  • Дообучение моделей на собственных данных с помощью SFT (Supervised Fine-Tuning)
  • Оптимизация ответов модели под предпочтения пользователей через DPO (Direct Preference Optimization)
  • Тренировка моделей с навыками рассуждения (reasoning) с использованием алгоритма GRPO
  • Обучение агентов в изолированных средах (sandboxed environments) с помощью Harbor

Ключевые возможности

  • Поддержка ключевых алгоритмов: SFT, DPO, GRPO и Reward Modeling
  • Интеграция с PEFT для эффективного обучения на ограниченном железе (LoRA/QLoRA)
  • Масштабируемость через DeepSpeed, DDP и FSDP
  • Оптимизация производительности с помощью Unsloth
  • Наличие CLI для запуска обучения без написания кода

👤 Кому подойдёт: ML-инженеры, исследователи в области NLP и разработчики, занимающиеся тонкой настройкой (fine-tuning) больших языковых моделей

Релизы

v1.13.0major
🕐 11 дн назад · релиз на GitHub ↗

Поддержка обучения на 1M+ токенов, оптимизация производительности через использование тензорных ядер и перенос потерь из Liger-Kernel.

  • Added: Добавлена поддержка обучения на последовательностях длиной более 1 млн токенов с подробным руководством и примерами.
  • Added: Проекция lm_head для chunked-CE теперь выполняется на тензорных ядрах, что значительно ускоряет обучение и снижает потребление памяти.
  • Added: Встроенные модули потерь (DPO, KTO, GRPO, JSD) перенесены из Liger-Kernel в trl.losses для обеспечения стабильности и совместимости.
  • Added: QLoRA теперь конфигурируется через аргумент quantization_config, что упрощает настройку квантования.
  • Added: Документация разделена на стабильные и экспериментальные трейнеры, добавлены инструкции по изменению целевой функции обучения.
v1.12.0patch
🕐 25 дн назад · релиз на GitHub ↗

Релиз v1.12.0 — технический дубликат v1.11.0, опубликованный случайно; реальных изменений нет.

  • Версия 1.12.0 на PyPI полностью идентична 1.11.0 из-за ошибки в нумерации.
  • Номер версии 1.12 зафиксирован, поэтому следующая реальная версия будет v1.13.0.
v1.10.0minor
🕐 1 мес назад · релиз на GitHub ↗

DistillationTrainer стал стабильным с поддержкой VLM, AsyncGRPO получил OpenEnv и контроль сэмплирования, обновлены дефолты SFT/GRPO.

  • Added: DistillationTrainer и DistillationConfig переехали из experimental в стабильный интерфейс trl, добавлена поддержка Vision Language Models.
  • Added: AsyncGRPO получил режим loop-owning для обучения внешних агентов через OpenEnv, а также метрики, трассировку и параметры сэмплирования (top_p, top_k, min_p).
  • Added: Добавлен пример SFT для DiffusionGemma, поддержка моделей LFM2/2.5, шаблон Gemma 4 и улучшена работа с упаковкой батчей для VLM.
  • Deprecated: Импорт из trl.experimental.distillation теперь вызывает FutureWarning; полный отказ планируется в версии 2.0.0.
  • Fixed: Изменены значения по умолчанию: max_completion_length увеличен до 512, use_bias_correction_kl в GRPO теперь True по умолчанию.
v1.9.2patch
🕐 1 мес назад · релиз на GitHub ↗

Исправлены тесты для bitsandbytes 0.50.0 и восстановлено тестирование NemotronH GRPO/RLOO после фикса в transformers.

  • Fixed: Исправлены тесты peft_with_quantization для совместимости с bitsandbytes 0.50.0.
  • Fixed: Восстановлено тестирование NemotronH GRPO/RLOO после исправления бага в ядрах в transformers.
v1.7.1patch
🕐 2 мес назад · релиз на GitHub ↗

Исправлены критические ошибки в GRPO с vLLM/PEFT, улучшена токенизация датасетов и добавлен новый API парсинга ответов.

  • Fixed: Устранены зависания GRPO с vLLM и PEFT на оборудовании без NVLink и исправлена передача device_ids в barrier.
  • Added: Интегрирован новый API для парсинга ответов модели.
  • Fixed: Исправлено формирование отпечатков (fingerprinting) датасетов при токенизации в DPO и SFT.
  • Fixed: Добавлена защита от обучения промптов (prompt-learning) в PEFT при использовании Liger в GRPO.
  • Fixed: Исправлено дублирование и повторное использование памяти при offload активаций.
v1.7.0major
🕐 2 мес назад · релиз на GitHub ↗

В TRL v1.7.0: SFT по умолчанию использует chunked_nll для экономии VRAM, добавлен экспериментальный GMPO-тренажер и улучшена работа с MoE и vLLM.

  • Added: По умолчанию для SFTTrainer установлен loss_type='chunked_nll', что снижает пиковое потребление VRAM на ~30% без потери скорости.
  • Added: Добавлен экспериментальный GMPO-тренажер, использующий геометрическое среднее для оптимизации политик.
  • Added: MoE-модели в GRPO/RLOO теперь корректно учитывают вспомогательную потерю балансировки роутера.
  • Added: В GRPO/RLOO реализовано непрерывное батчинг-объединение через transformers, ускоряющее генерацию и экономящее память.
  • Added: AsyncGRPO получил нативную синхронизацию весов с vLLM ≥ 0.22.0 и поддержку обучения без заполнения (padding-free).