01 · 为什么不能只套SFT的一次前后向
SFT通常用已有输入与目标文本训练。在线RL后训练还要让当前行为策略生成回答或轨迹,获得奖励/反馈,再计算更新信号训练策略。生成依赖逐token推理,训练则组织已知样本的前后向;两种工作有不同资源需求。
若训练设备等生成,或生成设备等权重,就会出现外层空闲。本篇优化资源与数据组织,不完整推导PPO/GRPO,也不把异步运行当作与同步训练天然等价。
依据:Proximal Policy Optimization Algorithms · 原始论文 ↗ · verl · 训练、rollout与reference角色及参数更新接口 ↗
02 · 先分清角色,不是每种RL都有相同模型
| 角色 | 主要工作 | 容易混淆的点 |
|---|---|---|
| rollout/行为策略 | 从prompt生成回答、动作或多轮轨迹 | 通常是策略参数在推理引擎中的副本,不含训练optimizer状态。 |
| actor/可训练策略 | 计算Loss、反向、更新参数 | 可能与rollout共享设备,但训练和推理布局不一定相同。 |
| reward/验证器/环境 | 提供奖励或反馈 | 可以是模型、规则或工具;不必都跑一个奖励神经网络。 |
| reference策略 | 某些算法用来约束与参考分布的偏离 | 通常固定;不是生成该批数据的old/behavior策略。 |
| critic/value | 某些算法估计价值来构造优势等 | 并非所有算法需要;不能给GRPO等一律加critic。 |
角色是逻辑分工,不代表必须独占一组设备。verl提供actor、rollout、reference及独立训练worker等实现入口;框架配置和算法决定实际有哪些角色。
03 · 同步循环中,哪些结果依赖哪些版本
明确行为策略版本v → 选prompt/生成预算
↓
rollout生成:token、mask、终止状态、行为logprob/版本等
↓
奖励/环境反馈、reference logprob、value(需要时)
↓
按算法构造优势/回报/训练批与有效mask
↓
actor(及需要的critic)前后向、optimizer更新
↓
将新的可部署策略参数发布给rollout
↓
验证版本/资源就绪,生成下一轮数据奖励、reference和value之间有些工作可并行,但都需要相应轨迹数据。训练算法可能对一批数据做多个mini-batch/epoch更新,old策略与行为策略的定义应按算法保持。不能因为当前actor能重新算概率,就覆盖生成时真实使用的行为概率。
依据:Proximal Policy Optimization Algorithms · 原始论文 ↗ · verl · 训练、rollout与reference角色及参数更新接口 ↗
04 · 共用设备与独立资源,各省什么、付出什么
| 组织方式 | 潜在收益 | 主要代价 |
|---|---|---|
| 同池分时/混合引擎 | 设备在生成和训练间轮换,避免长期静态闲置 | 切换、状态卸载/回迁、推理KV与训练激活竞争。 |
| 独立rollout与trainer池 | 可同时生成和训练,使用不同并行与引擎 | 多份参数、权重传输、队列和策略滞后。 |
| 动态借用空闲资源 | 某阶段暂时帮另一阶段补产能 | 切换和资源回收成本;负载变化可能让预测失准。 |
训练可以用FSDP/TP/PP,rollout引擎可能采用另一种布局;权重交接须重分片/重排并建立正确映射。即便同一设备,也可能有两个布局或副本,不能把共址理解为完全没有同步成本。
依据:verl · 训练、rollout与reference角色及参数更新接口 ↗ · verl · V1异步训练、部分rollout与版本滞后 ↗
05 · 外层流水的机会:独立阶段才能重叠
自设3批轨迹,生成R=40 ms、评分P=20 ms、训练T=30 ms,三个阶段各有独立资源;每批仍须R→P→T。逐批串行为270 ms;流水可让下一批R与当前P/T重叠,最后完成170 ms。
每批有依赖,不同批能否错开?
评分P固定20 ms;R/P/T各有独立资源,同批按顺序。所有轨迹固定同一行为版本;未包含参数发布、策略滞后、争用与质量,不能直接替代同步RL算法。真实生成长度有长尾:整批等最慢轨迹可能浪费其他资源。部分rollout、分组流式交接和有界队列可以改善等待,但要保留prompt分组、奖励归一化、截断与恢复定义,不能只丢掉所有慢样本而假定数据分布未变。
06 · 权重同步:传完字节还要安全发布
完成规定训练更新,固定待发布参数版本v+1
导出/重分片到rollout可解释的布局
将新参数传到接收侧独立或安全可写区域
等待必要分片、转换与设备操作完成
按引擎合同切换可见版本,核对完整性
处理旧请求/旧KV,再允许新版本接任务
# rollback、所有rank版本和迟到消息均要有明确规则。自设7B参数、每参数2B,原始权重载荷14 GB。若有效链路100 GB/s,单份传输的理想下界为0.14 s;实际还含导出、布局、多个接收者、安装与同步。每隔k次更新传一次可摊薄通信,但会增加rollout与trainer版本差。不要把这一字节除法当集群广播实测。
权重变化后,旧版本KV通常不能直接给新版本继续生成。同一轨迹可固定旧参数直到结束;也可按明确算法在新版本下重建保留前缀,并保留每段行为版本/logprob。二者代价与算法语义不同。训练检查点还含optimizer等恢复状态,与发布给rollout的权重包不是一个对象。
依据:verl · 训练、rollout与reference角色及参数更新接口 ↗ · verl · V1异步训练、部分rollout与版本滞后 ↗
07 · 异步样本:带版本、带概率,也要有使用规则
异步rollout可能在trainer更新后才完成,导致数据来自较旧策略。完整轨迹还可能跨多个版本,所以只写“结束版本”不足以解释所有token如何生成。版本差是工程诊断信号,并不量化分布差异或保证某个误差界。
PPO等算法里概率比可以写成exp(logπ_current−logπ_old);异步情况下行为/old分布的定义与纠偏需按具体算法处理。自设某动作行为概率0.2,当前概率0.4,比值2;若把行为概率误改成当前0.4,比值会被伪造为1。裁剪或重要性权重也不是修复任意陈旧数据的通用保证。
依据:Proximal Policy Optimization Algorithms · 原始论文 ↗
可采用同步屏障、限制允许版本跨度/滞后、减少同步间隔、丢弃或等待样本,以及算法规定的纠偏。verl异步文档提供版本度量与样本处理入口;各模式仍有实验与版本边界,不能只设置一个阈值就认为质量保持。
依据:verl · V1异步训练、部分rollout与版本滞后 ↗
队列若生产快于消费会积压,样本变旧;消费快于生产又让trainer等待。需要有界容量、背压、组级完整性和失效/补样规则,并把丢弃、重生成与奖励调用成本计入有效吞吐。
08 · CPU验证轨迹身份、参数切换和流水依赖
下载脚本比较R/P/T串行与流水时刻,逐项检查批次依赖。用教学参数包验证缺分片不可发布、旧读者未结束不能就地覆盖、旧KV不能混入新版本;检查行为概率不可被当前概率替换,以及完整prompt组和版本滞后的准入。它不实现PPO/GRPO训练或真实权重通信。
先建立同步、固定算法的可复验基线
记录每批/每段行为版本、logprob、奖励与有效mask
核对权重导出/安装、发布与KV合同
在同资源预算下改变切换、队列或同步频率
计有效训练样本、丢弃/重算、奖励和通信成本
最终比较奖励/任务质量与达到门槛的总时间依据:verl · 训练、rollout与reference角色及参数更新接口 ↗ · verl · V1异步训练、部分rollout与版本滞后 ↗ · Proximal Policy Optimization Algorithms · 原始论文 ↗
09 · 验收和关联优化
- 数据:prompt组、token/终止mask、行为logprob、版本跨度和奖励归属。
- 发布:分片完整、布局、设备完成事件、版本切换、旧读者与KV。
- 资源:各角色利用率、切换、队列、权重同步与重生成。
- 算法:同步/异步配方、old/reference/behavior定义、纠偏和质量曲线。
- 性能:同设备预算下有效样本吞吐、阶段等待、达标时间,而非只看rollout tokens/s。
rollout可复用推理篇的批处理、FlashAttention和KV优化;trainer可复用训练篇的精度、分片、重计算与更新优化;跨角色交接再使用通信和调度方法。不同GPU/NPU后端要核对训练/推理布局和传输能力,本地CPU例子没有完成多机或昇腾RL实测。
- reference策略与产生样本的behavior策略为什么不一定相同?
- 异步流水省掉等待后,为何还要测策略滞后与最终质量?
- 权重包全部传到接收侧,为什么仍不等于已经可安全接任务?
流程位置与关联方法
这个方法可能出现在多个位置;计算线包含模型计算与算子实现,执行线包含运行时、内存和通信。
资料与核查范围
原理依据以原始论文和官方文档为主;算例与时间线是教学推导。文档核查日期:2026-10-10。引用 main / latest 文档时,实际接口以安装版本为准。
- Proximal Policy Optimization Algorithms · 原始论文 ↗
- verl · 训练、rollout与reference角色及参数更新接口 ↗
- verl · V1异步训练、部分rollout与版本滞后 ↗
代码为接入片段或教学伪代码;本页没有声称完成 NVIDIA / 昇腾硬件实测。