安装

前提条件

在线安装

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

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

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

  4. 工作节点操作系统要求

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

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

  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 型号和操作系统架构,通过提供的对应链接下载软件包。
    • MindIO SDK 包,请在 npu-node-provision 的 GitCode 仓库中找到 config.json 文件,根据对应节点的 NPU 型号和操作系统架构,通过提供的对应链接下载 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 集群插件暂时可以不安装。

上传集群插件

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

详情请参见 Upload Packages

安装 Alauda Build of NPU Operator

  1. 给所有主节点打上标签 masterselector=dls-master-node,给所有工作节点打上标签 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 集群插件页面可以看到状态为“Installed”。

  2. 等待 npu-driver pod 进入 Running 状态。离线安装大约需要 10 分钟,在线安装则快得多。

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

  4. 在 npu 节点上运行以下命令:

    npu-smi info

    确认显示正常。

  5. 在主节点上运行以下命令:

    kubectl get npuclusterpolicy cluster

    确认 npuclusterpolicy 状态为 Ready。

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

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

    NOTE

    业务应用必须手动指定 runtimeClassName 字段为 ascend

    创建 spec 文件:

    key="huawei.com/Ascend310P" # 针对 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 仪表盘 JSON 文件,将其转换为监控面板进行展示。 JSON 文件可在 ascend-npu-dashboard 获取。

    NOTE

    Grafana 仪表盘 JSON 文件中的标签不能包含中文字符,需要手动删除。 示例:

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

    修改后:

    {
      "tags": [
        "ascend"
      ]
    }

常见问题

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

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

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