驱动装不上、透传总报错?三类芯片裸金属适配经验全收进这个 AI Skill | 龙蜥 SkillHub 精选

专注于 Infra 层的 AI Agent 技能平台——龙蜥社区 SkillHub 已收到数百个技能,当前陆续上线中。我们每周也会收到一些技能的最佳实践分享,本期给大家推荐的是李海仑贡献的 芯片适配专家(GPU/NPU/DCU) Skill 实践文章,他是集技术研发与市场运营于一体的复合型技术从业者,现在是靓推云负责人、FDE 专家讲师、资深 OPC,大模型及 AI 应用落地布道师。这次提交的开源芯片适配 Skill,把项目中积累的芯片兼容适配实战经验封装为可被 AI Agent 直接调用的能力,助力开发者高效完成芯片适配工作。以下是他的实战经验分享:
如果你做过算力集群的底层适配,大概经历过这样的场景:
凌晨两点,机房里一台新到的昇腾 910B 服务器死活装不上驱动。你翻遍了官方文档,发现 x86_64 的包名里居然用的是连字符 x86-64,而 CANN Toolkit 的包名却用的是下划线 x86_64。
等你搞完驱动,又发现 Docker 透传 NPU 还得装一个叫 Ascend Docker Runtime 的东西——跟 NVIDIA 的 Container Toolkit 完全不是一回事。
再换个场景:海光 DCU K100 到货了。你按经验直接套 AMD ROCm 的安装流程,结果 rocminfo 报了个 HSA initialization failed,折腾一晚上才发现海光 DCU 根本不能用 ROCm 公版驱动,得从光合社区下 rock-*.run 包,还得设 HSA_OVERRIDE_GFX_VERSION。
这些问题不是多高深的技术难题,但坑多、分散且每家厂商文档风格各异。我们做了一个 Skill,把这类适配工作固化成了一套可复用的标准流程。
这个 Skill 是什么?
芯片适配专家(GPU/NPU/DCU)Skill,一个聚焦 GPU(NVIDIA)、NPU(昇腾)、DCU(海光)三类算力芯片裸金属适配的智能体 Skill。它的定位就一句话:你告诉它系统版本和芯片型号,它给你一套能直接复制粘贴跑的命令序列。
覆盖范围:
-
驱动全生命周期:选型、安装、调优、卸载、回滚
-
硬件兼容矩阵:十维对照表(CPU 架构到框架版本全覆盖)
-
异构混用风险预判:哪些卡能同机、哪些不能
-
Docker/K8s 透传:NVIDIA Container Toolkit + Ascend Docker Runtime 双路支持
-
排障日志一键采集:一条命令打包所有诊断信息
这个 Skill 解决什么问题?
问题一:三家厂商的驱动安装方式各不相同
NVIDIA 的 runfile 用 --silent --dkms,昇腾用 --full --install-for-all,海光 DCU 用 -A 全自动安装。
参数体系完全不互通,照搬一个厂商的经验去装另一个,必然踩坑。
比如海光 DCU,最常见的错误就是习惯性加 --install 参数——这个参数对 rock-*.run 包根本不存在。
问题二:包名命名规则不统一
昇腾的包名都不统一:
NPU 驱动包:Ascend-hdk-910b-npu-driver_23.0.3_linux-x86-64.run ← 连字符
CANN Toolkit:Ascend-cann-toolkit_7.1.RC1_linux-x86_64.run ← 下划线
复制
下载时少注意一个字符就 404。
问题三:DCU 不能用 ROCm 公版
海光 DCU 基于 ROCm 编程模型(HIP),但软件栈是自研的 DTK,路径在 /opt/hygon/dcu/ 而非 /opt/rocm/。
直接装 AMD ROCm 公版驱动,轻则 HSA 初始化失败,重则 invalid device function (98),连最简单的 kernel 都跑不起来。
而且不同型号的 DCU GFX Version 不同,HSA_OVERRIDE_GFX_VERSION 取值也不一样:
| 型号 | GFX Version | HSA_OVERRIDE |
| Z100/Z100L | gfx906 | 9.0.6 |
| K100 | gfx926 | 9.2.6 |
| K100-AI | gfx928 | 9.2.8 |
| BW1000 | gfx936 | 无需设置 |
问题四:容器透传各家方案独立
NVIDIA 用 Container Toolkit,NPU 用 Ascend Docker Runtime,两者配置完全不同,daemon.json 的 runtime 注册也各写各的。
而且 NVIDIA 在 2023 年底把仓库从 nvidia-docker 迁到了 libnvidia-container,很多老教程还在用废弃的旧地址,装完发现 --gpus all 不生效——因为少了 nvidia-ctk runtime configure 这一步。
问题五:排障信息散落各处
出问题后要查 dmesg、查 journalctl、查 Xid 错误码、查 NPU 固件日志、查 BMC 带外日志。
每次都是手动一条条敲,漏了哪条就得重新来。

如何使用
访问 SkillHub 平台获取本 Skill:
https://skillhub.openanolis.cn/skill/chip-adapter
使用方式
在支持 Skill 调用的 AI 助手或开发工具中,直接用自然语言提问即可触发。例如:
-
CentOS 7.9 装 A100 驱动
-
麒麟 V10 上海光 DCU K100 怎么装
-
Docker 怎么透传 GPU 给容器
-
A100 和 910B 能插同一台机器吗
-
怎么关掉 A100 的 ECC
-
怎么卸载昇腾 NPU 驱动
Skill 会先确认四个关键信息:内核版本、操作系统、芯片型号、部署场景。信息齐全后,直接给你一套能跑的分步命令,附带前置检查和故障排查表。
如果你在做 CI/CD 自动化部署,也可以将 Skill 集成到流水线中,作为新节点的驱动适配检查门禁。
输出示例
以 Ubuntu 22.04 + 昇腾 910B 为例,Skill 会给你这样的命令序列:
# 0. 创建 NPU 专用运行用户(不做这步会报 ERR_NO:0x0091)
groupadd HwHiAiUser
useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
# 1. 安装驱动(注意 x86-64 是连字符)
./Ascend-hdk-910b-npu-driver_23.0.3_linux-x86-64.run --full --install-for-all
# 2. 安装固件
./Ascend-hdk-910b-npu-firmware_7.1.0.5.220.run --full
# 3. 安装 CANN(注意 x86_64 是下划线,跟驱动包不一样)
./Ascend-cann-toolkit_7.1.RC1_linux-x86_64.run --install --quiet
# 4. 环境变量
echo 'source /usr/local/Ascend/ascend-toolkit/set_env.sh' >> ~/.bashrc
# 5. 验证 + 拓扑检查
npu-smi info
npu-smi info -t topo # 看 HCCS 互联拓扑
复制
每一步都有注释说明为什么这么干。卸载时也会提醒你顺序反过来:先卸固件再卸驱动。
真实案例
案例一:Docker --gpus all 报错
现象:容器内执行 nvidia-smi 报 could not select device driver with capabilities gpu
根因:装了 nvidia-container-toolkit 但没执行 runtime 配置。很多老教程缺了这一步。
修复:
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker复制
案例二:DCU 装完 rocminfo 无输出
现象:海光 K100 装完驱动后 rocminfo 空 output,但 lspci 能看到设备。
根因:没设 HSA_OVERRIDE_GFX_VERSION,运行时不知道按哪个 GFX 架构编译。
修复:
echo 'export HSA_OVERRIDE_GFX_VERSION=9.2.6' >> ~/.bashrc
source ~/.bashrc
复制
案例三:多卡场景的两个高频坑
坑 1:A100 和 910B 混插
驱动层不冲突(nvidia.ko 和 drv.ko 可共存),但 BAR 空间竞争大,Above 4G Decoding 必须开。更关键的是 PyTorch CUDA 版和 CANN 版不能同时加载到同一进程,必须在容器层面隔离。建议还是分节点部署。
坑 2:多卡训练 NCCL 突然报 ibv_open_device
排查逻辑链:先看 GPU 与 IB 网卡拓扑(nvidia-smi topo -m),再看 IB 端口状态(ibstat),最后查 memlock 限制(ulimit -l)——最常见的根因是 memlock 没设 unlimited。
彩蛋:一键采集排障日志
出问题后不用一条条手动敲,Skill 内置了日志采集脚本,关键 5 行:
mkdir -p /tmp/chip_debug && cd /tmp/chip_debug
lspci -vvv > lspci_vvv.log; dmesg > dmesg.log
nvidia-smi -q > nvidia_smi.log; npu-smi info > npu_smi.log; hy-smi > hy_smi.log
nvidia-bug-report.sh
tar czvf chip_debug_$(date +%Y%m%d).tar.gz *
复制
打包发给后端,一条龙。硬件级故障还需通过 iDRAC/iLO 带外管理通道采集 BMC 日志。

写在最后
做算力适配的工程师大概都有个体会:这活儿技术上不难,但信息太碎。
NVIDIA 的文档是一套体系,海光又是一套,其他各家也有各自的体系。而且每家都在迭代——NVIDIA 把 Docker 仓库迁了,昇腾把 device-plugin 合到 mind-cluster 了,海光的驱动模块名从 hydcu 改成了 hycu。
芯片适配专家(GPU/NPU/DCU) Skill 做的事情就是把碎片化的信息收敛到一处,经过了多轮技术验证(每条命令、每个 URL、每个包名都搜过官方文档确认),减少在海量文档里查找的时间。
适配范围
| 芯片类型 | 支持型号(示例) |
| GPU(NVIDIA) | A100 / A800 / H100 / H800 / T4 / V100 |
| NPU(昇腾) | 910B / 910A / 310B / 310P |
| DCU(海光) | Z100 / Z100L / K100 / K100-AI / BW1000 |
适配操作系统:Ubuntu 20.04/22.04、CentOS 7/8、麒麟 V10、统信 UOS
如果你正在踩坑,现在就去试试。下次装机翻出来直接抄。若大家在使用此 Skill 的时候发现哪里跟实际有出入,欢迎反馈,我们持续修正。也欢迎更多人把自己工作中沉淀的好经验打包成 Skill 提交上来,SkillHub 的共建大门随时敞开。
相关链接:
芯片适配专家(GPU/NPU/DCU)Skill:
https://skillhub.openanolis.cn/skill/chip-adapter
Skillhub 官网链接:
https://skillhub.openanolis.cn
相关文章推荐:
从“能启动”到“可验证” ,一条命令在 Anolis OS 拉起统一大模型网关 | 龙蜥 SkillHub 精选
从 3 天排查缩到 20 分钟,一个内核老兵的 AI Skill 诞生记 | 龙蜥 SkillHub 精选
从此告别重复劳动,百款开源项目适配经验提纯成 AI Agents | 龙蜥 SkillHub 精选
教了 Agent 一百遍工程规矩,我干脆把它写成了 Skill | 龙蜥 Skillhub 精选
敲了十年 vmstat,我把排查经验塞进了一个 AI Skill | 龙蜥 Skillhub 精选
一句话搞定 PG 集群部署和管理 | 龙蜥 Skillhub 精选
龙蜥社区 Skill 征集活动——「Skill 创造营」上线以来响应热烈。截至目前,龙蜥 SkillHub 已收到覆盖安全、系统运维、AI 推理、数据库等多个领域,一个面向 Infra 的 AI 技能生态正在加速成型。「Skill 创造营」持续征集中,诚挚欢迎每一位开发者提交你的 Skill 与最佳实践。如果你有感兴趣的方向或者关于 SkillHub 的问题,欢迎通过下方链接反馈给我们。
SkillHub 用户需求收集链接:
https://alidocs.dingtalk.com/notable/share/form/v014jKqm0b74KdjLnw1_f22ghuX_M7AJs3D
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐


所有评论(0)