Ascend NPU 快速上手#
分支说明: Ascend NPU 支持目前维护在 ascend 分支(尚未合入
main),后续有计划将其合并至main。 运行下文任何 NPU 示例前,请先 clone 或 checkout 该分支。
⚠️ 如在 Ascend NPU 上运行 vime 遇到问题,欢迎在 vllm-project/vime 提交 Issue。
概述#
vime 在 Ascend NPU 上使用 Megatron 训练后端与 vLLM Ascend rollout 后端。
解耦模式下 actor 权重经 HCCL 同步到 vLLM;colocate 模式(--colocate)下经 NPU IPC 同步。
当前支持 Ascend Atlas A2 / A3(aarch64)硬件。
获取 ascend 分支#
git clone --branch ascend https://github.com/vllm-project/vime.git
cd vime
若已有仓库:
git fetch origin ascend
git checkout ascend
ascend 分支资源索引#
资源 |
说明 |
|---|---|
完整 NPU 指南,含 GRPO 端到端示例与训练参数 |
|
源码构建、依赖版本与 patch 列表 |
|
Qwen3-4B 解耦训练(4 actor + 4 rollout NPU) |
|
Qwen3-30B-A3B MoE NPU 训练脚本 |
|
Qwen3-30B-A3B NPU 模型参数 |
基础环境#
Docker 镜像#
推荐使用已发布的 vime NPU 镜像:
export IMAGE=quay.io/ascend/vime:vime-latest
# A2: export IMAGE=quay.io/ascend/vime:vime-a2-latest
docker pull "${IMAGE}"
源码构建与依赖调试请参考 ascend 分支上的
docker/npu_patch/README.md。
拉取并启动容器#
挂载 Ascend 设备与驱动文件后启动容器。设备名与挂载路径因主机而异,可参考已跑通的 vLLM Ascend 容器配置。
docker run -d --name vime-npu -it --net=host --shm-size=1024g \
--privileged=true \
--cap-add=SYS_PTRACE \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--device=/dev/devmm_svm \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/sbin:/usr/local/sbin \
-v /home:/home \
-v /mnt:/mnt \
-v /tmp:/tmp \
-v /data:/data \
-v /path/to:/path/to \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
"${IMAGE}"
docker exec -it vime-npu bash
容器内训练前初始化 CANN 环境:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
模型与数据集下载#
export MODEL_ROOT=/root
mkdir -p ${MODEL_ROOT}/models ${MODEL_ROOT}/datasets
# 模型权重(Qwen3-4B)
hf download Qwen/Qwen3-4B --local-dir ${MODEL_ROOT}/models/Qwen3-4B
# 训练数据集(dapo-math-17k)
hf download --repo-type dataset zhuzilin/dapo-math-17k \
--local-dir ${MODEL_ROOT}/datasets/dapo-math-17k
训练示例(Qwen3-4B)#
在容器内 checkout ascend 分支后,运行脚本:
cd /root/vime
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
MODEL_ROOT=/root bash scripts/run-qwen3-4B-npu.sh
完整日志写入 /root/vime/train_qwen3_4b_vllm.log。
说明: 与 NVIDIA 流程的主要区别是 Ascend 环境变量 — 使用
ASCEND_RT_VISIBLE_DEVICES替代CUDA_VISIBLE_DEVICES,并设置RAY_EXPERIMENTAL_NOSET_ASCEND_RT_VISIBLE_DEVICES=1以便 Ray 正确调度 NPU。 参考脚本面向 16 卡 Atlas A3;8 卡主机请设置ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7。
完整训练命令、HCCL 端口范围与参数说明见 ascend 分支 NPU.md。
MoE 示例(Qwen3-30B-A3B)#
MoE 模型请使用 ascend 分支脚本:
bash scripts/run-qwen3-30B-A3B-npu.sh