项目简介
HAMi:针对 Kubernetes 的异构 AI 计算虚拟化中间件,用于管理和调度各种异构设备,如 GPU 和 NPU,以实现设备资源的共享和隔离
HAMi,原名“k8s-vGPU-scheduler”,是管理Kubernetes中异构设备的中间件。它可以管理不同类型的异构设备(如GPU、NPU等),在Pod之间共享异构设备,根据设备的拓扑信息和调度策略做出更好的调度决策。
它旨在消除不同异构设备之间的差距,为用户提供一个统一的管理接口,且无需更改应用程序。截至 2024年6月,HAMi已广泛应用于全球互联网/云/金融/制造等多个行业,被超过40多家公司或机构采纳。他们中的许多不仅是最终用户,也是项目积极的贡献者。
HAMi 是Cloud Native Computing Foundation(CNCF)基金会的sandbox项目和landscape项目,并且是 CNAI Landscape project.
虚拟化能力
HAMi通过支持设备共享和设备资源隔离,为包括GPU在内的多个异构设备提供设备虚拟化。有关支持设备虚拟化的设备列表,请参阅 [支持的设备](#支持设备)
设备复用能力
允许通过指定显存来申请算力设备
算力资源的硬隔离
允许通过指定算力使用比例来申请算力设备
对已有程序零改动
设备资源隔离能力
HAMi支持设备资源的硬隔离 一个以NVIDIA GPU为例硬隔离的简单展示:一个使用以下方式定义的任务提交后
resources:
limits:
nvidia.com/gpu: 1 # requesting 1 vGPU
nvidia.com/gpumem: 3000 # Each vGPU contains 3000m device memory
会只有3G可见显存
项目架构图
HAMi 包含以下几个组件,一个统一的mutatingwebhook,一个统一的调度器,以及针对各种不同的异构算力设备对应的设备插件和容器内的控制组件,整体的架构特性如上图所示。
快速入门
安装要求
NVIDIA drivers >= 440 NVIDIA 驱动程序>= 440
nvidia-docker version > 2.0
nvidia-docker 版本 > 2.0docker/containerd/cri-o已配置nvidia作为默认runtime
Kubernetes version >= 1.16
Kubernetes 版本>= 1.16glibc >= 2.17 & glibc < 2.3.0
glibc >= 2.17 & glibc < 2.3.0kernel version >= 3.10 内核版本>= 3.10
helm > 3.0 舵 > 3.0
安装
首先使用helm添加我们的 repo
helm repo add hami-charts https://project-hami.github.io/HAMi/
随后,你需要将所有要使用到的GPU节点打上gpu=on标签,否则该节点不会被调度到
kubectl label nodes {nodeid} gpu=on
使用下列指令获取集群服务端版本
kubectl version
在安装过程中须根据集群服务端版本(上一条指令的结果)指定调度器镜像版本,例如集群服务端版本为1.16.8,则可以使用如下指令进行安装
helm install hami hami-charts/hami --set scheduler.kubeScheduler.imageTag=v1.16.8 -n kube-system
你可以修改这里的配置来定制安装
通过kubectl get pods指令看到 vgpu-device-plugin
与 vgpu-scheduler
两个pod 状态为Running 即为安装成功
kubectl get pods -n kube-system
项目链接
https://github.com/Project-HAMi/HAMi/blob/master/README_cn.md
扫码加入技术交流群,备注「开发语言-城市-昵称」
合作请注明
关注「GitHubStore」公众号