东方智慧AI 算力
AI算力 · 昇腾部署课件 A1

昇腾部署第 A1 课:驱动与固件——卡是怎么被系统认出来的

2026年10月04日

课件编号:A1(L0 硬件与驱动层 第 1 课)  编制:观澜|日期:2026-10-04 难度:入门 时长:约 45 分钟 是否需要硬件:❌ 不需要(本课讲原理和命令,不依赖真卡) 前置:第 0 课(A0 一张地图) 本课目标:说清驱动和固件各自是什么、各自在哪、各自怎么查,并会用 npu-smi 命令族做一次设备体检


第一段 · 章前定位

A0 给了你地图,第一层(L0)写的是:卡 / 服务器 + 驱动 + 固件。

但这里藏着三个几乎每个新手都会卡住的问题:

  1. 驱动和固件有什么区别? 它们是不是一回事?为什么官方要分成两个包装?
  2. 为什么装了驱动,才有 npu-smi 这个命令?
  3. 为什么官方反复强调"装的时候顺序不能反"?

这三个问题的答案,这一课全给你。

本课的一句话:驱动是"系统认识卡"的桥,固件是"卡自己会干活"的底子。两个都要,缺一不可。


第二段 · 学习目标

学完这一课,你应该能:

  1. ✅ 说清驱动和固件各自装在哪、各自干什么
  2. ✅ 看懂驱动包和固件包的文件名,说出里面每一段是什么意思
  3. ✅ 知道首次安装和升级的顺序为什么不一样
  4. ✅ 用 npu-smi 命令族完成一次设备体检(列出设备 → 看型号 → 看驱动/固件版本 → 看温度)
  5. ✅ 看懂一条 npu-smi 输出里的每个字段

第三段 · 先说清一件事:卡不止一种形态

昇腾的硬件不是只有"插在服务器里的卡"一种。官方产品线里,形态差得很远:

形态 代表型号 大致定位
开发者套件 Atlas 200I DK A2 开发者套件 入门动手用,门槛最低
加速模块 Atlas 200I A2 加速模块 给设备厂商集成的模组
推理卡 Atlas 300I Pro / 300I Duo 推理卡、A300I A2 推理卡 插在服务器里做推理
视频解析卡 Atlas 300V / 300V Pro 视频解析卡 偏视频分析场景
智能小站 / 边缘 Atlas 500 A2 智能小站、Atlas 500 Pro 智能边缘服务器 边缘部署
训练服务器 Atlas 800 训练服务器、Atlas 800T A2 训练服务器 训练
推理服务器 Atlas 800 推理服务器、Atlas 800I A2 推理服务器 推理
超节点 / PoD Atlas 800T A3 / 800I A3 超节点、Atlas 900 A3 SuperPoD、Atlas 900 A2 PoD 大规模集群

⭐ 这一块对你有用的地方:

后面所有课讲的"装驱动""查设备"的操作,各种形态基本一致 —— 所以你学的时候不需要手上有哪一款。命令是一样的,差别只在参数和规模。

唯一要注意的是:有些型号分 RC 场景 和 EP 场景(两种工作模式,支持的场景和命令能力不同)。 到具体型号的课时我们再展开。


第四段 · 核心:驱动和固件,各是什么、各在哪

用一句话分清

驱动(Driver) 固件(Firmware)
住在哪 Host 服务器的操作系统里 卡自己里面
干什么 让操作系统和程序认得并使用这张卡 卡自己内部的运行程序,管卡的基础功能
谁在用它 你的程序、CANN、框架都通过它访问卡 卡自己启动和运行时用
版本怎么查 npu-smi info -t board -i <设备ID> 的 Software Version 字段 同一条命令的 Firmware Version 字段
没装会怎样 系统根本看不到这张卡 卡能认到,但可能行为异常

⭐ 一个能解开常见困惑的官方事实

驱动包的官方全名是:「驱动 & npu-smi 工具包」。

包名:

Ascend-hdk-310b-npu-driver_x.x.x_linux-{arch}.run

注意看这个名字——它不只是驱动,它还包含了 npu-smi 这个工具。

所以"为什么装了驱动才有 npu-smi 命令"这个问题,答案很简单: 因为 npu-smi 就在这个包里。没装驱动 = 没装 npu-smi。

这是一个很小的事实,但它能省掉很多"为什么我的机器上没有这个命令"的困惑。

看懂包名(官方说明)

Ascend-hdk-310b-npu-driver_x.x.x_linux-{arch}.run
└──┬──┘ └┬┘ └─┬─┘ └──┬──┘ └─┬─┘  └──┬──┘ └─┬─┘
   │     │    │      │      │       │      └─ arch:系统架构(aarch64 / x86_64)
   │     │    │      │      │       └─ linux:操作系统
   │     │    │      │      └─ x.x.x:驱动包版本号
   │     │    │      └─ npu-driver:这是驱动包
   │     │    └─ 310b:芯片型号标识
   │     └─ hdk:Hardware Development Kit
   └─ Ascend:昇腾

固件包长得很像,只是那段变了:

Ascend-hdk-310b-npu-firmware_x.x.x.x.X.run
                            └────┬────┘
                       固件包版本号(比驱动多几段)

官方说明:x.x.x 表示 NPU 驱动包版本号;x.x.x.x.X 表示 NPU 固件包版本号。 两者版本号格式不同,别把它们当成同一个东西的两种写法。


第五段 · 怎么装:顺序不能反

⭐ 装配顺序(官方原文,最重要的一条)

场景 顺序
首次安装 先装驱动,再装固件
覆盖安装 / 升级 先装固件,再装驱动

一句话记法:

第一次:驱动在前。之后每次:固件在前。

为什么要反着来? 可以这样理解:首次安装时,是"从无到有"——系统得先认识卡,卡才有机会被更新固件。 而升级时,是"从有到新"——先让卡自己的底子(固件)升上去,再让系统侧的桥(驱动)跟着升级,两者才能对上。

⚠️ 这一条务必记牢。顺序反了是新手最常踩的坑之一,而且症状往往不是"装失败",而是各种奇怪的行为异常——最难查。

三种部署场景,装的位置不一样

官方说明的场景表:

你的服务部署在 要装什么
物理机 在物理机装驱动和固件即可
虚拟机 先在物理机装驱动和固件,再在虚拟机内装驱动(多一层)
容器 先在物理机装驱动和固件,再在容器内装驱动(多一层)

⭐ 这张表解释了一个高频现象:

"我在容器里跑不起来,报找不到设备" —— 十有八九是只装了物理机的,没在容器里再装一层驱动。

安装命令(官方原文)

# 1. 加可执行权限
chmod +x Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run

# 2. 校验安装包的一致性和完整性(SHA256 校验)
./Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run --check

# 3. 安装
./Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run --full

# 3b. 需要指定安装路径时
./Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run --full --install-path=/test/HiAI/
  • 默认安装路径:/usr/local/Ascend
  • 安装日志:/var/log/ascend_seclog/ascend_install.log

⚠️ --install-for-all 参数:用了就一直用

官方原文:首次安装过程中如果使用了 --install-for-all 参数,建议覆盖安装中也保留, 否则会导致 NPU 设备权限变更。

用大白话讲:这个参数决定"这张卡是只有 root 能用,还是所有人都能用"。 - 首次装的时候你让所有人都能用 - 后来升级时忘了加,卡就变回"只有 root 能用"了 - 结果:普通用户突然跑不动了 —— 而你会以为是别的问题

所以:这个参数要么一直用,要么一直不用,别中途变。


第六段 · 怎么验证:npu-smi 命令族

这是本课要你动手的部分。

先看懂命令的结构

npu-smi 的命令基本都是这个骨架:

npu-smi  info  -t <查什么>  -i <查哪台>
└──┬──┘ └─┬─┘  └────┬────┘  └───┬───┘
   │      │         │           └─ id:设备编号
   │      │         └─ type:查询类型(product / board / temp / power ...)
   │      └─ 大类:信息查询(info)
   └─ 工具名

关键点:-i 后面跟的"设备编号"从哪来?答案是用 npu-smi info -l 查出来的。

体检三步(官方命令)

第 1 步:列出所有设备,拿到设备编号

npu-smi info -l

官方说明:npu-smi info -l 用于查询所有 NPU 设备,查出的 NPU ID 即为设备 ID。

  • 期望:列出设备列表和各设备的 NPU ID
  • 不过会怎样:命令不存在 → 驱动没装(回到第五段)

第 2 步:看这是什么产品

npu-smi info -t product -i 0
  • -t product = type 是 product,查产品类型
  • -i 0 = 查设备 0

官方给的真实输出示例:

NPU ID                         : 0
Chip Count                     : 1

Chip ID                        : 0
Product Type                   : Atlas 500 A2

输出字段官方说明:

字段 官方解释
NPU ID 设备 ID
Chip Count 芯片个数
Chip ID 芯片 ID
Product Type 产品类型

⭐ 注意 Chip Count 这一行:一台"设备"里可能有多颗芯片。 所以"设备编号"和"芯片编号"是两个概念,别混。

第 3 步:看驱动版本和固件版本

npu-smi info -t board -i 0

官方说明:这个命令可查 NPU 驱动和固件版本 —— - Software Version 字段 → NPU 驱动版本 - Firmware Version 字段 → NPU 固件版本

  • 期望:两个字段都有值,且和你装的版本对得上
  • 不过会怎样:字段为空或版本不对 → 装的时候顺序可能反了,或者只装了一个

还有哪些能查(官方目录里的完整清单)

npu-smi 的 info 大类能查的东西很多,常用的几个:

想查什么 命令
所有设备 npu-smi info -l
产品类型 npu-smi info -t product -i <ID>
主板信息(含驱动/固件版本) npu-smi info -t board -i <ID>
温度 npu-smi info -t temp -i <ID>
功率 npu-smi info -t power -i <ID>
内存信息 对应 info 子命令(按官方文档)
闪存信息 同上
工具自身版本 npu-smi -v

⚠️ 官方提示:npu-smi 不支持多线程并发使用 —— 别在脚本里并发调它。

一分钟体检脚本(把上面串起来)

npu-smi info -l                    # 1. 有哪些设备
npu-smi info -t product -i 0       # 2. 是什么型号
npu-smi info -t board -i 0         # 3. 驱动版本 + 固件版本
npu-smi info -t temp -i 0          # 4. 温度

四条都有正常输出 = L0 这一层没问题。


第七段 · 出问题了怎么查

按现象定位

你看到的现象 大概率问题 第一步做什么
npu-smi: command not found 驱动没装(npu-smi 在驱动包里) ls /usr/local/Ascend 看有没有装过
命令能跑,但列不出任何设备 卡没被识别 / 权限不足 看是不是非 root 装的、--install-for-all 有没有用
装驱动时报 权限类错误 用户或安装信息文件的问题 对照官方案例 case_92819(username not permission for root)
装 CANN 时提示驱动不兼容 驱动与 CANN 版本配套关系 对照官方案例 canncase_0022
容器里找不到设备 只装了物理机,没在容器里再装一层 回看第五段的场景表
升级后普通用户突然不能用 --install-for-all 中途丢了 重新装时把这个参数加上
昨天好、今天新开终端不对 环境变量(那是 L1 的事,不是 L0) 见 A0 课第五段

一个判断技巧

报错里出现 device、device 0、Permission、driver、HDK → 先查 L0。


第八段 · 常见报错清单(真实案例,官方可查)

报错原文(片段) 说明 官方案例编号
[ERROR]ERR_NO:0x0091;ERR_DES:username not permission for root, check /etc/ascend_install.info 装驱动时的权限/安装信息问题 case_92819
msdebug failed to initialize. please install HDK with --debug before debugging. 缺调试版驱动包(HDK 有 --debug 变体) atlasopdev_0006
新容器里执行 npu-smi / hccn_tool 提示设备被占用 容器与设备映射的问题 topic_0000002238354198
check driver compatibility failed(装 CANN 时) 驱动版本与 CANN 不配套 canncase_0022

查案例的链接格式:

https://www.hiascend.com/document/caselibrary/detail/<案例编号>

搜案例的技巧:把你的报错去掉路径、设备号、时间戳,只留稳定特征词(如 username not permission for root)再去搜。


第九段 · 小结与下一课

三句话带走

  1. 驱动装在 Host,固件跑在卡里;驱动让系统认识卡,固件管卡自己的底子。查版本都用 npu-smi info -t board -i <ID>。
  2. 首次装:驱动在前;升级:固件在前。 --install-for-all 用了就别中途丢。
  3. npu-smi 就在驱动包里 —— 所以"没这个命令"= "驱动没装"。

钩子(后续课)

课 要回答的问题
A2 HDK 是什么? 它和驱动包、固件包是什么关系?--debug 变体是干什么的?
A3 卡有哪几种工作模式(RC / EP)?分别影响什么?
A4 硬件健康检查怎么做?ascend-dmi 能查出什么?

课后自测(3 题)

  1. 同事说他机器上"没有 npu-smi 这个命令"。你能立刻判断出什么?
  2. 你要把驱动从 A 版本升到 B 版本。先装驱动还是先装固件?为什么和首次安装不一样?
  3. npu-smi info -t product -i 0 的输出里有 Chip Count : 1 和 Chip ID : 0。这说明什么?

附录 A · 本课引用的官方出处

内容 官方来源
驱动/固件包名与版本号格式、Software Version / Firmware Version 字段、npu-smi info -l 查 NPU ID 《NPU 驱动和固件安装指南 · 用户必读》(驱动与固件 EP 场景)
三种部署场景(物理机/虚拟机/容器) 同上(安装场景说明表)
驱动/固件安装顺序、--install-for-all 注意事项、安装命令、安装日志路径 《NPU 驱动和固件安装指南 · 物理机安装与卸载》
npu-smi info -t product -i <ID> 命令格式与输出字段说明 Atlas 200I A2《查询产品类型》(npu-smi 命令参考)
npu-smi info 大类可查项(设备/芯片/温度/功率/内存/闪存等) HDK 26.1.x 目录树 · 信息查询(info)
硬件产品形态清单 昇腾官方产品全景(list_products)
4 条故障案例 昇腾官方故障案例库

⚠️ 数据说明: - 本课所有命令、字段名、注意事项均来自官方文档原文,未做推测性补充。 - 包名中的 310b、x.x.x、{arch} 是官方示例中的占位,实际以你的产品型号和版本为准。 - 「驱动为什么装在 Host、固件为什么在卡里」的补充解释(如本课的"桥"和"底子"比喻)是我为教学加的,官方文档只给了事实陈述,未使用这些比喻 —— 引用时请注意区分。


附录 B · 本课出现的命令详解

按你要求:每条命令都拆开讲清楚含义、怎么拆、怎么用、期望、不过会怎样。

chmod +x 文件

  • 含义:给文件加上"可执行"权限。chmod = change mode(改权限),+x = 加上 execute(执行)权限。
  • 拆解:chmod(命令)+ +x(加执行权限)+ 文件名
  • 用法:
chmod +x Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run
  • 期望:没有任何输出(Linux 命令无输出通常就等于成功,这个习惯要养)
  • 不过会怎样:跳过这步直接运行,会报 Permission denied(权限不够)

./文件 --check

  • 含义:运行当前目录下的文件,带上 --check 参数,用来校验安装包的一致性和完整性(官方说明使用 SHA256 校验)。
  • 拆解:./ + 文件名 + --check

    ⭐ ./ 是什么:它表示"当前目录下的这个文件"。不加 ./ 时,系统会去 PATH 环境变量列的那些目录里找这个命令——而你下载的包不在那些目录,所以会报 command not found。加了 ./,才是明确告诉系统"就在当前目录找"。

  • 用法:
./Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run --check
  • 期望:提示校验通过
  • 不过会怎样:出现 MD5/SHA256 相关警告 → 包可能下载不完整,重新下载

./文件 --full

  • 含义:完整安装。
  • 拆解:--full 是安装参数(完整安装模式),不是文件名的一部分
  • 用法:
./Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run --full
./Ascend-hdk-310b-npu-driver_x.x.x_linux-aarch64.run --full --install-path=/test/HiAI/
  • 期望:有安装过程输出,最后提示成功
  • 不过会怎样:对照第八段的报错清单去查
  • 日志在哪:/var/log/ascend_seclog/ascend_install.log

npu-smi info -l

  • 含义:npu-smi 是昇腾的设备管理工具;info 是它的一个大类(信息查询);-l 表示列出所有 NPU 设备。
  • 拆解:npu-smi(工具名)+ info(大类)+ -l(list,列出)
  • 用法:
npu-smi info -l
  • 期望:列出设备列表,给出每个设备的 NPU ID(这个 ID 就是后面 -i 要填的值)
  • 不过会怎样:命令不存在 → 驱动没装(npu-smi 在驱动包里);能跑但空 → 卡没被识别或权限不足

npu-smi info -t <类型> -i <设备ID>

  • 含义:查某个设备的某一类信息。
  • 拆解:
  • -t = type,指定查什么(product 产品类型 / board 主板信息 / temp 温度 / power 功率 ……)
  • -i = id,指定查哪一台(填 npu-smi info -l 查出来的 NPU ID)
  • 用法:
npu-smi info -t product -i 0     # 查设备 0 的产品类型
npu-smi info -t board   -i 0     # 查设备 0 的主板信息(含驱动/固件版本)
npu-smi info -t temp    -i 0     # 查设备 0 的温度
npu-smi info -t power   -i 0     # 查设备 0 的功率
  • 期望:打印出对应的字段表
  • 不过会怎样:报"参数错误" → 检查 -t 后面跟的类型名拼写;报"设备不存在" → 先用 -l 确认设备 ID

⚠️ 官方提示:npu-smi 不支持多线程并发使用。

npu-smi -v

  • 含义:查 npu-smi 这个工具自己的版本。
  • 拆解:-v = version,版本
  • ⚠️ 注意区分:查的是工具的版本,不是驱动版本,也不是固件版本。三个概念别混。
  • 用法:
npu-smi -v
  • 期望:打印工具版本号
  • 不过会怎样:命令不存在 → 驱动没装

输出字段速查(npu-smi info -t product)

字段 官方解释 通俗理解
NPU ID 设备 ID "这是第几台设备"
Chip Count 芯片个数 "这台设备里有几颗芯片"
Chip ID 芯片 ID "这是第几颗芯片"
Product Type 产品类型 "具体是什么型号"

参数速查表

参数 含义
chmod +x 加可执行权限
--check 只校验,不安装
--full 完整安装
--install-path=路径 指定安装到哪个目录
--install-for-all 让所有用户都能用;⚠️ 首次用了,覆盖安装也要保留
-l list,列出
-t 类型 type,指定查询类型
-i 编号 id,指定设备编号
-v version,查版本
选修 · 昇腾 AI 部署实操 本机读完 0/51
选修 C · 昇腾 AI 部署实操
从零把昇腾 AI 部署学一遍:先看懂分几层,再逐层装起来,最后出问题能自己定位到哪一层。不需要先有卡就能开始。
看完整学习路径(6 站 + 3 门选修) · 进度只存在你这台设备的浏览器里,不用登录
辽ICP备2026019944号-1