Skip to content

RLHF 训练框架 AReaL

摘要

强化学习(Reinforcement Learning, RL)已成为训练大型语言模型(Large Language Models, LLMs)的重要范式,尤其在提升模型推理能力方面表现出色。高效的 LLM 强化学习依赖于大规模并行化以生成充足的 Rollout 数据,从而充分探索策略空间,这对训练系统的效率提出了极高要求。当前主流的大型强化学习系统多采用同步设计,通过在固定批次中交替执行生成与训练过程,确保每个训练批次的数据均由相同或最新版本的模型生成。尽管这种设计有助于稳定训练过程,但其系统效率存在显著瓶颈:由于 LLM 在不同提示下的输出长度差异显著,同步系统在生成阶段必须等待整个批次中最长序列完成解码后才能进入训练阶段,导致大量 GPU 资源处于空闲状态,利用率低下。

为此,本文提出 AReaL (Asynchronous Reinforcement Learning),一个完全异步的强化学习训练系统,实现了生成与训练流程的彻底解耦。在 AReaL 中, Rollout Worker 持续并行地生成新样本,无需等待训练阶段完成;而训练 Worker 则在积累足够数据后立即进行模型更新。为提升系统效率, AReaL 引入了一系列优化机制,显著提高了 GPU 利用率。为保障训练稳定性,系统通过平衡 Rollout 与训练 Worker 的负载来控制数据陈旧度,并采用一种增强型陈旧度容忍的 PPO 变体,以更有效地处理过时样本。在数学推理与代码生成任务上的大量实验表明,相比相同 GPU 资源下的同步系统, AReaL 最高可实现 2.77 倍的训练加速,同时在最终性能上达到相当甚至更优的结果。AReaL 的开源代码可通过以下链接获取:[链接]。

1. 引言

强化学习(Reinforcement Learning, RL)作为扩展大型语言模型(LLMs)推理能力的关键技术,能够引导模型在输出最终答案前生成中间推理步骤(即“思维链”),从而实现测试时扩展(test-time scaling)。这类具备推理能力的模型被称为大型推理模型(Large Reasoning Models, LRMs),在数学推理、代码生成、逻辑推理及代理任务等复杂问题求解中展现出卓越性能。

高效的 RL 训练通常需要大规模并行化,以生成海量 Rollout 样本,充分探索策略空间,这对训练系统的吞吐能力提出了严峻挑战。例如,主流 RL 算法如 PPO 和 GRPO 通常要求每轮训练使用数千个样本构成全局批次。此外, LRMs 在单个提示下可能生成长达数万个 token 的推理轨迹,进一步加剧了对高效训练系统的依赖。

然而,构建高效的大型 RL 系统面临多重挑战。首先,系统需在模型生成(推理)与参数更新(训练)之间频繁切换,若缺乏优化,将引入显著的系统开销。其次,由于不同提示对应的输出长度差异巨大,生成与训练阶段的负载高度动态,易导致硬件资源利用率波动。更重要的是,经典 RL 算法(如 PPO)依赖于“同策略”(on-policy)数据,即训练数据需由当前或最新策略生成,以保证训练稳定性,这进一步增加了系统设计的复杂性。

现有系统普遍采用同步设计,严格交替执行生成与训练阶段,以确保使用最新策略数据进行训练。然而,这种设计在生成阶段必须等待最长序列完成,导致短序列的 GPU 资源被浪费。尽管已有研究尝试引入异步或并行机制,但大多仍受限于批量同步生成的框架,即一个训练批次中的所有样本来自同一模型版本,未能从根本上解决生成阶段的效率瓶颈。

为突破上述限制,我们提出 AReaL (Asynchronous Reinforcement Learning),一个完全异步的 RL 训练系统,通过解耦生成与训练流程,在不牺牲甚至提升模型性能的前提下大幅提升系统效率。AReaL 采用流式生成机制, Rollout Worker 持续生成样本,无需等待训练完成,从而最大化 GPU 利用率。训练 Worker 则在收集到足够数据后立即执行更新。模型更新完成后, Rollout Worker 通过权重同步机制加载最新参数。在此异步架构下,每个训练批次可能包含由多个不同版本策略生成的样本。为此, AReaL 设计了改进的 PPO 目标函数,能够有效利用陈旧数据,并引入数据过滤机制控制样本陈旧度。此外,系统还集成了可中断生成、动态批处理可变长度序列及并行奖励计算等优化技术,进一步提升整体效率。

我们在数学推理与代码生成任务上对 AReaL 进行了评估,使用了最高达 32B 参数的模型。实验结果表明,相比最先进的同步系统, AReaL 实现了最高 2.57 倍的训练吞吐量提升,并在多达 512 块 GPU 上展现出良好的线性扩展性。更重要的是,这种效率提升并未以牺牲性能为代价,反而在部分任务上带来了准确率的提升,验证了 AReaL 在保持高性能的同时显著提升训练效率的能力。

2. 相关工作

2.1 大型语言模型的强化学习

强化学习已成为提升 LLMs 推理能力的核心方法。现有研究主要聚焦于具有明确奖励信号的任务,如数学推理、代码生成、科学问题求解和工具调用等。训练过程中,模型通过逐步扩展推理路径学习复杂推理能力。部分开源项目通过知识蒸馏技术,利用小规模模型提升推理性能。与本文工作不同,基于人类反馈的强化学习(RLHF)和零样本推理方法侧重于从预训练模型中激发推理能力,而非针对特定任务进行有监督的强化学习训练。

2.2 异步强化学习

异步强化学习架构及其算法创新在游戏 AI 领域已取得显著成功。近年来,也有研究探索将异步机制应用于 LLM 训练,但通常局限于短文本场景(如 RLHF)或仅实现生成与训练的有限重叠。本文工作扩展了这些研究,提供了一个更灵活的陈旧度-效率权衡机制。与并发研究相比, AReaL 采用算法-系统协同设计思路,不仅构建了高效的系统架构,还实现了适应高陈旧度场景的实用算法。我们的可中断生成技术在概念上与同步系统中的部分 Rollout 相似,但结合异步架构后,算法能容忍更高程度的数据陈旧度,并与可中断机制兼容。

2.3 大型语言模型的训练与推理

本文聚焦于密集型 Transformer 架构。RL 训练包含两个核心阶段:生成(推理)与参数更新(训练)。生成阶段依赖高效的自回归解码、键值缓存管理及优化的解码内核;训练阶段则需协调数据并行、张量并行和流水线并行策略。传统同步系统在同一硬件上顺序执行两阶段,但二者最优并行策略不同,导致资源利用不匹配。近期研究提出上下文切换或权重重切分技术以缓解此问题。AReaL 通过解耦两阶段,彻底消除了关键训练路径上的重切分开销。

3. 背景知识

3.1 强化学习训练基础

3.1.1 强化学习形式化与 PPO 算法

我们采用马尔可夫决策过程(Markov Decision Process, MDP)框架,定义为五元组 S,A,r,P,γ,H,其中S 为状态空间,A 为动作空间,P 为状态转移函数,r:S×AR 为奖励函数,γ 为折扣因子,H 为决策步长。推理模型(LRM)实现参数化策略πθ:SA,动作atL 对应词汇表中的 token。状态st 由初始问题q 和历史生成序列(a1,,at1) 构成,转移函数为确定性拼接操作st+1=concat(st,at)。给定问题分布D,优化目标为:

J(θ)=EqD,atπθ(|q,a<t)[t=1Hγt1r(st,at)].

实践中,我们采用基于规则的稀疏奖励函数,仅在最终动作处提供非零反馈(如答案正确性),并设 γ=1。我们使用近端策略优化(Proximal Policy Optimization, PPO)算法优化该目标:

JPPO(θ)=EqD,atπold(|q,a<t)[t=1Hmin(ut(θ)A^(st,at),clip(ut(θ),1ϵ,1+ϵ)A^(st,at))],

其中 ut(θ)=πθ(at|st)πold(at|st) 为重要性采样比率,A^(st,at) 为优势函数估计值。标准实践中,全局批次被划分为小批次以进行参数更新。

3.1.2 分布式推理模型训练系统

本文工作聚焦于在监督微调(Supervised Fine-Tuning, SFT)后,通过 RL 进一步增强 LRMs 的推理能力。经过 SFT 的 LRMs 可生成长推理序列(如 32K tokens),且 RL 训练通常需要较大的全局批次(如 128 个提示,每个生成 16 个响应)以保证稳定性。在同步 RL 系统中,生成(Rollout)与训练阶段在相同 GPU 上交替执行:生成阶段使用最新模型为每个查询生成多条推理轨迹,训练阶段则基于这些轨迹更新模型参数。

3.2 异步强化学习系统的动机

Refer to caption

同步 RL 系统存在两大瓶颈,促使我们设计完全解耦的异步系统。

推理设备利用率低:如图 1 (左)所示,生成阶段需等待批次中最长序列完成,导致短序列 GPU 长时间空闲,造成计算资源浪费。

可扩展性差:同步系统将生成任务分布到所有设备,降低了单 GPU 的解码批次大小,使解码过程进入内存-IO 受限区域,额外设备难以提升性能。

4. 系统架构

Refer to caption

4.1 系统概述

图 2 展示了 AReaL 的整体架构与数据流。系统包含四个核心组件:

4.1.1 可中断的 Rollout Worker

负责处理两类请求:

  1. 生成请求:根据输入提示生成响应序列。
  2. 更新权重请求:中断所有正在进行的生成任务,加载最新模型参数。中断时, Worker 会丢弃基于旧权重计算的 KV 缓存,并使用新权重重新计算。随后,继续解码未完成的序列,直至下一次中断或终止。值得注意的是,这种中断机制可能导致单条轨迹由多个不同策略版本生成的片段拼接而成,这带来了新的算法挑战,将在第 5 节详述。

4.1.2 奖励服务

负责评估模型生成响应的正确性。例如,在代码生成任务中,该服务提取生成的代码并执行单元测试以验证其功能正确性。

4.1.3 训练 Worker

持续从回放缓冲区采样数据,直至累积达到预设的训练批次大小。随后执行 PPO 更新,并将更新后的模型参数存入分布式存储。为保证数据新鲜度,回放缓冲区中的样本仅被使用一次。

4.1.4 Rollout 控制器

Refer to caption

作为 Rollout Worker、奖励服务与训练 Worker 之间的协调中枢。在训练过程中,控制器从数据集中读取样本,向 Rollout Worker 发起生成请求。收到响应后,将其发送至奖励服务获取奖励信号。最终,将完整的轨迹及其奖励存入回放缓冲区供训练使用。当训练 Worker 完成参数更新后,控制器触发 Rollout Worker 的update_weights操作。图 3 展示了生成与训练的管理流程。该异步流水线设计确保了生成与训练资源的持续高效利用。

4.2 算法挑战

尽管异步设计显著提升了设备利用率,但也引入了若干关键算法挑战。

4.2.1 数据陈旧度

由于 AReaL 的异步特性,每个训练批次可能包含由多个历史策略版本生成的样本。数据陈旧度会扩大训练数据分布与当前策略之间的差距,可能影响学习效率,尤其在长轨迹场景下更为显著。

4.2.2 策略版本不一致

如前所述,单条轨迹可能由不同策略版本生成的片段构成。这种不一致性违背了标准 PPO 算法的基本假设——即整个轨迹由单一旧策略 πold 生成。

下一节将详细介绍 AReaL 如何在保留异步系统效率优势的同时,克服上述算法挑战。

5. 解决 AReaL 中的算法挑战

5.1 陈旧度感知训练

为防止因训练数据过度陈旧而导致性能下降,我们引入超参数 η,表示每个训练批次允许的最大陈旧度。当η=0 时,系统退化为同步模式,所有训练样本均由当前策略生成。我们通过动态调节生成请求的吞吐量来控制系统中的陈旧度。设当前策略版本为i,已生成轨迹总数为Nr,每步训练批次大小为B,在提交新生成请求时强制满足以下约束:

(Nr1)/Bi+η.

同时,优先从回放缓冲区选取较早生成的轨迹构成训练批次。系统实现中, Rollout 控制器跟踪样本总数 Nr 和当前策略版本i,拒绝可能违反陈旧度约束的生成请求。

需注意,该速率控制机制是一种简单有效的工程实践。但当 η 过小时,极长轨迹的生成可能成为瓶颈,限制整体吞吐量。因此,实践中建议采用较大的η 值以最大化系统吞吐。这也促使我们采用一种能有效利用陈旧数据的增强型算法。

5.2 解耦的 PPO 目标

我们采用解耦的 PPO 目标函数,明确区分行为策略(behavior policy)与近端策略(proximal policy)。行为策略 πbehav 指实际用于采样轨迹的策略,而近端策略πprox 则作为正则化更新的近期参考策略。通过重要性采样,我们推导出适用于异步训练的解耦 PPO 目标:

J(θ)=EqD,atπbehav[t=1Hmin(πθ(at|st)πbehav(at|st)A^t,clip(πθ(at|st)πbehav(at|st),1ϵ,1+ϵ)A^t)]=EqD,atπbehav[t=1Hπprox(at|st)πbehav(at|st)min(utprox(θ)A^t,clip(utprox(θ),1ϵ,1+ϵ)A^t)],

其中 utprox(θ)=πθ(at|st)πprox(at|st) 为相对于近端策略的重要性比率。为简洁起见,省略了状态-动作依赖项。

解耦 PPO 目标(公式 5)与标准 PPO (公式 2)的核心区别在于引入了独立的近端策略 πprox。若在异步训练中直接使用行为策略作为近端策略,将导致更新过程向质量较低的旧策略偏移,阻碍模型进步。通过选用近期高质量策略作为πprox,模型更新被约束在高质量策略的信任区域内,从而稳定训练过程。

解耦 PPO 目标的一个关键优势是:它不再要求训练批次中的所有数据必须由单一策略生成。这一特性对于处理可中断生成与策略更新带来的策略不一致性至关重要。我们证明,跨轨迹的不一致策略版本等价于从单一行为策略 πbehav 中采样(详见附录 C)。

命题 1:对于任意由策略序列 (πθ,,πθ+k) 生成的轨迹(q,a1,,aH),其中πθ+i 生成子序列(ati,,ati+1),且1=t0<<tk+1=H,存在一个行为策略πbehav,使得中断生成过程等价于完全从πbehav 中采样。

实践说明:尽管 Hilton 等人[10]建议对 πprox 维护参数的指数移动平均,但对 LRMs 而言计算开销过高。因此,我们简单地将每次更新前的参数作为πprox。公式 5 在每个训练步骤处理全局批次时,通过重新计算各 token 的概率实现。

6. 实现

AReaL 基于 Python 和 PyTorch 构建,继承并扩展了 ReaLHF 框架。系统集成 SGLang v0.4.6 作为生成服务后端, Megatron-Core v0.11.0 作为训练后端,整体由 SLURM 进行资源调度。为最大化生成与训练吞吐量,我们针对系统流水线中的关键瓶颈实施了多项系统级优化。

AReaL 将 GPU 计算与 CPU 操作解耦,包括基于规则的奖励计算(如数学题的字符串匹配、代码任务的单元测试执行)及基于 TCP 的数据传输。通过在独立线程中执行这些操作并流水线化处理流程,我们将奖励计算和数据传输与后续生成请求并行化。在 Rollout Worker 中,我们使用asyncio协程并发处理多个请求,避免相互阻塞。

为高效处理可变长度序列的训练,我们采用无填充的序列打包策略,并结合一种动态批处理算法。该算法在固定内存约束下优化微批次内的 token 分布(见算法 1),在最大化 GPU 内存利用率的同时,最小化所需的前向-后向传播次数。

python
# 算法 1:动态批量分配
def dynamic_batching(sequence_lengths, max_capacity, min_batches):
    """
    对序列进行动态批量分配,确保每个微批次的总长度不超过 max_capacity。

    :param sequence_lengths: 序列长度列表
    :param max_capacity: 每个微批次的最大容量
    :param min_batches: 最小微批次数量
    :return: 分配后的微批次列表
    """
    # 按长度降序排序
    sequence_lengths.sort(reverse=True)
    batches = []
    for length in sequence_lengths:
        if len(batches) < min_batches or not any(batch['remaining'] >= length for batch in batches):
            # 若微批次数不足或无合适空间,则创建新微批次
            batches.append({'lengths': [length], 'remaining': max_capacity - length})
        else:
            # 选择剩余空间最小且能容纳当前序列的微批次
            suitable_batches = [batch for batch in batches if batch['remaining'] >= length]
            chosen_batch = min(suitable_batches, key=lambda batch: batch['remaining'])
            chosen_batch['lengths'].append(length)
            chosen_batch['remaining'] -= length
    return batches

7. 实验

本节的评估包含三个部分:(1) 在不同模型规模下与当前最先进开源框架的全面性能对比;(2) 基于不同计算资源的强扩展性分析;(3) 验证关键设计选择有效性的消融研究。

7.1 实验设置

我们在具有挑战性的数学推理与代码生成任务上对 AReaL 进行了评估。实验采用 DeepSeek-R1 [6] 中的蒸馏版 Qwen2 模型系列作为基础模型(即 R1-Distilled-Qwen),涵盖从 1.5B 到 32B 参数的多个规模。对于每个任务-模型组合,我们固定 PPO 更新步数进行训练,并在训练结束后评估最终检查点的性能。数学任务遵循 Qwen 评估协议 [56,13],代码生成任务则采用 LiveCodeBench (8/1/24 –2/1/25) [14] 的官方评测标准。除非另有说明,最大陈旧度 η 在代码任务中设为 4,数学任务中设为 8,其余训练超参数详见附录 A。

实验在由 64 个节点组成的 H800 GPU 集群上进行,每个节点配备 8 张 GPU。节点内部通过 NVLink 互联,节点间通过带宽达 3.2Tbps 的 RoCE 网络连接。为保证训练快速收敛,完整实验的基线配置至少使用 16 个节点。根据模型规模成比例增加计算资源,在训练最大规模的 32B 模型时使用了 48 个节点。该扩展策略确保了在高效利用资源的同时,并行执行不同规模的实验。

在 AReaL 系统中,我们保持推理与训练设备的固定比例,将四分之三的 GPU 资源分配给 rollout 生成阶段。该比例基于前期实验确定: 75%-25% 的资源分配相比 50%-50% 能实现更高的训练吞吐量。尽管我们采用此比例作为启发式配置,但需指出最优分配可能因具体任务和训练阶段而异,未来可通过动态调整进一步优化(见第 8 节讨论)。

7.2 端到端性能对比

我们构建了两个同步强化学习系统的先进基线:针对 1.5B 模型的数学推理任务采用 DeepScaleR [25],针对 14B 模型的代码生成任务采用 DeepCoder [24],两者均使用 veRL [45]框架进行训练。对于 7B 和 32B 等更大规模的模型,由于缺乏可比基线,我们通过从头实现 AReaL 的同步版本作为对照。训练完成后,在数学任务上采用 AIME24 基准测试,在代码任务上采用 LiveCodeBench [14]进行评估。其他基准的详细结果见附录 B。

主要实验结果如表 1 所示。为确保公平比较,我们使用最新的 veRL 代码重新测量了各系统的吞吐量。结果表明, AReaL 在保持甚至略微提升模型性能的同时,显著缩短了训练时间,最高可实现 2.77 倍的端到端加速。

模型AIME24 ↑# 节点PPO 步骤训练小时数↓
1.5B 基础模型29.3
w/ veRL43.1*1625033.6
w/ 同步 AReaL42.01625041.0
w/ AReaL (我们的)42.21625014.8
7B 基础模型54.3
w/ veRL63.02425052.1
w/ 同步 AReaL63.02425057.7
w/ AReaL (我们的)63.12425025.4
模型LiveCodeBench ↑PPO 步骤训练小时数↓# 节点
14B 基础模型53.4
w/ veRL57.9*328044.4
w/ 同步 AReaL56.7328048.8
w/ AReaL (我们的)58.1328021.9
32B 基础模型57.4
w/ veRL61.2486051.1
w/ 同步 AReaL61.2486051.1
w/ AReaL (我们的)61.0486031.1

注:表中 veRL 结果来自原论文报告值,其余为本实验测量值。

7.3 可扩展性分析

Refer to caption

我们对比了 AReaL 与当前最先进的同步系统 veRL [45] 在不同模型规模和上下文长度下的可扩展性。实验选取 7B 模型在 32k 上下文长度下 veRL 不发生 OOM 的最小 GPU 数量为基准,并按模型规模同比例扩展。我们测量训练的有效吞吐量(即 PPO 更新阶段每秒消耗的生成 token 数),在完成适当热身后进行统计。图 4 展示了上下文长度为 16k 和 32k 时的结果。此处上下文长度指提示与生成序列的总和,最大提示长度限制为 1k。

结果显示,在所有配置下, AReaL 均表现出接近线性的扩展趋势,而同步系统则难以有效扩展。AReaL 在多数场景下吞吐量显著超越基线,最高可达 2.5 倍加速。值得注意的是,在较短上下文场景下, AReaL 的优势可能减弱,因为生成吞吐量无法完全匹配训练速度,导致部分生成序列未被及时消耗。此外, AReaL 在处理长生成序列时表现出更强的鲁棒性,这得益于其异步机制与可中断生成能力。长序列的生成时间可完全隐藏在训练的关键路径之外,因此延长生成长度对有效训练吞吐量影响甚微。

7.4 算法消融研究

Refer to captionRefer to captionRefer to caption

为验证第 5 节提出的算法创新,我们在 1.5B LRM 的数学任务上进行了消融实验。沿用 DeepScaleR 的基本设置,逐步调整最大陈旧度 η 进行测试。具体对比了不同η 值下,是否采用解耦 PPO 目标函数的性能差异。图 5a 和 5b 展示了 250 个训练步后的学习曲线,表 2 列出了在多个数学推理基准上的最终性能。我们遵循 PPO 标准实践,在每个训练步骤内执行多个小批次更新。需强调,η 参数用于约束训练批次的数据陈旧度上限。

图 5a 表明,标准 PPO 在存在数据陈旧时性能显著下降(η>0),甚至无法达到同步系统(η=0)的水平。轻微的陈旧度即导致性能劣化,这源于不恰当的裁剪中心及可中断生成带来的策略不一致性。且随着陈旧度增加,性能持续下降,这与以往研究结论一致 [2,30]。相比之下,图 5b 显示,采用解耦 PPO 目标函数后,系统在处理陈旧数据时的训练稳定性显著提升,与游戏领域观察到的现象相符 [10]。此外,即使使用解耦目标,无限制的陈旧度(η)仍会导致性能劣于零陈旧度配置。但当陈旧度被适当限制(如η8)时,对最终性能影响极小,同时通过异步流水线大幅加速训练(见图 5c 与表 2)。这些结果验证了我们结合可控陈旧度与解耦 PPO 目标以实现高效异步 RL 训练的有效性。

7.5 系统消融研究

7.5.1 可中断生成

我们对可中断生成机制进行了消融研究,结果如图 6 所示。若不支持中断,控制器必须等待最长响应完成。实验表明,可中断生成使 1.5B 和 7B 模型在 4 个节点上的生成吞吐量分别提升了 12% 和 17% ,验证了该架构设计的有效性。

7.5.2 动态微批次分配

我们对比了动态微批次分配与标准策略的 PPO 训练吞吐量。标准策略可能将多个长序列分配至同一微批次,常需配置较多微批次以防内存溢出。实验中,标准设置采用 32 个微批次,动态策略则设定每微批次最多 32,768 个 token。如图 7 所示,动态微批次分配在不同模型规模下平均提升吞吐量约 30% ,显著优化了内存利用率与计算效率。

Maintained by Robin