Skip to content

9. 最佳实践 ​

一句话理解 ​

RL Post-Training 的最佳实践可以总结为:让 Rollout 跑满、让 Train 稳定、让 Reward 可信、让同步不卡。每一条都对应一组具体的工程动作。

一、算法选择 ​

1.1 优先 GRPO 而非 PPO ​

理由:

  • 去掉 Critic 网络,显存减半(70B 模型省 280GB)。
  • 算法链路简单,故障点少。
  • DeepSeek-R1 已验证其在大规模上的有效性。

代价:每个 prompt 需要生成 G=8-64 个 response,Rollout 压力增大。

适用:

  • 数学、代码、推理等有可验证奖励的任务 → GRPO 必选
  • 通用对话、主观偏好 → PPO + Reward Model 更合适

1.2 长推理任务的 GSPO 改进 ​

Qwen 团队提出的 GSPO(Group Sequence Policy Optimization):把 token-level importance sampling 改为 sequence-level,解决长序列(>4k token)训练时的不稳定。

实践经验:当平均 response 长度超过 2k token 时,考虑用 GSPO 替代 GRPO。

同类选择(截至 2026-10):DAPO(动态采样 + clip 改进,OpenRLHF 已内置)、VAPO(价值预训练 + 非对称裁剪)、Dr.GRPO(去长度偏差)、veRL 内置的 CISPO / SAPO。它们都只是 core_algos 级别的纯函数替换,工程骨架不变。

1.2b Agentic 场景的 FlashREINFORCE ​

OpenRLHF 2026-09 引入的 FlashREINFORCE:critic-free、单 rollout 的异步算法——取消 group 等待,把二元 KL 信任域直接建立在 vLLM 返回的 logprobs 上。适合环境延迟高、样本成本贵的 Agentic 训练;代价是放弃了组内基线,需要更强的 KL 约束兜底。

1.3 DPO 的适用边界 ​

DPO(Direct Preference Optimization)不需要 Rollout,直接用偏好数据对训练:

  • 优点:工程极简,无推理引擎。
  • 缺点:是 Off-Policy 算法,能力上限低于 RL。

适用:快速对齐、资源受限、主观偏好任务。不适用:推理能力训练。

二、Rollout 优化 ​

2.1 推理引擎选择 ​

引擎优势适用
vLLM V1生态最大、功能最全默认选择
SGLangRadixAttention 多轮共享 KVAgentic RL、多轮对话
TensorRT-LLMNVIDIA 硬件极致性能NVIDIA 全栈用户

2.2 关键配置 ​

python
# vLLM 推荐配置(Rollout)
vllm.LLM(
    model=model_path,
    tensor_parallel_size=8,
    gpu_memory_utilization=0.85,           # 充分利用显存
    max_model_len=32768,                   # 按任务调整
    enable_prefix_caching=True,            # 必须开启(GRPO group 共享)
    enable_chunked_prefill=True,           # 长 prompt 必须
    max_num_seqs=256,                      # 提高并发
    swap_space=4,                          # KV cache offload
)

2026 年的额外选项:

  • Server-based rollout:Rollout 以在线服务形式部署(veRL v0.7 起默认),支持动态 batching 与可插拔路由(RequestLoadBalancer),Agentic 多轮请求不再走 SPMD 进程模型。
  • PD 分离:prefill / decode 分池部署(vLLM、SGLang 均支持;veRL v0.9.0 接入 vLLM PD-disaggregated rollout)。GRPO 场景 prefill 占比高(group 共享 prompt),分池收益明显。

2.3 Sampling 参数 ​

参数RLVR 推荐RLHF 推荐说明
temperature1.00.7-1.0探索需要高温
top_p1.00.9-1.0不截断
top_k-1-1不限制
max_tokens任务上限1024-4096防失控

2.4 长尾治理 ​

  • Continuous Batching:默认开启。
  • Length-aware batching:按 prompt 预估长度分桶。
  • Early abort:超过 max_tokens 的样本截断并给 0 reward。
  • Partial Rollout:达到 80% 完成度就进入 Train。

三、Train 优化 ​

3.1 并行策略 ​

70B 模型的典型并行配置:

TP=8 (intra-node NVLink)
PP=4 (inter-node)
DP=N (scale out)

经验:

  • TP 尽量在单机内(NVLink 高带宽)。
  • PP 跨节点,尽量减少(气泡时间)。
  • DP 是主要扩展维度。

3.2 显存优化 ​

  • FlashAttention 3:必须用,省 50% 激活显存。
  • Gradient Checkpointing:长序列必须开,重计算换显存。
  • ZeRO-3(FSDP/DeepSpeed):参数+梯度+优化器全部切分。
  • BF16 + FP32 master:混合精度标准配置。

3.3 稳定性 ​

  • Gradient Clipping:max_norm=1.0。
  • KL penalty:β=0.01-0.1,监控 KL 在 1-10 范围。
  • Ratio clip:ε=0.2,监控 clip fraction 在 5-20%。
  • 学习率 warmup:前 100 step 线性 warmup。

四、Reward 设计 ​

4.1 奖励优先级 ​

可验证奖励 > 规则奖励 > Reward Model > LLM-as-judge

4.2 防 Reward Hacking ​

症状:reward 突然飙升,但人工抽检发现质量没提升。

对策:

  1. 混合奖励:final = α * verifiable + (1-α) * reward_model,α=0.7-0.9。
  2. KL penalty:防止策略偏离 reference 太远。
  3. 长度约束:防止靠堆长度骗 reward。
  4. 定期人工抽检:每 N step 抽样检查。

4.3 代码任务的沙箱 ​

代码执行必须用沙箱:

  • gVisor:用户态内核,性能好。
  • Firecracker:microVM,隔离强。
  • Kata Containers:容器 + VM 混合。

配置:

  • 网络隔离(无出网)
  • 文件系统隔离(只读 root + tmpfs)
  • 资源限制(CPU=1, MEM=2GB, timeout=5s)

五、权重同步 ​

5.1 同步频率 ​

  • 每 step 同步(On-Policy):算法收敛最强,网络压力最大。
  • 每 N step 同步(Near On-Policy):N=2-8,配合 ratio clip。
  • 异步同步(Off-Policy):算法收敛弱,GPU 利用率最高。

推荐:从每 step 同步开始,出现网络瓶颈再放宽。

5.2 同步通道 ​

通道延迟适用
NVLink 直传<1s同节点
NCCL over RDMA1-10s跨节点
共享 NVMe10-30s跨集群
对象存储分钟级异地容灾

5.3 传输优化 ​

  • FP8 / MXFP4 量化:带宽减半到四分之一,精度损失可控;DeepSeek-V4 GRPO 已在 veRL 上端到端使用。
  • 增量同步:delta 分片直投(veRL delta_sharded,72B 实测 3.1 倍);MoE 有无损、通信量降两个数量级的专用方案(arXiv:2605.07330)。
  • 新传输后端:NCCL / NIXL 直传、TorchTitan 后端(Qwen3-8B / 32 卡权重同步快 10.3 倍)。
  • 流水线:layer-by-layer 流式传输。

六、可观测性 ​

6.1 必看指标 ​

yaml
# Prometheus 指标
rl_step_total                    # 总 step 数
rl_reward_mean                   # 平均 reward
rl_reward_std                    # reward 方差
rl_kl_divergence                 # KL 散度
rl_response_length_mean          # 平均 response 长度
rl_ratio_clip_frac               # PPO clip 比例
rl_rollout_throughput_tps        # Rollout token/s
rl_train_mfu                     # 训练 MFU
rl_weight_sync_duration_seconds  # 权重同步耗时
rl_rollout_worker_utilization    # Rollout GPU 利用率
rl_train_worker_utilization      # Train GPU 利用率
rl_sample_mean_lag               # 样本平均陈旧度(半异步/异步必配)
rl_sample_drop_ratio             # 超龄样本丢弃率

6.2 告警规则 ​

yaml
- alert: RLRewardCollapse
  expr: rate(rl_reward_mean[10m]) < -0.1
  for: 5m

- alert: RLKLExplosion
  expr: rl_kl_divergence > 50
  for: 1m

- alert: RLLengthCollapse
  expr: rate(rl_response_length_mean[10m]) < -0.3
  for: 5m

- alert: RLLowTrainMFU
  expr: rl_train_mfu < 0.2
  for: 15m

- alert: RLHighSampleDrop
  expr: rl_sample_drop_ratio > 0.2
  for: 10m

- alert: RLStalenessGrowing
  expr: rl_sample_mean_lag > 2
  for: 10m

七、常见踩坑 ​

7.1 训练崩溃 ​

症状:loss NaN 或 reward 骤降。

排查:

  1. 学习率是否过高?
  2. KL 是否失控?
  3. ratio clip 比例是否 >50%?
  4. 是否有 reward 异常值(NaN / Inf)?

对策:降低 LR / 提高 KL β / 收紧 clip / 过滤异常 reward。

7.2 Rollout 吞吐下降 ​

症状:token/s 持续下降。

排查:

  1. KV cache 泄露?
  2. CUDA graph 失效?
  3. 长度分布变化?

对策:定期重启 vLLM 实例 / 调整 max_num_seqs / 长度分桶。

7.3 权重同步超时 ​

症状:同步耗时超过 step 时间。

排查:

  1. 网络带宽是否够?
  2. 是否跨 AZ?
  3. 是否有其他流量竞争?

对策:FP8 量化 / 增量同步 / 拓扑优化 / 专用 RDMA 网络。

八、成本优化 ​

8.1 Spot 实例 ​

  • Rollout:可以用 spot(无状态)。
  • Train:必须 reserved(有状态 + Gang)。
  • Reward:可以 spot。

8.2 弹性伸缩 ​

  • 根据当前队列深度动态调整 Rollout worker 数量。
  • 夜间低峰缩减 Rollout,保留 Train。
  • GPU 借贷(2026 年新手段):veRL v0.9 separate_async 模式下,训练侧完成更新后的空闲 GPU 可临时借给生成侧跑 rollout,不设固定配比——让负载决定资源流向。

8.3 异构硬件 ​

  • Rollout 用 L40S / H20(推理性价比高)。
  • Train 用 H100 / H200 / B200(训练性能优先)。

一句话总结 ​

把 Rollout 当推理服务优化(vLLM 全套手段),把 Train 当预训练优化(Megatron 全套手段),把 Reward 当产品优化(防 hack、可信),把同步当网络优化(NCCL + 量化 + 流水线)。四个方面都做到位,RL Post-Training 就能稳定产出。

本章小结 ​

  • 算法:默认 GRPO,长序列用 GSPO/DAPO 类变体,主观偏好用 PPO,Agentic 高延迟场景评估 FlashREINFORCE。
  • Rollout:server-based 部署 + Prefix Caching + PD 分离 + Continuous Batching + 长尾治理。
  • Train:TP=8/PP=4/DP=N + FlashAttention + KL penalty。
  • Reward:可验证优先 + 混合防 hack + 沙箱平台化(快照/恢复/续跑)。
  • 同步:delta 分片 + FP8/MXFP4 + NCCL/NIXL 多后端。
  • 异步:版本打标 + 深度上界 + TIS 修正,监控 lag 与丢弃率。
  • 可观测:reward / KL / length / clip_frac / MFU / staleness 六大指标。
  • 成本:Rollout 用 spot + 异构硬件 + 弹性伸缩 + GPU 借贷。

Released under CC-BY-SA-4.0 License.