AIKraft Agents

huggingface/trl

Train transformer language models with reinforcement learning.

Обучение⭐ 19 676Pythonпоследний релиз: v1.17.1
Открыть на 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.17.1patch
🕐 6 дн назад · релиз на GitHub ↗

Исправлена ошибка, при которой скобки внутри аргумента tool-call LFM2.5 могли преждевременно закрывать вызов.

  • Fixed: Исправлена обработка скобок в аргументах tool-call LFM2.5, чтобы они не закрывали вызов преждевременно.
v1.17.0majorbreaking
🕐 7 дн назад · релиз на GitHub ↗

Поддержка тонкой настройки Mistral Large 4 на одном узле, исправление смещения importance sampling и центрирование оценок в AsyncGRPO.

  • Added: Добавлена поддержка тонкой настройки модели Mistral Large 4 (1T параметров) на одном узле с 8 GPU через SFTTrainer.
  • Fixed: Исправлено смещение importance sampling для vLLM: лог-вероятности теперь нормализуются по множеству кандидатов (top-k/p/min-p).
  • Breaking: В AsyncGRPO по умолчанию включено центрирование оценок (score_centering), что меняет поведение оптимизации и требует настройки top_k.
  • Added: Оптимизация AsyncGRPO: адаптивный лимит задач на основе нагрузки vLLM и фильтрация групп с нулевым преимуществом.
v1.16.0major
🕐 21 дн назад · релиз на GitHub ↗

Поддержка AWS Trainium, оптимизация AsyncGRPO через tree attention, добавление Muse-Spark-Open и AMD GPU, типизация аргументов инструментов.

  • Added: Добавлена поддержка обучения на AWS Trainium с автоматической оптимизацией длины последовательности.
  • Added: В AsyncGRPO реализовано tree attention для ускорения и экономии памяти при общих префиксах.
  • Added: Добавлена поддержка модели Muse-Spark-Open (816B) и AMD GPU в асинхронных тренерах.
  • Added: Аргументы вызова инструментов теперь типизируются на основе JSON-схемы.
  • Fixed: Исправлено создание референсной модели с правильным dtype и реализацией внимания.
v1.15.0majorbreaking
🕐 28 дн назад · релиз на GitHub ↗

В TRL v1.15.0 добавлено слитое LM-головка для кратного увеличения длины последовательностей и снижение памяти, а также селективный активационный чекпоинтинг.

  • Added: Внедрено слитое LM-головка (fused LM head) через Triton, что позволяет обрабатывать последовательности до 6.9× длиннее и снижает пиковое потребление памяти на 52–82%.
  • Breaking: PEFT-адаптеры на lm_head больше не поддерживаются; необходимо использовать modules_to_save=['lm_head'].
  • Deprecated: Параметр use_liger_kernel в GRPO, RLOO, DPO и KTO устарел и будет удален в v2.0.0; вместо него используйте model_init_kwargs={'use_kernels': True}.
  • Added: В SFT добавлена поддержка селективного активационного чекпоинтинга (selective activation checkpointing) для оптимизации использования памяти.
  • Deprecated: Возврат полных логитов через compute_metrics и return_outputs=True в DPO/KTO устарел, так как теперь используется оптимизированный путь вычисления.
v1.14.2patch
🕐 1 мес назад · релиз на GitHub ↗

Исправлены критические ошибки обучения и падения в GRPO, RLOO и дистилляции, особенно для Gemma 3/4 и Phi-3.5.

  • Fixed: Исправлено некорректное завершение генерации в GRPO, RLOO и дистилляции: теперь стоп происходит по всем EOS-токенам, объявленным в конфигурации модели.
  • Fixed: Устранена проблема, когда при использовании vLLM метрики оставались некорректными, а параметр mask_truncated_completions отбрасывал все завершенные комплиты.
  • Fixed: Исправлено начало комплита: теперь он корректно начинается с того токена, где токенизированный промпт и промпт+комплит начинают расходиться.
  • Fixed: Исправлена ошибка вычисления DFT-лосса, который становился бесконечным в батчах без обучаемых токенов.
  • Fixed: Исправлена работа precompute_ref_log_probs в среде FSDP при отсутствии референсной модели.
v1.14.1patch
🕐 1 мес назад · релиз на GitHub ↗

Исправлены критические ошибки серверного режима vLLM и улучшена работа CLI-скриптов с аргументами и продолжением обучения.

  • Fixed: Устранён сбой серверного режима при первой синхронизации весов в vLLM версий 0.20–0.25.
  • Fixed: Исправлена генерация: теперь после вызовов инструментов создаётся ровно одно завершение на выборку.
  • Fixed: В CLI-скриптах теперь корректно сохраняются явные аргументы model_init_kwargs.
  • Fixed: В CLI-скриптах добавлена поддержка параметра resume_from_checkpoint для продолжения обучения.
v1.14.0majorbreaking
🕐 1 мес назад · релиз на GitHub ↗

Удалён устаревший модуль trl.losses, логарифмы вероятностей теперь потоковые, добавлен быстрый Triton-ядра для вычисления энтропии.

  • Breaking: Удалён модуль trl.losses: импорт FusedLinearDPOLoss и аналогов больше не работает, так как удалена устаревшая реализация, дублировавшая математику.
  • Added: DPO, KTO и GRPO теперь используют потоковые вычисления логарифмов вероятностей (_ChunkedLogProbFunction), что устраняет рассинхронизацию формул и ошибки градиентов.
  • Added: Добавлено встроенное Triton-ядро для вычисления логарифмов и энтропии, ускоряющее обработку в 14 раз по сравнению с PyTorch-реализацией.
  • Added: Расширены возможности оптимизации: GRPO теперь поддерживает энтропию и маскирование, а DPO принимает смешанные типы потерь и предвычисленные лог-вероятности.
  • Added: Флаг use_liger_kernel=True теперь активирует потоковый путь TRL для вычисления лог-вероятностей, а не просто ядра модели.
v1.13.0major
🕐 1 мес назад · релиз на 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
🕐 2 мес назад · релиз на GitHub ↗

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

  • Версия 1.12.0 на PyPI полностью идентична 1.11.0 из-за ошибки в нумерации.
  • Номер версии 1.12 зафиксирован, поэтому следующая реальная версия будет v1.13.0.
v1.10.0minor
🕐 2 мес назад · релиз на 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
🕐 3 мес назад · релиз на 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
🕐 4 мес назад · релиз на 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
🕐 4 мес назад · релиз на 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).