一张GPU卡跑两个AI任务:HAMi在Kubernetes上实现GPU虚拟化共享

发布时间:2026/10/17 2:32:16
一张GPU卡跑两个AI任务:HAMi在Kubernetes上实现GPU虚拟化共享 一张GPU卡跑两个AI任务HAMi在Kubernetes上实现GPU虚拟化共享【免费下载链接】HAMiHeterogeneous GPU Sharing on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ha/HAMiHAMiHeterogeneous AI Computing Virtualization Middleware是 Kubernetes 上的 GPU 虚拟化共享与异构加速器调度项目多个 Pod 按显存和算力份额共用同一张卡彼此隔离互不干扰。 从一个场景说起小任务为什么独占整张卡想象一台装着 4 张 V100每张 32G的节点。用户 A 的小训练任务每张卡只要 10G 显存却得按整卡申请用户 B 的推理服务每张卡要 20G同样只能整卡占。传统整卡分配下4 张卡全被两个任务拿走每张卡还有一半显存闲着——集群利用率卡在 50%。接入 HAMi 后卡被按显存和算力份额切开同样的负载只占 2 张卡另外 2 张完整释放给新任务。应用不用改一行代码GPU 利用率直接从 50% 翻到 100%。️ 一张图看懂HAMi四个角色各管一摊HAMi 的定位一句话夹在 Kubernetes 调度生态和异构加速器之间的虚拟化层提供虚拟化、共享、隔离、调度四种能力。把四个组件想成四个角色新手很快能建立直觉Mutating Webhook 是门卫Pod 提交时拦截请求把设备参数写进 Pod调度器扩展器是裁判做设备感知的过滤、评分与绑定决定 Pod 上哪个节点、哪张卡设备插件是管家执行 Allocate()配置容器运行时看到的设备监控系统是保安持续采集 vGPU 显存、核心利用率喂给监控看板。核心代码在 cmd/调度器与设备插件分两个进程交付。 它是怎么干活的一个Pod的完整旅程现在你提交一个推理 Pod。kubectl apply 之后请求先经过 Mutating Webhook 被做上标记接着 HAMi 调度器以每张卡当前的显存、核心占用为输入做过滤和评分绑定后把分配结果写进 Pod 注解。节点上的设备插件监听到注解调用 Allocate()再借助容器内虚拟化组件lib/ 下的 preload 库接管进程的设备访问——容器里看到的是一块被限额的虚拟 GPU谁也抢不走别人的份额。最后监控系统把这个 vGPU 的用量采回指标系统链路闭环。共享显存怎么申请资源声明里加几行就够了resources: limits: nvidia.com/gpu: 1 nvidia.com/gpumem: 3000 nvidia.com/gpucores: 30含义是占 1 张物理卡但只给 Pod 3000MB 显存和 30% 的算力。完整写法见 examples/nvidia/default_use.yaml。️ 从零到一键装好Helm部署五步走动手前确认环境NVIDIA 驱动 ≥ 440、容器运行时已把 nvidia 设为默认 runtime、Kubernetes ≥ 1.23、glibc ≥ 2.17、内核 ≥ 3.10、Helm 3.0。第一步给节点打标随后添加仓库并安装kubectl label nodes node-name gpuon helm repo add hami-charts https://project-hami.github.io/HAMi/ helm repo update helm install hami hami-charts/hami -n kube-system确认 hami-scheduler 和 hami-device-plugin 都 Running再跑一个示例负载验证kubectl get pods -n kube-system kubectl apply -f examples/nvidia/default_use.yamlPod 起来、容器里能看到 GPU说明全链路通了。Chart 在 charts/hami/可按需调整 values。 进阶能力调度策略怎么选监控能看什么策略实现在 pkg/scheduler/policy/按你的目标选binpack把任务尽量塞进少数卡、少数节点腾出空闲资源适合追求利用率与降本spread把任务摊开、减少互相干扰适合多租户要公平的场景拓扑感知在支持的硬件上按 GPU 拓扑组合设备降低跨 NUMA 通信开销适合多卡训练动态 MIG为支持的 NVIDIA 卡动态创建、缓存、回收 MIG 实例见 docs/develop/dynamic-mig-lifecycle.md适合不能被噪声干扰的稳定切片。装完监控即默认开启调度器默认在 31993 端口暴露指标Prometheus 可直接抓取看板上能看到每个 vGPU 的显存、核心实时利用率与分配趋势。HAMi 还配了独立 WebUI资源概览、节点性能 Top5、GPU 类型分布都在这里还能按 1 小时、1 天等时间窗回看使用率。排障时先看这两张图多数玄学资源问题能直接定位。 它适合谁设备家族与三类典型场景支持的加速器后端都在 pkg/device/ 下覆盖 NVIDIA GPU、华为昇腾 NPU、寒武纪 MLU、海光 DCU、摩尔线程 GPU、沐曦 MetaX、天数智芯、昆仑芯、燧原 GCU、壁仞、AMD、AWS Neuron 等异构集群可以用同一套调度分配流程管理。三类适配场景私有云 AI 平台把多类加速卡池化按配额共享统一入口、公平分配多租户服务Notebook、训练、vLLM 推理跑在同一张卡池上按显存与算力互相隔离科研与批量计算与 Volcano、Kueue 等调度生态配合支撑队列式批量 AI 负载。 常见坑与解法设备插件起不来hami-device-plugin 反复重启时先查节点 gpuon 标签是否打上再确认容器运行时已把 nvidia 设为默认 runtimePod 日志里通常有明确原因。调度不生效Pod 能起但显存请求没被认出来多半是 hami-scheduler 没 Running 或 Webhook 没拦住请求确认两者状态并检查 YAML 是否正确声明了 gpumem / gpucores。性能不达预期先上看板判断是不是显存限额太小导致频繁抖动再调整 limits 或在 binpack / spread 之间切换同时确认驱动版本达标。✍️ 写在最后HAMi 做的事本质是把卡变成容量加速器被切成可调度、可隔离的份额小任务不再独占整卡异构卡说同一种调度语言。它已是 CNCF 孵化项目与 Volcano、Kueue、Prometheus 等生态工具可以顺畅搭配。想深入实现细节把仓库拉下来从源码读起git clone https://gitcode.com/GitHub_Trending/ha/HAMi【免费下载链接】HAMiHeterogeneous GPU Sharing on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ha/HAMi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询