跳到主要内容
技术指南

HAMi:开源 GPU 虚拟化利器,让 AI 算力管理更简单

睿思智联
2025/7/18
HAMi:开源 GPU 虚拟化利器,让 AI 算力管理更简单

项目简介

HAMi(Heterogeneous AI Computing Virtualization Middleware,前身为 k8s-vGPU-Scheduler)是一个面向 Kubernetes 的异构设备管理中间件。它可以管理不同类型的异构设备(如 GPU、NPU、MLU、DCU 等),实现异构设备在 Pod 之间的共享,并基于设备拓扑和调度策略做出更优的调度决策。

HAMi 旨在消除不同异构设备之间的差异,为用户提供统一的管理接口,无需对应用程序进行任何修改。截至 2024 年 12 月,HAMi 除了在互联网、公有云、私有云等领域外,在金融、证券、能源、运营商、教育、制造业等垂直领域,也得到了广泛采纳。超过 40 家企业和机构不仅是最终用户,同时也是活跃的贡献者。

cncf_logo

HAMi 是 Cloud Native Computing Foundation(CNCF)基金会的沙箱项目和 landscape 项目,同时也是 CNAI Landscape 项目

版本发布

虚拟化能力

HAMi 可为多种异构设备提供虚拟化功能,支持设备共享和资源隔离。关于支持设备虚拟化的设备列表,请参见支持的设备

设备共享能力

  • 通过设置核心使用率(百分比),进行设备的部分分配
  • 通过设置显存(单位:MB),进行设备的部分分配
  • 对流式多处理器进行硬限制
  • 无需对现有程序进行任何修改
  • 支持动态 MIG 切片能力,参考样例

example

设备资源隔离能力

HAMi 支持设备资源的硬隔离。以 NVIDIA GPU 为例:

      resources:
        limits:
          nvidia.com/gpu: 1 # 请求 1 个 vGPU
          nvidia.com/gpumem: 3000 # 每个 vGPU 包含 3000M 显存

在容器内将只看到 3G 可见显存:

hard_limit

注意:

  1. 安装 HAMi 后,节点上注册的 nvidia.com/gpu 值默认为 vGPU 数量
  2. Pod 中申请资源时,nvidia.com/gpu 指当前 Pod 需要的物理 GPU 数量

支持的设备

设备共享显存隔离算力隔离说明
NVIDIA GPU支持 vGPU 与动态 MIG
华为昇腾 NPU910B/910C/310P 系列
寒武纪 MLUMLU 系列
海光 DCUDCU 系列
天数智芯 GPUCoreX 系列
摩尔线程 GPUMTT 系列
沐曦 GPUsGPU 管理
燧原 GCU百分比分配
昆仑芯 XPUvXPU 细粒度切分

项目架构

hami_arch

HAMi 由多个组件组成,包括统一的 mutatingwebhook、统一的调度器扩展器、不同的设备插件以及针对每种异构 AI 设备的容器内虚拟化技术。

快速开始

选择你的集群调度器

kube-scheduler volcano-scheduler

前置条件

  • NVIDIA 驱动 >= 440
  • nvidia-docker 版本 > 2.0
  • containerd/docker/cri-o 容器运行时的默认运行时配置为 nvidia
  • Kubernetes 版本 >= 1.18
  • glibc >= 2.17 & glibc < 2.30
  • 内核版本 >= 3.10
  • helm > 3.0

安装

  1. 通过添加标签 “gpu=on” 来标记你的 GPU 节点以进行 HAMi 调度。没有此标签的节点将无法被调度器管理。
kubectl label nodes {nodeid} gpu=on
  1. 使用 helm 添加 repo
helm repo add hami-charts https://project-hami.github.io/HAMi/
  1. 使用如下指令进行安装
helm install hami hami-charts/hami -n kube-system

通过调整配置来定制安装。

  1. 验证安装
kubectl get pods -n kube-system

如果 vgpu-device-pluginvgpu-scheduler pod 都处于 Running 状态,则安装成功。

WebUI

HAMi-WebUI 从 v2.4 版本开始可用。部署方式

webui-1 webui-2

提交任务示例

NVIDIA vGPUs 可通过资源类型 nvidia.com/gpu 被容器请求:

apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
spec:
  containers:
    - name: ubuntu-container
      image: ubuntu:18.04
      command: ["bash", "-c", "sleep 86400"]
      resources:
        limits:
          nvidia.com/gpu: "2" # 请求 2 个 vGPU
          nvidia.com/gpumem: "3000" # 每个 vGPU 申请 3000M 显存(可选)
          nvidia.com/gpucores: "30" # 每个 vGPU 的算力为 30%(可选)

注意:

  • 如果使用 privileged 字段,任务将不会被调度,因为它可见所有 GPU,会影响其它任务。
  • 不要设置 nodeName 字段,类似需求请使用 nodeSelector。

查看更多范例

监控

安装完成后,监控将自动启用。通过以下 URL 获取集群信息:

http://{scheduler_ip}:{monitorPort}/metrics

默认监控端口为 31993,安装时可通过 --set devicePlugin.service.httpPort 修改。Grafana 仪表板示例

演讲与参考资料

会议主题
KubeCon & AI_dev(China 2024)Is Your GPU Really Working Efficiently in the Data Center?
KubeCon & AI_dev(China 2024)Unlocking Heterogeneous AI Infrastructure K8s Cluster
KubeDay(Japan 2024)Leveraging the Power of HAMi
KubeCon(EU 2024)Cloud Native Batch Computing with Volcano
中国云计算基础架构开发者大会(2024)在 K8s 集群中解锁异构 AI 基础设施

社区

HAMi 社区致力于营造开放和友好的环境。

Star 趋势

Star History Chart

HAMi 企业版(Rise VAST)

Rise VAST睿思智联 携手 第四范式,在 HAMi 开源版基础之上推出的 企业版,增加了诸多企业级特性,包括算力和显存的超分、算力扩充和抢占、算力规格定义、NVLink 拓扑感知、差异化调度策略、企业级隔离性、资源配额控制、多集群管理、审计日志、高可用性保障、精细化运营分析等核心功能。通过对算力集群的统一管理、算力资源共享、按需分配和快速调度,全面释放异构算力的潜能。查看睿思智联和第四范式签约 HAMi 企业版的相关报道

想要了解更多?

点击下方按钮,直接与我们的专家团队建立联系