ROLLMux:让大模型强化学习训练成本降低近一半的调度框架
在大模型强化学习(RL)后训练中,如何高效利用昂贵的GPU资源一直是工业界的痛点。传统的rollout-training分离架构虽然能匹配不同阶段的硬件需求,但严格的同步要求却让一半以上的GPU处于闲置状态。来自香港科技大学和阿里巴巴的研究团队提出了ROLLMux,一个通过phase级别多路复用技术,将RL训练成本效率提升1.84倍的集群调度框架。该系统已在328个H20 GPU和328个H800 GPU组成的生产环境中验证,实现了100% SLO达成率的同时大幅降低了资源成本。
论文标题:ROLLMux: Phase-Level Multiplexing for Disaggregated RL Post-Training
来源:arXiv:2512.11306v1 [cs.DC] 12 Dec 2025
论文链接:https://arxiv.org/abs/2512.11306
PS: 整理了LLM、量化投资、机器学习方向的学习资料,关注同名公众号 「 AI极客熊 」 即刻免费解锁
文章核心
研究背景
随着大语言模型(LLM)的发展重心从预训练转向强化学习后训练,如何高效部署RL工作负载成为关键挑战。生产实践中,同步on-policy算法(如PPO、GRPO)因其稳定性和模型质量成为主流选择。这类算法的训练流程包含三个阶段:rollout(内存带宽密集型的推理生成阶段)、training(计算密集型的参数优化阶段)和synchronization(网络密集型的参数同步阶段)。
为应对不同阶段的资源需求差异,业界逐渐采用分离架构(disaggregated architecture):将rollout部署在成本低廉的推理优化GPU(如NVIDIA H20,1.85美元/小时)上,将training部署在高性能计算GPU(如NVIDIA H800,5.28美元/小时)上。这种架构理论上能通过硬件-任务匹配提升成本效率,但实际部署中却面临严重的**依赖气泡(dependency bubbles)**问题:由于on-policy算法要求严格同步,training集群在等待rollout时必须闲置,反之亦然,导致集群利用率极低。
在作者的生产集群中,RL任务量在6个月内从每月5000个增长到14000个,但传统分离架构的实际成本(0.94k美元/小时)甚至高于硬件不匹配的单体部署(0.71k美元/小时),说明依赖气泡带来的资源浪费完全抵消了硬件优化的收益。
研究问题
当前disaggregated RL架构存在三个核心挑战:
- 工作负载异构性导致调度难题:生产环境中RL任务的模型规模(3B-32B)、响应长度(4k-32k tokens)和交互模式(单轮/多轮)差异巨大,phase时长从50秒到900秒不等。简单的时间复用会导致严重干扰(如两个rollout密集型任务竞争推理节点,双方都减速1.4×-1.6×),而找到最优调度方案本质上是NP-hard的Job Shop Scheduling问题。
- 运行时随机性破坏静态计划:LLM生成长度服从长尾分布,少数straggler请求会不可预测地延长phase时长,且分布会随模型更新漂移。这导致静态调度计划失效,同时rollout阶段内部出现"偏斜气泡"(早完成的GPU等待straggler)。
- 上下文切换开销限制复用粒度:RL训练是有状态的,需要管理数百GB的模型权重和优化器状态(32B模型的单phase状态达490GB)。冷启动(从磁盘或跨集群网络加载)延迟高达80秒,会抵消45%的吞吐收益。虽然warm-start(从host内存加载)可将延迟降低48倍,但单节点内存(1-2TB)只能缓存2-5个任务,形成严格的驻留约束。
主要贡献
ROLLMux通过算法-系统协同设计实现了近乎最优的调度效率,核心贡献包括:
- 协同执行组(co-execution group)抽象:将集群划分为隔离的locality域,每个组内的多个任务通过时间复用共享rollout和training资源池。这一抽象将全局NP-hard问题分解为可并行求解的子问题,同时通过将任务固定在特定节点上强制实施驻留约束,确保状态常驻host内存以支持warm-start。
- 两层调度架构:
- Inter-group调度器:采用保守随机规划,在任务到达时通过worst-case估计(假设所有响应达到最大token长度)寻找最小边际成本的组放置,主动剪枝已饱和的组以保持线性搜索复杂度。
- Intra-group调度器:在非过载组内执行可证明最优的round-robin调度,并通过long-tail migration动态适应运行时随机性——当80%响应完成时,将剩余长尾请求迁移到少数GPU,立即启动下一任务的rollout以实现流水线执行。
- Warm-start机制与phase中心控制模型:通过将组大小限制在节点内存容量内,确保所有任务状态(模型权重、优化器状态、执行上下文)缓存在host DRAM中。引入
@rollmux.phase装饰器将RL phase提升为一等调度实体,暴露内部依赖图给调度器,透明管理状态加载。采用轻量级挂起策略(保留控制平面如NCCL通信器,仅卸载数据平面)将上下文切换延迟降低两个数量级。 - 拓扑感知模型同步:用两阶段传输替代扁平AllGather——先通过并行P2P流跨慢速跨集群链路传输一份完整模型副本,再利用高速本地InfiniBand/NVLink进行集群内广播,将同步时间加速8.33倍(单节点)到2.75倍(多节点)。
方法论精要
协同执行组与调度目标
ROLLMux的核心洞察是:一个任务的依赖气泡可以被另一个任务的活跃phase有效利用。系统将co-execution group定义为共享特定rollout和training资源池的任务集合,形式化为四元组( J G , R G , T G , Φ G ) (\mathcal{J}_G, \mathcal{R}_G, \mathcal{T}_G, \Phi_G)(JG,RG,TG,ΦG),其中J G \mathcal{J}_GJG是活跃任务集,R G \mathcal{R}_GRG和T G \mathcal{T}_GTG是rollout和training GPU集合,Φ G = { P j } j ∈ J G \Phi_G = \{P_j\}_{j \in \mathcal{J}_G}ΦG={Pj}j∈JG是资源放置(指定每个任务固定在哪些节点上以缓存状态)。
调度目标是最小化总资源供给成本(从而最小化依赖气泡),同时满足:
- 内存驻留约束:固定到同一节点的所有任务的工作集总和不超过host内存容量
- SLO约束:每个任务的协同执行迭代时间T k co-exec T_k^{\text{co-exec}}Tkco-exec不超过其solo执行时间T k solo T_k^{\text{solo}}Tksolo的SLO倍数(如1.1×)
Inter-group调度:保守规划与成本最优化
当新任务j jj到达时,inter-group调度器执行全局搜索以找到最小边际成本Δ = Cost ( G ′ ) − Cost ( G ) \Delta = \text{Cost}(G') - \text{Cost}(G)Δ=Cost(G′)−Cost(G)的放置(G ′ G'G′表示接纳j jj后的组状态)。算法采用三个关键策略:
1. 保守worst-case估计应对随机性
为保证SLO在随机工作负载下仍然成立,调度器将admission control与runtime optimization解耦。对到达任务j jj,估计其phase时长( T j roll , T j train ) (T_j^{\text{roll}}, T_j^{\text{train}})(Tjroll,Tjtrain)时假设每个生成响应都达到最大token限制。基于此上界进行放置决策,确保即使在最坏随机条件下SLO约束也能满足。若实际运行时长更短(通常如此),intra-group调度器会动态回收slack以提升利用率。
2. 三种放置策略与成本优化
调度器为每个候选组评估三种策略(图5):
- Direct Packing:将任务插入现有依赖气泡,无需新增资源(Δ = 0 \Delta=0Δ=0,优先选择)
- Rollout Scaling:若组的training容量充足但rollout瓶颈(常见于多轮agentic工作负载),仅扩展rollout池
- Isolated Provisioning:为任务创建新的隔离组(fallback方案)
遍历所有策略,选择满足内存和SLO约束且Δ \DeltaΔ最小的放置。
3. 饱和组剪枝保证可扩展性
在评估具体放置前,调度器先剪枝已饱和的组。定义组的自然周期时间T G cycle = max j ∈ J G T j solo T_G^{\text{cycle}} = \max_{j \in \mathcal{J}_G} T_j^{\text{solo}}TGcycle=maxj∈JGTjsolo(由最慢任务决定),瓶颈负载T G load = max { ∑ j ∈ J G T j train , max n ∈ Φ G ( ∑ j on n T j roll ) } T_G^{\text{load}} = \max\{\sum_{j \in \mathcal{J}_G} T_j^{\text{train}}, \max_{n \in \Phi_G}(\sum_{j \text{ on } n} T_j^{\text{roll}})\}TGload=max{∑j∈JGTjtrain,maxn∈ΦG(∑jonnTjroll)}。若T G cycle ≥ T G load T_G^{\text{cycle}} \geq T_G^{\text{load}}TGcycle≥TGload,组已饱和(无slack),任何新增都会导致延迟(图6),立即剪枝。这使搜索复杂度对组数量保持线性,实验显示即使2000个任务也能在591ms内完成决策(表5)。
Intra-group调度:最优round-robin与动态适应
Round-robin策略的最优性证明
在每个co-execution group内,intra-group调度器执行meta-iteration:每个活跃任务恰好执行一次rollout和一次training phase。例如组{ A , B } \{A, B\}{A,B}的rollout池执行Roll A → Roll B \text{Roll}_A \to \text{Roll}_BRollA→RollB,training池执行Train A → Train B \text{Train}_A \to \text{Train}_BTrainA→TrainB(图1)。
论文证明了对于非饱和组(T G load ≤ T G cycle T_G^{\text{load}} \leq T_G^{\text{cycle}}TGload≤TGcycle),round-robin调度是利用率最优的(Theorem 1)。证明核心:非饱和条件意味着瓶颈节点的总工作量不超过最慢任务的solo周期时间,因此可以将所有其他任务的对应phase打包进最慢任务的依赖气泡中。任何偏离(省略任务导致饥饿,重复任务延长周期但效用增长更慢)都会降低利用率。
Long-tail migration应对运行时随机性
虽然round-robin对确定性工作负载最优,但生产RL phase高度随机。Rollout时长服从重尾分布(图11左),少数straggler响应会导致大部分GPU在batch内空闲等待。ROLLMux采用long-tail migration动态回收这部分容量:
- 持续监控活跃rollout phase进度
- 当80%响应完成时触发tail-bound状态
- 中断执行,将剩余长尾响应合并到少数worker
- 在新释放的rollout GPU上立即启动下一任务的rollout phase
这种机制有效流水线化一个任务的尾部与下一个任务的头部(图7),实验显示吞吐提升1.06×-1.28×(图11右)。
执行平面:Phase中心控制与warm-start
Phase作为一等调度实体
传统深度学习调度器将"job"作为原子单元,无法交错不同任务的phase。ROLLMux引入phase-centric执行模型,将每个RL任务建模为phase依赖图:Init → ( Rollout → Train → Sync ) ∗ \text{Init} \to (\text{Rollout} \to \text{Train} \to \text{Sync})^*Init→(Rollout→Train→Sync)∗。
用户通过@rollmux.phase装饰器声明phase函数,系统注入透明runtime shim:
- Phase调用时阻塞,直到从intra-group调度器获取run permit
- 获准后从host DRAM warm-start加载phase的驻留工作集到GPU
- 用户函数完成后立即offload更新状态回host内存,释放GPU
- 进程进入sleep循环(保留控制平面如NCCL通信器),避免昂贵的冷启动
这种设计将上下文切换延迟从80秒(冷启动)降至1.7-5.9秒(warm-start,图4),使细粒度时间复用实用化。
拓扑感知两阶段同步
现有RL框架(如veRL)使用扁平AllGather同步模型参数,将慢速跨集群Ethernet和快速集群内InfiniBand视为统一网络,导致每个rollout worker独立通过慢速链路拉取完整模型副本(图8上)。
ROLLMux替换为分层两阶段传输(图8下):
- Inter-cluster scatter:将更新模型分片为N NN个disjoint shard(N NN为training GPU数),每个training GPU通过并行P2P流向对应rollout GPU传输唯一shard,确保跨集群链路仅传输一份完整模型
- Intra-cluster broadcast:接收GPU立即通过高带宽InfiniBand/NVLink将shard广播到所有其他rollout worker
实验显示单节点同步加速8.33×,多节点加速2.75×(图12)。
系统实现与容错
ROLLMux基于ROLL实现,包含5.2k行代码(Python控制器 + C++通信模块)。运行流程(图9):
- 任务提交后启动轻量级profiler生成worst-case时长估计
- Inter-group调度器识别最优组和资源放置
- Intra-group调度器编排round-robin meta-iteration,基于runtime hook反馈触发long-tail migration
- Phase完成后offload状态到host DRAM的actor cache,从调度队列启动下一任务的等待phase
容错方面,每个任务拥有独立Ray实例和隔离运行时环境,仅通过Redis channel与调度器通信。任务崩溃完全隔离在其pod内,不会传播错误到同组其他任务。
实验洞察
实验环境与工作负载
实验在地理分布的异构集群上进行:training集群配备328个NVIDIA H800 GPU(989.5 TFLOPS,5.28美元/小时),rollout集群配备328个NVIDIA H20 GPU(148 TFLOPS,1.85美元/小时),集群内部为400 Gbps InfiniBand,跨集群为20 Gbps Ethernet。
工作负载包括:
- 微基准测试:5种代表性任务(Qwen-2.5/3模型,7B-32B,单轮RLVR和多轮agentic推理)
- 规模化评估:重放2周生产trace,包含200个异构RL任务(模型3B-32B,平均时长27.9小时),SLO从Unif(1,2)采样
- 大规模仿真:使用Microsoft Philly集群trace的300任务580小时片段,合成9种任务配置(Balanced/Rollout-Heavy/Train-Heavy × Small/Medium/Large)
基线包括:Solo Disaggregation(标准1:1分离架构)、veRL(单体co-location)、Gavel+(异构感知调度器的RL增强版)。
微基准:协同执行的有效性
三个场景验证ROLLMux消除依赖气泡的能力:
时间复用(Temporal Mux):协同执行两个结构相似的Type-A任务(7B单轮),ROLLMux完美交错执行使两个资源池持续饱和,成本效率比Solo-D提升82%,比veRL提升46.8%(图10a)。基线失败原因:Solo-D和Gavel+始终让一个资源池闲置,veRL在内存密集型rollout阶段浪费昂贵H800的计算能力。
处理rollout密集型任务(Train Mux):协同执行两个Type-D任务(T roll ≈ 2.5 T train T_{\text{roll}} \approx 2.5 T_{\text{train}}Troll≈2.5Ttrain)和一个Type-E任务(T roll ≈ 6 T train T_{\text{roll}} \approx 6 T_{\text{train}}Troll≈6Ttrain),ROLLMux将rollout池扩展到24个H20 GPU(每任务一个推理节点),在单个H800 training节点上round-robin所有training phase(图10b)。成本效率比Solo-D提升104%,比veRL提升29.9%。Solo-D和Gavel+因长rollout phase让昂贵training节点长期闲置。
空间复用(Spatial Mux):协同执行一个大Type-C任务(16×H20+16×H800)和两个小Type-D任务(各8×H20+16×H800),ROLLMux识别大任务rollout phase产生的空闲资源,动态将两个小任务"打包"进这些气泡(图10c)。成本效率比Solo-D提升111%,比veRL提升66.1%。
干扰开销方面,ROLLMux相比solo执行仅有5-9%吞吐下降(表4),因为inter-group调度器主动剪枝了会违反驻留或性能约束的放置。即使与理想化co-location上界(所有phase独占H800,零网络成本)相比,吞吐差距也仅9.0-20.0%。
消融实验:关键优化的贡献
Long-tail migration的有效性:LLM生成长度呈现明显重尾分布(图11左),少数straggler请求在大部分请求完成后仍持续。启用请求迁移后,通过将tail-bound请求迁移到少数GPU,使下一任务rollout phase立即在释放的大部分资源上开始,端到端吞吐提升1.06×-1.28×(图11右)。收益在长输出序列工作负载(如14B-8k)最显著。
拓扑感知模型同步:在地理分离设置中,ROLLMux的两阶段传输比veRL快7.87×-8.33×(单节点:8 H800→8 H20)和2.62×-2.75×(多节点:16 H800→16 H20,图12)。显著加速源于跨慢速跨集群链路仅传输一份模型副本,然后利用高带宽本地NVLink进行最终集群内广播,而基线为每个rollout GPU冗余拉取独立副本。
生产规模:成本效率与资源利用
在2周200任务的生产trace重放中,ROLLMux每小时仅需510美元容纳所有任务,相比Solo-D降低1.84×,相比veRL降低1.38×,同时达成100% SLO(图13a)。成本效率直接源于最小化边际成本的调度算法(Algorithm 1)。
资源效率方面,ROLLMux相比solo disaggregation将rollout集群的依赖气泡减少24.4%,training集群减少43.1%(因工作负载通常rollout密集,training GPU留下更多气泡,图13b/c)。通过紧密打包,ROLLMux峰值仅需152个H800(相比Solo-D和veRL的328个,降低2.16×)和216个H20(相比Solo-D的328个,降低1.52×)。虽然co-located veRL基线不使用独立rollout GPU,ROLLMux整体仍有1.38×成本优势,通过分离将内存密集型rollout卸载到便宜H20,同时用协同调度填充产生的依赖气泡。
调度器质量:最优性与可扩展性
大规模trace仿真(300任务580小时)验证inter-group调度器的性能。ROLLMux在所有工作负载类型(Balanced/Rollout-Heavy/Train-Heavy/Mixed)下达成100% SLO,成本仅为brute-force最优解的1.01×-1.12×(图14a)。相比之下,Random和Greedy基线的成本是最优的1.72×-2.00×和1.38×-1.89×,SLO达成率仅37-58%和42-61%。
敏感性分析显示ROLLMux对SLO紧度(图14b)和最大组大小(图14c)高度稳定,始终维持最低成本和100% SLO达成。决策延迟方面,ROLLMux对2000个并发任务仅需591ms(表5),展现近线性可扩展性;而brute-force最优解对13个任务就超过5小时,在实际规模下不可行。
总结:ROLLMux通过协同执行组抽象和两层调度架构,在保持on-policy算法同步要求的前提下,将disaggregated RL后训练的成本效率提升近一倍。其保守规划应对随机性、round-robin最优调度、warm-start机制和拓扑感知同步的协同设计,为多租户RL集群提供了首个生产级调度解决方案。在328 GPU规模的生产环境验证和2000任务的大规模仿真中,系统均展现出接近理论最优的性能(成本开销仅6%),为工业界大规模部署RL后训练提供了重要参考。