华为 A800I A2 昇腾 910B NPU 大模型推理部署

发布时间:2026/7/6 1:56:50
华为 A800I A2 昇腾 910B NPU 大模型推理部署 华为 A800I A2 昇腾 910B NPU 大模型推理部署华为 A800I A2 昇腾 910B NPU 大模型推理部署手册文档说明名词说明零、安装包与资源清单一、安装包准备二、系统版本说明三、安装编译工具链3.1 通过 iBMA 挂载 ISO3.2 配置本地 yum 源3.3 安装编译工具四、安装 NPU 驱动五、安装 NPU 固件六、验证七、安装 Docker7.1 解压安装7.2 配置 systemd 服务7.3 验证八、安装 Docker Compose8.1 两种命令的区别8.2 确定 CLI plugins 目录8.3 安装 docker-compose 插件九、下载模型文件Qwen3.6-35B-A3B下载前修改缓存目录方式一有外网环境服务器直接下载推荐方式二有外网的 PC 下载后上传服务器本次实际方式验证模型文件完整性十、部署 vLLM-Ascend 推理服务10.1 加载镜像10.2 docker-compose.yml 配置说明10.3 启动服务10.4 验证10.5 服务管理附故障排查记录SP4 兼容性问题仅供参考问题1gcc 未安装问题2驱动编译失败 MIN redefined问题3闭源模块无法加载SP4 根本问题华为 A800I A2 昇腾 910B NPU 大模型推理部署手册服务器型号华为 A800I A2芯片昇腾 910B48卡每卡 32GB HBM共 256GB操作系统openEuler 24.03 LTS SP3aarch64驱动版本25.5.2固件版本7.8.0.7.220推理框架vLLM-Ascend v0.18.0部署模型Qwen/Qwen3.6-35B-A3B记录日期2026-07-04文档说明本文档记录在华为 A800I A2昇腾 910B NPU服务器上从零开始完成大模型推理服务部署的完整流程包括NPU 驱动和固件安装Docker 离线安装Docker Compose 离线安装模型文件下载Qwen3.6-35B-A3BvLLM-Ascend 推理框架部署名词说明本文档涉及华为昇腾生态相关名词统一说明如下名词说明Ascend / 昇腾同一个东西Ascend 是昇腾的英文品牌名华为 AI 芯片产品线910B / 910B4昇腾 910 系列第四代 NPU 芯片A800I A2 服务器搭载NPUNeural Processing Unit神经网络处理器类比 NVIDIA 的 GPUHBMHigh Bandwidth MemoryNPU 上的高速显存910B4 每卡 32GBvLLM-AscendvLLM 推理框架的昇腾适配版quay.io/ascend/vllm-ascendtorch_npu华为昇腾的 PyTorch 插件让 PyTorch 能在 NPU 上运行HCCLHuaWei Collective Communication Library华为多卡通信库类比 NVIDIA 的 NCCLDCMIDevice Communication Management InterfaceNPU 设备管理接口HwHiAiUser设备节点所属用户组HiSilicon AI User华为海思 AI 用户组iBMA华为服务器带外管理界面可远程挂载 ISO、控制电源HCCNHuaWei Collective Communication NetworkNPU 网络配置CANNCompute Architecture for Neural Networks华为昇腾异构计算架构包含驱动、固件、算子库、通信库等整套软件栈torch_npu / HCCL 都属于 CANN 的组成部分环境变量来源说明部署配置中的环境变量不在模型页面modelscope/huggingface 只放调用示例查找方式如下前缀所属库查找位置VLLM_*vLLM / vLLM-Ascendvllm-ascend.readthedocs.io 或启动报错信息PYTORCH_NPU_*torch_npu华为 PyTorch 昇腾插件CANN 社区版文档 →参考 → 环境变量参考HCCL_*HCCL 多卡通信库CANN 社区版文档 →参考 → 环境变量参考CANN 社区版环境变量参考文档直达链接9.0 版本https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/900/maintenref/envvar/envref_07_0001.html注意URL 中900对应 CANN 9.0可在页面右上角切换版本选与驱动版本匹配的本机驱动 25.5.2。三个前缀来自三个不同的库不在同一个文档里VLLM_*在 vllm-ascend其余两个在 CANN 文档。零、安装包与资源清单部署前需准备以下文件服务器无外网时需在有网环境提前下载后上传类别文件获取方式NPU 驱动Ascend-hdk-910b-npu-driver-25.5.2-1.aarch64.rpmhiascend.com/hardware/firmware-drivers/communityNPU 固件Ascend-hdk-910b-npu-firmware-7.8.0.7.220-1.noarch.rpmhiascend.com/hardware/firmware-drivers/community系统 ISOopenEuler-24.03-LTS-SP3-aarch64-dvd.isoopeneuler.org/zh/download/Dockerdocker-27.5.1.tgzaarch64download.docker.com/linux/static/stable/aarch64/Docker Composedocker-compose-linux-aarch64github.com/docker/compose/releases推理框架镜像vllm-ascend-v0.18.0-aarch64.tarquay.io/ascend/vllm-ascend:v0.18.0模型文件Qwen3.6-35B-A3B约 67GBmodelscope.cn/models/Qwen/Qwen3.6-35B-A3B一、安装包准备文件说明Ascend-hdk-910b-npu-driver-25.5.2-1.aarch64.rpmNPU 驱动版本 25.5.2Ascend-hdk-910b-npu-firmware-7.8.0.7.220-1.noarch.rpmNPU 固件版本 7.8.0.7.220注意安装顺序必须是先驱动后固件否则报错Please Setup Driver RPM First。二、系统版本说明驱动 25.5.2 适配openEuler 24.03 LTS SP3内核6.6.0-132.x.oe2403sp3。不要使用 openEuler 24.03 LTS SP4内核 6.6.0-159.xSP4 内核与驱动预置的闭源二进制模块不兼容会导致ts_agent、ascend_dms_mng等关键模块无法加载。SP3 ISO 下载openeuler.org/zh/download/选择 aarch64 服务器版openEuler-24.03-LTS-SP3-aarch64-dvd.iso三、安装编译工具链驱动安装需要编译环境。服务器无外网通过iBMA 挂载 ISO作为本地 yum 源安装。3.1 通过 iBMA 挂载 ISO浏览器登录 iBMA 带外管理地址进入远程控制 → 虚拟介质 → CD/DVD选择本地 openEuler-24.03-LTS-SP3 ISO 文件挂载3.2 配置本地 yum 源mount/dev/sr0 /mnt# 备份原有 repo避免联网失败报错mkdir-p/etc/yum.repos.d/backupmv/etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/cat/etc/yum.repos.d/local.repoEOF [local] nameopenEuler Local ISO baseurlfile:///mnt enabled1 gpgcheck0 EOF3.3 安装编译工具yuminstall-ygcc gcc-c kernel-devel kernel-headersmake四、安装 NPU 驱动注意安装顺序必须是先驱动后固件反过来会报错Please Setup Driver RPM First。rpm-ivhAscend-hdk-910b-npu-driver-25.5.2-1.aarch64.rpm安装成功后输出示例[Driver] [INFO]driver install type: Rebuild [Driver] [INFO]Driver install successfully!卸载驱动后必须重启rpm -e Ascend910B-driver后需执行reboot否则卸载不生效。五、安装 NPU 固件驱动安装完成后再装固件rpm-ivhAscend-hdk-910b-npu-firmware-7.8.0.7.220-1.noarch.rpm六、验证# 检查设备节点ls/dev/davinci*# 查看 NPU 状态npu-smi info正常输出示例8卡 910B4------------------------------------------------------------------------------------------------ | npu-smi 25.5.2 Version: 25.5.2 | ---------------------------------------------------------------------------------------------- | NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)| | Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) | | 0 910B4 | OK | 83.4 32 0 / 0 | | 0 | 0000:C1:00.0 | 0 0 / 0 2659 / 32768 | ...共8卡Health 全部为OK表示正常每卡 HBM 32768MB32GB8卡共 256GB空载温度 32-37°C功耗 78-87W 为正常范围七、安装 Docker7.1 解压安装cd/roottar-zxvfdocker-27.5.1.tgzcpdocker/* /usr/local/bin/7.2 配置 systemd 服务cat/etc/systemd/system/docker.serviceEOF [Unit] DescriptionDocker Application Container Engine Afternetwork-online.target firewalld.service Wantsnetwork-online.target [Service] Typenotify ExecStart/usr/local/bin/dockerd ExecReload/bin/kill -s HUP $MAINPID Restartalways RestartSec2 LimitNOFILEinfinity LimitNPROCinfinity LimitCOREinfinity [Install] WantedBymulti-user.target EOFsystemctl daemon-reload systemctlenabledockersystemctl startdocker7.3 验证dockerversion安装成功版本信息Docker 版本27.5.1OS/Archlinux/arm64containerdv1.7.25八、安装 Docker Compose8.1 两种命令的区别命令说明docker-compose独立二进制老版本v1放到PATH下即可用如/usr/local/bin/docker-composedocker composeDocker CLI 插件方式v2是docker命令的子命令需放到 Docker 的 CLI plugins 目录本文使用docker compose插件方式v2与新版 Docker 集成更好语法一致推荐使用。8.2 确定 CLI plugins 目录docker compose插件目录的位置取决于 Docker 二进制装在哪规则是Docker 二进制路径/usr/local/bin/docker ↓ 对应 plugins 目录/usr/local/lib/docker/cli-plugins/即将bin换成lib再加上docker/cli-plugins/。通过which docker确认whichdocker# 输出示例/usr/local/bin/docker# 则 plugins 目录为/usr/local/lib/docker/cli-plugins/也可以直接查 Docker 支持的 plugins 搜索路径dockerinfo|grep-A5Plugins# 输出示例# Plugins:# compose: Docker Compose (Docker Inc.)# Version: v2.32.4# Path: /usr/local/lib/docker/cli-plugins/docker-compose## Server:# --# Plugins:# Volume: local# Network: bridge host ipvlan macvlan null overlay# Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog# Swarm: inactive# Runtimes: io.containerd.runc.v2 runcPath字段直接告诉你 docker-compose 当前放在哪安装时放到这个路径即可。8.3 安装 docker-compose 插件确认好目录后将 docker-compose 二进制放进去并赋可执行权限mkdir-p/usr/local/lib/docker/cli-pluginscpdocker-compose-linux-aarch64 /usr/local/lib/docker/cli-plugins/docker-composechmodx /usr/local/lib/docker/cli-plugins/docker-compose# 验证dockercompose version放对目录后docker compose就可以用了无需改 PATH。注意如果 Docker 被其他软件替换过which docker结果可能变化要重新确认 plugins 目录再放。2. Docker Root Dir镜像、容器、overlay 数据存储位置dockerinfo|grepDocker Root Dir# 默认输出# Docker Root Dir: /var/lib/dockerRoot Dir 可能被修改如通过daemon.json的data-root字段排查磁盘占用时先确认实际路径。Root Dir 下的目录结构{Docker Root Dir}/ ├── overlay2/ # 镜像和容器的实际文件数据占用空间最大vLLM 镜像 ~20GB 在这里 │ ├── layer-hash/ │ │ └── diff/ # 每个镜像层的实际文件内容 │ └── l/ # 短链接指向各层 diff/ ├── image/ # 镜像元数据层信息、配置 JSON体积小 │ └── overlay2/ │ ├── imagedb/ │ └── layerdb/ ├── containers/ # 容器元数据和日志每个容器按 ID 命名的子目录 │ └── id/ │ └── *-json.log # 容器日志默认不限大小长期运行会涨 ├── volumes/ # docker volume 数据卷容器删了数据还在 ├── network/ # 网络配置 ├── plugins/ # docker 插件数据 └── tmp/Root Dir 被改为新路径后新目录是空的旧镜像数据还留在原路径的overlay2/里镜像会看起来消失。恢复方法停止 Docker将旧目录内容 mv 到新路径再启动 Docker。九、下载模型文件Qwen3.6-35B-A3B模型地址https://www.modelscope.cn/models/Qwen/Qwen3.6-35B-A3B模型大小约67GB包含 26 个 safetensors 分片文件。下载前修改缓存目录modelscope 默认将模型缓存到/root/.cache该目录通常在根分区。根分区空间有限下载前必须将缓存路径改到大分区否则 67GB 模型会把根分区占满。# 永久修改 modelscope 缓存路径写入 /etc/profile 全局生效echoexport MODELSCOPE_CACHE/home/.cache/modelscope/etc/profilesource/etc/profile# 验证echo$MODELSCOPE_CACHE# 输出/home/.cache/modelscope同理如果使用 huggingface 下载echoexport HF_HOME/home/.cache/huggingface/etc/profilesource/etc/profile改完环境变量后后续所有 modelscope/huggingface 操作都自动走大分区无需每次手动指定路径。也可以在下载时用--local_dir临时指定但不如改环境变量一劳永逸。方式一有外网环境服务器直接下载推荐使用 modelscope CLI 下载支持断点续传# 安装 modelscopepip3installmodelscope# 下载模型到 /home/.cache 目录vLLM 默认读取路径modelscope download--modelQwen/Qwen3.6-35B-A3B\--local_dir/home/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/snapshots/master也可以用 git clone需要 git-lfs# 安装 git-lfsyuminstall-ygit-lfsgitlfsinstall# 克隆模型GIT_LFS_SKIP_SMUDGE1gitclone https://www.modelscope.cn/Qwen/Qwen3.6-35B-A3B.git\/home/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/snapshots/mastercd/home/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/snapshots/mastergitlfs pull方式二有外网的 PC 下载后上传服务器本次实际方式在有外网的机器上下载完整模型目录然后 scp 上传# 在有网环境下载pip3installmodelscope modelscope download--modelQwen/Qwen3.6-35B-A3B--local_dir./Qwen3.6-35B-A3B# 上传到服务器约 67GB视网速决定时间scp-r./Qwen3.6-35B-A3B root172.16.3.9:/home/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/snapshots/master验证模型文件完整性# 查看模型目录结构ls/home/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/snapshots/master/# 应包含 26 个 safetensors 分片ls/home/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/snapshots/master/*.safetensors|wc-l# 输出26# 查看总大小du-sh/home/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/# 约 67GB十、部署 vLLM-Ascend 推理服务10.1 加载镜像dockerload-ivllm-ascend-v0.18.0-aarch64.tardockerimages# 镜像名quay.io/ascend/vllm-ascend:v0.18.010.2 docker-compose.yml 配置说明在运行推理服务之前需要理解配置文件各项的含义出问题时才知道从哪里排查。确认设备节点填写 devices 前先执行ls/dev/davinci*ls-l/dev/devmm_svm /dev/hisi_hdc正常输出8卡 910B/dev/davinci0 ~ /dev/davinci7 # 8张 NPU 计算卡主设备号 237 /dev/davinci_manager # NPU 管理接口主设备号 238 /dev/devmm_svm # 统一内存管理主设备号 236 /dev/hisi_hdc # CPU↔NPU 数据通道主设备号 235注意devices 里填的是设备文件名如/dev/devmm_svm不是主设备号。主设备号由内核动态分配不同系统可能不同不用关心。所有 910B 系列装完驱动设备名都一样可以直接照抄。如果换其他昇腾型号如 310P先ls /dev/davinci* /dev/devmm* /dev/hisi*确认。创建工作目录mkdir-p/home/maokaiyin/vllm完整配置文件/home/maokaiyin/vllm/docker-compose.ymlversion:3services:vllm-qwen:image:quay.io/ascend/vllm-ascend:v0.18.0container_name:vllm-qwennetwork_mode:host# 直接使用宿主机网络NPU HCCL 多卡通信需要 host 模式shm_size:128g# 共享内存8卡并行进程间通信需要大共享内存默认 64MB 不够restart:always# 容器异常退出后自动重启# 将宿主机 NPU 设备节点映射进容器# devices 填设备文件名有几张卡写几个 davinci后三个固定写devices:-/dev/davinci0# NPU 卡0-/dev/davinci1# NPU 卡1-/dev/davinci2# NPU 卡2-/dev/davinci3# NPU 卡3-/dev/davinci4# NPU 卡4-/dev/davinci5# NPU 卡5-/dev/davinci6# NPU 卡6-/dev/davinci7# NPU 卡7-/dev/davinci_manager# NPU 管理接口npu-smi 依赖-/dev/devmm_svm# CPU/NPU 统一虚拟内存张量分配走这里-/dev/hisi_hdc# Host-Device Communication数据传输通道# 将宿主机 NPU 驱动运行时文件挂载进容器# 容器内没有安装驱动需要从宿主机挂载进来才能调用 NPUvolumes:-/usr/local/dcmi:/usr/local/dcmi# DCMI 管理库-/usr/local/Ascend/driver/tools/hccn_tool:/usr/local/Ascend/driver/tools/hccn_tool# 网络配置工具-/usr/local/bin/npu-smi:/usr/local/bin/npu-smi# npu-smi 工具-/usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/# 驱动动态库核心-/usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info# 驱动版本-/etc/ascend_install.info:/etc/ascend_install.info# 驱动安装信息-/etc/hccn.conf:/etc/hccn.conf# NPU 网络配置-/home/.cache:/root/.cache# 模型文件目录environment:-VLLM_ALLOW_LONG_MAX_MODEL_LEN1# 允许设置超长 max_model_len否则 262144 会被拒绝-PYTORCH_NPU_ALLOC_CONFmax_split_size_mb:256# 限制 NPU 内存分配块大小减少碎片-HCCL_OP_EXPANSION_MODEHOST# HCCL 多卡通信走 HOST 模式稳定性更好# 推理服务启动命令command:vllm serve /root/.cache/modelscope/models/Qwen--Qwen3.6-35B-A3B/snapshots/master --tensor-parallel-size 8 # 8卡张量并行与实际卡数一致 --port 8000 --max-model-len 262144 # 最大 256K token 上下文 --served-model-name Qwen/Qwen3.6-35B-A3B --reasoning-parser qwen3 # 启用思维链解析Qwen3 特有 --enable-auto-tool-choice --tool-call-parser qwen3_coder10.3 启动服务cd/home/maokaiyin/vllmdockercompose up-ddockercompose logs-f启动过程说明Ascend 插件加载约10秒模型权重加载26个分片每卡 8.4GB共约50秒NPU 图编译torch.compile warmup约85秒CUDA graph capture14个batch size约1分钟服务就绪Application startup complete.总启动时间约5-6 分钟。10.4 验证注意chat/completions 接口必须用POST请求用 GET 会返回405 Method Not Allowed。# 检查模型列表curlhttp://localhost:8000/v1/models# 发送测试请求开启思维链响应较慢curl-XPOST http://localhost:8000/v1/chat/completions\-HContent-Type: application/json\-d{ model: Qwen/Qwen3.6-35B-A3B, messages: [{role: user, content: 你好}] }# 关闭思维链速度更快推荐日常使用curl-XPOST http://localhost:8000/v1/chat/completions\-HContent-Type: application/json\-d{ model: Qwen/Qwen3.6-35B-A3B, messages: [{role: user, content: 你好}], chat_template_kwargs: {enable_thinking: false} }思维链说明Qwen3 默认开启 reasoning 模式每次推理先输出思考过程再给答案。开启时首次请求约 18 秒NPU aclgraph 预热后续约 5-10 秒。关闭思维链后响应速度明显更快。10.5 服务管理# 停止dockercompose down# 重启dockercompose restart# 查看日志dockercompose logs-f# 查看 NPU 使用情况推理中 AICore 使用率应 0npu-smi info附故障排查记录SP4 兼容性问题仅供参考以下为在 SP4 上安装时遇到的问题SP3 系统不会遇到仅作记录。问题1gcc 未安装[Driver] [ERROR]gcc: command not found原因系统未安装编译工具链。解决按第三章步骤安装 gcc 等工具。问题2驱动编译失败MIN redefined/usr/local/Ascend/driver/kernel/vascend_drv/kvmdt.c:62: error: MIN redefined [-Werror]原因SP4 内核头文件与驱动源码中MIN宏定义冲突-Werror将其升级为编译错误。临时解决SP3 无需此操作sed-is/#define MIN(x, y) ((x) (y) ? (x) : (y))/#ifndef MIN\n#define MIN(x, y) ((x) (y) ? (x) : (y))\n#endif/\/usr/local/Ascend/driver/kernel/vascend_drv/kvmdt.cbash/usr/local/Ascend/driver/script/run_driver_ko_rebuild.sh问题3闭源模块无法加载SP4 根本问题SP4 内核版本为6.6.0-159.oe2403sp4驱动包内预置二进制 .ko如ascend_dms_mng、ts_agent针对其他内核版本编译vermagic 不匹配导致npu-smi info报错dcmi module initialize failed. ret is -8005根本解决重装系统为 openEuler 24.03 LTS SP3。