K8S场景下:华为NPU+基于HAMI VNPU能力整体介绍
·
摘要
最近把HAMI vnpu的软硬切分能力测完了,写一篇整体的介绍,最主要的结论是当前vnpu的能力都无法直接用到生产,本身能力与周边可靠性、可观测性等能力缺失太多。
一、引言:为什么需要vNPU?
1.1 背景
- 算力资源稀缺 :NPU卡价格昂贵,单卡成本数十万
- 资源利用率低 :传统独占模式下,多数推理场景GPU或者NPU利用率比较低,很多小模型根本不需要独占一张卡
- 云原生需求 :Kubernetes环境下的细粒度资源调度需求
1.2 核心目标
- 实现NPU资源的 虚拟化和共享
- 提高集群资源利用率
- 支持多租户公平共享
二、华为官方调度现状分析
2.1 整卡调度
官方搭配: volcano调度器与ascend-device-plugin实现整卡调度
其他调度只要ascend-device-plugin都可以实现
2.2 硬切分vnpu调度
官方文档: https://www.hiascend.com/document/detail/zh/mindcluster/2600/clustersched/dlug/docs/zh/scheduling/usage/basic_scheduling/06_dynamic_vnpu_scheduling_inference.md


华为官方 软切分实战
https://www.hiascend.com/developer/techArticles/20260310-1?envFlag=1
2.3 Volcano 调度器与华为 NPU DevicePlugin 整卡调度架构
下面是 Volcano 调度器与华为 NPU DevicePlugin 实现 NPU 整卡调度的整体架构图:
架构组件说明:
-
Volcano Scheduler:
- 作为 Kubernetes 的扩展调度器,负责 NPU 资源的批量调度
- 支持 Gang Scheduling(组调度),确保 NPU 相关 Pod 同时调度
- 提供高级调度策略:优先级、抢占、回填等
-
华为 NPU DevicePlugin:
- 负责 NPU 设备的发现、注册和生命周期管理
- 向 Kubelet 上报节点上的 NPU 资源(如
huawei.com/npu: 4) - 处理容器对 NPU 设备的请求,执行设备挂载和清理
-
Kubelet:
- 通过 DevicePlugin API 与 NPU DevicePlugin 通信
- 管理节点上的设备资源分配
-
NPU 硬件层:
- 华为 Ascend 系列 NPU 卡(如 Ascend 910)
- 支持整卡调度模式,每个 Pod 独占一张 NPU 卡
调度流程详解:
-
资源注册阶段:
- NPU DevicePlugin 启动后向 Kubelet 注册可用 NPU 资源
- Kubelet 将资源信息上报到 API Server
-
调度决策阶段:
- 用户提交包含 NPU 资源请求的 Pod 或 Volcano Job
- Volcano Scheduler 查询各节点的 NPU 资源状态
- 根据调度策略选择合适节点
-
资源分配阶段:
- Volcano Scheduler 将 Pod 绑定到目标节点
- Kubelet 创建容器时,通过 DevicePlugin 分配 NPU 设备
- DevicePlugin 执行设备挂载,容器获得 NPU 访问权限
-
监控与运维:
- DevicePlugin 上报 NPU 使用指标到监控系统
- 运维人员通过 Grafana 查看 NPU 资源利用率
关键配置示例:
# Pod 资源请求示例
apiVersion: v1
kind: Pod
metadata:
name: npu-inference-pod
spec:
containers:
- name: inference-container
image: ascend-inference:latest
resources:
limits:
huawei.com/npu: 1 # 请求整张 NPU 卡
requests:
huawei.com/npu: 1
# Volcano Job 示例(支持 Gang Scheduling)
apiVersion: batch.volcano.sh/v1alpha1
kind: Job
metadata:
name: distributed-training
spec:
schedulerName: volcano
minAvailable: 4
tasks:
- replicas: 4
name: worker
template:
spec:
containers:
- name: worker
image: ascend-training:latest
resources:
limits:
huawei.com/npu: 1
requests:
huawei.com/npu: 1
这种架构实现了 NPU 资源的 Kubernetes 原生管理,结合 Volcano 的高级调度能力,能够满足 AI 训练和推理任务对 NPU 整卡调度的需求。
三、华为NPU支持能力
3.1 Ascend系列NPU架构
3.2 CANN Runtime支持
3.3 硬件虚拟化能力
四、Hami扩展方案
4.1 Hami Scheduler架构
4.2 vNPU核心组件
4.3 调度流程
五、软硬vNPU对比分析
5.1 两种模式对比
5.2 配置方式
5.3 当前实现问题
六、演进方向与方案
6.1 短期改进
6.2 中期规划
6.3 长期愿景
七、实践建议
7.1 部署建议
7.2 监控指标
八、总结与展望
更多推荐


所有评论(0)