[ PROMPT_NODE_22880 ]
fine-tuning-with-trl
[ SKILL_DOCUMENTATION ]
# TRL - Transformer 强化学习库
## 快速开始
TRL 提供了用于将语言模型与人类偏好对齐的后训练方法。
**安装**:
bash
pip install trl transformers datasets peft accelerate
**监督微调 (SFT)** (指令微调):
python
from trl import SFTTrainer
trainer = SFTTrainer(
model="Qwen/Qwen2.5-0.5B",
train_dataset=dataset, # 提示词-补全对
)
trainer.train()
**DPO** (偏好对齐):
python
from trl import DPOTrainer, DPOConfig
config = DPOConfig(output_dir="model-dpo", beta=0.1)
trainer = DPOTrainer(
model=model,
args=config,
train_dataset=preference_dataset, # 选中/拒绝配对
processing_class=tokenizer
)
trainer.train()
## 常见工作流
### 工作流 1:完整 RLHF 流水线 (SFT → 奖励模型 → PPO)
从基础模型到人类对齐模型的完整流水线。
复制此清单:
RLHF 训练:
- [ ] 第 1 步:监督微调 (SFT)
- [ ] 第 2 步:训练奖励模型
- [ ] 第 3 步:PPO 强化学习
- [ ] 第 4 步:评估对齐后的模型
**第 1 步:监督微调**
在指令遵循数据上训练基础模型:
python
from transformers import AutoModelForCausalLM, AutoTokenizer
from trl import SFTTrainer, SFTConfig
from datasets import load_dataset
# 加载模型
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B")
# 加载指令数据集
dataset = load_dataset("trl-lib/Capybara", split="train")
# 配置训练
training_args = SFTConfig(
output_dir="Qwen2.5-0.5B-SFT",
per_device_train_batch_size=4,
num_train_epochs=1,
learning_rate=2e-5,
logging_steps=10,
save_strategy="epoch"
)
# 训练
trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer
)
trainer.train()
trainer.save_model()
**第 2 步:训练奖励模型**
训练模型以预测人类偏好:
python
from transformers import AutoModelForSequenceClassification
from trl import RewardTrainer, RewardConfig
# 加载 SFT 模型作为基础
model = AutoModelForSequenceClassification.from_pretrained(
"Qwen2.5-0.5B-SFT",
num_labels=1 # 单个奖励分数
)
tokenizer = AutoTokenizer.from_pretrained("Qwen2.5-0.5B-SFT")
# 加载偏好数据 (选中/拒绝配对)
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
# 配置训练
training_a