openFuyao技术讲堂 | vNPU:昇腾NPU算力切分和动态调度能力组件

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

所有评论(0)