Back to Verl

Ascend Quickstart

docs/ascend_tutorial/get_start/quick_start.rst

0.8.05.9 KB
Original Source

Ascend Quickstart

Last updated: 05/13/2026.

关键更新

  • 2026/05/13:将 quick start 和 install guidance 分开。
  • 2025/12/11:verl 存量场景目前支持自动识别 NPU 设备类型,GPU 脚本在昇腾上运行,原则上不再需要显式设置 trainer.device=npu 参数,新增特性通过设置 trainer.device 仍可优先使用,逐步适配自动识别能力。

硬件支持

  • Atlas 200T A2 Box16
  • Atlas 900 A2 PODc
  • Atlas 800T A3

Ascend Quickstart with vLLM Backend

基础验证场景

如需快速验证环境和基础链路,可以使用 Qwen2.5-0.5B GRPO 场景。

该场景用于检查:

  • verl 入口是否可用;
  • 数据是否可读取;
  • actor、rollout、reference worker 是否能初始化;
  • vLLM-Ascend rollout 是否能生成;
  • 训练链路是否能完成首个 step。

准备 GSM8K 数据

.. code-block:: bash

python3 examples/data_preprocess/gsm8k.py --local_save_dir ~/data/gsm8k

生成文件:

.. code-block:: text

~/data/gsm8k/train.parquet ~/data/gsm8k/test.parquet

启动 Qwen2.5-0.5B GRPO 基础验证

.. code-block:: bash

set -x

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_5_0_5b_grpo_vllm_ascend'
trainer.n_gpus_per_node=8
trainer.nnodes=1
trainer.save_freq=-1
trainer.test_freq=5
trainer.total_epochs=1 $@

关键配置

.. list-table:: :header-rows: 1 :widths: 40 60

    • 配置项
    • 说明
    • actor_rollout_ref.rollout.name=vllm
    • 使用 vLLM 作为 rollout 后端
    • actor_rollout_ref.rollout.tensor_model_parallel_size
    • rollout 推理侧张量并行大小
    • actor_rollout_ref.rollout.gpu_memory_utilization
    • rollout 推理侧可使用的设备显存比例
    • actor_rollout_ref.rollout.n
    • 每个 prompt 生成的 response 数量
    • trainer.n_gpus_per_node
    • 昇腾场景中表示每节点使用的 NPU 数量
    • trainer.nnodes
    • 节点数量

Ascend Quickstart with SGLang Backend

最佳实践

我们提供 最佳实践 <https://github.com/verl-project/verl/blob/main/docs/ascend_tutorial/model_support/examples/ascend_sglang_best_practices.rst>_ 作为参考。

环境变量与参数

当前 NPU 上支持 SGLang 后端必须添加以下环境变量。

.. code-block:: bash

支持 NPU 单卡多进程

https://www.hiascend.com/document/detail/zh/canncommercial/850/commlib/hcclug/hcclug_000091.html

export HCCL_HOST_SOCKET_PORT_RANGE=60000-60050 export HCCL_NPU_SOCKET_PORT_RANGE=61000-61050

规避 Ray 在 device 侧调用无法根据 is_npu_available 接口识别设备可用性

export RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES=1

根据当前设备和需要卡数定义

export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

使能推理 EP 时需要

export SGLANG_DEEPEP_BF16_DISPATCH=1

当前 verl 已解析推理常见参数,详见 async_sglang_server.py <https://github.com/verl-project/verl/blob/main/verl/workers/rollout/sglang_rollout/async_sglang_server.py>_ 中 ServerArgs 初始化传参。

其他 SGLang 参数 <https://github.com/sgl-project/sglang/blob/main/docs/advanced_features/server_arguments.md>_ 均可通过 engine_kwargs 进行参数传递。

vLLM 后端脚本转换为 SGLang

vLLM 后端推理脚本转换为 SGLang,需要添加或修改以下参数。

.. code-block:: bash

必须

actor_rollout_ref.rollout.name=sglang
+actor_rollout_ref.rollout.engine_kwargs.sglang.attention_backend="ascend" \

可选

使能推理 EP,详细使用方法见:

https://github.com/sgl-project/sgl-kernel-npu/blob/main/python/deep_ep/README_CN.md

++actor_rollout_ref.rollout.engine_kwargs.sglang.deepep_mode="auto"
++actor_rollout_ref.rollout.engine_kwargs.sglang.moe_a2a_backend="deepep" \

MoE 模型多 DP 时必须设置为 True

+actor_rollout_ref.rollout.engine_kwargs.sglang.enable_dp_attention=False \

chunked_prefill 默认关闭

+actor_rollout_ref.rollout.engine_kwargs.sglang.chunked_prefill_size=-1