异步带来吞吐,但吞吐带来了陈旧性。这句话几乎点中了所有异步强化学习系统的软肋:为了不让GPU空转,采样和训练必须解耦,可一旦解耦,样本在队列里等待的每一秒,策略权重都在往前走。

打开网易新闻 查看精彩图片

Dressage给出的答案不是单一开关,而是一套多层次防御体系。它把Staleness拆成两个正交维度分别处理:Trajectory级和Batch级。

Trajectory级:透明中断与跨度上限

单条长轨迹内部,Partial Rollout会导致版本混杂——一条轨迹写到一半被中断,续写时策略已经换了一版,同一条样本里就混进了不同版本的产出。

Dressage的做法是在Proxy层实现Partial Rollout,让Agent在无感知的情况下完成权重切换续写。同时设定版本跨度上限(max_partial_rollout_preempts),一旦超限就终止并重试,从源头限制单条样本的偏移幅度。

整个过程对Agent完全透明,不依赖Agent自身配合,对任意白盒或黑盒Agent、任意本地或远程Sandbox都成立。

Batch级:推进窗口加回溯复查

异步采样还会带来另一种偏移:样本在队列里等待时权重已更新,组装Batch时拿到的可能是一批“过期”数据。

Dressage采用「推进窗口 + 回溯复查」的惰性策略,以轨迹最后一个可训练token的版本为准,丢弃超出最近N个观测版本的整组GRPO Group,确保进入训练集的样本处于最近的N个版本内。

这里有个容易被忽略的细节:版本号按“被观测到的顺序”排列,而不是按版本标签的字典序或数值序。顺序的定义方式,直接决定了窗口过滤的边界是否可靠。

训练侧:Token-Level Loss Mask补上最后一环

Rollout侧的限制属于“防”,训练侧还需要“治”。在样本构造阶段,系统仅保留最后一个真实版本产出token的loss,将非最终版本的token屏蔽。

这样即便有偏移样本漏进训练集,其影响也被限制在可控范围内。从Rollout侧限制到训练侧过滤,形成闭环。

效果指向同一个结论:在不牺牲吞吐的前提下,Dressage显著缩小了Rollout与当前策略的logprob差距,学习效率随之提升。对于做Agent RL的团队来说,这套分层思路的价值在于——它没有要求你放弃异步,而是承认异步的代价,然后一层一层把它压回去。