跳转到主要内容

RL 训练模块

AITraining 包含一个全面的强化学习模块,用于高级 LLM 训练场景。
CLI 命令(--trainer ppo--trainer dpo--trainer reward)使用 TRL 库实现以确保稳定性。此处记录的 autotrain.trainers.rl 模块为自定义 RL 训练流程提供较低级别的构建块。

概述

RL 模块提供:
  • PPO Trainer - 带 KL 惩罚和 GAE 的近端策略优化
  • DPO Trainer - 从偏好数据直接偏好优化
  • 奖励模型 - 标准、成对和多目标奖励模型
  • RL 环境 - 文本生成、数学、代码和偏好比较环境
  • 异步流程 - 带梯度累积的前向-后向训练

PPO 训练

配置

PPO 架构

PPO 实现使用 PPOModel 包装器,为任何因果 LM 添加价值头:

自适应 KL 控制器

AdaptiveKLController 自动调整 KL 惩罚系数,使 KL 散度保持在目标附近:

训练循环

关键特性

DPO 训练

直接从偏好数据训练,无需单独的奖励模型。

配置

偏好数据集

PreferenceDataset 必须直接从 autotrain.trainers.rl.dpo 导入,因为它未在主 __init__.py 中导出。

无参考 DPO

用于无需参考模型的训练:

奖励模型

标准奖励模型

在偏好上训练

成对奖励模型

使用 Bradley-Terry 模型进行直接偏好比较:

多目标奖励模型

组合多个奖励信号:

RL 环境

环境数据类

文本生成环境

多目标环境

偏好比较环境

用于 RLHF 和 DPO 数据收集:

内置环境

前向-后向流程

带梯度累积的异步训练:

内置损失函数

流程支持多个内置损失函数:

自定义损失函数

高级客户端

AsyncTrainingClient 必须直接从 autotrain.trainers.rl.forward_backward 导入,因为它未在主 __init__.py 中导出。

检查点

采样

在训练期间生成样本:

最佳实践

PPO 训练

  1. 从小 KL 系数开始 - 让自适应控制器调整
  2. 使用梯度累积 - 更大的有效批量大小更稳定
  3. 监控 KL 散度 - 应保持在目标附近
  4. 预热价值函数 - 在完整 PPO 之前训练评论者

DPO 训练

  1. 高质量偏好数据 - 质量比数量更重要
  2. 低学习率 - 推荐 1e-6 到 1e-5
  3. 标签平滑 - 0.1 可以提高鲁棒性
  4. 频繁评估 - 跟踪准确性和奖励边际

奖励建模

  1. 平衡数据 - 相等的选择/拒绝示例
  2. 多样化提示词 - 覆盖预期用例
  3. LoRA 提高效率 - 高效微调大型模型
  4. 多目标 - 分离安全性和有用性信号

CLI 集成

对于生产使用,CLI 使用 TRL 实现提供更简单的接口:

下一步

PPO Training

PPO CLI 指南

DPO Training

DPO CLI 指南

Reward Modeling

训练奖励模型

ORPO Training

优势比偏好优化