安装

前提条件

在线安装

  1. ACP 版本:v4.0 或更高版本

  2. 具有 ACP 集群的 cluster administrator 访问权限

  3. 确保 NPU 节点中存在 bash 工具。否则,驱动和固件安装脚本可能无法被解析。

  4. Worker Node 操作系统要求

    • 运行 NPU workloads 的 worker 节点(或节点组)必须使用以下操作系统之一(Arm 架构):

      • openEuler 22.03 LTS
      • Ubuntu 22.04
    • 仅运行 CPU workloads 的 worker 节点可以使用任意操作系统,因为 NPU operator 不会对不承载 NPU workloads 的节点进行配置。

  5. 支持的 NPU 硬件

    • 节点必须使用受支持的 NPU:

      • Ascend 910B
      • Ascend 310P
    • 有关操作系统和硬件兼容性的详细信息,请参见 MindCluster Documentation

  6. 必须安装 Alauda Build of Node Feature Discovery 集群插件。

离线安装

  1. 离线安装除了需要满足所有在线安装前提条件外,还需要额外的准备步骤。

  2. 准备驱动和固件包以及 MindIO SDK 包。 下载以下软件包(如果不需要安装 MindIO,则无需下载 MindIO 包):

    • 对于驱动和固件包,请在 npu-driver-installer 的 GitCode 仓库中查找 config.json 文件,并通过其中提供的相应链接,基于所选版本、NPU 型号以及对应节点的 OS 架构下载软件包。
    • 对于 MindIO SDK 包,请在 npu-node-provision 的 GitCode 仓库中查找 config.json 文件,并通过其中提供的相应链接,基于对应节点的 NPU 型号以及 OS 架构下载 SDK 包。
  3. 将驱动和固件包的 ZIP 文件保存到执行离线安装的节点的 /tmp/driver_pkg/ 路径下。

  4. 将 MindIO 包的 ZIP 文件保存到执行离线安装的节点的 /opt/openFuyao/mindio/ 路径下。(如果不需要安装 MindIO,请跳过此步骤。)

  5. 检查目标节点是否包含以下工具。

    • 对于使用 Yum 作为包管理器的系统,需要安装以下包:"jq wget unzip which net-tools pciutils gcc make kernel-devel-$(uname-r) kernel-headers-(uname-r) dkms"
    • 对于使用 apt-get 作为包管理器的系统,需要安装以下包:"jq wget unzip debianutils net-tools pciutils gcc make dkms linux-headers-$(uname -r)"
    • 对于使用 DNF 作为包管理器的系统,需要安装以下包:"jq wget unzip which net-tools pciutils gcc make kernel-devel-$(uname -r) kernel-headers-(uname-r) dkms"

操作步骤

下载集群插件

INFO

您可以从 Customer Portal 网站上的 Marketplace 下载名为 Alauda Build of NPU OperatorAlauda Build of Node Feature Discovery 的应用。

注意:Volcano 集群插件目前可以暂不安装。

上传集群插件

平台提供 violet 命令行工具,用于上传从 Custom Portal Marketplace 下载的软件包。

更多详情,请参见 上传软件包

安装 Alauda Build of NPU Operator

  1. 为所有 master 节点添加标签 masterselector=dls-master-node,并为所有 worker 节点添加标签 workerselector=dls-worker-node

    kubectl label nodes {master-node-id} masterselector=dls-master-node
    kubectl label nodes {worker-node-id} workerselector=dls-worker-node
  2. 进入 Administrator -> Marketplace -> Cluster Plugin 页面,切换到目标集群,然后部署 Alauda Build of NPU Operator 集群插件。

    部署表单参数说明:

    WARNING

    如果下表中列出的组件已经安装,请务必在部署时禁用相应按钮。

    TIP

    Ascend Operator、NodeD、ClusterD、Resilience Controller、MindIO TFT 和 MindIO ACP 默认不会部署。仅在确有需要时才进行部署。

    组件默认值描述
    Driver已启用是否安装驱动和固件。
    Version24.1.RC3驱动和固件版本。必须从仓库目录 npu-driver-installer 中选择版本号。
    Ascend Device Plugin已启用是否安装 Ascend Device Plugin。
    Ascend Docker Runtime已启用是否安装 Ascend Docker Runtime。
    NPU exporter已启用是否安装 NPU exporter。
    Ascend Operator已禁用是否安装 Ascend Operator。
    NodeD已禁用是否安装 NodeD。
    ClusterD已禁用是否安装 ClusterD。需要先安装 Volcano 集群插件。
    Resilience Controller已禁用是否安装 Resilience Controller。
    MindIO TFT已禁用是否安装 MindIO TFT。
    MindIO ACP已禁用是否安装 MindIO ACP。

验证

  1. 首先,您可以在 Alauda Build of NPU Operator 集群插件页面中查看状态是否为“已安装”。

  2. 等待 npu-driver pod 变为 running。离线安装大约需要 10 分钟,而在线安装会快得多。

    kubectl -n kube-system get pod -w | grep npu-driver
  3. 重启所有 NPU 节点。

  4. 在 NPU 节点上运行以下命令。

    npu-smi info

    确保显示工作正常。

  5. 在 master 节点上运行以下命令。

    kubectl get npuclusterpolicy cluster

    确保 npuclusterpolicy 的状态为 Ready。

  6. 检查业务集群控制节点上的 NPU 节点是否存在可分配的 NPU 资源。运行以下命令:

    kubectl get node  ${nodeName} -o=jsonpath='{.status.allocatable}'
    # 示例,输出包含:"huawei.com/Ascend310P":"1"(具体值取决于 NPU 卡的数量)
  7. 运行验证工作负载。 创建 spec 文件:

    key="huawei.com/Ascend310P" # For 310P
    cat <<EOF > deploy-npu.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ascend-pytorch
    spec:
      replicas: 1
      selector:
        matchLabels:
          service.cpaas.io/name: deployment-ascend-pytorch
      strategy:
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 1
        type: RollingUpdate
      template:
        metadata:
          labels:
            service.cpaas.io/name: deployment-ascend-pytorch
        spec:
          affinity: {}
          containers:
            - args:
                - |
                  sleep infinity
              command:
                - /bin/bash
                - -c
              image: ascendai/pytorch:ubuntu-python3.8-cann8.0.rc1.beta1-pytorch2.1.0
              imagePullPolicy: Always
              name: ascend-pytorch
              resources:
                limits:
                  cpu: 500m
                  $key: "1"
                  memory: 2Gi
                requests:
                  cpu: 500m
                  memory: 2Gi
          runtimeClassName: ascend
    EOF

    应用 spec:

    kubectl apply -f deploy-npu.yaml
    kubectl exec -it  deploy/ascend-pytorch -- bash

    然后在容器中运行以下命令:

    npu-smi info

    确保显示工作正常。

安装监控

如果在安装 Alauda Build of NPU Operator 时部署了 NPU exporter 组件,请执行以下步骤创建监控图表。

  1. 在集群的 控制节点 上执行命令。

    cat << EOF | kubectl apply -f -
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        prometheus: kube-prometheus
        serviceMonitorSelector: prometheus
      name: npu-exporter-ai
      namespace: monitoring
    spec:
      endpoints:
      - interval: 10s
        path: /metrics
        port: http
        targetPort: 8082
      namespaceSelector:
        matchNames:
        - npu-exporter
      selector:
        matchLabels:
          app: npu-exporter-svc
    EOF
  2. 您可以按照 Import Dashboard 导入 Grafana dashboard JSON 文件,将其转换为用于展示的监控图表。 JSON 文件可在 ascend-npu-dashboard 中获取。

    NOTE

    Grafana dashboard JSON 文件中的 tags 不能包含中文字符,需要手动删除。 示例:

    {
      "tags": [
        "ascend",
        "昇腾"
      ]
    }

    修改后:

    {
      "tags": [
        "ascend"
      ]
    }

FAQ

卸载 Alauda Build of NPU Operator 时需要注意什么?

即使卸载了 Alauda Build of NPU Operator,驱动也可能仍然存在于主机上。 在 NPU 节点上,执行以下命令卸载驱动:

/usr/local/Ascend/driver/script/uninstall.sh