如何添加 Huawei NPU 节点到 Kubernetes 集群
内容提要
本文介绍了在华为昇腾910B NPU服务器上配置AI训练环境的完整流程,涵盖磁盘RAID0组建与挂载、NPU驱动安装、TLS关闭、网络健康检查、ascend-docker-runtime及Containerd部署、K8s集群加入与设备插件安装,以及CPU锁频、THP调优、网卡队列和时钟源等性能优化措施。
延伸解读
磁盘与文件系统选择
文章建议多块小盘组建RAID0以提升容量和速度,并指出XFS适合大文件、ext4适合中小文件。实际部署时需根据工作负载特点选择文件系统,同时注意RAID0无冗余,数据安全性较低,建议结合备份策略。
TLS关闭与网络健康检查
文中通过hccn_tool关闭TLS并检查网络健康状态,这是为了确保NPU间通信性能。关闭TLS可能降低安全性,但在受控的集群内部网络中常见。部署前应确认网络环境安全,并定期检查健康状态以避免通信故障。
运行时选择:Containerd与Docker
文章提供了Containerd和Docker两种运行时配置,并指出二选一。Containerd更轻量,适合K8s默认集成;Docker则生态成熟。选择时需考虑团队熟悉度和现有工具链,同时注意配置差异,如cri-socket参数。
性能优化权衡
文中提到CPU锁频、THP调优、网卡队列和时钟源调整,并明确各优化的缺点:锁频功耗高、THP关闭降低内存使用率、网卡队列增加延时、tsc可能不同步。优化需根据实际场景权衡,避免盲目套用。
Q&A
如何在华为昇腾910B NPU服务器上组建RAID0并挂载磁盘?
使用mdadm命令创建RAID0,例如:mdadm --create --verbose /dev/md0 --level=0 --raid-devices=3 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1。然后创建文件系统(如mkfs.xfs -f /dev/md0),创建挂载目录(如mkdir -p /data),获取UUID并写入/etc/fstab,最后执行mount -a挂载。
如何安装华为昇腾910B NPU的驱动和固件?
首先创建HwHiAiUser用户和组,然后从华为官网下载对应驱动和固件,执行安装命令:bash ./Ascend-hdk-910b-npu-driver_25.5.1_linux-x86-64.run --full --install-for-all 和 bash ./Ascend-hdk-910b-npu-firmware_7.8.0.6.201.run --full。安装完成后用npu-smi info验证。
如何关闭华为昇腾NPU的TLS功能?
使用hccn_tool命令对每个NPU设备关闭TLS,命令为:for i in {0..15}; do hccn_tool -i $i -tls -s enable 0; done。
如何安装ascend-docker-runtime并配置Containerd?
从GitCode下载ascend-docker-runtime的.run文件并执行安装。然后安装Containerd,生成默认配置,修改配置中的root、state、sandbox_image、SystemdCgroup,并将runtime设置为ascend-docker-runtime的路径,最后重启Containerd。
如何将华为昇腾NPU节点加入Kubernetes集群?
修改主机名,初始化内核参数,安装kubeadm、kubelet、kubectl,配置kubelet(如设置pause镜像、CPU管理策略等),然后在master节点生成token,执行kubeadm join命令加入集群。注意根据容器运行时指定--cri-socket参数。
如何在Kubernetes中部署华为昇腾NPU设备插件?
使用kubectl apply -f命令部署device-plugin和rdma-shared-dev-plugin,然后根据需要编辑DaemonSet和ConfigMap配置。例如:kubectl apply -f https://raw.githubusercontent.com/shaowenchen/ops-hub/master/ascend/v7.1.RC1-device-plugin-910.yaml。
华为昇腾NPU服务器有哪些性能优化措施?
包括CPU锁频设置为performance模式、关闭或调整THP(透明大页)的defrag、增大网卡队列缓冲区(如rx/tx设为8192)、将clocksource从hpet改为tsc,以及调整风扇速度到最大。