Project-HAMi/HAMi

GitHub: Project-HAMi/HAMi

HAMi 是一个用于 Kubernetes 的异构 AI 计算虚拟化中间件,旨在通过设备共享与资源隔离提高 GPU 和 NPU 等异构算力的利用率。

Stars: 3283 | Forks: 510

英文版 | [中文版](README_cn.md) | [日本語版](README_ja.md) [![LICENSE](https://img.shields.io/github/license/Project-HAMi/HAMi.svg)](/LICENSE) [![build status](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ca842477a5063233.svg)](https://github.com/Project-HAMi/HAMi/actions/workflows/ci.yaml) [![Releases](https://img.shields.io/github/v/release/Project-HAMi/HAMi)](https://github.com/Project-HAMi/HAMi/releases/latest) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9416/badge)](https://www.bestpractices.dev/en/projects/9416) [![Go Report Card](https://goreportcard.com/badge/github.com/Project-HAMi/HAMi)](https://goreportcard.com/report/github.com/Project-HAMi/HAMi) [![codecov](https://codecov.io/gh/Project-HAMi/HAMi/branch/master/graph/badge.svg?token=ROM8CMPXZ6)](https://codecov.io/gh/Project-HAMi/HAMi) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FProject-HAMi%2FHAMi.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FProject-HAMi%2FHAMi?ref=badge_shield) [![docker pulls](https://img.shields.io/docker/pulls/projecthami/hami.svg)](https://hub.docker.com/r/projecthami/hami) [![Contact Me](https://img.shields.io/badge/Contact%20Me-blue)](https://github.com/Project-HAMi/HAMi#meeting--contact) [![slack](https://img.shields.io/badge/slack-green?style=for-the-badge&logo=googlechat)](https://cloud-native.slack.com/archives/C07T10BU4R2) [![discord](https://img.shields.io/badge/discord-grey?style=for-the-badge&logo=discord)](https://discord.gg/Amhy7XmbNq) [![website](https://img.shields.io/badge/website-blue?style=for-the-badge&logo=readthedocs)](http://project-hami.io) ## Project-HAMi: 异构 AI 计算虚拟化中间件 ## 简介 HAMi(原名“k8s-vGPU-scheduler”)是一个用于 Kubernetes 的异构设备管理中间件。它可以管理不同类型的异构设备(如 GPU、NPU 等),在 pod 之间共享异构设备,并根据设备拓扑和调度策略做出更好的调度决策。 其目标是消除不同异构设备之间的差距,为用户提供统一的接口进行管理,而无需修改其应用程序。截至 2024 年 12 月,HAMi 不仅在互联网、公有云和私有云领域得到广泛应用,还被金融、证券、能源、电信、教育和制造业等多个垂直行业广泛采用。超过 50 家公司或机构不仅作为最终用户,也是积极的贡献者。 ![cncf_logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/65fc60b804063234.png) HAMi 是 [Cloud Native Computing Foundation](https://cncf.io/)(CNCF) 的 sandbox 和 [landscape](https://landscape.cncf.io/?item=orchestration-management--scheduling-orchestration--hami) 项目, 以及 [CNAI Landscape project](https://landscape.cncf.io/?group=cnai&item=cnai--general-orchestration--hami). ## 设备虚拟化 HAMi 通过支持设备共享和设备资源隔离,为包括 GPU 在内的多种异构设备提供设备虚拟化。有关支持设备虚拟化的设备列表,请参阅 [受支持的设备](#supported-devices) ### 设备共享 - 允许通过指定设备核心使用量来分配部分设备。 - 允许通过指定设备内存来分配部分设备。 - 对流多处理器(SM)实施硬限制。 - 无需修改现有程序。 - 支持 [dynamic-mig](docs/dynamic-mig-support.md) 功能,[示例](examples/nvidia/dynamic_mig_example.yaml) ### 设备资源隔离 设备隔离的简单演示: 一个具有以下资源的任务将在容器内看到 3000M 的设备内存: ``` resources: limits: nvidia.com/gpu: 1 # declare how many physical GPUs the pod needs nvidia.com/gpumem: 3000 # identifies 3G GPU memory each physical GPU allocates to the pod ``` ![img](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5e4742839a063235.jpg) 1. **安装 HAMi 后,节点上注册的 `nvidia.com/gpu` 值默认为 vGPU 的数量。** 2. **在 pod 中请求资源时,`nvidia.com/gpu` 指的是当前 pod 所需的物理 GPU 数量。** ### 受支持的设备 [NVIDIA GPU](https://github.com/Project-HAMi/HAMi#preparing-your-gpu-nodes) [Cambricon MLU](docs/cambricon-mlu-support.md) [HYGON DCU](docs/hygon-dcu-support.md) [Iluvatar CoreX GPU](docs/iluvatar-gpu-support.md) [Moore Threads GPU](docs/mthreads-support.md) [HUAWEI Ascend NPU](https://github.com/Project-HAMi/ascend-device-plugin/blob/main/README.md) [MetaX GPU](docs/metax-support.md) ## 架构 HAMi 由多个组件组成,包括一个统一的 mutatingwebhook、一个统一的 scheduler extender、针对每种异构 AI 设备的不同 device-plugins 以及不同的容器内虚拟化技术。 ## 快速开始 ### 选择您的编排器 [![kube-scheduler](https://img.shields.io/badge/kube-scheduler-blue)](#prerequisites) [![volcano-scheduler](https://img.shields.io/badge/volcano-scheduler-orange)](docs/how-to-use-volcano-vgpu.md) ### 前置条件 运行 NVIDIA 设备插件的前置条件列表如下: - NVIDIA drivers >= 440 - nvidia-docker version > 2.0 - 容器运行时 containerd/docker/cri-o 的默认运行时配置为 nvidia - Kubernetes version >= 1.18 - glibc >= 2.17 & glibc < 2.30 - kernel version >= 3.10 - helm > 3.0 ### 安装 首先,为您的 GPU 节点添加标签 "gpu=on",以便 HAMi 进行调度。如果没有此标签,我们的调度器将无法管理这些节点。 ``` kubectl label nodes {nodeid} gpu=on ``` 在 helm 中添加我们的仓库 ``` helm repo add hami-charts https://project-hami.github.io/HAMi/ ``` 使用以下命令进行部署: ``` helm install hami hami-charts/hami -n kube-system ``` 通过调整 [configs](docs/config.md) 来自定义您的安装。 使用以下命令验证您的安装: ``` kubectl get pods -n kube-system ``` 如果 `hami-device-plugin`(原名 `vgpu-device-plugin`)和 `hami-scheduler`(原名 `vgpu-scheduler`)pod 都处于 *Running* 状态,说明您的安装成功。您可以尝试 [这里](examples/nvidia/default_use.yaml) 的示例 ### WebUI 自 HAMi v2.4 起,[HAMi-WebUI](https://github.com/Project-HAMi/HAMi-WebUI) 可用 点击 [此处](https://github.com/Project-HAMi/HAMi-WebUI/blob/main/docs/installation/helm/index.md) 查看安装指南 ### 监控 安装后会自动启用监控。通过访问以下 URL 获取集群信息概览: ``` http://{scheduler ip}:{monitorPort}/metrics ``` 默认 monitorPort 为 31993;可以在安装过程中使用 `--set devicePlugin.service.httpPort` 设置其他值。 Grafana 仪表板 [示例](docs/dashboard.md) ## 注意事项 - 如果在使用设备插件配合 NVIDIA 镜像时未请求 vGPU,机器上的所有 GPU 可能会在您的容器中暴露。 - 目前,A100 MIG 仅支持 "none" 和 "mixed" 模式。 - 带有 "nodeName" 字段的任务目前无法调度;请改用 "nodeSelector"。 ## 会议与联系 HAMi 社区致力于营造开放和热情的环境,提供多种方式与其他用户和开发者交流。 如果您有任何问题,请随时通过以下渠道联系我们: - 定期社区会议:每周五 UTC+8 时间 16:00(中文)。[转换为您的时区](https://www.thetimezoneconverter.com/?t=14%3A30&tz=GMT%2B8&). - [会议纪要和议程](https://docs.google.com/document/d/1YC6hco03_oXbF9IOUPJ29VWEddmITIKIfSmBX8JtGBw/edit#heading=h.g61sgp7w0d0c) - [会议链接](https://meeting.tencent.com/dm/Ntiwq1BICD1P) - 邮箱:请参阅 [MAINTAINERS.md](MAINTAINERS.md) 查找所有维护者的邮箱地址。欢迎通过邮件联系我们报告问题或提出疑问。 - [邮件列表](https://groups.google.com/forum/#!forum/hami-project) ## 演讲与参考资料 | | 链接 | |------------------|-------------------------------------------------------------------------------------------------------------------------| | CHINA CLOUD COMPUTING INFRASTRUCTURE DEVELOPER CONFERENCE (北京 2024) | [Unlocking heterogeneous AI infrastructure on k8s clusters](https://live.csdn.net/room/csdnnews/3zwDP09S) 从 03:06:15 开始 | | KubeDay(日本 2024) | [Unlocking Heterogeneous AI Infrastructure K8s Cluster:Leveraging the Power of HAMi](https://www.youtube.com/watch?v=owoaSb4nZwg) | | KubeCon & AI_dev Open Source GenAI & ML Summit(中国 2024) | [Is Your GPU Really Working Efficiently in the Data Center?N Ways to Improve GPU Usage](https://www.youtube.com/watch?v=ApkyK3zLF5Q) | | KubeCon & AI_dev Open Source GenAI & ML Summit(中国 2024) | [Unlocking Heterogeneous AI Infrastructure K8s Cluster](https://www.youtube.com/watch?v=kcGXnp_QShs) | | KubeCon(欧洲 2024)| [Cloud Native Batch Computing with Volcano: Updates and Future](https://youtu.be/fVYKk6xSOsw) | ## 许可证 HAMi 采用 Apache 2.0 许可证。详情请参阅 [LICENSE](
标签:AI, AMD, CUDA, Device Plugin, DNS解析, EVTX分析, GPU, GPU切分, GPU虚拟化, HPC, MLOps, NIDS, Python工具, Scheduler, vGPU, 中间件, 云平台, 人工智能基础设施, 华为昇腾, 子域名突变, 容器化, 开源项目, 异构计算, 日志审计, 深度学习, 算力共享, 算力管理, 自动化代码审查, 虚拟化, 请求拦截, 资源调度, 资源隔离