openFuyao  /  技术讲堂

vNPU:昇腾NPU算力切分和动态调度能力组件

细粒度共享提升AI训推资源利用率

01 / INTRODUCTION

特性介绍

昇腾NPU(神经网络处理器)是AI训练与推理的核心算力载体。然而在Kubernetes集群中,一张NPU卡只能被一个容器独占使用,推理服务只用了10%的算力,剩余90%却在空转;工程师调试时申请整卡,其他人只能排队等卡释放。NPU资源利用率降低、成本分摊困难,成为AI平台规模化落地的一大障碍。

为此,openFuyao社区推出了vNPU特性——构建在容器平台之上的昇腾NPU算力切分和动态调度能力组件。它支持多个容器共享同一NPU设备的同时,具备显存和AI Core资源的隔离能力,从而显著提升NPU资源利用率,打造一体化极简易用的昇腾NPU算力接入和纳管方案。

vNPU提供了软硬双模切分、多样化调度策略与可观测能力,让NPU资源从“整卡独占”走向“细粒度共享”。

02 / CAPABILITIES

核心能力

01算力切分:

软硬双模可按节点粒度配置;软切分支持只限制显存不限制AI Core,支持固定配额、弹性、争抢三种AI Core调度策略。

02集群调度:

基于Volcano扩展NPU资源调度插件,支持资源共享调度、binpack/spread调度、整卡调度,以及基于DRA的调度。允许同一节点上部分容器使用整卡、部分容器共享一张卡。

03可观测:

xpu-exporter采集vNPU切分模式、调度策略、显存使用率、vNPU数量、Pod数量等指标,对接Prometheus。

03 / SCENARIOS

应用场景

vNPU适用于在Kubernetes集群中运行AI训练/推理负载、希望以更细粒度共享昇腾NPU资源的场景,具体包括:

01多租户推理服务:

同一张昇腾NPU卡上并发承载多个推理服务实例,每个实例按需申请显存和AI Core配额,降低单实例成本。

02AI开发环境共享:

多名算法工程师在同一物理卡上各占一份vNPU作为开发调试环境,互不影响显存使用。

03训练与推理混部:

同一节点上同时承载训练和推理任务,通过调度策略(binpack/spread)控制Pod在节点和设备上的分布,平衡资源利用率与故障隔离。

04资源精细化运营:

通过xpu-exporter对接Prometheus采集vNPU使用率、Pod数量等指标,支撑容量规划和成本核算。

04 / HOW IT WORKS

实现原理

vNPU由四个核心组件协作完成NPU资源的发现、调度、挂载与监控,整体工作流程如下:

01xpu-device-plugin:

通过Kubernetes Device Plugin机制向kubelet上报节点上的NPU设备及可切分资源(注册到huawei.com/vnpu-*资源),并向节点注解huawei.com/node-vnpu-register写入设备详情(dieID、芯片类型等字段)。

02volcano-vxpu-plugin:

扩展Volcano调度器,在Pod调度阶段根据Pod声明的huawei.com/vnpu-*资源量、切分模式、调度策略,从候选节点的可用vNPU中筛选合适的节点和设备,完成过滤和打分。

03npu_client_update:

在节点侧部署软切分劫持库,业务Pod启动时由device plugin挂载劫持库到容器内,实现AI Core和显存的隔离限制。

04xpu-exporter:

持续采集vNPU运行时指标(切分模式、显存利用率、vNPU数量等),通过Prometheus暴露供监控。

图1 vNPU实现原理图

Pod调度关键时机:

Pod声明spec.schedulerName: volcano后,调度由Volcano接管。

Volcano调用volcano-vxpu-plugin执行NPU资源过滤与打分,选定节点与设备。

Pod绑定到节点后,device plugin根据调度结果通过Allocate回调向容器挂载设备文件和劫持库。

Pod启动业务进程时,劫持库接管CANN Runtime调用,按声明配额执行AI Core时间片调度和显存隔离。

05 / GET STARTED

安装部署及使用

vNPU的部署需先在节点上安装HDK驱动、部署Ascend Docker Runtime并开启NPU设备共享模式,再通过Helm Chart部署vNPU组件(npu-client-update、npu-device-plugin、xpu-exporter)与Volcano调度器,支持在线与离线两种场景。部署完成后,业务Pod只需声明huawei.com/vnpu-*资源并指定spec.schedulerName: volcano,即可按需申请vNPU数量、AI Core使用率与显存大小,无需修改业务代码。详细的前提条件、构建步骤、Chart参数配置与Pod配置样例请参考官方文档vNPU-安装。

完整配置字段说明与更多的样例(软切分、硬切分、整卡、指定dieID等)请参考使用vNPU。

06 / ROADMAP

未来展望

vNPU 在 v26.09已搭建起“软硬双模切分 + 多样化集群调度 + 可观测”的完整骨架。站在这个起点上,openFuyao 社区将会沿以下方向继续演进。

01全系芯片覆盖:

以即将落地软切分端到端适配的昇腾950PR 为起点,依托其dev_id(芯片/设备的型号标识 ID,驱动用它区分不同芯片)体系与DCMI V2(昇腾设备管理接口(第二代),用于查询/控制 NPU 状态)抽象层,将切分能力以芯片声明的方式推广到 950 全系与后续代际,待 HDK 补齐硬切分模板后同步打通硬切分路径,实现新老芯片长期共存下的“一套调度器、一次接入”。

02算力精细化运营:

将即将落地的算力优先级抢占从单卡时间片扩展到集群维度,结合跨节点算力借用与负载均衡重调度,与npu-dra-plugin的DRA调度融合,让混部场景下的在线QoS与离线吞吐同时最优,告别节点热点与算力碎片。

03生产就绪与生态协同:

补齐优先级维度的可观测指标与混部使用规范,跟进Volcano新版本适配,并与 Agent 沙箱、权重分发等能力联动,让vNPU成为昇腾算力进入云原生AI负载的入口。

07 / RESOURCES

资源参考

了解更多vNPU项目信息,请访问openFuyao项目仓库-vNPU:https://gitcode.com/openFuyao/vNPU

如需体验openFuyao v26.09部署,请前往openFuyao下载中心获取安装包:https://www.openfuyao.cn/zh/download/

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐