大模型 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

 

推荐上手路径

  1. 根据硬件选择对应镜像或安装配置。
  2. 确认宿主机固件、驱动和 CANN 已正确安装。
  3. 启动容器后检查设备可见性:
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')"
  1. 不修改拓扑,先完整运行一次昇腾 RLVR 示例。
  2. 单节点稳定后,再调整数据、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

 

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐