RLHF Training Toolkit for Large Language Models
Supports SFT/RM/PPO/DPO workflows with modularized architecture and multi-model compatibility.
- SFT (Supervised Fine-Tuning)
支持 Alpaca、Qwen 等模型的指令微调,兼容 HuggingFace 数据集格式。 - RM (Reward Modeling)
基于对比学习构建 Reward Model,支持多轮对话偏好标注。 - PPO (Proximal Policy Optimization)
实现高效策略梯度优化,支持基座模型 + LoRA 的轻量化训练。 - DPO (Direct Preference Optimization)
直接优化偏好对,减少奖励建模误差传递。
- 双适配器架构:分离 SFT 和 RM 的 LoRA 参数,避免任务干扰。
- 共享基座模式:通过动态权重路由实现 Actor/Critic 共享基模型。
| 特性 | Accelerate | DeepSpeed |
|---|---|---|
| 多节点分布式 | ✅ | ✅ |
| ZeRO-3 内存优化 | ❌ | ✅ |
| 混合精度训练 | ✅ | ✅ |
- 原生支持 Qwen-7B/14B
适配 Qwen 的上下文窗口扩展和分组查询注意力机制。 - LoRA 高效微调
支持 Qwen 的旋转位置编码 (RoPE) 和 Flash Attention 2。
- 自适应 KL 控制
动态调节 PPO 的 KL 系数,防止策略崩溃。 - PPO-Critic 增强
引入 Value Bootstrap 和 Generalized Advantage Estimation (GAE)。 - DPO 损失优化
实现 α-softmax 温度缩放和梯度裁剪保护。
# 推荐环境 (CUDA 12.1+)
pip install -r requirements.txt
pip install git+https://github.com/huggingface/peft.git@mainfrom trainer import RLHFTrainer
trainer = RLHFTrainer(
base_model="qwen/Qwen-7B",
lora_rank=8,
dataset_path="your_dataset",
reward_model_path="pretrained_rm",
output_dir="./results"
)
trainer.train(
total_steps=5000,
batch_size=4,
gradient_accumulation=2,
lr=2e-5,
warmup_ratio=0.03
)| 模型家族 | 支持版本 | LoRA 兼容性 | 分布式训练 |
|---|---|---|---|
| LLaMA | 7B/13B | ✔️ | ✅ |
| LLaMA2 | 7B/13B | ✔️ | ✅ |
| Qwen2.5 | 7B/14B | ✔️ | ✅ |
# config.yaml 示例
training:
algorithm: ppo
num_epochs: 3
micro_batch_size: 2
macro_batch_size: 16
model:
base_model_name: qwen/Qwen-14B
adapter_config:
r: 8
lora_alpha: 16
target_modules: ["q_proj", "v_proj"]- 新增 Qwen 模型支持
完整覆盖 Qwen 系列模型的指令微调和强化学习训练。 - 架构重构
采用插件化设计,支持自定义模型/数据加载器。 - 性能优化
DeepSpeed 集成带来 30% 的训练加速。
- 基础 RLHF 三阶段训练
- Alpaca 模型支持
- 加速器框架集成
License: MIT
Copyright: 2025 Wsj All Rights Reserved