Skip to content

Latest commit

 

History

History
187 lines (124 loc) · 9.58 KB

README_cn.md

File metadata and controls

187 lines (124 loc) · 9.58 KB

English version|中文版

LICENSE build status Releases OpenSSF Best Practices Go Report Card codecov FOSSA Status docker pulls slack discuss website Contact Me

Project-HAMi:异构 AI 计算虚拟化中间件

简介

HAMi(前身为 '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切片能力,样例

设备资源隔离能力

HAMi支持设备资源的硬隔离 一个以 NVIDIA GPU 为例硬隔离的简单展示:

      resources:
        limits:
          nvidia.com/gpu: 1 # 请求 1 个虚拟 GPU
          nvidia.com/gpumem: 3000 # 每个虚拟 GPU 包含 3000M 设备内存

在容器内将看到 3G 设备内存

img

注意:

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

支持的设备

nvidia GPU cambricon MLU hygon DCU iluvatar GPU mthreads GPU ascend NPU metax GPU

架构

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

快速开始

选择你的调度器

kube-scheduler volcano-scheduler

前置条件

运行 NVIDIA 设备插件的前置条件如下:

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

安装

首先,通过添加标签 "gpu=on" 来标记你的 GPU 节点以进行 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

通过调整配置来自定义你的安装。

使用以下命令验证你的安装:

kubectl get pods -n kube-system

如果 vgpu-device-pluginvgpu-scheduler pod 都处于 Running 状态,则安装成功。你可以在这里尝试示例。

Web 界面

HAMi-WebUI 从 HAMi v2.4 版本开始可用

安装指南请点击这里

监控

安装后自动启用监控。通过访问以下 URL 获取集群信息概览:

http://{scheduler ip}:{monitorPort}/metrics

默认 monitorPort 为 31993;可以在安装时使用 --set devicePlugin.service.httpPort 设置其他值。

Grafana 仪表板示例

注意 在提交任务之前不会收集节点状态

注意事项

  • 如果在使用带有 NVIDIA 镜像的设备插件时不请求虚拟 GPU,机器上的所有 GPU 可能会在容器内暴露
  • 目前,A100 MIG 仅支持 "none" 和 "mixed" 模式
  • 带有 "nodeName" 字段的任务目前无法调度;请使用 "nodeSelector" 代替

社区治理

本项目由一组维护者和提交者管理。他们的选择和管理方式在我们的治理文档中有详细说明。

如果你有兴趣成为贡献者并希望参与 HAMi 代码开发,请查看 CONTRIBUTING 了解提交补丁和贡献工作流程的详细信息。

查看路线图了解你感兴趣的内容。

会议与联系方式

HAMi 社区致力于营造开放和友好的环境,提供多种方式与其他用户和开发者互动。

如果你有任何问题,请随时通过以下渠道与我们联系:

演讲和参考资料

链接
中国云计算基础架构开发者大会 (Beijing 2024) 在 Kubernetes 集群式解锁异构 AI 基础设施 Starting from 03:06:15
KubeDay(Japan 2024) Unlocking Heterogeneous AI Infrastructure K8s Cluster:Leveraging the Power of HAMi
KubeCon & AI_dev Open Source GenAI & ML Summit(China 2024) Is Your GPU Really Working Efficiently in the Data Center?N Ways to Improve GPU Usage
KubeCon & AI_dev Open Source GenAI & ML Summit(China 2024) Unlocking Heterogeneous AI Infrastructure K8s Cluster
KubeCon(EU 2024) Cloud Native Batch Computing with Volcano: Updates and Future

许可证

HAMi 采用 Apache 2.0 许可证。详情请参见 LICENSE 文件。