官方参考地址**(非常全面)**:昇腾 - MindCluster

注: 本文档默认跳过k8s安装、Rancher安装、及华为npu驱动安装。 主要说明如何将华为npu集成到k8s

一、安装容器化支持插件(Ascend Docker Runtime)

要想在容器内使用npu必须安装官方提供的虚拟化插件 - 官方安装Ascend Docker Runtime地址

1、软件下载

官方仓库下载地址
根据CPU架构选择要下载的包arm64 / amd64
在这里插入图片描述

2、软件安装

# 将下载的 .run 文件放到服务器上 在服务器上同目录下运行
# chmod u+x 下载的.run 文件。 我这是鲲鹏920arm 芯片 运行如下代码:
# 执行 赋予权限
chmod u+x Ascend-docker-runtime_6.0.0_linux-aarch64.run
# 执行 安装
./Ascend-docker-runtime_6.0.0_linux-aarch64.run --install

# 显示如下后标识成功
# Uncompressing ascend-docker-runtime  100%
# [INFO]: installing ascend docker runtime
# ...
# [INFO] Ascend Docker Runtime install success

二、安装昇腾npu k8s 插件(ascend-k8sdeviceplugin)

安装ascend-k8sdeviceplugin 可实现让k8s获取到npu 官方Ascend Device Plugin 安装教程

ascend-k8sdeviceplugin 可以用镜像的方式安装到节点上

1、拉取官方镜像(ascend-k8sdeviceplugin)

打开华为官方镜像仓库,拉取ascend-k8sdeviceplugin镜像
镜像拉取地址

① 点击“镜像版本”

点击镜像版本
② 选择版本点击下载
在这里插入图片描述
③ 依次执行这三个命令拉取镜像
在这里插入图片描述

2、下载官方yaml文件

打开华为官方git 下载对应cpu架构的配置文件 git下载地址

在这里插入图片描述

# 修改镜像标签名
docker tag  swr.cn-south-1.myhuaweicloud.com/ascendhub/ascend-k8sdeviceplugin:v6.0.0 ascend-k8sdeviceplugin:v6.0.0

给节点打标签!! 根据型号查询需要的标签

# 必须给主节点打标签 这里要根据自己的机器型号查询要打哪些标签 192.168.1.61 是节点名称
kubectl label nodes 192.168.1.61 masterselector=dls-master-node  # 管理节点
kubectl label nodes 192.168.1.61 accelerator=huawei-Ascend910
kubectl label nodes 192.168.1.61 node-role.kubernetes.io/worker=worker
kubectl label nodes 192.168.1.61 workerselector=dls-worker-node
kubectl label nodes 192.168.1.61 host-arch=huawei-arm
kubectl label nodes 192.168.1.61 accelerator-type=module

修改yaml配置文件 (有一些目录宿主机没有地址 可以让容器自己创建)

# 在volumes下将 log-path 中 hostPath 的type 修改为 DirectoryOrCreate
      volumes:
		...
        - name: log-path
          hostPath:
            path: /var/log/mindx-dl/devicePlugin
            type: DirectoryOrCreate
        ...

启动插件

# 解压后将查看当前 昇腾处理器型号
npu-smi info 

# 查看出现的型号是 310 还是 910
# 如果是310 则运行 
kubectl apply -f {device-plugin-name}-310-{version}.yaml

# 如果是 910 则运行
kubectl apply -f {device-plugin-name}-volcano-{version}.yaml
# 或
kubectl apply -f {device-plugin-name}-910-{version}.yaml

注:
910 这两个命令分别是 :
device-plugin-910-v{version}.yaml 对应:Atlas 训练系列产品或Atlas A2 训练系列产品上不使用MindCluster Volcano的配置文件。
device-plugin-volcano-v{version}.yaml对应:Atlas 训练系列产品或Atlas A2 训练系列产品上使用MindCluster Volcano的配置文件。
{device-plugin-name}:表示对应软件版本yaml文件的前缀名,如上所述,v2.0.3.6版本之前为“ascendplugin”,后续版本为“device-plugin”。
{version}:表示镜像版本,需要和启动的yaml文件版本保持一致。

在kube-system中出现ascend-device… 状态正常则启动成功
在这里插入图片描述

3、容器分配算力

# 在yaml 中添加 配置即可分配实体卡
apiVersion: v1
kind: Pod
metadata:
  name: test-npu-pod
  namespace: npu-apps  # 指定命名空间
spec:
  containers:
  - name: test-container
    image: swr.cn-south-1.myhuaweicloud.com/ascendhub/ascend-pytorch:24.0.RC2-A2-2.1.0-ubuntu20.04
    imagePullPolicy: Never  # 强制使用本地镜像
    command: ["sleep", "3600"]  # 让容器保持运行状态,便于测试
    resources:
      limits:
        huawei.com/Ascend910: 2  # 分配 2 个 NPU
      requests:
        huawei.com/Ascend910: 2  # 请求 2 个 NPU
    env:
      - name: DLS_TASK_NUMBER  # 如果需要指定任务编号,可以设置环境变量
        value: "2"
  restartPolicy: Never

未完…

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐