技术博客

HAMi 是什么?Kubernetes GPU 共享运维要关注哪些问题?

HAMi 已成为 CNCF Incubating 项目,面向 Kubernetes 提供 GPU 和异构加速器虚拟化能力。本文解释它解决的问题、核心组件和运维检查点。

HAMiGPU共享KubernetesCNCF

GPU 昂贵,真正让平台团队头疼的不是“有没有 GPU”,而是 GPU 经常被低效使用。一个小推理服务可能只需要几 GB 显存,却占了一整张卡;多个团队同时排队申请 GPU,资源碎片越来越严重;不同厂商的加速器又有不同的插件和管理方式。

HAMi 正是为这个问题出现的。2026 年 7 月,CNCF 宣布 HAMi 成为 Incubating 项目。它的定位是 Kubernetes 上的开源、云原生 GPU 虚拟化中间件,可以把物理 GPU 或其他加速器按显存、核心或设备数切分给不同工作负载。

HAMi 解决什么问题

从运维视角看,HAMi 主要解决三类问题:

第一,GPU 切分。让一个物理设备可以被多个工作负载共享,而不是简单整卡分配。

第二,资源隔离。限制容器实际可用的显存和算力,避免一个任务把整张卡吃满。

第三,调度策略。根据 binpack、spread、拓扑感知等策略选择合适节点和设备,减少碎片。

这对教育、云平台、企业 AI 平台都很有价值。不是所有任务都需要整卡训练,很多实验、开发、推理、微调场景都更适合共享 GPU。

HAMi 的核心组件

官方介绍中 HAMi 包含几个关键组件:

运维排障时,要知道这些组件分别在什么命名空间、什么节点、用什么日志。

kubectl get pods -A | grep -i hami
kubectl get mutatingwebhookconfigurations | grep -i hami
kubectl logs -n <namespace> <hami-scheduler-pod>
kubectl describe pod <gpu-workload> -n <namespace>

什么时候适合使用 HAMi

适合:

不一定适合:

共享 GPU 不是免费午餐。它提升利用率,也带来隔离、性能、故障定位和容量规划复杂度。

运维上线前检查清单

第一,明确共享策略。哪些命名空间可以共享 GPU?哪些任务必须独占整卡?

第二,定义资源规格。比如按显存切分时,常用规格是 4Gi、8Gi、16Gi,还是按比例?

第三,启用监控。至少需要 GPU 利用率、显存使用、温度、错误数、Pod 到 GPU 的映射。

第四,验证隔离。一个 Pod 超出显存限制时,是否会被正确限制?是否影响同卡其他 Pod?

第五,做故障演练。杀掉 HAMi 组件、重启 GPU 节点、删除 Pod,看资源是否能恢复。

常见问题 FAQ

HAMi 和 MIG 是一回事吗?

不是。MIG 是 NVIDIA 部分 GPU 的硬件级切分能力,HAMi 是 Kubernetes 层面的多厂商 GPU 虚拟化中间件。两者关注层不同。

HAMi 会不会影响性能?

共享资源一定要关注性能抖动。对开发、实验、推理任务影响通常可接受;对严肃训练任务要压测后再决定。

为什么它进入 CNCF Incubating 值得关注?

Incubating 表示项目在社区、采用、治理和成熟度上比 Sandbox 更进一步。对企业选型来说,这是一个重要信号。

初学者应该学 HAMi 吗?

如果目标是 AI 平台运维、Kubernetes GPU 运维,值得学。普通 Linux 运维可以先理解 GPU 共享和调度基本概念。

参考资料