[ PROMPT_NODE_22894 ]
Post Training Verl 故障排查
[ SKILL_DOCUMENTATION ]
# verl 故障排除指南
## 常见问题与解决方案
### OOM (内存溢出) 问题
#### 问题:Rollout 期间 OOM
**症状**:生成阶段 CUDA 内存溢出
**解决方案**:
1. **减小 log prob 批大小**:
yaml
actor_rollout_ref:
rollout:
log_prob_micro_batch_size: 4 # 从 8 减小
2. **启用梯度检查点 (Gradient Checkpointing)**:
yaml
actor_rollout_ref:
actor:
gradient_checkpointing: true
3. **使用带有 CPU 卸载的 FSDP2**:
yaml
actor_rollout_ref:
actor:
strategy: fsdp2
fsdp_config:
offload_policy: true
4. **降低 vLLM 内存利用率**:
yaml
actor_rollout_ref:
rollout:
gpu_memory_utilization: 0.7 # 从 0.9 减小
#### 问题:训练期间 OOM
**症状**:反向传播阶段 CUDA OOM
**解决方案**:
1. **减小批大小**:
yaml
actor_rollout_ref:
actor:
ppo_mini_batch_size: 32 # 从 64 减小
2. **使用梯度累积**:
yaml
actor_rollout_ref:
actor:
gradient_accumulation_steps: 4
3. **启用混合精度**:
yaml
actor_rollout_ref:
actor:
fsdp_config:
mixed_precision: bf16
### 训练稳定性问题
#### 问题:训练不稳定 / Loss 激增
**症状**:Loss 激增、奖励崩溃、发散
**解决方案**:
1. **降低学习率**:
yaml
actor_rollout_ref:
actor:
lr: 5e-7 # 从 1e-6 降低
2. **增加 KL 惩罚**:
yaml
actor_rollout_ref:
actor:
kl_loss_coef: 0.01 # 从 0.001 增加
3. **启用梯度裁剪**:
yaml
actor_rollout_ref:
actor:
max_grad_norm: 1.0
4. **使用更小的 PPO 裁剪范围**:
yaml
actor_rollout_ref:
actor:
clip_ratio: 0.1 # 从 0.2 减小
#### 问题:策略崩溃 (熵降至零)
**症状**:模型输出变得确定性,熵趋近于零
**解决方案**:
1. **在 Rollout 期间增加温度**:
yaml
actor_rollout_ref:
rollout:
temperature: 0.9 # 从 0.7 增加
2. **添加熵奖励**:
yaml
algorithm:
entropy_coef: 0.01
3. **降低 KL 惩罚**:
yaml
actor_rollout_ref:
actor:
kl_loss_coef: 0.0001 # 降低
### 权重同步问题
#### 问题:权重同步缓慢
**症状**:Rollout 和训练阶段之间停顿时间过长
**解决方案**:
1. **使用 FSDP2 加快重分片**:
yaml
actor_rollout_ref:
actor:
strategy: fsdp2
2. **启用异步权重传输**:
yaml
trainer:
async_weight_update: true