Last updated: 03/03/2026.
2025/12/11:verl 存量场景目前支持自动识别 NPU 设备类型, GPU 脚本在昇腾上运行,原则上不再需要显式设置 trainer.device=npu 参数,新增特性通过设置 trainer.device 仍可优先使用,逐步适配自动识别能力。
[说明] 自动识别 NPU 设备类型的前提,是运行程序所在环境包含 torch_npu 软件包。如不包含该软件包,仍需显式指定 trainer.device=npu 参数。
Atlas 200T A2 Box16
Atlas 900 A2 PODc
Atlas 800T A3
如需要通过 DockerFile 构建镜像,或希望使用基于 verl 构建的镜像,请参考 文档 如果想直接获取镜像,请前往`quay.io/ascend/verl <https://quay.io/repository/ascend/verl?tab=tags&tag=latest>`_ 进行获取,镜像中已包含基础环境和依赖软件包。
基础环境涉及以下软件包,请参考 文档 安装。
software
version
Python
>= 3.10, <3.12
CANN
== 8.5.0
torch
== 2.8.0
torch_npu
== 2.8.0
(可选)在 x86 平台安装时,pip 需要配置额外的源,指令如下:
pip config set global.extra-index-url "https://download.pytorch.org/whl/cpu/"
基础环境准备完毕后,需要通过指令安装以下软件包:
torchvision == 0.22.1 triton-ascend == 3.2.0 transformers == 4.57.6 tips: verl is not support transformers 5.0.0 or higher 安装指令:
# 安装torchvision,版本需要和torch匹配 pip install torchvision==0.22.1 # 清理环境上可能存在的历史triton/triton-ascend软件包残留 pip uninstall -y triton triton-ascend # 安装triton-ascend,不需要单独安装triton pip install triton-ascend==3.2.0
需确保CANN ascend-toolkit 和 nnal 环境变量被激活,对于CANN默认安装路径 /usr/local/Ascend 而言,激活指令如下:
source /usr/local/Ascend/ascend-toolkit/set_env.sh source /usr/local/Ascend/nnal/atb/set_env.sh
vllm 源码安装指令:
git clone --depth 1 --branch v0.13.0 https://github.com/vllm-project/vllm.git cd vllm && pip install -r requirements/build.txt VLLM_TARGET_DEVICE=empty pip install -v -e. && cd ..
vllm-ascend 源码安装指令:
git clone -b releases/v0.13.0 https://github.com/vllm-project/vllm-ascend.git cd vllm-ascend && pip install -r requirements.txt export COMPILE_CUSTOM_KERNELS=1 && pip install -v -e . && cd ..
MindSpeed 源码安装指令:
# 下载 MindSpeed,切换到指定commit-id,并下载 Megatron-LM git clone https://gitcode.com/Ascend/MindSpeed.git cd MindSpeed && git checkout 2.3.0_core_r0.12.1 && cd .. git clone --depth 1 --branch core_v0.12.1 https://github.com/NVIDIA/Megatron-LM.git # 安装 Megatron & MindSpeed pip install -e Megatron-LM pip install -e MindSpeed # 安装 mbridge pip install mbridge
MindSpeed 对应 Megatron-LM 后端使用场景,使用方式如下:
- 使能 verl worker 模型
strategy配置为megatron,例如actor_rollout_ref.actor.strategy=megatron。- MindSpeed 自定义入参可通过
override_transformer_config参数传入,例如对 actor 模型开启 FA 特性可使用+actor_rollout_ref.actor.megatron.override_transformer_config.use_flash_attn=True。- 更多特性信息可参考 MindSpeed & verl 文档 。
如需使能 MindSpeed-LLM 训练后端,需要额外下载 MindSpeed-LLM 。 需要注意的是,MindSpeed-LLM 训练后端依赖 MindSpeed-LLM master 分支、 MindSpeed master 分支以及 Megatron-LM core_v0.12.1 分支。 MindSpeed-LLM 及相关依赖的源码安装指令:
# 下载 MindSpeed-LLM、 MindSpeed 和 Megatron-LM git clone https://gitcode.com/Ascend/MindSpeed-LLM.git git clone https://gitcode.com/Ascend/MindSpeed.git git clone --depth 1 --branch core_v0.12.1 https://github.com/NVIDIA/Megatron-LM.git # 配置环境变量 export PYTHONPATH=$PYTHONPATH:your path/Megatron-LM export PYTHONPATH=$PYTHONPATH:your path/MindSpeed export PYTHONPATH=$PYTHONPATH:your path/MindSpeed-LLM # 安装 mbridge pip install mbridge
MindSpeed-LLM 对应 Megatron-LM 后端使用场景,使用方式如下:
- 使能 verl worker 模型
strategy配置为mindspeed,例如actor_rollout_ref.actor.strategy=mindspeed。- MindSpeed-LLM 自定义入参可通过
llm_kwargs参数传入,例如对 MOE 模型开启 GMM 特性可使用+actor_rollout_ref.actor.mindspeed.llm_kwargs.moe_grouped_gemm=True。- 更多特性信息可参考 MindSpeed-LLM 内的特性文档 。
git clone --recursive https://github.com/volcengine/verl.git
cd verl && pip install -r requirements-npu.txt && pip install -v -e . && cd ..
# (可选)提示:为了更佳的使用体验,最好将recipe子模块更新至最新commit
cd recipe && git checkout main && cd ..verl 中昇腾暂不支持生态库如下:
software description flash_attn not supported liger-kernel not supported
- 不支持通过 flash_attn 使能 flash attention 加速,支持通过 transformers 使用。
- 不支持 liger-kernel 使能。
正式使用前,建议您通过对Qwen2.5-0.5B GRPO的训练尝试以检验环境准备和安装的正确性。
1.下载数据集并将数据集预处理为parquet格式,以便包含计算RL奖励所需的必要字段
python3 examples/data_preprocess/gsm8k.py --local_save_dir ~/data/gsm8k
2.执行训练
set -x export VLLM_ATTENTION_BACKEND=XFORMERS python3 -m verl.trainer.main_ppo \ algorithm.adv_estimator=grpo \ data.train_files=$HOME/data/gsm8k/train.parquet \ data.val_files=$HOME/data/gsm8k/test.parquet \ data.train_batch_size=128 \ data.max_prompt_length=512 \ data.max_response_length=128 \ data.filter_overlong_prompts=True \ data.truncation='error' \ actor_rollout_ref.model.path=Qwen/Qwen2.5-0.5B-Instruct \ actor_rollout_ref.actor.optim.lr=5e-7 \ actor_rollout_ref.model.use_remove_padding=False \ actor_rollout_ref.actor.entropy_coeff=0.001 \ actor_rollout_ref.actor.ppo_mini_batch_size=64 \ actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=20 \ actor_rollout_ref.actor.use_kl_loss=True \ actor_rollout_ref.actor.kl_loss_coef=0.001 \ actor_rollout_ref.actor.kl_loss_type=low_var_kl \ actor_rollout_ref.model.enable_gradient_checkpointing=True \ actor_rollout_ref.actor.fsdp_config.param_offload=False \ actor_rollout_ref.actor.fsdp_config.optimizer_offload=False \ actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=40 \ actor_rollout_ref.rollout.enable_chunked_prefill=False \ actor_rollout_ref.rollout.tensor_model_parallel_size=2 \ actor_rollout_ref.rollout.name=vllm \ actor_rollout_ref.rollout.gpu_memory_utilization=0.6 \ actor_rollout_ref.rollout.n=5 \ actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=40 \ actor_rollout_ref.ref.fsdp_config.param_offload=True \ algorithm.kl_ctrl.kl_coef=0.001 \ trainer.critic_warmup=0 \ trainer.logger=console \ trainer.project_name='verl_grpo_example_gsm8k' \ trainer.experiment_name='qwen2_7b_function_rm' \ trainer.n_gpus_per_node=8 \ trainer.nnodes=1 \ trainer.save_freq=-1 \ trainer.test_freq=5 \ trainer.total_epochs=1 $@
表1 RL类算法
algorithm model download link actor.strategy rollout.name shell location hardware GRPO Qwen2.5-7B-instruct 7B FSDP vllm-ascend qwen2_5_7b_grpo_npu Atlas 200T A2 Box16 GRPO Qwen2.5-32B-instruct 32B FSDP vllm-ascend qwen2_5_32b_grpo_npu Atlas 200T A2 Box16 GRPO Qwen2.5-VL-3B-instruct 3B FSDP vllm-ascend qwen2_5_vl_3b_npu Atlas 200T A2 Box16 GRPO Qwen2.5-VL-7B-instruct 7B FSDP vllm-ascend qwen2_5_vl_7b_npu Atlas 200T A2 Box16 GRPO Qwen2.5-VL-32B-instruct 32B FSDP vllm-ascend qwen2_5_vl_32b_npu Atlas 200T A2 Box16 GRPO Qwen3-4B 4B FSDP vllm-ascend qwen3-4B_npu Atlas 800T A3 GRPO Qwen3-8B 8B FSDP vllm-ascend qwen3_8b_vllm_npu Atlas 200T A2 Box16 GRPO Qwen3-8B 8B FSDP sglang qwen3_8b_sglang_npu Atlas 200T A2 Box16 GRPO Qwen3-32B 32B FSDP vllm-ascend qwen3-32B_npu Atlas 200T A2 Box16 GRPO Qwen3-30B-A3B 30B MindSpeed_LLM sglang qwen3_30b_mindspeedllm_npu Atlas 800T A3 GRPO Qwen3-32B 32B MindSpeed_LLM sglang qwen3_32b_mindspeedllm_npu Atlas 800T A3 GRPO DeepSeekv3-671B 671B Megatron vllm-ascend deepseek_v3_megatron_npu Atlas 200T A2 Box16 DAPO Qwen2.5-7B-instruct 7B FSDP vllm-ascend qwen2.5_7b_npu Atlas 200T A2 Box16 DAPO Qwen2.5-32B 32B FSDP vllm-ascend qwen2.5_32b_npu Atlas 200T A2 Box16 DAPO Qwen3-8B-base 8B FSDP vllm-ascend qwen3_8b_npu Atlas 200T A2 Box16 DAPO Qwen3-14B-base 14B FSDP vllm-ascend qwen3_14b_npu Atlas 200T A2 Box16 DAPO Qwen3-30B-A3B-base 30B FSDP vllm-ascend qwen3_30b_fsdp_npu Atlas 200T A2 Box16 DAPO Qwen3-30B-A3B-base 30B Megatron vllm-ascend qwen3_30b_megatron_npu Atlas 200T A2 Box16 PPO Qwen3-8B 8B FSDP vllm-ascend qwen3_8b_ppo_npu Atlas 900 A2 PODc One_Step_Off_Policy Qwen3-8B 8B FSDP2 vllm-ascend qwen3_8b_fsdp2_npu Atlas 800T A3
表2 SFT类算法
algorithm model download link actor.strategy shell location hardware SFT-PEFT Qwen3-8B 8B FSDP sft_peft_sp2_npu Atlas 900 A2 PODc ReTool-SFT Qwen2-7B-instruct 7B FSDP qwen2_7b_sft_npu Atlas 900 A2 PODc
verl中提供的ascend支持代码、Dockerfile、镜像皆为参考样例,如在生产环境中使用请通过官方正式途径沟通,谢谢。