HAMi v2.9.0 发布:昇腾用户态切分、DRA 正式可用与调度生态扩展
HAMi 社区正式发布 HAMi v2.9.0。这是一个在异构设备虚拟化深度、调度器生态扩展与 Kubernetes 原生标准落地层面具有里程碑意义的版本。
v2.9.0 引入了昇腾 910C HAMi-core 模式、HAMi-DRA 正式可用、项目发布以及 Volcano vGPU 升级至 v0.19 等重磅特性,同时在可观测性、安全性、稳定性等方面进行了系统性增强,共有 19 位新贡献者首次参与。
本文将对 v2.9.0 的主要更新进行详细说明。
核心特性与能力更新
本节介绍 HAMi v2.9.0 的核心特性与能力更新,涵盖异构设备虚拟化、DRA 标准接口、调度器生态和上游组件对齐等 方面。
昇腾 910C HAMi-core 虚拟化模式
HAMi v2.9.0 为华为昇腾(Ascend)设备引入了 HAMi-core 模式,实现了用户态虚拟化拦截,无需修改业务代码即可获得显存与算力的细粒度共享能力。
HAMi-core 通过纯软件方式在用户态拦截和管控 ACL(Ascend Computing Language)调用,实现了显存 MB 级别、算力百分比级别的细粒度切分。同一张昇腾 910C 可以同时服务多个不同规格的推理或训练任务,无需修改业务代码,也无需特定硬件支持。
相比传统的 SR-IOV 硬件切分方案,HAMi-core 在切分粒度和灵活性上有质的飞跃:
| 维度 | 独占模式 | SR-IOV | HAMi-core(v2.9) |
|---|---|---|---|
| 显存切分 | 不可切分 | 按 VF 固定分配 | MB 级别精确控制 |
| 算力切分 | 不可切分 | 按 VF 比例分配 | 百分比级别灵活配置 |
| 切分数量 | 1 Pod/卡 | 通常 2-4 VF/卡 | 10+ Pod/卡 |
| 是否需要硬件支持 | 否 | 是 | 否 |
| 是否需要修改 业务代码 | 否 | 否 | 否 |
例如,一张 64GB 显存的昇腾 910C,可以按如下方式同时分配给多个任务:
# 任务 1:大模型推理,32GB 显存 + 50% 算力
resources:
limits:
huawei.com/Ascend910C: "1"
huawei.com/Ascend910C-core: "50"
huawei.com/Ascend910C-memory: "32768"
# 任务 2:模型微调,16GB 显存 + 30% 算力
resources:
limits:
huawei.com/Ascend910C: "1"
huawei.com/Ascend910C-core: "30"
huawei.com/Ascend910C-memory: "16384"
# 任务 3:轻量推理,8GB 显存 + 20% 算力
resources:
limits:
huawei.com/Ascend910C: "1"
huawei.com/Ascend910C-core: "20"
huawei.com/Ascend910C-memory: "8192"
核心能力包括:
- Ascend 910C 超节点支持:针对 SuperPod 环境实现了 module-pair 级别的资源分配,充分发挥超节点在分布式训练中的硬件优势
- vNPU-Core 虚拟化:新增
hami-vnpu-core资源类型,支持基于注解的节点过滤与多设备请求,实现更灵活的算力切分策略 - 用户态拦截:以不侵入业务容器的方式实现显存与算力的软切分,显著提升单卡承载任务数
用户在部署 HAMi 时,将 values 中 ascend.hamiVnpuCore 设置成 true 即可开启本特性。也可以在 ascend-device-plugin 的节点配置中开启。支持一个集群中某些节点开启,某些节点关闭。
需要注意的是,在 2.9 版本,用户 Pod 需要在注解中显式地声明 huawei.com/vnpu-mode: 'hami-core' 才能使用本特性。未被声明的 Pod 仍然会使用上个版本的按照模版的 vNPU 切分方式,若无可用节点,则会导致任务 pending。
该特性已在招商银行生产环境中得到验证。招商银行基于 HAMi-vNPU-Core 软切分方案,实现了昇腾 910C 算力资源 100% 入池与大模型高性能通信,显著提升了国产算力资源利用率。
感谢华为云加拿大实验室和招商银行 @ashergaga 对本功能的贡献。
本版本同时更新了 HAMi-core 性能基准测试数据,详细的 benchmark 流程请参 考项目文档。
HAMi-DRA 解决方案:轻量版 HAMi
HAMi v2.9.0 中,HAMi-DRA 正式达到可用状态,已升级至 v0.2.0。HAMi-DRA 是基于 Kubernetes Dynamic Resource Assignment(DRA)标准的独立实现项目,定位为"轻量版 HAMi"。
DRA 可以作为 HAMi 与其它调度器的标准连接方案,可以在 volcano、kai-scheduler 等自定义调度器上即插即用,不再需要进行代码层面的改动。
DRA 是 Kubernetes 社区正在推进的下一代设备资源声明与分配机制。HAMi-DRA 的核心理念是:
- 不改变用户习惯:继续使用 Device Plugin 语法,底层自动转换为 DRA 资源模型
- 内部消化复杂性:Webhook、Driver、生命周期管理全部由系统处理
- 通过社区协作推动演进:来自不同公司的贡献者在真实生产环境中验证方案
当前 HAMi-DRA 已实现面向 NVIDIA / Ascend / Enflame 三大平台的方案落地。通过原生 Kubernetes 能力简化调度链路,统一调度层屏蔽底层硬件差异,实现异构算力统一管理。
HAMi-DRA 项目地址:https://github.com/Project-HAMi/HAMi-DRA