Skip to main content
Version: v25.06

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用户使用。

安装

openFuyao平台部署

在线安装

前提条件
  • 当前计算机上有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状态。

安装步骤

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

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

离线安装

前提条件
  • 请参见在线安装前提条件

  • 下载离线镜像:将需要安装的组件所用到的全部镜像下载到本地。

  • 准备驱动固件包和MindIO组件的SDK包:

    • 首先下载驱动固件包和MindIO组件的SDK包,在npu-driver-installer的gitcode代码仓中,找到config.json文件,按照对应节点的NPU型号、OS架构单击相应链接来下载对应的驱动固件压缩包;在npu-node-provision的gitcode仓库中,找到config.json文件,按照对应节点的NPU型号、OS架构,单击相应链接来下载对应的SDK压缩包。
  • 将驱动固件包的zip文件放到需要进行离线安装的节点路径下:

    /opt/openFuyao-npu-driver/npu-driver/NPU型号/

    例如该节点使用310p型号的NPU,则存放路径为:

    /opt/openFuyao-npu-driver/npu-driver/310p/
  • 将MindIO组件的zip包放到需要进行离线安装的节点路径下:

    /opt/openFuyao/mindio/
  • 检查待安装节点中是否含有以下工具:

    • 如果使用的包管理工具为yum,则需要安装的pkg为:"jq wget unzip which initscripts coreutils findutils gawk e2fsprogs util-linux net-tools pciutils gcc make automake autoconf libtool git patch kernel-devel-$(uname -r) kernel-headers-$(uname -r) dkms"
    • 如果使用的包管理工具为apt-get,需要安装的pkg为:"jq wget unzip debianutils coreutils findutils gawk e2fsprogs util-linux net-tools pciutils gcc make automake autoconf libtool git patch dkms linux-headers-$(uname -r)"
    • 如果使用的包管理工具为dnf,则需要安装的pkg为: "jq wget unzip which initscripts coreutils findutils gawk e2fsprogs util-linux net-tools pciutils gcc make automake autoconf libtool git patch kernel-devel-$(uname -r) kernel-headers-$(uname -r) dkms"
安装步骤

请参见在线安装安装步骤

独立部署

在线安装

前提条件

请参见openFuyao平台部署前提条件

安装步骤
  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

离线安装

前提条件

请参见openFuyao平台部署前提条件

安装步骤
  1. 提前准备好NPU Operator的chart包。

  2. 使用默认配置安装Operator:

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

    常见定制选项见表2

升级

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
initImageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: ""
repository: harbor.openfuyao.com/docker.io/library/busybox:latest
tag: ""
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
initImageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: ""
repository: harbor.openfuyao.com/openfuyao/npu-driver-installer:latest
tag: ""
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
initConfigImageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: ""
repository: harbor.openfuyao.com/openfuyao/npu-container-toolkit:latest
tag: ""
initRuntimeImageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: ""
repository: harbor.openfuyao.com/openfuyao/ascend-image/ascend-docker-runtime:latest
tag: ""
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
initImageSpec:
imagePullPolicy: Always
imagePullSecrets: []
registry: ""
repository: harbor.openfuyao.com/docker.io/library/busybox:latest
tag: ""
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文件夹等将被清除,可能导致使用服务的任务容器异常,请谨慎操作。