正文
最强最快 coding RL 训练
AReaL-boba² 基于最新的 Qwen3 系列模型,针对 8B 和 14B 尺寸进行 coding RL 训练,并在评测代码能力的榜单 LiveCodeBench v5 (LCB),Codeforce (CF) 以及 Codecontests (CC) 上取得了开源 SOTA 的成绩。
其中,基于部分内部数据的最强模型 AReaL-boba²-14B 在 LCB 榜单上取得了
69.1
分,CF rating 达到
2044
,CC 取得
46.2
分,大幅刷新 SOTA。
此外,AReaL 团队还基于开源数据集发布了完全开源可复现的 AReaL-boba²-Open 系列模型,同样能在 8B 和 14B 尺寸上大幅超过现有基线。
Table 1: AReaL-boba²-8B/14B 在 LiveCodeBench, Codeforce, Codecontest 等 benchmark 上达到同尺寸 SOTA 水准。
AReaL 团队还在数学任务上进行了异步 RL 训练的扩展性分析(scaling analysis):针对不同模型尺寸(1.5B,7B,32B)以及不同 GPU 数量,基于异步 RL 的 AReaL-boba² 系统的训练效率都大幅超过了采用传统同步 RL 的训练系统。相比于共卡模式,AReaL-boba² 所采用的分卡模式显存碎片更少,在更大模型尺寸下(32B)依然能够保持良好的扩展性。
为何需要异步 RL 训练?同步 RL 痛点剖析
在传统同步 RL 训练流程中,算法采用当前模型产生批量的输出(batch output),然后用收集的输出对当前模型计算损失函数并更新参数。同步 RL 训练中每一个批次(batch)的数据都是由同一个模型版本产生,因此模型参数更新需要等待批次中数据全部生成完成才能启动(Fig 2 左图)。由于推理模型的输出长短差异极大,在同样的批大小(batch size)下,RL 训练必须
等待批次中最长
的输出生成完才能继续进行训练,以及进行下一个批次的数据收集,造成
极大 GPU 资源浪费
。
Fig. 2 左图(示意图):同步 RL 训练的计算过程,同批次输出(蓝色)需要等待最长的输出生成完成,存在大量 GPU 空闲;右图(示意图):采用 1 步重叠(1-step overlap)的 RL 训练计算过程,单步模型训练与单批次数据收集同时进行。同批次内依然存在大量 GPU 空闲。
上图展示了几种常见的 RL 训练数据流。
左图为传统共卡同步 RL 系统计算模式,即 RL 生成和训练阶段分别使用全部 GPU 交替进行。由于训练任务需要完全等待生成完成,而生成阶段所花费的时间取决于最长的输出所完成时间,很容易造成 GPU 空闲。
右图为 1-step Overlap RL,是一种同步 RL 的常见改进,由 DeepCoder 和 INTELLECT-2 项目采用。Overlap RL 采用分卡模式,收集一批次输出的同时在不同的 GPU 上进行模型训练,平衡了生成和训练所需要的计算资源并避免了切换成本。但是,在 Overlap RL 系统中,每一个批次的训练数据依然要求全部由同一个版本模型生成,生成时间依然会被最长的输出所阻塞,并不能解决同步 RL 训练效率低的问题。
AReaL-boba² 的高效秘诀:完全异步 RL 训练
AReaL-boba² 通过
算法系统 co-design
的方式实现了完全异步 RL 训练(fully asynchronous RL),从根本上解决了同步 RL 的各种问题。在 AReaL-boba² 的异步训练框架中,生成和训练使用不同 GPU 并完全解耦。生成任务持续流式进行以保证 GPU 资源始终满载运行,杜绝了 GPU 空闲。训练任务持续接收生成完成的输出,在训练节点上并行更新参数,并将更新后的参数与推理节点同步。