昇腾 NPU 运维(驱动 + CANN + Device Plugin 部署与验证)
2026-08-11 09:57:40 # Kubernetes

一、背景

国产 AI 芯片昇腾(Ascend)NPU 在大模型推理/训练中使用广泛。在 K8s 中要让容器用上 NPU,需驱动 + CANN + 设备插件三层适配。

二、环境信息

  • 节点:Kylin aarch64 / x86 + 昇腾 910B
  • 软件:Ascend 驱动 24.x + CANN 7.0 + 容器运行时适配

三、操作要点

1. 安装驱动与 CANN

1
2
3
./Ascend-driver-24.1.rc1_linux-aarch64.run --full
./Ascend-cann-toolkit_7.0.0_linux-aarch64.run --install
npu-smi info # 确认 NPU 可见

2. 容器运行时适配(Ascend Docker Runtime)

1
# 安装 ascend-docker-runtime,配置 containerd runtime 指向它

3. 部署 Ascend Device Plugin

1
2
kubectl apply -f https://raw.githubusercontent.com/Ascend/ascend-device-plugin/master/device-plugin.yml
# 注册资源 huawei.com/Ascend910

4. 使用 NPU

1
2
resources:
limits: { huawei.com/Ascend910: 1 }

四、验证方式

1
2
3
npu-smi info
kubectl get nodes -o json | jq '.items[].status.allocatable["huawei.com/Ascend910"]'
kubectl exec -it npu-pod -- npu-smi info # 容器内可见

五、常见问题

  • 驱动与 CANN 版本必须匹配:错配导致算子不可用
  • aarch64 镜像:确保训练/推理镜像架构匹配(arm64)
  • device plugin 注册失败:驱动未装好或 runtime 未配置
  • NUMA/亲和:大模型切分注意 NPU 间互联(HCCS)拓扑,调度尽量同卡组
  • 容器内不可见 NPU:runtime 配置错误,核对 ascend-docker-runtime