华为 Ascend NPU 安装
本章介绍针对配备华为 Ascend NPU 的集群的端到端安装步骤。对于 NVIDIA GPU,请参见 安装 NVIDIA GPU。
从 Alauda Build of Hami v2.8 开始,部署表单中会提供 Enable Ascend 开关,使 hami-scheduler 能够调度华为 Ascend NPU,并与 NVIDIA GPU 一起使用(或替代 NVIDIA GPU)。
与 NVIDIA 不同——开启该开关会同时部署 hami-scheduler 和 NVIDIA device plugin——开启 Enable Ascend 时,仅会为 hami-scheduler 配置 Ascend 感知能力,并提供包含 Ascend 虚拟化模板的 hami-scheduler-device ConfigMap。HAMi chart 中不包含 Ascend device plugin DaemonSet,必须单独安装。
目录
前提条件步骤 1:安装 Ascend driver 和 Ascend Docker Runtime步骤 2:在 HAMi 部署表单中启用 Ascend步骤 3:部署 HAMiascend-device-plugin步骤 4:验证故障排查前提条件
- 对你的 ACP 集群具有集群管理员权限
- Kubernetes 版本:v1.16+
- ACP 版本:v4.0+
- 一台或多台配备受支持的华为 Ascend NPU 的节点(例如
Ascend 910B、Ascend 310P等)
步骤 1:安装 Ascend driver 和 Ascend Docker Runtime
Alauda Build of NPU Operator 是在 NPU 节点上安装 Ascend driver、firmware 和 Ascend Docker Runtime 的推荐方式。请按照 安装 Alauda Build of NPU Operator 执行,并注意部署表单中的选项:
operator 完成后,请在每个 NPU 节点上验证 driver:
步骤 2:在 HAMi 部署表单中启用 Ascend
- 打开
管理员->Marketplace->集群插件,切换到目标集群,然后部署或更新Alauda Build of Hami。 - 在部署表单中,打开
Enable Ascend。 Enable NVIDIA可以保持开启(混合集群)或关闭(仅 NPU 集群)。- 提交表单。等滚动更新完成后,
hami-scheduler将以--enable-ascend=true启动,并且hami-scheduler-deviceConfigMap 会包含第 3 步中的 device plugin 所使用的 Ascendvnpus模板。
Enable NVIDIA 和 Enable Ascend 是相互独立的。你可以关闭其中任意一个,但至少应保持一种设备类型处于启用状态。
步骤 3:部署 HAMi ascend-device-plugin
-
为每个 NPU 节点打标签,以便 DaemonSet 只在需要的节点上运行:
-
下载 DaemonSet manifest
ascend-device-plugin.yaml并将其应用到业务集群:该 manifest 会创建:
- 位于
kube-system命名空间中的ServiceAccount、ClusterRole和ClusterRoleBinding,名称为hami-ascend。 - 名为
hami-ascend-device-plugin的DaemonSet,调度到带有ascend=on标签的节点。 - 该 DaemonSet 会挂载
hami-scheduler-deviceConfigMap;该 ConfigMap 由第 2 步中的 HAMi chart 创建,包含 Ascend 虚拟化模板(vnpus)。
- 位于
-
如需使用自定义 plugin 镜像(例如内部镜像源),请在应用之前编辑
ascend-device-plugin.yaml中的image字段。
步骤 4:验证
-
检查每个 NPU 节点上的 device plugin Pod 是否都在运行:
-
检查 NPU 资源是否已报告为可分配(资源名称会因芯片而异,例如
huawei.com/Ascend910B或huawei.com/Ascend310P): -
运行一个示例工作负载来申请一个 vNPU 切片。下面的示例请求一个
Ascend910B4芯片,并将内存限制为4096MiB;HAMi 会选择满足该内存请求的最小虚拟化模板:更多 device 侧示例,请参见 HAMi ascend-device-plugin examples。
如需深入了解 vNPU 切片的工作原理(模板、内存取整以及按卡预算核算),请参见 Ascend vNPU 切片的工作原理。
故障排查
- Pod 一直处于
Pending,且未报告 Ascend 资源:确认节点已带有ascend=on标签,并且该节点上的hami-ascend-device-pluginPod 处于Running状态。 hami-scheduler-deviceConfigMap 中缺少vnpus部分:重新打开 HAMi 部署表单并确认Enable Ascend已开启;只有在打开该开关时才会渲染该部分。- 与
Alauda Build of NPU Operator冲突:确保在 operator 部署表单中已禁用Ascend Device Plugin。如果误开启了,请在关闭该选项后重新部署 operator,然后再次应用 HAMiascend-device-plugin.yaml。 - 需要自定义 Ascend 虚拟化模板:编辑
hami-scheduler-deviceConfigMap 中的vnpus部分(kubectl -n kube-system edit configmap hami-scheduler-device),然后重启hami-ascend-device-pluginPod。请注意,该修改会在下次 chart 升级时丢失。