作者/机构: Yinmin Zhong1, Zili Zhang1, Xiaoniu Song2, Hanpeng Hu2, Chao Jin1, Bingyang Wu1, Nuo Chen2, Yukun Chen2, Yu Zhou2, Changyi Wan2, Hongyu Zhou2, Yimin Jiang3, Yibo Zhu2, Daxin Jiang2
(1 School of Computer Science, Peking University; 2 StepFun; 3 Unaffiliated)
本文探讨了大型语言模型(LLM)的强化学习(RL)训练架构。RL训练通常包括在线生成样本(generation)和使用这些样本进行训练(training)两个阶段。
核心问题:
主流的“同地部署(colocated)”架构(即生成和训练阶段在同一组GPU资源上分时复用)虽然解决了资源闲置问题,但在大规模训练中暴露了“资源耦合”的根本缺陷。生成阶段是内存带宽密集型,而训练阶段是计算密集型,两种负载特性迥异。同地部署强制它们使用相同数量和类型的硬件,导致资源利用率低下,无法为各阶段选择最具成本效益的硬件。此外,这种架构难以扩展到跨数据中心的异构资源池,因为训练阶段的全连接通信(full-mesh communication)会产生巨大的跨数据中心通信开销。
研究目标:
本文重新审视并优化了“分离式(disaggregated)”架构,即为生成和训练阶段分配独立的专用资源。分离式架构天然具有资源分配灵活、支持异构硬件、可扩展至跨数据中心的优势。然而,现有分离式框架存在两大性能瓶颈:
1. 流水线气泡(Pipeline bubbles): 因阶段间的串行依赖导致一个阶段工作时另一阶段资源空闲。
2. 倾斜气泡(Skewness bubbles): LLM生成样本的输出长度呈长尾分布,导致在生成后期只有少数长尾样本在处理,GPU利用率严重不足。
创新点 (StreamRL):
为了解决上述问题,本文提出了一个基于分离式架构设计的RL训练框架——StreamRL。其核心创新点如下:
1. 提出流式生成(Stream Generation): 将生成和训练阶段抽象为流式生成服务(SGS)和训练器(Trainer)。SGS一旦生成一个样本,就以流的方式立即返回给Trainer,从而打破了传统的阶段边界。这使得:
* 在同步RL算法中,可以实现“动态批次流水线(dynamic-batch pipelining)”,有效减少流水线气泡。
* 在异步RL算法中,可以实现“完全异步流水线(fully asynchronous pipelining)”,几乎完全重叠两个阶段的执行,最大化资源利用率。
2. 解决长尾倾斜问题: 提出了一套倾斜感知调度机制。
* 输出长度排序器模型(Output-length ranker model): 训练一个轻量级模型来预测并排序输入提示(prompts)的生成长度,以识别长尾样本。
* 倾斜感知分发与调度(Skewness-aware dispatching and scheduling): 根据排序结果,将长尾样本和常规样本分派到不同的生成实例上,并为长尾样本分配更小的批次大小以加速其处理,从而减少整体生成延迟。
3. 实现弹性与异构部署:
* 自动资源分配与动态调整: 提供了基于性能分析的资源分配算法,用于在训练前平衡两个阶段的执行时间。同时,设计了动态资源调整机制,在训练过程中根据负载变化(如生成长度增加)自动扩展SGS的资源,维持阶段平衡。
* 支持异构和跨数据中心部署: StreamRL的设计充分利用了分离式架构的优势,实验证明在异构、跨数据中心的环境下,能将生成阶段部署在成本效益更高的推理GPU上,将训练阶段部署在高性能计算GPU上,从而将成本效益提升高达1.33倍。
实验结果表明,与现有最先进的系统相比,StreamRL的吞吐量提升高达2.66倍。
图 1. 两种代表性的RL框架架构。(a) 分离式架构,为生成和训练阶段分配专用资源,但存在资源闲置问题。(b) 同地部署架构,两阶段分时复用同一组资源,解决了闲置问题但引入了资源耦合。
LLM的强化学习: LLM作为智能体(agent),通过与环境交互学习。提示(prompt)是初始状态,模型生成的每个token是动作(action),形成新的状态。一个完整的生成样本被称为轨迹(trajectory)或 rollout。每个RL迭代包含两个主要阶段:
LLM并行化: 为了扩展LLM训练,开发了多种并行技术:
资源耦合的根本限制: 尽管同地部署架构因其资源效率高而看似更优,但随着模型和训练规模的增长,其“资源耦合”问题凸显。生成阶段和训练阶段是两种根本不同的工作负载。解码阶段是内存带宽密集型,而训练阶段是计算密集型。同地部署强制这两个阶段共享相同的资源数量和硬件类型,这与它们迥异的计算特性产生冲突。
对资源数量的扩展敏感性不同: 生成阶段和训练阶段对资源数量的扩展敏感性差异显著。如左图2所示,在训练一个7B LLM时,随着资源增加,生成时间的缩短很快达到瓶颈。这是因为生成时间主要由总内存带宽决定,而增加资源主要是增加DP实例数量,对减少生成时间效果有限。相反,计算密集型的训练阶段能从资源扩展中获得更好的加速效果。这种差异导致在扩大资源规模时,生成阶段的资源利用率低下。
对硬件类型的选择受限: 资源耦合的另一表现是硬件选择。如表1所示,不同的NVIDIA GPU在计算能力、内存带宽和成本之间存在权衡。例如,专为推理等内存带宽密集型工作负载设计的H20 GPU,其HBM带宽和容量甚至高于旗舰级的H800,而成本仅为其35%左右。同地部署架构无法为每个阶段选择最具成本效益的硬件。
图 2. 生成和训练阶段在不同资源数量(左)和序列长度(右)下的性能敏感性差异。
Table 1. NVIDIA GPU规格.
灵活性: 分离式架构立即消除了资源耦合问题,允许为两个阶段量身定制资源分配,并能灵活利用异构硬件以提高训练成本效益。
可扩展性: 许多组织运营多个中型数据中心而非单个巨型数据中心。传统LLM训练涉及大量的全连接通信,难以进行跨数据中心部署。相比之下,分离式RL架构的阶段间通信量相对较小(主要是点对点传输样本和模型权重),非常适合数据中心间的专用链路,使得跨数据中心RL训练在实践中可行。此外,生成实例完全独立,可以分布在多个数据中心,充分利用整个资源池进行扩展。
流水线气泡: 这是现有分离式框架效率低下的主要原因。如图3所示,由于阶段间的串行执行,一个阶段的资源在另一阶段工作时处于空闲状态。此外,RL训练中样本在线生成,具有动态性。例如,DeepSeek-R1技术报告【13, DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning, 2025, arXiv】中提到,LLM的生成长度会随时间自发增加。然而,生成和训练时间对这种工作负载变化的响应不同(如图2右侧所示),导致阶段间不平衡,引入新的气泡。
倾斜气泡: 另一类气泡源于RL工作负载本身。生成阶段的输出长度呈倾斜分布【58, Rlhfuse: Efficient rlhf training for large language models with inter-and intra-stage fusion, 2025, USENIX NSDI】,只有一小部分样本比大多数样本长得多。随着生成过程的推进,系统中只剩下少数长尾样本,而解码阶段需要大批量才能保持高吞吐,这导致GPU利用率低下。工程上的变通方法【43, Kimi k1. 5: Scaling reinforcement learning with llms, 2025, arXiv】是将部分生成的长尾样本存入回放缓冲区,但这可能影响模型质量。RLHFuse【58, Rlhfuse: Efficient rlhf training for large language models with inter-and intra-stage fusion, 2025, USENIX NSDI】提出的解决方案基于同地部署架构,不适用于物理分离的分离式架构。
图 3. 分离式架构中的资源浪费。
系统架构: 为了解决上述挑战,本文提出了StreamRL,一个基于分离式架构原则设计的高效RL框架。如图4所示,StreamRL将生成和训练阶段分别抽象为流式生成服务(Stream Generation Service, SGS)和训练器(Trainer)。SGS和Trainer部署在物理上分离的资源上,甚至可以在由点对点链路连接的不同数据中心。这种设计充分释放了分离式架构的优势,实现了(1)灵活的资源分配,(2)异构硬件选择,以及(3)跨数据中心训练。
工作流程:
update(weights)和generate(prompts)两个API与SGS交互。Trainer根据具体的RL算法调整权重更新时机并处理早期流式返回的样本,以解决流水线气泡。
图 4. StreamRL系统架构。
核心思想: 解决流水线气泡的关键在于确保在生成进行时,训练阶段也能保持活跃。针对同步和异步两类主流RL算法,StreamRL通过流式技术增强了现有的重叠方案。
同步RL的解决方案:
异步RL的解决方案:
图 5. 流式技术如何增强现有方案以更好地缓解流水线气泡。
并行配置: 为了更好地重叠SGS和Trainer,需要平衡两者的执行时间。首先解决一个子问题:在给定的工作负载和GPU预算下,确定SGS或Trainer的最优执行时间。这实质上是优化并行策略的问题,对于LLM训练【54, DistTrain: Addressing Model and Data Heterogeneity with Disaggregated Training for Multimodal Large Language Models, 2024, arXiv; 55, Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning, 2022, USENIX OSDI】和生成【57, {DistServe}: Disaggregating prefill and decoding for goodput-optimized large language model serving, 2024, USENIX OSDI】都是一个已有深入研究的问题。StreamRL采用基于性能分析器的方法,通过少量分析来精确建模训练时间和生成时间。
资源分配: 基于上述策略,StreamRL可以决定各阶段的资源分配。如算法1所示,支持两种部署方案:
动态调整: 上述技术仅确保训练开始时阶段平衡。由于LLM在RL训练中生成长度会逐渐增加,而生成和训练时间对负载变化的敏感度不同(如图2),会导致阶段失衡。StreamRL提出了一种动态调整机制:监控生成和训练之间的时间差 $\Delta$。当 $\Delta$ 超过一个阈值时(该阈值由增加一个DP单元到SGS所能减少的生成时间 $\Delta'$ 决定),系统会自动为SGS增加一个DP单元。由于SGS中的生成实例是解耦的,这种调整不会中断训练,开销极小。
Algorithm 1 资源分配算法
本节介绍SGS用于处理倾斜气泡的技术,其目标是在给定资源下最小化生成时间。
问题1:长尾样本与常规样本未区分处理: 现有系统通常随机分派提示以实现负载均衡。如图6(a)所示,如果每个生成实例都接收到长尾样本,那么在批处理推理中,长尾样本会受到常规样本的干扰。如图6右侧所示,每个token的解码延迟随批次大小增加而增长。为提高吞tuningput,现有系统倾向于积累大批次,但这会减慢长尾样本的解码速度,并在后期导致极低的GPU利用率。
机遇1:优化生成延迟模型: 样本的生成延迟可以建模为:
其中,每个token的延迟 $T_{ptl}$ 是批次大小 $BS$ 的函数。对于输出长度 $L$ 较长的样本,我们希望减小其 $T_{ptl}$,即减小其批次大小 $BS$。由此得到的启发是:我们可以分离出长尾样本,将它们分配到少数专用实例上,用较小的批次大小运行,以最快速度解码;同时,将常规样本分组成大批次以充分利用GPU。
问题2:输出长度未知: 上述方法依赖于一个关键假设:在生成开始前就能识别出长尾样本。
机遇2:可排序性优于可预测性: 虽然难以精确预测每个样本的生成长度,但用另一个模型来估计输出长度的相对排名是可行的【14, Efficient LLM Scheduling by Lea rning to Rank, 2024】。这本质上是一个分类问题,即根据提示的难度进行分类,而难度是提示的内在属性,可以在不同LLM间泛化,因此排名模型准确率较高。
图 6. 左:倾斜感知分发相对于随机分发的优势。右:7B LLM在NVIDIA H800上使用vLLM分析的每token解码延迟随批次大小增加的趋势。
方法: 收集一系列输入提示及其在目标LLM上的对应输出长度,形成(prompt, length)对的数据集。使用这个数据集,对一个小型LLM进行监督微调(SFT),使其成为排序器模型。微调后,该模型能输入一批提示并估算它们的绝对输出长度,然后根据估算长度对提示进行排序。随着RL训练的进行,目标LLM参数会变化,排序器模型会使用近期的生成结果进行在线微调以适应变化。
开销: 排序器模型的开销很小。训练只需几分钟即可收敛。训练后,对用于RL的数据集进行一次性离线预处理,估算每个提示的输出长度。这个预处理完全离线进行,因此排序器模型对RL训练过程没有在线开销。
分发(Dispatching): SGS收到一批带有估算输出长度的提示后,首先按长度从长到短排序,将最长的k%标记为长尾样本(实践中k=20效果良好)。然后,从总共N个生成实例中选择 $N_{lt}$ 个处理长尾样本,剩下的 $N_{reg}$ 个处理常规样本。为了均衡负载,使用LLM的输出长度分布D(可从近期样本或预生成样本中获得)的P50和P90分位数来分别估计常规和长尾样本的平均输出长度。单实例的生成延迟可估计为:
其中 $L_{avg}$ 是分配给该实例的样本的平均输出长度,$n$ 是分配的提示数量。算法2展示了倾斜感知分发算法的伪代码,它会遍历所有 $(N_{lt}, N_{reg})$ 配置,找到最小化生成时间的方案。
调度顺序(Scheduling Order): 每个实例分配的样本数 $n$ 可能超过生成时使用的批次大小 $BS_{inf}$,因此需要多轮生成。这引入了样本调度顺序问题,这是一个 $P || C_{max}$(makespan最小化)问题的变种。StreamRL采用了一种著名的贪心算法——最长处理时间优先(Longest-Processing-Time-First, LPT)调度【15, Bounds on multiprocessing timing anomalies, 1969, SIAM journal on Applied Mathematics】。具体来说,样本按其估算输出长度降序分配到批次中。一个样本完成后,就将剩余输出长度最长的样本加入批次,直到所有样本处理完毕。LPT调度已被证明是4/3近似算法。
Algorithm 2 倾斜感知分发算法
RL训练框架: SGS采用C++实现的内部推理引擎,支持连续批处理【52, Orca: A Distributed Serving System for {Transformer-Based} Generative Models, 2022, USENIX OSDI】和前缀共享【56, SGLang: Efficient Execution of Structured Language Model Programs, 2024】。Trainer实现了与先前工作【22, {MegaScale}: Scaling large language model training to more than 10,000 {GPUs}, 2024, USENIX NSDI; 28, ReaLHF: Optimized RLHF Training for Large Language Models through Parameter Reallocation, 2024, arXiv; 41, Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism, 2020】类似的3D并行。为了解决GPU内存限制,开发了动态CPU卸载技术。
张量原生RPC库: 开发了RL-RPC,一个为SGS和Trainer之间高效数据传输优化的通信框架。该系统采用GPU-Direct RDMA进行零拷贝张量传输,绕过CPU并消除序列化开销。同时提供TCP回退机制,以兼容非RDMA网络环境。
权重传输: Trainer端权重分片后,StreamRL采用一个网络感知的传输引擎将权重高效广播到SGS。在单数据中心设置中,它创建多个广播树以实现负载均衡。对于跨数据中心部署,只有根节点(DP rank 0)将权重发送到远程数据中心的指定SGS实例,然后进行本地广播,以最小化跨数据中心流量。
端到端性能对比:
消融研究:
跨数据中心与异构性:
异步RL的算法行为:
本文重新审视了用于RL训练的分离式架构,并强调了其相对于广泛采用的同地部署架构的显著优势:灵活的资源分配、对异构硬件的支持以及跨数据中心的可扩展性。为了充分发挥分离式架构的潜力,我们提出了StreamRL框架,它通过流式生成和倾斜感知调度有效解决了现有分离式RL框架中存在的流水线气泡和由数据倾斜导致的效率低下问题。实验表明,与当前最先进的RL框架相比,StreamRL实现了高达2.66倍的加速。我们希望这项工作能鼓励社区重新审视分离式架构,并对其有效性有更深入的理解。