Skip to main content
Version: v25.03

NPU Operator

特性介绍

Kubernetes通过设备插件提供对特殊硬件资源(如昇腾NPU)的访问。但是配置和管理具有这些硬件资源的节点需要配置多个软件组件(如驱动程序、容器运行时或其他库),这些组件安装复杂困难且容易出错。NPU Operator使用Kubernetes中的Operator Framework来自动管理配置昇腾设备所需的所有软件组件。这些组件包括昇腾驱动程序和固件,使能构建集群全流程运行,支持集群作业调度、运维监控、故障恢复等功能的MindCluster设备插件。通过安装相应的组件,可以实现NPU资源管理、工作负载的优化调度、训推任务的容器化支持,使能AI作业以容器形式部署并运行在NPU设备上。

表 1 当前支持安装的组件

组件名称部署方式组件功能
昇腾驱动和固件NPU Operator管理下的容器化部署作为硬件设备和操作系统之间的桥梁,用来让操作系统识别并与硬件设备进行通信。
Ascend Device PluginNPU Operator管理下的容器化部署设备发现:基于Kubernetes设备插件机制,增加昇腾AI处理器的设备发现、设备分配、设备健康状态上报功能,使Kubernetes可以管理昇腾AI处理器资源。
Ascend OperatorNPU Operator管理下的容器化部署环境配置:Volcano协助组件,负责管理类Volcano资源acjob (Volcano为vcjob),将AI框架(MindSpore/PyTorch/TensorFlow)训练任务所需环境变量注入容器,Volcano再接手调度。
Ascend Docker RuntimeNPU Operator管理下的容器化部署昇腾容器运行时:容器引擎插件,为所有AI作业提供NPU容器化支持,使用户进行AI作业时能够以Docker容器的方式平滑地在昇腾设备上运行。
NPU ExporterNPU Operator管理下的容器化部署昇腾AI处理器资源数据的实时监测:该功能支持实时采集昇腾AI处理器的各项资源数据,包括处理器利用率、温度、电压、内存使用情况。此外,还能够监测Atlas推理系列产品的虚拟NPU(vNPU),包括AI Core的利用率、vNPU的总内存以及已使用内存等关键指标。
Resilience ControllerNPU Operator管理下的容器化部署动态扩缩容:当任务训练过程中发生故障,并且没有充足的健康资源进行替换,该组件可使用动态缩容的方式,剔除故障资源并继续训练,等资源充足后通过动态扩容方式进行训练任务的恢复。
ClusterDNPU Operator管理下的容器化部署收集集群任务信息、资源信息和故障信息,统一判定故障处理等级与策略,控制训练容器的进程重计算。
VolcanoNPU Operator管理下的容器化部署从底层组件获取集群资源信息,通过感知昇腾芯片之间的网络连接方式,选择最佳调度策略和最优资源分配,当任务资源故障时,可进行任务重调度。
NodeDNPU Operator管理下的容器化部署检测节点资源监控状态和节点故障信息,将故障信息上报并防止新任务调度到故障节点上。
MindIONPU Operator管理下的容器化部署针对模型训练中断后的临终CheckPoint生成与保存,在线修复模型训练过程中片上内存的UCE故障,提供重启或替换节点完成故障修复和模型续训的能力,优化CheckPoint的保存和加载。

关于组件的详细信息请参考MindCluster介绍

应用场景

构建基于昇腾设备的集群,支持集群作业调度、运维监控、故障恢复的功能场景,NPU Operator可以自动识别集群中的昇腾节点进行相应的安装部署工作。对于训练场景,支持NPU资源检测、整卡调度、静态vNPU调度、断点续训以及弹性训练等功能。而对于推理场景,支持资源检测、整卡调度、静态vNPU调度、动态vNPU调度、推理卡故障恢复和重调度功能。

能力范围

  • 自动发现昇腾NPU设备节点,对节点进行标记。
  • 自动部署昇腾NPU的驱动固件。
  • 集群调度组件的MindCluster自动化部署安装和生命周期管理。

亮点特征

NPU Operator能够自动识别集群中昇腾节点以及设备型号,安装对应版本的AI运行必要组件,极大简化了配置昇腾生态组件的使用门槛。对于所安装的组件进行全生命周期管理和自动化配置部署,NPU Operator可检测组件安装状态,并提供详细日志进行调试。

实现原理

  • Operator通过监控CRD实例化的CR变化实现对管理组件状态的修改。
  • Operator通过NFD在节点上标记的标签,利用npu-feature-discovery组件给节点标记上符合昇腾组件调度的节点标签。

npu-operator

与相关特性的关系

请确保application-management-service和marketplace-service正常运行,以保证该特性能够从应用市场正常安装。

Operator的安全上下文

一些NPU Operator管理的Pod(例如驱动程序容器)需要提升的权限如下。

  • privileged: true
  • hostPID: true
  • hostIPC: true
  • hostNetwork: true

提升权限的原因如下:

  • 访问主机文件系统和硬件设备,在宿主机上安装驱动固件和SDK服务。
  • 修改设备权限,以适配非root用户使用。

安装

前提条件

  • 当前计算机上有kubectl和Helm CLI,或集群中有可配置的应用商店或仓库。

  • 请确认环境中含有bash工具,否则可能导致驱动固件安装脚本解析失败。

  • Kubernetes集群中运行NPU工作负载的所有工作节点或节点组运行的操作系统版本都需满足openEuler 22.03 LTS或者Ubuntu 22.04(ARM架构)。

    对于仅运行CPU工作负载的工作节点或节点组,节点可以运行任何操作系统,因为NPU Operator不会对非NPU工作负载的节点执行任何配置或管理。

    当前NPU Operator所安装的组件需要运行环境满足的NPU芯片型号为910B和310P。具体OS和硬件配套关系请参考MindCluster文档

  • 节点特性感知服务(Node-Feature-Discovery)和NPU特性感知服务(NPU-Feature-Discovery)是每个节点上Operator的依赖项。

    输入图片说明 说明:
    默认情况下,NFD主节点和工作节点由Operator自动部署。如果NFD已在集群中运行,则必须在安装Operator时禁用部署NFD。同样的,如果NPU-Feature-Discovery已经提前部署到集群中了,那么也需要在安装Operator时禁用部署NPU-Feature-Discovery。

    values.yaml

    nfd:
    enabled: false
    npu-feature-discovery:
    enabled: false

    通过检查节点上的NFD标签确定NFD是否已在集群中运行。

    kubectl get nodes -o json | jq '.items[].metadata.labels | keys | any(startswith("feature.node.kubernetes.io"))'

    如果命令输出为true,则NFD已在集群中运行。此时设置nodefeaturerules,安装NPU自定义节点发现规则。

    nfd:
    nodefeaturerules: true

    默认情况下,nfd为true状态,npu-feature-discovery为true状态,nodefeaturerules为false状态。

开始安装

openFuyao平台

NPU Operator扩展组件,可在openFuyao应用市场下载安装。

  1. 进入openFuyao平台,在左侧导航栏中选择“应用市场 > 应用列表”。
  2. 在应用列表搜索“npu-operator”,找到NPU Operator扩展组件。
  3. 单击NPU Operator卡片进入应用的详情页。
  4. 在详情页单击右上角的“部署”,在部署界面的“安装信息”模块中输入“应用名称”,“版本信息”和“命名空间”。
  5. 单击“确认”,即可成功部署该组件。

通用场景

安装步骤
  1. 添加openFuyao Helm存储库。

    helm repo add openfuyao https://harbor.openfuyao.com/chartrepo/openfuyao-catalog && helm repo update
  2. 安装NPU Operator。

    • 使用默认配置安装Operator:

      cd npu-operator/charts
      helm install <npu-operator release name> npu-operator

若基于Helm应用商店或应用市场安装,则通过添加https://harbor.openfuyao.com/chartrepo/openfuyao-catalog仓,在界面安装即可。详情请参见常见定制选项

输入图片说明 说明:

  • 安装完NPU Operator后,会根据不同节点环境,为节点打上与NPU资源相关的标签,这些标签与集群调度组件相关。其中accelerate-type标签需要节点的硬件服务器与NPU卡完全匹配,具体匹配关系可参考MindCluster文档的创建节点标签
  • 对于Atlas 800I A2推理服务器,暂不支持自动添加server-usage=infer标签,需要用户执行如下命令手动添加。
kubectl label nodes <节点名称> server-usage=infer
常见定制选项

使用Helm Chart时,以下选项可用。这些选项通过--set在Helm安装时使用。

表2列出了最常用的选项。

表 2 常用的选项

范围描述默认
nfd.enabled部署节特性感知服务NFD,如果NFD已在集群中运行,则设置此变量为false
输入图片说明 说明:
若安装时为ture,使用时尽量不要修改此字段为false,否则会导致卸载时NFD残留标签。
true
nfd.nodefeaturerules设置为true时,安装NFD发现NPU设备规则CR。true
node-feature-discovery.image.repositoryNFD服务镜像地址。registry.k8s.io/nfd/node-feature-discovery
node-feature-discovery.image.pullPolicyNFD服务镜像拉取策略。Always
node-feature-discovery.image.tagNFD服务镜像版本。v0.16.4
npu-feature-discovery.image.repositoryNPU-Feature-Discovery镜像地址。harbor.openfuyao.com/openfuyao/npu-feature-discovery
npu-feature-discovery.image.pullPolicyNPU-Feature-Discovery镜像拉取策略。latest
npu-feature-discovery.image.tagNPU-Feature-Discovery镜像版本。Always
npu-feature-discovery.enabled部署NPU-Feature-Discovery的开关,如果NPU-Feature-Discovery已经在集群中运行了,则设置此变量为false。true
operator.imageNPU Operator镜像地址。harbor.openfuyao.com/openfuyao/npu-operator
operator.versionNPU Operator镜像版本。latest
operator.imagePullPolicyNPU Operator镜像拉取策略。IfNotPresent
daemonSets.labels要添加到所有NPU Operator管理Pod的自定义标签。{}
daemonSets.tolerations要添加到所有NPU Operator管理Pod的自定义容忍。[]
driver.enabled默认情况下,Operator会将NPU驱动固件程序作为容器部署在系统上。true
driver.registry驱动固件程序镜像存储库。使用自定义驱动程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
driver.repository驱动固件程序镜像地址。openfuyao/ascend-image/ascend-operator
driver.tag驱动固件安装服务的镜像版本。v6.0.0
driver.version驱动固件的版本号。24.1.RC3
devicePlugin.enabled默认情况下,Operator会将NPU设备插件程序部署在系统上。在预装设备插件的系统上使用Operator时,请将此值设置为false
输入图片说明 说明:
修改此字段为false时,其他同时设置的字段不生效。
true
devicePlugin.registry设备插件程序镜像存储库。harbor.openfuyao.com
devicePlugin.repository设备插件程序镜像地址。openfuyao/ascend-image/ascend-k8sdeviceplugin
devicePlugin.tag设备插件服务的镜像版本。v6.0.0
trainer.enabled默认情况下,Operator会安装Ascend operator,若不需要安装请将该值设置为falsetrue
trainer.registryAscend operator镜像存储库。使用自定义驱动程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
trainer.repositoryAscend operator镜像地址。openfuyao/ascend-image/ascend-operator
trainer.tagAscend operator镜像版本。v6.0.0
ociRuntime.enabled默认情况下,Operator会安装Ascend Docker Runtime,若不需要安装请将该值设置为falsetrue
ociRuntime.registryAscend Docker Runtime安装程序镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
ociRuntime.repositoryAscend Docker Runtime镜像地址。openfuyao/npu-container-toolkit
ociRuntime.tagAscend Docker Runtime镜像的版本。latest
nodeD.enabled默认情况下,Operator会安装nodeD,若不需要安装请将该值设置为falsetrue
ndoeD.registrynodeD镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
nodeD.repositorynodeD镜像地址。openfuyao/ascend-image/nodeD
nodeD.tagnodeD镜像的版本。v6.0.0
clusterd.enabled默认情况下,Operator会安装clusterD组件,若不需要安装请将该值设置为falsetrue
clusterd.registryclusterD镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
clusterd.repositoryclusterD镜像地址。openfuyao/ascend-image/clusterd
clusterd.tagclusterD镜像的版本。v6.0.0
rscontroller.enabled默认情况下,Operator会安装resilience controller组件,若不需要安装请将该值设置为falsetrue
rscontroller.registryresilience controller镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
rscontroller.repositoryresilience controller镜像地址。openfuyao/ascend-image/resilience-controller
rscontroller.tagresilience controller镜像的版本。v6.0.0
exporter.enabled默认情况下,Operator会安装NPU Exporter组件,若不需要安装请将该值设置为falsetrue
exporter.registryNPU Exporter镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
exporter.repositoryNPU Exporter镜像地址。openfuyao/ascend-image/npu-exporter
exporter.tagNPU Exporter镜像的版本。v6.0.0
mindiotft.enabled默认情况下,Operator会安装MindIO Training Fault Tolerance,若不需要安装请将该值设置为falsetrue
mindiotft.registryMindIO Training Fault Tolerance镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
mindiotft.repositoryMindIO Training Fault Tolerance镜像地址。openfuyao/npu-node-provision
mindiotft.tagMindIO Training Fault Tolerance镜像的版本。latest
mindioacp.enabled默认情况下,Operator会安装MindIO Async Checkpoint Persistence,若不需要安装请将该值设置为falsetrue
mindioacp.registryMindIO Async Checkpoint Persistence镜像存储库。使用自定义程序镜像时请指定另一个镜像存储库。harbor.openfuyao.com
mindioacp.repositoryMindIO Async Checkpoint Persistence服务镜像地址。openfuyao/npu-node-provision
mindioacp.tagMindIO Async Checkpoint Persistence服务镜像的版本。latest
mindioacp.versionMindIO Async Checkpoint Persistence的版本。6.0.0

升级

NPU Operator支持对现有资源进行动态更新。此功能使NPU Operator能够确保集群中NPU Policy的设置始终保持最新。

由于Helm不支持现有CRD的自动升级,因此可以手动或通过启用Helm Hook来升级NPU Operator Chart。

NPU Policy CR更新

NPU Operator支持使用kubectlnpuclusterpolicyCustomResource进行动态更新。

kubectl get npuclusterpolicy -A
# 若未对默认npuclusterpolicy进行修改,npuclusterpolicy的默认名称为cluster。
kubectl edit npuclusterpolicy cluster

编辑完成后,Kubernetes自动将应用更新到集群。各项由NPU Operator管理的组件也会更新到预期状态。

安装状态验证

通过CustomResource查看组件状态

通过CustomResourcenpuclusterpolicies.npu.openfuyao.com查看组件状态,具体方式是通过查看status字段中的各个组件的state字段确认组件的当前状态,如下为driver安装程序正常运行的状态示例。

status:
componentStatuses:
- name: /var/lib/npu-operator/components/driver
prevState:
reason: Reconciling
type: deploying
state:
reason: Reconciled
type: running
  • 查看CustomResource

     $ kubectl get npuclusterpolicies.npu.openfuyao.com cluster -o yaml
    apiVersion: npu.openfuyao.com/v1
    kind: NPUClusterPolicy
    metadata:
    annotations:
    meta.helm.sh/release-name: npu
    meta.helm.sh/release-namespace: default
    creationTimestamp: "2025-03-11T13:22:39Z"
    generation: 2
    labels:
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: npu-operator
    name: cluster
    resourceVersion: "2240086"
    uid: 0d1498c5-143a-4e05-a5dc-376d2e6c96ea
    spec:
    clusterd:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/clusterd
    tag: v6.0.0
    logRotate:
    compress: false
    logFile: /var/log/mindx-dl/clusterd/clusterd.log
    logLevel: info
    maxAge: 7
    rotate: 30
    managed: true
    daemonsets:
    imageSpec:
    imagePullPolicy: IfNotPresent
    imagePullSecrets: []
    labels:
    app.kubernetes.io/managed-by: npu-operator
    helm.sh/chart: npu-operator-0.0.0-latest
    tolerations:
    - effect: NoSchedule
    key: node-role.kubernetes.io/master
    operator: Equal
    value: ""
    - effect: NoSchedule
    key: node-role.kubernetes.io/control-plane
    operator: Equal
    value: ""
    devicePlugin:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/ascend-k8sdeviceplugin
    tag: v6.0.0
    logRotate:
    compress: false
    logFile: /var/log/mindx-dl/devicePlugin/devicePlugin.log
    logLevel: info
    maxAge: 7
    rotate: 30
    managed: true
    driver:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/npu-driver-installer
    tag: latest
    logRotate:
    compress: false
    logFile: /var/log/mindx-dl/driver/driver.log
    logLevel: info
    maxAge: 7
    rotate: 30
    managed: true
    version: 24.1.RC3
    exporter:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/npu-exporter
    tag: v6.0.0
    logRotate:
    compress: false
    logFile: /var/log/mindx-dl/npu-exporter/npu-exporter.log
    logLevel: info
    maxAge: 7
    rotate: 30
    managed: true
    mindioacp:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/npu-node-provision
    tag: latest
    managed: false
    version: 6.0.0
    mindiotft:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/npu-node-provision
    tag: latest
    managed: false
    nodeD:
    heartbeatInterval: 5
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/noded
    tag: v6.0.0
    logRotate:
    compress: false
    logFile: /var/log/mindx-dl/noded/noded.log
    logLevel: info
    maxAge: 7
    rotate: 30
    managed: true
    pollInterval: 60
    ociRuntime:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/npu-container-toolkit
    tag: latest
    interval: 300
    managed: true
    operator:
    imageSpec:
    imagePullPolicy: IfNotPresent
    imagePullSecrets: []
    runtimeClass: ascend
    rscontroller:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/resilience-controller
    tag: v6.0.0
    logRotate:
    compress: false
    logFile: /var/log/mindx-dl/resilience-controller/run.log
    logLevel: info
    maxAge: 7
    rotate: 30
    managed: true
    trainer:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/ascend-operator
    tag: v6.0.0
    logRotate:
    compress: false
    logFile: /var/log/mindx-dl/ascend-operator/ascend-operator.log
    logLevel: info
    maxAge: 7
    rotate: 30
    managed: true
    vccontroller:
    controllerResources:
    limits:
    cpu: 1000m
    memory: 1Gi
    requests:
    cpu: 1000m
    memory: 1Gi
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/vc-controller-manager
    tag: v1.9.0-v6.0.0
    managed: true
    vcscheduler:
    imageSpec:
    imagePullPolicy: Always
    imagePullSecrets: []
    registry: harbor.openfuyao.com
    repository: openfuyao/ascend-image/vc-scheduler
    tag: v1.9.0-v6.0.0
    managed: true
    schedulerResources:
    limits:
    cpu: 200m
    memory: 1Gi
    requests:
    cpu: 200m
    memory: 1Gi
    status:
    componentStatuses:
    - name: /var/lib/npu-operator/components/driver
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/oci-runtime
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/device-plugin
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/trainer
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/noded
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/volcano/volcano-controller
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/volcano/volcano-scheduler
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/clusterd
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/resilience-controller
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/npu-exporter
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: Reconciled
    type: running
    - name: /var/lib/npu-operator/components/mindio/mindiotft
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: ComponentUnmanaged
    type: unmanaged
    - name: /var/lib/npu-operator/components/mindio/mindioacp
    prevState:
    reason: Reconciling
    type: deploying
    state:
    reason: ComponentUnmanaged
    type: unmanaged
    conditions:
    - lastTransitionTime: "2025-03-11T13:25:41Z"
    message: ""
    reason: Ready
    status: "False"
    type: Error
    - lastTransitionTime: "2025-03-11T13:25:41Z"
    message: all components have been successfully reconciled
    reason: Reconciled
    status: "True"
    type: Ready
    namespace: default
    phase: Ready

手动确认各组件安装的状态和运行结果

  • 驱动安装状态确认

​ 检测驱动固件安装情况,请使用如npu-smi info命令,若回显类似如下说明已经安装驱动。


+------------------------------------------------------------------------------------------------+
| npu-smi 24.1.rc2 Version: 24.1.rc2 |
+---------------------------+---------------+----------------------------------------------------+
| NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page)|
| Chip | Bus-Id | AICore(%) Memory-Usage(MB) HBM-Usage(MB) |
+===========================+===============+====================================================+
| 0 910B3 | OK | 99.1 55 0 / 0 |
| 0 | 0000:C1:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 1 910B3 | OK | 91.7 53 0 / 0 |
| 0 | 0000:C2:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 2 910B3 | OK | 98.2 51 0 / 0 |
| 0 | 0000:81:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 3 910B3 | OK | 93.2 49 0 / 0 |
| 0 | 0000:82:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 4 910B3 | OK | 98.8 55 0 / 0 |
| 0 | 0000:01:00.0 | 0 0 / 0 3163 / 65536 |
+===========================+===============+====================================================+
| 5 910B3 | OK | 96.2 56 0 / 0 |
| 0 | 0000:02:00.0 | 0 0 / 0 3163 / 65536 |
+===========================+===============+====================================================+
| 6 910B3 | OK | 96.9 53 0 / 0 |
| 0 | 0000:41:00.0 | 0 0 / 0 3162 / 65536 |
+===========================+===============+====================================================+
| 7 910B3 | OK | 97.6 55 0 / 0 |
| 0 | 0000:42:00.0 | 0 0 / 0 3163 / 65536 |
+===========================+===============+====================================================+
+---------------------------+---------------+----------------------------------------------------+
| NPU Chip | Process id | Process name | Process memory(MB) |
+===========================+===============+====================================================+
| No running processes found in NPU 0 |
+===========================+===============+====================================================+
| No running processes found in NPU 1 |
+===========================+===============+====================================================+
| No running processes found in NPU 2 |
+===========================+===============+====================================================+
| No running processes found in NPU 3 |
+===========================+===============+====================================================+
| No running processes found in NPU 4 |
+===========================+===============+====================================================+
| No running processes found in NPU 5 |
+===========================+===============+====================================================+
| No running processes found in NPU 6 |
+===========================+===============+====================================================+
| No running processes found in NPU 7 |
+===========================+===============+====================================================+

  • MindCluster组件安装状态确认

    使用kubectl get pod -A查看所有Pod,若均为运行状态,说明组件启动成功。更加详细的每个组件功能状态验证,请参考MindCluster官方文档


    NAMESPACE NAME READY STATUS RESTARTS AGE
    default ascend-runtime-containerd-7lg85 1/1 Running 0 6m31s
    default npu-driver-c4744 1/1 Running 0 6m31s
    default npu-operator-77f56c9f6c-fhx8m 1/1 Running 0 6m32s
    default npu-feature-discovery-zqgt9 1/1 Running 0 7m12s
    default mindio-acp-43f64g63d2v 1/1 Running 0 7m21s
    default mindio-tft-2cc35gs3c2u 1/1 Running 0 6m32s
    kube-system ascend-device-plugin-fm4h9 1/1 Running 0 6m35s
    mindx-dl ascend-operator-manager-6ff7468bd9-47d7s 1/1 Running 0 6m50s
    mindx-dl clusterd-5ffb8f6787-n5m82 1/1 Running 0 6m48s
    mindx-dl noded-kmv8d 1/1 Running 0 7m11s
    mindx-dl resilience-controller-6727f36c28-wjn3s 1/1 Running 0 7m20s
    npu-exporter npu-exporter-b6txl 1/1 Running 0 7m22s
    volcano-system volcano-controllers-373749bg23c-mc9cq 1/1 Running 0 7m31s
    volcano-system volcano-scheduler-d585db88f-nkxch 1/1 Running 0 7m40s

卸载

执行以下步骤来卸载Operator。

  • 执行如下命令,通过Helm CLI或应用管理界面删除Operator。

    helm delete <npu-operator release name>

    默认情况下,Helm不支持在删除Chart时删除现有的CRD

    kubectl get crd npuclusterpolicies.npu.openfuyao.com
  • 执行如下命令,也可以手动删除CRD。

    kubectl delete crd npuclusterpolicies.npu.openfuyao.com

    输入图片说明 说明:
    Operator卸载后驱动程序可能还存在于宿主机上。

组件安装卸载说明

各组件安装卸载字段

  • 在第一次安装NPU Operator时,若values.yaml中的对应组件的enabled字段设置为true,则无论集群中是否曾有该组件资源,都将替换为由NPU Operator所管理的组件资源。

  • 若本身集群环境中已有该组件(例如volcano-controller),且在第一次安装NPU Operator时,该组件的enabled字段在values.yaml中设置为false,不会删除集群中已有的组件资源。

  • 当NPU Operator安装完成后,修改CR实例对应字段,可完成组件的镜像地址、资源配置、生命周期管理等操作。

MindIO安装依赖

  • 若用户需要安装MindIO相关组件时,需要在节点环境中提前安装好python环境(需含pip3工具),支持的python版本为3.7-3.11,否则无法正常安装。用户使用时,可将安装好的对应SDK挂载到训练容器中进行使用。

  • MindIO TFT(Training Fault Tolerance)组件的安装路径为/opt/sdk/tft,并且我们在/opt/tft-whl-package中为用户提供了不同python版本使用的whl包,以满足用户定制化的需求,具体使用请参考MindCluster文档中的参考章节“故障恢复加速”。

  • MindIO ACP(Async Checkpoint Persistence)组件的安装路径为/opt/mindio和/opt/sdk/acp,并且我们在/opt/acp-whl-package中为用户提供了不同python版本使用的whl包供用户自行根据需要安装。具体使用说明请参考MindCluster文档中的参考章节“checkpoint保存与加载优化”。

  • 卸载MindIO组件时,有关MindIO组件的SDK文件夹等将被清除,可能导致使用服务的任务容器异常,请谨慎操作。