安装

前提条件

在线安装

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

  2. 具有 ACP 集群的集群管理员访问权限

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

  4. Worker 节点操作系统要求

    • 运行 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 下载的软件包。

有关详细信息,请参见 Upload Packages

安装 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"
      ]
    }

常见问题

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

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

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