A 层部署指南 · L0 硬件与环境
一页读懂这一层:让系统认得那张卡。 这一层只有两样东西要装:驱动和固件。装完的标准就一条:
npu-smi能打出表。本指南是 A 层 4 课的浓缩版(A0 地图 / A1 驱动固件 / A2 产品线 / A3 HDK), 只保留"装什么、干什么用、怎么装、怎么验"。要看原理和排障细节,回原课件。
一、这一层的职能
| 项 | 内容 |
|---|---|
| 层号 | L0(最底层) |
| 一句话职责 | 真正的计算在这里发生。这一层的任务是"让系统认得这张卡"。 |
| 典型角色 | 系统管理员 / 交付工程师,上电后第一个要动的地方 |
| 上电后的第一件事 | npu-smi info —— 有表 = 这一层通了 |
| 拿掉它会怎样 | 系统里根本看不到这张卡;npu-smi 命令可能直接不存在 |
| 它上面是谁 | L1 基础软件(CANN)—— L0 不对,L1 全废 |
二、这一层装什么(软件清单)
就两样东西:
| 装什么 | 官方包名 | 装在哪 |
|---|---|---|
| 驱动(HDK 驱动包) | Ascend-hdk-<型号>-npu-driver_<版本>_linux-<架构>.run |
默认 /usr/local/Ascend |
| 固件(firmware) | Ascend-hdk-<型号>-npu-firmware_<版本>_linux-<架构>.run |
同上 |
⭐ 装一个驱动包,你会额外得到四个工具(这是"HDK"这个词的来历):
| 工具 | 一句话职责 | 怎么用 | 谁最需要 |
|---|---|---|---|
npu-smi |
设备管理 | 命令行 | 所有人(日常就靠它) |
| DCMI | 设备管理 | API 调用 | 做管理平台的开发者 |
hccn_tool |
集群网络管理 | 命令行 | 多卡 / 超节点运维 |
msnpureport |
Device 侧日志导出 | 命令行 | 排障 |
四个都是"装驱动时默认装上的" —— 这就是它们被统称 HDK 的原因。
三、每个东西干什么用(一句话)
| 东西 | 一句话功能 | 记住它的方式 |
|---|---|---|
| 驱动 | 让操作系统认得这张卡(提供设备节点、管理接口) | 好比"系统侧的桥" |
| 固件 | 卡自己运行的底层程序 | 好比"卡自己的底子" |
npu-smi |
查卡、查版本、查进程、查温度功耗 | 上电后第一条命令 |
| DCMI | 把 npu-smi 的能力做成 API |
给程序调用,不是给手敲 |
hccn_tool |
管集群网络(多卡互联) | 单卡用不上 |
msnpureport |
把卡侧的日志导到主机上 | 出问题时要它 |
⭐ 一句话分清驱动与固件:
驱动是"系统侧"的,固件是"卡侧"的。两个都要装,缺一个都不完整。
四、怎么装(安装方法)
⭐⭐ 第一条铁律:顺序不能反
| 场景 | 顺序 |
|---|---|
| 首次安装 | 先驱动 → 后固件 |
| 覆盖安装 / 升级 | 先固件 → 后驱动 |
一句话记法:
第一次:驱动在前。之后每次:固件在前。
⚠️ 顺序反了的症状往往不是"装失败",而是各种奇怪的行为异常 —— 最难查。
三条命令装完(驱动与固件都一样)
命令 chmod +x <安装包>
含义:给安装包加"可执行"权限 拆解:
chmod(改权限)++x(加执行位) 用法:chmod +x Ascend-hdk-<型号>-npu-driver_<版本>_linux-aarch64.run期望:无输出(成功即沉默) 不过会怎样:不加就报Permission denied
命令 ./<安装包>.run --check
含义:只校验不安装 —— 查安装包完整性与一致性(SHA256) 拆解:
--check(校验模式) 用法:./Ascend-hdk-<型号>-npu-driver_<版本>_linux-aarch64.run --check期望:Verifying archive integrity... 100% SHA256 checksums are OK. All good.不过会怎样:校验不过 → 重新获取安装包,不要硬装
命令 ./<安装包>.run --full
含义:完整安装 拆解:
--full(完整安装模式) 用法:./<安装包>.run --full期望:安装成功回显 不过会怎样: - 需要指定路径 → 加--install-path=/your/path/- 非 root 用户也要用 → 加--install-for-all- 安装日志在/var/log/ascend_seclog/ascend_install.log
⚠️ --install-for-all:用了就一直用
官方原文:首次安装过程中如果使用了
--install-for-all参数,建议覆盖安装中也保留, 否则会导致 NPU 设备权限变更。
它决定的是:这张卡是只有 root 能用,还是所有人都能用。 中途变了的后果:普通用户突然跑不动了 —— 而你会以为是别的问题。
⚠️ 三种部署场景,装的位置不一样(高频踩坑点)
| 你的服务部署在 | 要装什么 |
|---|---|
| 物理机 | 在物理机装驱动 + 固件即可 |
| 虚拟机 | 先在物理机装驱动和固件,再在虚拟机内装驱动(多一层) |
| 容器 | 先在物理机装驱动和固件,再在容器内装驱动(多一层) |
⭐ 这一条解释了高频现象: "我在容器里跑不起来,报找不到设备" —— 十有八九是只装了物理机的,没在容器里再装一层。
五、怎么验证装对了(验证方法)
三步确认(全用官方命令)
命令 npu-smi info
含义:总览所有卡 —— 这一层通了的最直接证据 期望:一张表,每张卡
Health为OK,有型号、温度、功耗、显存、进程 不过会怎样:command not found→ 驱动没装(驱动包 = 驱动 & npu-smi 工具包)
命令 npu-smi info -l
含义:列出所有设备,拿到设备编号(NPU ID) 期望:列出设备列表及各自的
NPU ID不过会怎样:列表为空 → 驱动没挂载好 ⭐ 记法:这里查出的 NPU ID,就是后面-i要填的值
命令 npu-smi info -t product -i <NPU ID>
含义:看这是什么产品 拆解:
-t product(查什么:产品类型)+-i <NPU ID>(查哪台) 期望:输出含Product Type(如Atlas 500 A2) 不过会怎样:报设备不存在 → 回上一条重查 ID
命令 npu-smi info -t board -i <NPU ID>
含义:看驱动版本与固件版本 —— 验证的核心 期望:
Software Version(驱动版本)与Firmware Version(固件版本)都有值,且与你装的对得上 不过会怎样:字段为空或版本不对 → 装的时候顺序可能反了,或者只装了一个
⭐ 验收清单(四条全过 = 这一层完工)
| # | 判据 | 命令 | 通过标准 |
|---|---|---|---|
| ① | 系统认得卡 | npu-smi info |
有表,Health = OK |
| ② | 设备编号明确 | npu-smi info -l |
拿到 NPU ID |
| ③ | 型号确认 | npu-smi info -t product -i <ID> |
Product Type 是预期型号 |
| ④ | 版本对上 | npu-smi info -t board -i <ID> |
驱动/固件版本都有值且装的是这个版本 |
⚠️ 容器/虚拟化环境注意:设备编号可能不是 0(只透传了部分卡)。 一律先跑
npu-smi info -l拿到真实编号,不要硬写-i 0。
六、三个最容易踩的坑
| # | 坑 | 症状 | 怎么办 |
|---|---|---|---|
| 1 | 驱动/固件顺序反了 | 不是"装失败",而是各种奇怪的行为异常 | 记牢:首次驱动在前,之后固件在前 |
| 2 | 容器里没装那一层驱动 | 报找不到设备 | 物理机装完,容器/虚拟机里再装一次驱动 |
| 3 | --install-for-all 中途变了 |
普通用户突然跑不动了 | 要么一直用,要么一直不用 |
⚠️ 还有一个"看起来像故障但不是"的:
容器里 /etc/ascend_install.info 看不到 —— 不代表驱动没装。
判据要用"命令能不能跑"(npu-smi info 有输出=驱动在),不用文件存在性判。
七、这一层和其他层的关系
↑ L1 基础软件(CANN) ← 依赖 L0;L0 不对,L1 装了也用不了
│
│ ★ 你在这一层 装:驱动 + 固件(+ 四个工具)
│ 验:npu-smi info 有表
│
↓ 硬件(昇腾卡) ← 这一层管的就是它
| 关系 | 说明 |
|---|---|
| 它依赖谁 | 无(最底层,直接对着硬件) |
| 谁依赖它 | L1 / L2 / L3 全部 —— 它的判据不通,上面一律免谈 |
| 上一层怎么验 | echo $ASCEND_HOME_PATH 有值(CANN 生效) |
附 · 命令速查(复制即用)
# 装
chmod +x <安装包>.run
./<安装包>.run --check # 校验
./<安装包>.run --full # 安装(非 root 也要用:加 --install-for-all)
./<安装包>.run --full --install-path=/your/path/
# 验
npu-smi info # 总览(Health 应为 OK)
npu-smi info -l # 设备列表 → 拿 NPU ID
npu-smi info -t product -i <NPU ID> # 产品型号
npu-smi info -t board -i <NPU ID> # 驱动/固件版本
npu-smi -v # npu-smi 工具自身版本(不是卡的版本)
# 四个工具都在不在
which npu-smi hccn_tool msnpureport
日志位置:安装日志 /var/log/ascend_seclog/ascend_install.log
附 · 本层的"包从哪下"
| 要下什么 | 地址 |
|---|---|
| 驱动 / 固件 | https://www.hiascend.com/hardware/firmware-drivers |
| 包名规律 | 驱动 Ascend-hdk-{型号}-npu-driver_{版本}_linux-{架构}.run固件 Ascend-hdk-{型号}-npu-firmware_{版本}_linux-{架构}.run |
⚠️ 下之前先确认三件事:
1. 架构(uname -m:aarch64 还是 x86_64)—— 下错装不上
2. 操作系统 + 内核版本(cat /etc/os-release / uname -r)—— 驱动包把内核版本编进去了
→ 对不上要先装编译依赖,或换版本
3. 型号(npu-smi info -t product -i <ID>,或按整机型号对官方产品表)
本层浓缩自:
昇腾部署课件_A0_一张地图/_A1_驱动与固件/_A2_产品线与形态/_A3_HDK是什么下一层:B 层 · L1 基础软件(CANN)