文章摘要
针对现有大规模大语言模型强化学习训练系统以训练器为中心,存在耦合度高、GPU利用率低、扩展性差等痛点,AstraFlow提出数据流导向的架构,拆分出四个独立松耦合组件,以流式交互实现解耦协作,具备资源利用率高、易扩展、支持跨地域异构部署、组件可替换等优势,解决了原有系统核心问题。

面向数据流的大规模强化学习系统——AstraFlow架构解析

在当前LLM强化学习训练体系中,传统系统存在一个普遍痛点:每新增多策略协同、弹性算力调度、跨地域部署等能力,都需要对系统代码进行大规模重写。这一问题的根源在于,现有系统通常以训练器(Trainer)为控制中心,承担了调度、数据管理、权重同步等多类核心职责,导致系统耦合度高,扩展性差。而AstraFlow架构通过将系统拆分为三个独立组件,以数据流为核心实现协作,完美解决了这一难题:Dataflow Layer负责数据协调,RaaS(Rollout-as-a-Service)定义rollout契约,Trainer与Weight Manager专注于优化和异步稀疏权重发布。三者通过流数据交互,互不感知对方的拓扑结构,从而获得了极佳的系统灵活性。

现有系统的核心痛点

1. 实现困境:串行执行与资源浪费

LLM强化学习训练分为两个核心阶段:rollout(通过vLLM或SGLang生成轨迹)和training(训练器消费轨迹并优化模型)。主流的两种实现模式均存在明显缺陷:

  • Colocated synchronous模式(如verl):rollout与训练共享同一批GPU资源,采用SPMD并行策略,导致rollout阶段训练器闲置,训练阶段rollout引擎闲置,GPU利用率极低。
  • Disaggregated async模式(如AReaL、SLIME):虽然实现了计算资源的物理隔离和异步重叠,但仅做到了计算分离,未实现控制逻辑的分离,系统扩展性依然受限。

2. 扩展性差:新增能力需重构系统

当需要为系统添加多策略协同训练、弹性异构算力调度、跨地域部署等新能力时,现有系统都需要进行针对性的系统工程改造,各能力叠加后复杂度会呈爆炸式增长,维护成本极高。

3. 控制逻辑集中:Trainer成为全局瓶颈

即便部分系统实现了计算层面的解耦,其控制逻辑依然集中在Trainer进程中,负责调度rollout时机、管理数据选择与回放、协调权重同步等核心任务。这种设计导致系统在添加新特性时,必须对Trainer进行深度修改,违背了系统解耦的初衷。相关研究强调,“仅实现计算层面的解耦是不够的”,控制逻辑的集中才是问题的核心。

AstraFlow的核心设计思路

1. 架构翻转:从“中心控制”到“流水线+货架”

传统架构中,Trainer如同“老板”,向rollout工作者下达指令,所有协调工作都从中心发出。而AstraFlow则采用了全新的协作模式:prompt和轨迹数据会先存入Dataflow Layer(共享货架),由其按规则进行缓存、过滤和采样;RaaS实例自主从Dataflow中获取任务,并将结果返回;Trainer自主从Dataflow中拉取训练批次,并将权重变化提交给Weight Manager;各个RaaS实例可以按照自身节奏拉取新的权重。这种模式下,各组件之间互不干扰,无需等待中心指令。

2. 通信范式转变:用流式交互替代同步RPC耦合

AstraFlow将数据流处理范式迁移到强化学习训练中,各组件通过流数据进行交互,仅依赖最小化的接口契约,无需感知对方的拓扑结构、数量和运行速度。这种设计是实现多策略协同、弹性伸缩、跨地域执行等系统灵活性的核心基础。

AstraFlow的核心组件与优势

四大核心组件

  • Dataflow(数据流层):作为中央协调器,不参与具体计算,仅负责数据的管理和路由。它从RaaS收集rollout结果,进行缓冲、过滤和排序后,再将数据提供给Trainer,同时承担“交通警察”的角色,控制RaaS的权重更新时机。
  • RaaS(Remote Agentic Serving):作为推理服务层,仅专注于接收prompt、执行定制化工作流、生成回答并返回结果。它无需知晓Trainer的训练逻辑,也无需关心数据的来源和去向。
  • Trainer(训练器):作为分布式训练引擎,仅从Dataflow拉取训练批次,完成前向和反向传播,并更新模型权重。它无需了解rollout的生成过程。
  • Weight Manager(权重管理):作为独立的权重传输组件,负责将Trainer更新后的模型权重通过TCP高效传输给RaaS,确保RaaS可以使用最新权重继续生成任务。

设计带来的核心优势

  • 完全异步执行:Trainer在训练一批数据的同时,RaaS已经可以生成下一批任务,双方互不阻塞,资源利用率大幅提升。
  • 多策略协作轻松实现:每个模型拥有独立的Trainer和权重流,Dataflow通过“版本屏障”确保所有模型的版本一致后,才通知RaaS加载权重,无需修改系统代码即可实现多策略协同训练。
  • 弹性伸缩便捷高效:只需启动新的RaaS实例并注册到Dataflow即可扩展推理能力,无需重启任何组件。Dataflow的RaaSPool会自动处理心跳检测和负载均衡。
  • 支持异构跨地域部署:RaaS可以在不同规格的GPU上运行,甚至可以部署在不同的数据中心,Weight Manager的增量权重传输技术(仅发送变化的权重参数)让跨地域训练成为可能。
  • 组件可替换性强:Trainer和RaaS都支持“插拔”,可以使用自定义的训练器或推理引擎替换内置组件,只要它们与Dataflow通过6个HTTP API进行通信即可。

数据流全景与关键技术细节

一次训练迭代的数据流流程

  1. RaaS推理阶段:RaaS实例并行运行,接收prompt后执行工作流,调用推理引擎生成token,与环境交互(如代码执行、网页搜索等),计算奖励并返回结构化的rollout结果。
  2. Data Acquisition数据采集阶段:Dataflow的后台线程并行调用所有RaaS实例的pull_completed接口,收集rollout结果,对结果进行过滤(新鲜度、奖励分布)、归一化处理后,存入RolloutBuffer。
  3. Trainer拉取训练批次:Trainer从Dataflow获取训练批次,Dataflow会将新鲜数据和回放数据按比例混合后返回。
  4. Trainer训练阶段:Trainer完成前向和反向传播,更新模型权重,将权重卸载到共享内存,保存检查点,并通知Dataflow新版本。
  5. 权重同步阶段:Trainer通知Dataflow新版本后,Dataflow等待所有模型达到同一版本,然后通知各个RaaS实例加载新权重。RaaS通过TCP并行拉取权重,加载后恢复生成任务。

关键技术特性

  • 异步执行优化:Trainer的GPU仅在权重卸载期间短暂阻塞,其余时间都在进行计算;TCP权重传输与Trainer训练过程完全重叠,大幅提升了资源利用率。
  • 增量权重传输:仅发送两个迭代之间变化的权重参数,在Qwen3-14B模型上,稀疏度可达98.9%以上,每次迭代仅需传输约1.5GB数据,远小于全量权重的28GB,大幅降低了跨地域训练的带宽压力。
  • 容错设计:通过RaaS心跳检测、Suspect-and-confirm机制、空池处理、缓冲区快照、模型恢复等设计,确保系统在组件故障时依然可以稳定运行。

组件部署与技术栈

物理部署模式

所有组件都作为独立进程运行,可以部署在不同的机器上:

  • Dataflow:仅需CPU资源,部署在独立的CPU节点上,采用Flask + ThreadPoolExecutor实现。
  • RaaS:每个实例需要4个以上的GPU,部署在GPU集群节点上,采用FastAPI + asyncio实现异步执行。
  • Trainer:每个实例需要2-8个GPU,部署在GPU集群节点上,支持FSDP2和Megatron-Core两种分布式训练后端。

技术栈总结

AstraFlow采用的技术栈包括:基础框架(Python ≥3.10、PyTorch 2.11.0)、分布式训练(FSDP2、Megatron-Core)、推理引擎(SGLang 0.5.13、vLLM 0.11.0)、Web服务(FastAPI、Flask)、异步HTTP(aiohttp、httpx)、配置系统(Hydra + OmegaConf)等,同时支持多种序列化方式、进程通信方式,以及完善的监控和集群管理工具。

参考与附录

AstraFlow架构的相关论文解读可参考“下一代全异步RL架构?AstraFlow 论文解读”,详细的组件分析可参见附录部分,包括Dataflow层、RaaS、Train Worker、Weight Manager、Workflow等模块的深度解析,以及组件的核心类、接口设计、实现细节等内容。

以上内容不代表本平台立场,仅供读者参考