【Ascend】华为昇腾 NPU 部署 Qwen3.5 + SGLang 实战指南
本文提供华为昇腾NPU部署Qwen3.5+SGLang的实战指南,包含Docker Compose配置和启动脚本说明。环境要求为昇腾910B/8.5.0,通过挂载模型目录和映射NPU设备实现快速部署。关键配置包括CPU调优、Ascend环境设置、多卡并行参数等,并给出启动验证步骤。文章还提供性能调优建议和常见问题排查方法,适用于单机多卡场景,支持多模态能力,可根据业务需求调整参数。
·
华为昇腾 NPU 部署 Qwen3.5 + SGLang 实战指南
面向希望在昇腾 910B/8.5.0 环境快速落地 Qwen3.5 推理服务的同学,结合官方示例与实测脚本,给出可直接复用的 Docker Compose 与启动参数说明。全文按「环境准备 → 拉起服务 → 验证 → 调优与排障」路径展开。
一、项目结构与核心文件
docker-compose.yml:定义容器镜像、挂载、设备映射与启动脚本入口。服务暴露 8000 端口,可对外提供推理 API。@ascend_qwen3.5/docker-compose.yml#1-28start.sh:容器内启动脚本,设置 CPU 性能模式、Ascend 环境变量,并以 SGLang 启动 Qwen3.5 推理服务。@ascend_qwen3.5/start.sh#1-43参考链接.txt:官方 Ascend NPU + Qwen3.5 示例文档入口,便于对照版本与更多参数。@ascend_qwen3.5/参考链接.txt#1-1
二、环境前置
- 确保宿主机已安装 Ascend 910B 驱动与 CANN 8.5.0,对应目录
/usr/local/Ascend/driver存在,并具备npu-smi、hccn_tool。@ascend_qwen3.5/docker-compose.yml#13-25 - 模型权重与脚本目录挂载到宿主
/iflytek/models,容器内使用/root/models路径。@ascend_qwen3.5/docker-compose.yml#19-19 - 端口 8000 对外暴露,可按需在 Compose 中调整。
三、Docker Compose 说明
核心配置摘录:
services:
sglang:
image: lmsysorg/sglang:v0.5.9-cann8.5.0-910b
entrypoint: ["/root/models/Qwen3.5-35B-A3B/start.sh"]
ports:
- "0.0.0.0:8000:8000"
volumes:
- /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
- /usr/local/dcmi:/usr/local/dcmi
- /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool
- /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/
- /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info
- /iflytek/models:/root/models
devices:
- /dev/davinci0
- /dev/davinci1
- /dev/davinci2
- /dev/davinci3
- /dev/davinci_manager
- /dev/devmm_svm
- /dev/hisi_hdc
要点:
- 镜像已内置 SGLang + Ascend 8.5.0 适配,无需额外构建。@ascend_qwen3.5/docker-compose.yml#5-5
entrypoint定位到挂载目录内的start.sh,保证参数可自定义。@ascend_qwen3.5/docker-compose.yml#9-9- 映射多张 NPU 设备,便于张量并行;如资源更少,可缩减设备列表。@ascend_qwen3.5/docker-compose.yml#21-27
四、启动脚本解读
start.sh 关键步骤:
# CPU & NUMA 调优
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
sysctl -w vm.swappiness=0
sysctl -w kernel.numa_balancing=0
sysctl -w kernel.sched_migration_cost_ns=50000
export SGLANG_SET_CPU_AFFINITY=1
# 清理代理、设置 Ascend 环境
unset https_proxy http_proxy HTTPS_PROXY HTTP_PROXY ASCEND_LAUNCH_BLOCKING
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /usr/local/Ascend/nnal/atb/set_env.sh
# 通信/性能参数
export STREAMS_PER_DEVICE=32
export HCCL_BUFFSIZE=1000
export HCCL_OP_EXPANSION_MODE=AIV
export HCCL_SOCKET_IFNAME=lo
export GLOO_SOCKET_IFNAME=lo
# 启动 SGLang 服务器
python3 -m sglang.launch_server \
--model-path Qwen3.5-35B-A3B/V1 \
--served-model-name qwen3.5 \
--attention-backend ascend \
--device npu \
--tp-size 2 --nnodes 1 --node-rank 0 \
--chunked-prefill-size 4096 --max-prefill-tokens 280000 \
--disable-radix-cache \
--trust-remote-code \
--host 0.0.0.0 \
--mem-fraction-static 0.7 \
--port 8000 \
--cuda-graph-bs 16 \
--enable-multimodal \
--mm-attention-backend ascend_attn \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder
解读:
- CPU 固定性能模式,降低 NUMA 干扰,开启 CPU 亲和性,利于大模型多线程。@ascend_qwen3.5/start.sh#1-9
- 加载 Ascend Toolkit/ATB 环境,确保 NPU 算子可用。@ascend_qwen3.5/start.sh#15-18
- 通信参数(STREAMS、HCCL/GLOO)优化多卡并发与回环网卡通信。@ascend_qwen3.5/start.sh#19-23
--tp-size 2采用 2 卡张量并行,可按硬件调整;--max-prefill-tokens 280000提升长文本预填充长度;--enable-multimodal开启多模态能力。@ascend_qwen3.5/start.sh#27-43
五、部署步骤(宿主机)
- 放置模型与脚本:
- 将
Qwen3.5-35B-A3B目录与本文docker-compose.yml、start.sh放入/iflytek/models(或按需修改 Compose 与脚本路径)。
- 将
- 启动:
docker compose -f docker-compose.yml up -d - 查看日志:
docker logs -f sglang - 验证接口(示例 JSON):
curl -X POST "http://<host>:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3.5", "messages": [ {"role": "user", "content": "给我一个昇腾部署 Qwen3.5 的测试句子"} ] }'
六、性能与稳定性建议
- 并行度:根据 NPU 数调整
--tp-size,单机多卡时保持--nnodes 1,跨机需结合 HCCL 配置扩展--nnodes/--node-rank。 - 内存水位:
--mem-fraction-static控制显存静态分配比例,默认 0.7,可在显存紧张时适当降低。 - prefill 长度:
--max-prefill-tokens影响长文本性能,业务场景短文本可适度下调以减少首次延迟。 - 多模态:已开启
--enable-multimodal与--mm-attention-backend ascend_attn,如纯文本可关闭以降低开销。 - CPU 亲和:
SGLANG_SET_CPU_AFFINITY=1有助于线程绑核,若容器共享算力,可取消以减少干扰。
七、常见问题排查
| 现象 | 排查方向 |
|---|---|
| 容器启动失败,提示设备不可用 | 检查 /dev/davinci* 是否存在并已映射;驱动版本与 CANN 是否匹配 |
| 推理报错找不到算子 | 确认已 source ascend-toolkit/atb,或更新镜像至匹配版本 |
| 性能不达预期 | 调整 STREAMS_PER_DEVICE、--tp-size,观察 npu-smi 占用;检查 NUMA/亲和性设置 |
| 长文本 OOM | 下调 --max-prefill-tokens 或 --mem-fraction-static,并观察日志 |
八、参考
- 官方文档:https://docs.sglang.io/platforms/ascend_npu_qwen3_5_examples.html @ascend_qwen3.5/参考链接.txt#1-1
以上配置可直接在昇腾 910B + CANN 8.5.0 环境拉起 Qwen3.5 服务,若有多机多卡需求,可基于现有 HCCL 映射与 SGLang 启动参数做横向扩展。
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)