ABO12138's picture
Upload folder using huggingface_hub
f5b2db8 verified
Raw
History Blame Contribute Delete
6.05 kB
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