ROLL x 昇腾:构建可扩展的大模型强化学习后训练体系
大模型 RL 后训练正从单轮偏好优化和可验证推理,走向长上下文、Agentic RL 等持续与环境交互的任务。当前研究的热点随之转向:如何处理多轮交互中长尾轨迹和工具调用带来的时延,如何让样本生成、奖励计算和模型训练高效并行,以及如何通过更细粒度的信用分配稳定学习。ROLL 面向这些系统与算法问题,提供统一、可扩展的 RL 流水线,为使 ROLL 在昇腾上完整运行,昇腾团队完成了从平台层到工程化工具链的系统适配,让研究者无需重构底层系统即可基于昇腾高效完成后训练创新。
为什么是 ROLL
ROLL 通过 Ray 调度训练、推理、reference、reward 和环境 worker,以 strategy 抽象接入不同训练与推理后端;同时支持样本级与环境级异步 rollout、异步奖励计算、Agentic 异步训练,以及 TrajectoryWise 和 StepWise 学习范式。这样可以减少慢样本造成的资源空等。将上述能力封装为统一的配置与执行接口,降低 RL 实验的搭建和扩展成本:
- 多角色分布式执行:基于 Ray 调度训练、推理、reference、reward、validation 和环境 worker,减少进程与资源的手动编排。
- 配置与后端解耦:RLVR、Agentic 流水线及 PPO、GRPO、Reinforce++ 等算法通过 YAML 配置,训练侧支持 FSDP2、Megatron,推理侧支持 vLLM、SGLang,便于切换实验方案。
- Agentic 工作流扩展:多轮交互、工具调用、环境反馈和奖励计算可接入同一条流水线,无需额外搭建训练系统。
昇腾支持了什么
ROLL 的昇腾路径当前面向训练系列昇腾设备。现有文档和示例覆盖:
| 方向 | 当前昇腾支持情况 |
|---|---|
| 硬件 | Atlas 900 A2 PODc、Atlas 800T A3、Atlas 900 A3 PODc |
| 训练后端 | FSDP2,后续支持 Megatron-LM |
| Rollout 后端 | vLLM(通过 vLLM-Ascend 接入昇腾) |
| 通信 | 通过 ROLL NPU 平台抽象使用 HCCL。 |
| 工作负载 | RLVR、Agentic、Agentic-Rollout 示例。 |
| 部署方式 | 昇腾 A2/A3 预构建镜像、A2/A3 Dockerfile 自定义构建 |
A2/A3 镜像路径是最直接的起步方式。ROLL 提供 docker/Dockerfile.A2 和 docker/Dockerfile.A3,文档中也给出了预构建镜像:
docker pull quay.io/ascend/roll: v0.3-cann9.1.0-torch_npu2.10.0.post4-910b-ubuntu22.04-py3.12
docker pull quay.io/ascend/roll: v0.3-cann9.1.0-torch_npu2.10.0.post4-a3-ubuntu22.04-py3.12
镜像构建和容器启动命令参见 在 Ascend NPU 上使用 Docker 运行 ROLL:https://alibaba.github.io/ROLL/zh-Hans/docs/User%20Guides/Hardware%20Support/ascend_docker_usage
运行时软件栈
A2/A3 Dockerfile 使用以下基础软件栈:
| 组件 | 版本 / 设置 |
|---|---|
| A2 基础镜像 | http://quay.io/ascend/cann:9.1.0-910b-ubuntu22.04-py3.12-devel |
| A3 基础镜像 | http://quay.io/ascend/cann:9.1.0-a3-ubuntu22.04-py3.12 |
| Python | 3.12 |
| CANN | 9.1.0 |
| PyTorch | 2.10.0+cpu |
| torch_npu | 2.10.0.post4 |
| vLLM | 0.23.0 |
| vLLM-Ascend | 0.23.0rc1 |
| Transformers | 4.57.6 |
| triton-ascend | 3.2.1 |
完整硬件矩阵、安装配置和三方包说明参见 ROLL x Ascend:https://alibaba.github.io/ROLL/zh-Hans/docs/User%20Guides/Hardware%20Support/ascend_usage
ROLL 适配昇腾及性能优化
为使 ROLL 在昇腾上完整运行,昇腾团队完成了从平台层到工程化工具链的系统适配:新增 NpuPlatform 与 Ray NPU 资源管理,接入 HCCL 通信、FSDP2 训练和 vLLM-Ascend rollout,补齐 A2/A3 镜像、示例及独立 CI 流水线;同时引入 TransferQueue(TQ)作为 RowRemoteBatch 的可选传输后端,减少大张量及 VLM、Agentic 批次跨 worker 传输时的序列化和内存开销。
NPU 基础适配,快速拉起 RL 后训练
ROLL 的昇腾适配把 NPU 差异集中在平台层和三方后端适配层,让上层 pipeline、算法配置和 worker 编排尽量复用通用实现:
- 平台层:NpuPlatform 统一声明 NPU 设备类型、Ray NPU 资源键、ASCEND_RT_VISIBLE_DEVICES 和 HCCL 通信后端。
- 训练与推理:FSDP2 训练侧补齐模型初始化、训练策略和权重更新链路;rollout 侧接入 vLLM-Ascend,并通过 NPU Worker、TASK_QUEUE_ENABLE=1、VLLM_ASCEND_ENABLE_NZ=0 等默认设置提升启动和权重更新稳定性。
- 环境和示例:A2/A3 Dockerfile、预构建镜像、RLVR/DPO 启动脚本、昇腾中文文档和 decord2 视觉依赖已经补齐,方便开发者按同一条路径配置训练和 VLM 场景。
开发者不需要为昇腾单独改写训练流水线,只需要按硬件环境选择镜像、训练后端、rollout 后端和传输配置。
NPU CI 集成,实现开发高效验证
在适配之前,ROLL 没有自动化 CI 兜底,功能更多依赖人工环境验证。相关 PR 新建了独立的 NPU 集成测试流水线,覆盖了大部分用例和 ROLL 核心功能。CI 重点看护 NPU 设备与平台识别、vLLM-Ascend 的生成、请求中止和权重更新、SGLang 可用性、DeepSpeed 状态卸载、Ray 分布式调度与执行、模型加载,以及 RLVR 和 Agentic 流水线等核心功能。使问题能够更早暴露,降低主干回归风险和人工维护成本。
昇腾 TransferQueue(TQ)特性,端到端性能提升 12%
ROLL 的远程批次机制支持用 RowRemoteBatch 按样本行管理 DataProto。批次对象只保留 row ID、字段信息和本地缓存,下游 worker 可通过 prefetch() / materialize() 按需取回字段,避免每次都物化完整批次。
RowRemoteBatch 可以选用 TransferQueue 作为传输后端。启用后,DataProto.to_remote() 会将 tensor 和 non-tensor 数据写入 TQ,并返回轻量的数据引用。对于包含大张量、图片或长对话的 VLM 和 Agentic 任务,这能降低经 Ray Object Store 搬运完整批次带来的延迟和内存开销。

图片 1 TQ 原理图
TQ 将数据传输拆为控制面和数据面:Control Plane 维护样本状态与 metadata,Data Plane 通过可插拔的 StorageManager 按“样本行 + 字段列”保存真实数据。Ray 只需传递轻量引用,TQ 则负责数据的存取和按字段读取,从而减少整批序列化、Object Store 占用和无效数据搬运。
当前依赖版本为 TransferQueue==0.1.6,配置如下:
transfer_backend:
backend_name: TransferQueue
backend_config:
backend:
SimpleStorage:
num_data_storage_units: 16
Ascend RLVR 示例默认未启用该后端,建议根据 payload、字段访问模式和硬件环境验证后使用。完整配置和生命周期说明参见 ROLL RemoteBatch 与传输后端:https://alibaba.github.io/ROLL/zh-Hans/docs/User%20Guides/Advanced%20Features/remote_batch_transfer
TransferQueue 性能收益效果
| 平台 | 规模 | 模型/数据 | Prompt/Response | Time/Step | Time/Step(with TQ) | E2E 提升 |
|---|---|---|---|---|---|---|
| A3 NPU | 2×16 | Qwen3-4B / math_benchmarks | 4K/4K | 406.18 | 356.26 | +12% |

图片 2 开启 TQ 前后训练精度与时间对比
开启 TransferQueue 前后训练精度基本一致,训练速度有显著提升,实际加速幅度取决于 payload 大小、字段访问模式、storage unit 数量、集群拓扑,以及 trainer 侧是否仍然全量物化 batch。TransferQueue 更适合作为数据密集型 workload 的性能优化开关。
在昇腾上运行 RLVR
当前主要的端到端昇腾示例是 RLVR 启动脚本:
bash examples/ascend_examples/run_rlvr_pipeline.sh
该脚本会设置关键运行时默认值,并启动:
python examples/start_rlvr_pipeline.py \
--config_path ascend_examples \
--config_name qwen3_30b_rlvr_fsdp2
当前仓库中的配置使用 Qwen3-30B-A3B 作为 actor,并通过 MathRuleRewardWorker 计算规则奖励;actor training 与 reference inference 使用 FSDP2,rollout inference 使用 vLLM,rollout worker 设置 enforce_eager: true,示例配置中单节点使用 16 张 NPU。
建议先用该示例验证环境,再调整模型规模、数据路径、Reward Worker 或多机配置。完整流程参见 在 Ascend NPU 上运行 RLVR Pipeline:https://alibaba.github.io/ROLL/zh-Hans/docs/User%20Guides/Hardware%20Support/ascend_npu_rlvr
推荐上手路径
- 根据硬件选择对应镜像或安装配置。
- 确认宿主机固件、驱动和 CANN 已正确安装。
- 启动容器后检查设备可见性:
npu-smi info
检查 Python 运行时:
python -c "import torch, torch_npu; print(torch.npu.is_available())"
python -c "import vllm; print(vllm.__version__)"
python -c "import vllm_ascend; print('vllm_ascend available')"
- 不修改拓扑,先完整运行一次昇腾 RLVR 示例。
- 单节点稳定后,再调整数据、Reward Worker、batch size 和多机配置。
环境变量和排障说明参见:
NPU 环境配置指南:https://alibaba.github.io/ROLL/zh-Hans/docs/User%20Guides/Hardware%20Support/ascend_npu_env_config
Ascend NPU FAQ:https://alibaba.github.io/ROLL/zh-Hans/docs/User%20Guides/Hardware%20Support/ascend_npu_faq
展望
当前 ROLL 在上的配置是面向昇腾 Atlas A2/A3 系列训练产品,如果使用文档化配置以外的硬件或运行时版本,需要先统一验证驱动、固件、CANN、torch_npu、vLLM 和 vLLM-Ascend 版本,后续计划支持 Megatron-LM 训练后端,以及 FP8 低精度训练与推理。昇腾也将持续跟踪 RL 前沿技术,贡献开源社区。欢迎广大开发者在社区交流共建。
项目地址:https://github.com/alibaba/ROLL
更多推荐




所有评论(0)