昇腾社区首页
中文
注册

使用示例

获取任务yaml

获取任务yaml请参见yaml下载地址,根据实际情况选择对应的yaml。

表1 yaml文件

yaml名称

说明

train-volcano.yaml

训练环境使用Volcano作为调度器

train-no-volcano.yaml

训练环境使用其他调度器

infer-volcano.yaml

推理环境使用Volcano作为调度器

infer-no-volcano.yaml

推理环境使用其他调度器

infer-310p-1usoc-volcano.yaml

推理环境使用Volcano作为调度器,仅Atlas 200I Soc A1 核心板环境使用

infer-310p-1usoc-no-volcano.yaml

推理环境使用其他调度器,仅Atlas 200I Soc A1 核心板环境使用

如果集群调度组件部署时选择的“设备纳管场景”,则不能使用名字中带volcano的yaml,其余安装场景只能选择名字中带volcano的yaml。

修改yaml配置

  1. 根据任务部署需要部署到的节点架构,修改对应的selector。
    • 如果任务部署到x86架构节点,nodeSelector修改为:host-arch: huawei-x86。示例如下。
      ...
      spec:
        template:
          spec:
            nodeSelector:
              host-arch: huawei-x86                   
            containers:
            - image: ascend-k8sdeviceplugin:v3.0.0
      ...
    • 如果任务部署到aarch64架构节点,nodeSelector修改为:host-arch: huawei-arm。示例如下。
      ...
      spec:
        template:
          spec:
            nodeSelector:
              host-arch: huawei-arm                   
            containers:
            - image: ascend-k8sdeviceplugin:v3.0.0
      ...
  2. 请根据安装的集群调度组件版本修改任务使用的镜像版本。
    ...
    spec:
      template:
        spec:
          nodeSelector:
            host-arch: huawei-arm                  
          containers:
          - image: ascend-k8sdeviceplugin:v3.0.0
    ...
  3. (可选)如果是验证训练环境可跳过本步骤。Atlas 200I Soc A1 核心板使用的yaml不需要修改芯片类型,也可以跳过本步骤。推理环境存在使用Atlas 推理系列产品Atlas 200/300/500 推理产品的场景,需要根据节点类型修改推理yaml中的芯片类型。
    ...
          containers:
          - image: ascend-k8sdeviceplugin:v3.0.0                  
            imagePullPolicy: IfNotPresent
            name: infer-env-quick-validation
            command: [ "/bin/bash", "-c", "npu-smi info" ]
            resources:
              requests:
                huawei.com/Ascend310: 1    # 如果是Atlas 推理系列产品请将Ascend 310修改为Ascend 310P
              limits:
                huawei.com/Ascend310: 1    # 如果是Atlas 推理系列产品请将Ascend 310修改为Ascend 310P     
    ...    
  4. (可选)如果未使用Volcano作为调度器可跳过本步骤。否则,需要修改replicas参数,同时检测多个节点的驱动情况。
    • 训练任务train-volcano.yaml,参考以下示例修改。
      apiVersion: batch.volcano.sh/v1alpha1   
      kind: Job                               
      metadata:
        name: mindx-dls-test
      spec:
        minAvailable: 1       # 需要与replicas的值保持一致
        schedulerName: volcano                
        maxRetry: 1
        queue: default
        tasks:
        - name: "default-test"
          replicas: 1        # 节点个数                      
          template:
            spec:
              containers:
              - image: ascend-k8sdeviceplugin:v3.0.0       
                name: teswts
                imagePullPolicy: IfNotPresent
                command: ["/bin/bash", "-c", "npu-smi info"]
                resources:
                  requests:
                    huawei.com/Ascend910: 1        # 当replicas配置大于1时,节点为Atlas 800 训练服务器时NPU数量只能为8,服务器(插Atlas 300T 训练卡)时只能为2
                  limits:
                    huawei.com/Ascend910: 1        # 当replicas配置大于1时,节点为Atlas 800 训练服务器时NPU数量只能为8,服务器(插Atlas 300T 训练卡)时只能为2         
                volumeMounts:
      ...
    • 推理任务以infer-volcano.yaml为例,参考以下示例修改。
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: infer-env-quick-validation
      spec:
        replicas: 1     # 节点个数
        selector:
          matchLabels:
            app: infers
        template:
          metadata: 
            labels:
               app: infers
          spec:
            schedulerName: volcano
            nodeSelector:
              host-arch: huawei-arm           
            containers:
            - image: ascend-k8sdeviceplugin:v3.0.0                  
              imagePullPolicy: IfNotPresent
              name: infer-env-quick-validation
              command: [ "/bin/bash", "-c", "npu-smi info" ]
              resources:
                requests:
                  huawei.com/Ascend310: 1   
                limits:
                  huawei.com/Ascend310: 1     
      ...    

下发任务

在管理节点执行如下命令。

kubectl apply -f {任务yaml}

查看结果

在管理节点执行如下命令。

kubectl logs {pod名字}

如:

kubectl logs infer-env-quick-validation-c8f6d6897-n9fbf

如果回显出现类似的信息则表示任务运行节点驱动安装正常。获取任务yaml中获取的yaml中默认只使用1个NPU,如果用户修改了数量请以实际为准。

  • 训练任务示例
    +-------------------------------------------------------------------------------------------+
    | npu-smi 22.0.4                              Version: 22.0.4                                           |
    +----------------------+---------------+----------------------------------------------------+
    | NPU   Name           | Health        | Power(W)    Temp(C)           Hugepages-Usage(page)|
    | Chip                 | Bus-Id        | AICore(%)   Memory-Usage(MB)  HBM-Usage(MB)        |
    +======================+===============+====================================================+
    | 0     910A           | OK            | 71.3        47                15   / 15            |
    | 0                    | 0000:61:00.0  | 0           2940 / 15071      30738/ 32768         |
    +======================+===============+====================================================+
  • 推理任务以昇腾310 AI处理器为例
    +--------------------------------------------------------------------------------------------------------+
    | npu-smi 22.0.4                              Version: 22.0.4                                  |
    +-------------------------------+-----------------+------------------------------------------------------+
    | NPU     Name                  | Health          | Power(W)     Temp(C)           Hugepages-Usage(page) |
    | Chip    Device                | Bus-Id          | AICore(%)    Memory-Usage(MB)                        |
    +===============================+=================+======================================================+
    | 0       310                   | OK              | 12.8         49                0    / 969            |
    | 0       0                     | 0000:04:00.0    | 0            622  / 7759                             |
    +===============================+=================+======================================================+

    如果推理任务使用名字带volcano的yaml,Pod会被反复拉起,会导致NPU一直被该Pod占用,请及时删除对应任务。

删除任务

在管理节点执行如下命令删除任务。

kubectl delete -f {任务yaml}