昇腾 AI 部署 · 一页速查

18 节课压成两页 —— 五层关系图 + 8 步部署流程

全部命令、路径、版本号、报错原文出自昇腾官方文档,逐字保留未经改写

图一 · 五层关系(记住这张就够)

依赖方向:上层依赖下层。下层不对,上层全废——排查报错时先问「它在哪一层」。

昇腾 AI 部署 · 五层关系图 依赖方向:上层依赖下层 —— 下层不对,上层全废。排查报错时,先问「它在哪一层」 左边=部署第几步 中间=这层是什么/装什么软件 右边=怎么确认这层是好的 部署顺序 层 · 职责 · 软件 验证命令 L4 应用层 要算的东西——模型本身,不是程序 权重文件 · 量化后的模型 · 配置文件 装法:msModelSlim(量化) / 权重转换工具 ⑦ 怎么确认它是好的 模型能加载 · 输出正确 L3 服务层 接客的——开端口、收请求、组批、调度、返回 MindIE Motor · vLLM Ascend · SGLang 装法:Docker 镜像 / K8s / (多容器 PD 分离) ⑥ 怎么确认它是好的 端口监听 + curl 调通 上层调用下层 L2 框架层 翻译官——把算法翻译成芯片能懂的 PyTorch + TorchNPU · MindSpore · TensorFlow 装法:TorchNPU 三种装法 / Whl / 源码 / Pip ⑤ 怎么确认它是好的 torch.npu.is_available() → True 上层调用下层 L1 基础软件层 总调度——算子库、编译器、运行时、通信库 CANN = Toolkit + ops 包 + NNAL 包 装法:七种装法 / (run 包 / yum / apt / / conda / pip / 容器) ③④ 怎么确认它是好的 cat ascend_toolkit_install.info echo $ASCEND_HOME_PATH 上层调用下层 L0 硬件与驱动层 真正的计算;驱动让系统认得卡,固件跑在卡上 HDK = 驱动 + 固件(.run 包) 装法:首次:驱动 → 固件 / 升级:固件 → 驱动 ② 怎么确认它是好的 npu-smi info (能看到卡) 上层调用下层 三条最容易踩的坑 ① 驱动/固件顺序:首次 驱动→固件,升级 固件→驱动 ② 环境变量不写进 ~/.bashrc → 新终端就失效 ③ --install-for-all 中途丢掉 → NPU 设备权限变更 贯穿各层的通用件 npu-smi 查卡 / 查温度显存 set_env.sh 环境变量开关 日志:ascend_seclog / ascend/log

图二 · 软件配合(谁跟谁是一伙的)

同一个 CANN,上面能接四种用法。分清路线只需要问一句:装几个包?

昇腾 AI 部署 · 软件配合关系 同一个 CANN,上面可以接四种用法 —— 记住「装两个还是装一个」,就分清了所有路线 ① 上面能接四种用法 —— 区别只在「装几个包」 PyTorch 路线 装两个 PyTorch(官方 +cpu 版) + TorchNPU 插件 → 装两个包 MindSpore 路线 装一个 MindSpore (包名带 -ascend) → 装一个包 vLLM 路线 装两个 vLLM + vLLM Ascend (社区维护的硬件插件) → 装两个包 MindIE 路线 镜像全有 MindIE Motor 镜像里 CANN+PyTorch+vLLM 都打好了 → 一个都不用装 L1 · CANN = 异构计算架构 不是「一个库」,是下面这几个包的合称 —— 上面四种用法都站在它身上 Toolkit 包 开发套件·编译·运行时 ops 包 算子库 math/nn/cv transformer/ras ⚠️ 按产品型号分发 NNAL 包 含 ATB 加速库 set_env.sh 环境变量开关 不写进 ~/.bashrc 就失效 CANN 装在驱动之上 L0 · HDK = 驱动 + 固件(都是 .run 包) 驱动让系统认得卡;固件跑在卡上。⚠️ 首次装:驱动 → 固件;升级:固件 → 驱动(顺序反了会出问题) npu-smi 人敲的:查卡/温度/显存 DCMI 程序调的:管理接口 hccn_tool 集群网络配置 msnpureport Device 侧日志 NPU 芯片 —— 真正干活的地方 昇腾 910B / 950 · Atlas 300I / 800 等 ② 三个记忆锚点 —— 记住这三句,路线上报错就不会懵 锚点一 · 装几个? 插件路线 = 装两个 (PyTorch+TorchNPU · vLLM+vLLM Ascend) 原生路线 = 装一个(MindSpore 带 -ascend) 锚点二 · 谁在谁上面? 下面不对,上面全废。 「找不到设备」→ 往下查驱动/固件 「找不到算子」→ 查 ops 包装的型号 锚点三 · 报错去哪找? 跑的时候报 → 单算子 → 查算子库(B2) 建图的时候报 → 图模式 → 查版本配套(B3) 服务起不来 → 看 P/D 是否就绪(D5) ③ 一条贯穿全部的暗线:版本配套 —— 五样必须互相对得上 昇腾部署里绝大多数「明明装对了却跑不起来」,根子都在这:不是某一层坏了,是两层之间版本对不上。 PyTorch = TorchNPU = Python = CPU 架构 = CANN 查法:CANN ↔ 驱动的配套关系看官方《版本说明》;框架那一层看官方《PyTorch + TorchNPU 配套版本选择》页。五个维度里有一个对不上,就会在「跑起来的那一刻」报错。 提示:镜像路线(vLLM Ascend / MindIE)之所以省心,就是因为官方已经在镜像里把这五样配好了。

八步部署流程(从左到右照做)

每一步都给出「装什么 / 关键配置 / 怎么验 / 失败去哪查日志」。第 8 步是把前面所有验证命令再跑一遍。

步做什么软件 / 包关键配置(最容易出错的地方)验证日志
1确认硬件—卡装好、上电;确认机器架构(aarch64 / x86_64)uname -m—
2装驱动 + 固件HDK .run 包首次:驱动 → 固件;升级:固件 → 驱动(顺序不能反)
--check 先校验包完整性;--install-for-all 用就一路都用
npu-smi info
(能看到卡)
/var/log/ascend_seclog/ascend_install.log
3装 CANNToolkit → ops →(NNAL)七种装法选一;ops 包必须按产品型号选(选错=找不到算子)
root 装 /usr/local/Ascend,非 root 装 ${HOME}/Ascend
cat ascend_toolkit_install.info/var/log/ascend_seclog/
4配环境变量set_env.sh必须写进 ~/.bashrc,否则新终端就失效(报「找不到库」)echo $ASCEND_HOME_PATH
非空
—
5装框架TorchNPUPyTorch 用官方 +cpu 版 + TorchNPU whl(两个包)
五个维度版本要配套:PyTorch / TorchNPU / Python / 架构 / CANN
torch.npu.is_available()
→ True
~/ascend/log
6部署推理服务MindIE Motor / vLLM Ascend / SGLang起容器要挂设备节点 /dev/davinci*,权限用 rwm(写 rw 有任务占用时才报错)
A3 是双 DIE,要挂两个节点
端口监听 + curl 调通~/mindie/log
7准备模型msModelSlim / 权重转换权重转换、量化;确认模型格式与服务框架匹配模型能加载、结果正确—
8整体体检—把上面每一步的验证命令从头跑一遍5 条全过 = 部署成功—

每层速查卡(装什么 · 装在哪 · 怎么验 · 日志)

报错先定位到层,再照这张卡查。

L0硬件与驱动层
装什么HDK = 驱动 + 固件
装在哪.run 包
默认 /usr/local/Ascend
怎么验npu-smi info
日志/var/log/ascend_seclog/ascend_install.log
L1基础软件层
装什么CANN = Toolkit + ops + NNAL
装在哪七种装法
root /usr/local/Ascend/非 root ${HOME}/Ascend
怎么验cat ascend_toolkit_install.info
echo $ASCEND_HOME_PATH
日志${HOME}/ascend/log
L2框架层
装什么TorchNPU / MindSpore
装在哪whl 离线 / 源码 / Pip
装在 Python site-packages
怎么验torch.npu.is_available()
日志同上
L3服务层
装什么MindIE Motor / vLLM Ascend / SGLang
装在哪Docker 镜像 / K8s
配置:user_config.json+env.json
怎么验端口监听 + curl
日志~/mindie/log
L4应用层
装什么权重 / 量化模型 / 配置
装在哪msModelSlim(MindStudio 组件)
怎么验模型能加载、输出正确
日志—

五个最容易踩的坑

「明明按教程做了却跑不起来」,原因基本都在这五条里。

  • 驱动/固件顺序 —— 首次装 驱动 → 固件;覆盖安装/升级 固件 → 驱动。顺序反了会出问题。
  • 环境变量没落盘 —— source set_env.sh 只在当前终端有效。不写进 ~/.bashrc,一开新终端就失效——表现为「明明装好了却报找不到库」。
  • --install-for-all 中途丢掉 —— 首次用了这个参数,覆盖安装时必须保留,否则 NPU 设备权限会变更。
  • ops 包装错型号 —— 「找不到算子」的头号原因。ops 包按产品型号分发(950 / A3 / 910b 等),装错型号=没有对应算子。
  • 容器权限写 rw —— 不是立刻不可用,而是有任务占用时才报错。设备节点必须挂 rwm。

报错速查 —— 按「你看到的现象」定位到层

现场最常用的一张。先认层,再查那个层——不要从报错信息直接猜原因。

层你看到的现象先查什么(按这个顺序)
L0容器里 npu-smi 说 command not found没挂宿主机那份。npu-smi 是随驱动装在宿主机的 /usr/local/bin/、/usr/local/sbin/,要显式挂进容器。
L0容器里 npu-smi 能用,但一有任务就报错设备节点权限写成了 rw。官方明确要用 rwm——空跑看不出来,上生产才炸。同一根因的官方线索:torch.npu.set_device() 失败。
L0用 Conda 装完 CANN,npu-smi info 没输出官方原文:Conda 那条路不装驱动。驱动要另外装。
L1换个终端窗口,程序就跑不起来(报找不到命令/找不到库)环境变量只在当前 shell 有效。source set_env.sh 必须写进 ~/.bashrc。这是最高频的一条。
L1source .../set_env.sh 报「文件不存在」八成是非 root 装的,路径不一样:root 用 /usr/local/Ascend/…,非 root 用 ${HOME}/Ascend/…。
L1「找不到算子」/算子版本不对头号原因:ops 包装错产品型号(950 / A3 / 910b 各一套)。先 echo $ASCEND_OPP_PATH 看算子库根目录指得对不对。
L1「找不到动态库」/「找不到 Python 包」分别查 LD_LIBRARY_PATH / PYTHONPATH。
L1不知道 CANN 到底装在哪echo $ASCEND_HOME_PATH(与 ASCEND_TOOLKIT_HOME 是同一个意思,官方明说)。
L1装 CANN 报「配套关系不满足」驱动/固件/CANN 三者要配套,查官方《版本说明》。
L1想给 CANN 降级官方规定没有直接降级:先卸载高版本 → 再装低版本。(--upgrade 只能往上走)
L1--upgrade 报「没指定路径」/合一包报错升级必须指定 --install-path;「驱动&Toolkit 合一包」官方明确不支持 --upgrade。
L1安装/升级「检测不通过」--force 是跳过检查,不是修复问题——先看清检测报的是什么。
L2import torch 失败PyTorch 根本没装上(或装成了 CUDA 版,那是给 NVIDIA 卡的)。
L2import torch_npu 失败TorchNPU 插件没装上,或与 PyTorch/Python 版本不配套。
L2a = torch.randn(3,4).npu() 报错设备层问题 → 往上查容器有没有挂卡(B5)、驱动固件(L0)。
L2print(a + a) 报算子相关错算子层问题 → 查算子库(B2)或版本配套(B3)。
L2MindSpore 装上了、run_check() 也过,但平台标识不是 Ascendmindspore 与 mindspore-ascend 是两个不同的包。昇腾场景要装后者。
L3curl 端口不通直接嫌疑对象是 EngineServer(它才是提供端口和 OpenAI 接口的那个);Coordinator 管的是请求怎么过来。
L3接口返回 {"detail":"Service is not available"}官方原文:多为 P/D 或 Coordinator 尚未完全就绪 → 等待后重试,同时看各 Pod 日志。
L3请求进不来/被限流看 Coordinator(限流配置在它这:rate_limit_config)。
L3进程反复重启看 NodeManager;「偶尔卡一下又好了」可能是异常实例重启在起作用(默认开启,无需配置)。
L3主备发生切换看 Controller(+ etcd)。注意主备不能同节点、依赖 etcd 3 副本。
L3推理结果异常(但服务是通的)看 EngineServer/引擎侧日志。
L3想开虚推健康检查却报 warning虚推仅在 ERROR 日志级别下允许(ASCEND_GLOBAL_LOG_LEVEL=3,未配置时默认就是 ERROR)。
L3停服务时同名的进程被误杀pgrep -f "vllm serve" 可能匹配到别的 vLLM 进程——kill 前先确认 VLLM_PID;优雅停止用 kill -2(SIGINT),不是 kill -9。
L4模型加载不了/输出结果不对权重格式与量化版本是不是和服务框架匹配(msModelSlim / 权重转换环节)。

一条命令拆出四层问题(最好用的诊断工具)

这一行官方验收命令,一次性验四件事。哪一步失败,就是哪一层的问题——照着下面这张图走。

python3 -c "import torch; import torch_npu; a = torch.randn(3,4).npu(); print(a + a)"

①
import torch 失败
说明PyTorch 没装上
②
import torch_npu 失败
说明插件没装/版本不配
③
.npu() 报错
说明设备层 → 容器挂卡 / 驱动
④
a + a 报算子错
说明算子层 → 算子库 / 版本配套

四句口诀(背下来)

一句话记住五层

自下往上:卡 → CANN → 框架 → 服务 → 模型。
下面不对,上面全废。

一句话分清所有路线

看装几个包:插件路线(PyTorch+TorchNPU、vLLM+vLLM Ascend)装两个;原生路线(MindSpore 带 -ascend)装一个;镜像路线一个都不用装。

一句话定位报错

跑的时候报 → 单算子 → 查算子库;建图的时候报 → 图模式 → 查版本配套;服务起不来 → 查 P/D 是否就绪。

一句话防版本坑

PyTorch = TorchNPU = Python = 架构 = CANN,五样必须互相对得上。

与昇腾 AI 部署课件体系(18 节编号课)配套使用

选修 · 昇腾 AI 部署实操 本机读完 0/51
选修 C · 昇腾 AI 部署实操
从零把昇腾 AI 部署学一遍:先看懂分几层,再逐层装起来,最后出问题能自己定位到哪一层。不需要先有卡就能开始。
看完整学习路径(6 站 + 3 门选修) · 进度只存在你这台设备的浏览器里,不用登录
辽ICP备2026019944号-1