特性介绍
容器化支持
为所有的训练或推理作业提供NPU容器化支持,自动挂载所需文件和设备依赖,使用户AI作业能够以Docker容器的方式平滑运行在昇腾设备之上。
Ascend Docker Runtime
资源监测
支持在执行训练或者推理任务时,对昇腾AI处理器资源各种数据信息的实时监测,可实时获取昇腾AI处理器利用率、温度、电压、内存,以及昇腾AI处理器在容器中的分配状况等信息,实现资源的实时监测。支持对虚拟NPU(vNPU)的AICore利用率、vNPU总内存和vNPU使用中内存进行监测。目前NPU Exporter仅支持对Atlas 推理系列产品的vNPU资源监测。
NPU Exporter
虚拟化实例
基于HDK的虚拟化实例
基于HDK的虚拟化实例功能是指通过资源虚拟化的方式将物理机或虚拟机配置的NPU(昇腾AI处理器)切分成若干份vNPU(虚拟NPU)挂载到容器中使用,虚拟化管理方式能够实现不同规格资源的分配和回收处理,满足多用户反复申请/释放的资源操作请求。
昇腾基于HDK的虚拟化实例功能的优点是可实现多个用户共同使用一台服务器,用户可以按需申请vNPU,降低了用户使用NPU算力的门槛和成本。多个用户共同使用一台服务器的NPU,并借助容器进行资源隔离,这种方式资源隔离性好,保证运行环境的稳定和安全,且资源分配与回收过程统一,方便多租户管理。
根据创建或挂载vNPU的方式不同,所需组件不同,可以参考如下内容。
创建vNPU所需组件:
创建vNPU有以下两种方式。
- 静态虚拟化:通过npu-smi工具手动创建多个vNPU。
- 动态虚拟化:通过MindCluster中的以下组件创建vNPU。
- 方式一:通过Ascend Docker Runtime手动创建vNPU,容器进程结束时,自动销毁vNPU。
- 方式二:通过Volcano和Ascend Device Plugin动态地自动创建vNPU,容器进程结束时,自动销毁vNPU。
挂载vNPU所需组件:
根据创建vNPU的方式的不同,将vNPU挂载到容器的方式也不同,说明如下:
- 基于原生Docker挂载vNPU(只支持静态虚拟化)
- 基于MindCluster组件挂载vNPU(支持静态虚拟化和动态虚拟化)
- 方式一:通过Ascend Docker Runtime+Docker方式挂载vNPU(此方式相比只使用原生Docker易用性更高)。
- 方式二:通过Kubernetes挂载vNPU。
- 驱动安装后会默认安装npu-smi工具,安装操作请参见《CANN 软件安装》中的“安装NPU驱动和固件”章节(商用版)或“安装NPU驱动和固件”章节(社区版);安装成功后,npu-smi放置在“/usr/local/sbin/”和“/usr/local/bin/”路径下。
- 安装MindCluster中的Ascend Docker Runtime、Ascend Device Plugin和Volcano组件,请参见安装部署章节进行操作。
- 安装Docker,请参见安装Docker。
- 安装Kubernetes,请参见安装Kubernetes。
- 特性使用指导请参见基于HDK的虚拟化实例章节进行操作。
基于vCANN-RT的虚拟化实例
基于vCANN-RT的虚拟化实例功能是指通过向vCANN-RT提供软切分配置文件的方式将物理机配置的NPU(昇腾AI处理器)挂载到容器中使用,虚拟化管理方式能够实现不同规格资源的分配和回收处理,满足多用户反复申请/释放资源的操作请求。
昇腾基于vCANN-RT的虚拟化实例功能的优点是可实现多个用户共同使用一台服务器,用户可以按需申请NPU的资源,降低了用户使用NPU算力的门槛和成本。多个用户共同使用一台服务器的NPU,并借助容器进行资源隔离,这种方式资源隔离性好,保证运行环境的稳定和安全,且资源分配与回收过程统一,从而方便多租户管理。
- Volcano
- Ascend Device Plugin
- Ascend Docker Runtime
- Ascend Operator
- ClusterD
- 安装组件请参见安装部署章节进行操作。
- 特性使用指导请参见基于vCANN-RT的虚拟化实例章节进行操作。
基础调度
整卡调度
支持用户运行训练或者推理任务时,将训练或推理任务调度到节点的整张NPU卡上,独占整张卡执行训练或者推理任务。整卡调度特性借助Kubernetes(以下简称K8s)支持的基础调度功能,配合Volcano或者其他调度器,根据NPU设备物理拓扑,选择合适的NPU设备,最大化发挥NPU性能,实现训练或者推理任务的NPU卡的调度和其他资源的最佳分配。
使用集群调度组件提供的Volcano组件,可以实现交换机亲和性调度和昇腾AI处理器亲和性调度。Volcano是基于昇腾AI处理器的互联拓扑结构和处理逻辑,实现了昇腾AI处理器最佳利用的调度器组件,可以最大化发挥昇腾AI处理器计算性能。关于交换机亲和性调度和昇腾AI处理器亲和性调度的详细说明,可以参见亲和性调度。
- 调度器(Volcano或其他调度器)
- Ascend Device Plugin
- Ascend Docker Runtime
- Ascend Operator
- Infer Operator
- ClusterD
- NodeD
- 安装组件请参见安装部署章节进行操作。
- 特性使用指导请参见整卡调度或静态vNPU调度(训练)章节进行操作。
静态vNPU调度
支持用户运行训练或者推理任务时,将训练或推理任务调度到节点的vNPU卡上,使用vNPU执行训练或者推理任务。静态vNPU调度特性借助Kubernetes(以下简称K8s)支持的基础调度功能,配合Volcano或者其他调度器,实现训练或者推理任务的vNPU卡的调度和其他资源的最佳分配。
训练任务及推理任务下需要安装以下组件:
- 调度器(Volcano或其他调度器)
- Ascend Device Plugin
- Ascend Docker Runtime
- Ascend Operator
- Infer Operator
- ClusterD
- NodeD
- 安装组件请参见安装部署章节进行操作。
- 特性使用指导请参见整卡调度或静态vNPU调度(训练)章节进行操作。
多级调度
功能特点
多级调度是ascend-for-volcano插件中的一种高级调度策略,专为具有复杂网络拓扑的NPU集群设计。多级调度是整卡调度的一种特殊场景,它根据NPU的网络拓扑层级关系将集群资源抽象为多层级结构,为NPU集群提供高效、灵活、可靠的调度能力。用户运行训练任务时,根据网络拓扑选择合适的NPU设备,最大化发挥NPU性能,实现训练任务的NPU卡调度的最佳分配。
所需组件
- Volcano
- Ascend Device Plugin
- Ascend Docker Runtime
- Ascend Operator
- ClusterD
- NodeD
使用说明
动态vNPU调度
动态vNPU调度需要Ascend Device Plugin组件上报其所在节点的可用AICore数目。虚拟化任务上报后,Volcano经过计算将该任务调度到满足其要求的节点。该节点的Ascend Device Plugin在收到请求后自动切分出vNPU设备并挂载该任务,从而完成整个动态虚拟化过程。该过程不需要用户提前切分vNPU,在任务使用完成后又能自动回收,支持用户算力需求不断变化的场景。
- Volcano
- Ascend Device Plugin
- Ascend Docker Runtime
- ClusterD
- NodeD
- 安装组件请参见安装部署章节进行操作。
- 特性使用指导请参见动态vNPU调度(推理)章节进行操作。
软切分调度
功能特点
软切分虚拟化调度需要Ascend Device Plugin组件上报其所在节点的可用芯片的AICore总百分比信息。虚拟化任务上报后,Volcano经过计算将该任务调度到满足其要求的节点,由Ascend Device Plugin根据任务的配置信息生成软切分配置文件并挂载到任务容器中供vCANN-RT使用。该功能通过向vCANN-RT提供软切分配置文件的方式,使用户可以按需申请NPU(昇腾AI处理器)资源,实现对NPU资源的精细化管理和动态分配,支持多个用户共同使用一台服务器的NPU资源。该虚拟化管理方式具有统一资源分配与回收能力,可满足多租户场景下反复申请、释放资源的动态操作需求,提升资源利用率。
所需组件
- Volcano
- Ascend Device Plugin
- Ascend Docker Runtime
- Ascend Operator
- ClusterD
使用说明
弹性训练
Note
本章节描述的是基于Resilience Controller组件的弹性训练,该组件已经日落,相关资料将于2026年9月30日的版本删除。最新的弹性训练能力请参见弹性训练。
训练节点出现故障后,集群调度组件将对故障节点进行隔离,并根据任务预设的规模和当前集群中可用的节点数,重新设置任务副本数,然后进行重调度和重训练(需进行脚本适配)。
- Ascend Device Plugin
- Ascend Docker Runtime
- Ascend Operator
- Volcano
- NodeD
- Resilience Controller
- ClusterD
推理卡故障恢复
集群调度组件管理的推理NPU资源出现故障后,将对故障资源(对应NPU)进行热复位操作,使NPU恢复健康。
- 调度器(Volcano或其他调度器)
- Ascend Device Plugin
- Ascend Docker Runtime
- ClusterD
- NodeD
推理卡故障重调度
集群调度组件管理的推理NPU资源出现故障后,集群调度组件将对故障资源(对应NPU)进行隔离并自动进行重调度。
- Ascend Device Plugin
- Ascend Docker Runtime
- Ascend Operator
- Infer Operator
- Volcano
- ClusterD
- NodeD
断点续训
当训练任务出现故障时,将任务重调度到健康设备上继续训练或者对故障芯片进行自动恢复。
-
故障检测:通过Ascend Device Plugin、Volcano、ClusterD和NodeD四个组件,发现任务故障。
-
故障处理:故障发生后,根据上报的故障信息进行故障处理。分为以下两种模式。
- 重调度模式:故障发生后将任务重调度到其他健康设备上继续运行。
- 优雅容错模式:当训练时芯片出现故障后,系统将尝试对故障芯片进行自动恢复。
-
训练恢复:在任务重新调度之后,训练任务会使用故障前自动保存的CKPT,重新拉起训练任务继续训练。
- Volcano
- Ascend Operator
- Ascend Device Plugin
- Ascend Docker Runtime
- NodeD
- ClusterD
- TaskD
- MindIO ACP(可选)
- MindIO TFT(可选)
- 安装组件请参见安装部署章节进行操作。
- 特性使用指导请参见断点续训章节进行操作。
- TaskD需安装在容器内,详细请参见制作镜像章节。
- MindIO ACP的详细介绍及安装步骤请参见Checkpoint保存与加载优化章节。
- MindIO TFT的详细介绍及安装步骤请参见故障恢复加速。
容器恢复
在无K8s的场景下,训练或推理进程异常后,通过配置容器恢复功能,可以进行容器故障恢复。
- 故障检测:通过Container Manager组件,发现任务故障。
- 故障处理:故障发生后,不需要人工介入就可自动恢复故障设备。
- 容器恢复:故障发生时,将容器停止,故障恢复后重新将容器拉起。
Container Manager