项目概述
HAMi(异构AI计算虚拟化中间件)是一个面向Kubernetes的异构设备管理中间件。它能够管理不同类型的异构设备(如GPU、NPU、MLU、DCU等),实现设备在Pod之间的共享,并基于设备拓扑和调度策略做出更优的调度决策。
作为CNCF沙盒项目,HAMi旨在消除不同异构设备之间的差异,为用户提供统一的管理接口,无需对应用程序进行任何修改。
核心特性
设备虚拟化能力
HAMi为多种异构设备提供虚拟化功能,支持设备共享和资源隔离:
- 设备共享:通过设置核心使用率和显存大小,实现设备的部分分配
- 资源隔离:对流式多处理器进行严格限制,确保资源使用边界
- 零修改部署:无需对现有程序进行任何修改即可使用
- 动态MIG支持:提供灵活的MIG切片管理能力
架构设计
HAMi采用模块化架构设计,包含以下核心组件:
- 统一MutatingWebhook:实现请求的统一处理和策略适配
- 调度器扩展器:增强Kubernetes原生调度能力
- 多样化设备插件:适配不同厂商的异构AI设备
- 容器内虚拟化技术:针对每种设备提供专门的虚拟化方案
环境准备与安装部署
系统要求
- NVIDIA驱动:版本不低于440
- 容器运行时:Docker/NVIDIA-Docker版本大于2.0,配置nvidia运行时
- Kubernetes集群:版本1.18及以上
- 基础依赖:glibc版本2.17-2.30,内核版本3.10+
- Helm工具:版本3.0+
GPU节点配置
对于基于Debian的系统(包括Docker和containerd):
echo 'deb https://nvidia.github.io/libnvidia-container/stable $(lsb_release -cs) main' | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
容器运行时配置
Docker环境配置示例:
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
配置完成后需要重启Docker服务。对于containerd环境,需要修改config.toml文件并重启服务。
节点标签策略
为GPU节点添加调度标识:
kubectl label nodes <节点名称> gpu=on
HAMi核心部署
添加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
确认hami-device-plugin和hami-scheduler都处于Running状态表示安装成功。
资源管理与调度
设备资源申请
在Pod中申请异构设备资源的示例:
resources:
limits:
nvidia.com/gpu: 1
nvidia.com/gpumem: 3000
上述配置将申请1个虚拟GPU,每个虚拟GPU包含3000M设备内存。
资源隔离机制
HAMi支持设备资源的严格隔离,确保每个容器只能访问分配给它的资源:
监控与运维
监控功能
安装后自动启用监控功能,可通过以下地址获取集群信息概览:
http://{调度器IP}:31993/metrics
默认监控端口为31993,可在安装时通过参数自定义。
Web管理界面
从HAMi v2.4版本开始,提供了Web管理界面,方便用户进行可视化操作和管理。
升级与维护
系统升级
卸载现有版本:
helm uninstall hami -n kube-system
更新仓库并安装新版本:
helm repo update
helm install hami hami-charts/hami -n kube-system
注意事项
- 使用NVIDIA镜像时,如果不请求虚拟GPU,机器上的所有GPU可能会在容器内暴露
- 目前A100 MIG仅支持"none"和"mixed"模式
- 带有"nodeName"字段的任务目前无法调度,请使用"nodeSelector"代替
总结
HAMi作为一个成熟的异构AI计算虚拟化中间件,已经在多个行业得到广泛应用。通过本文的完整指南,您可以快速掌握HAMi的安装、配置和使用方法,在Kubernetes集群中高效管理和分配异构AI计算资源。
随着AI计算需求的不断增长,HAMi将继续演进,为用户提供更强大的异构设备管理能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考






