将开源vGPU方案 HAMi(Hardware-Accelerated Multi-Instance)的核心功能和技术要点概述如下:1. **背景**: HAMi 是一个开源的虚拟GPU解决方案,旨在为虚拟化环境提供硬件加速的GPU共享功能。它允许多个虚拟
摘要:本文主要对开源的 vGPU 方案 HAMi 的 GPU Core&Memory 隔离功能进行测试。 省流: HAMi vGPU 方案提供的 Core&Memory 隔离基本符合预期: Core
本文主要对开源的 vGPU 方案 HAMi 的 GPU Core&Memory 隔离功能进行测试。
省流:
HAMi vGPU 方案提供的 Core&Memory 隔离基本符合预期:
Core 隔离:Pod 能使用的算力会围绕设定值波动,但是一段时间内平均下来和申请的 gpucores 基本一致
Memory 隔离:Pod 中申请的 GPU 内存超过设定值时会直接提示 CUDA OOM
1.环境准备
简单说一下测试环境
GPU:A40 * 2
K8s:v1.23.17
HAMi:v2.3.13
GPU 环境
使用 GPU-Operator 安装 GPU 驱动、Container Runtime 之类的,参考 ->GPU 环境搭建指南:使用 GPU Operator 加速 Kubernetes GPU 环境搭建
然后安装 HAMi,参考->开源 vGPU 方案:HAMi,实现细粒度 GPU 切分
测试环境
直接使用 torch 镜像启动 Pod 作为测试环境就好
docker pull pytorch/pytorch:2.4.1-cuda11.8-cudnn9-runtime
测试脚本
可以使用 PyTorch 提供的 Examples 作为测试脚本
https://github.com/pytorch/examples/tree/main/imagenet
这边是一个训练的 Demo,会打印每一步的时间,算力给的越低,每一步耗时也就越长。
具体用法也很简单:
先克隆项目
git clone https://github.com/pytorch/examples.git
然后启动服务模拟消耗 GPU 的任务即可
cd /mnt/imagenet/
python main.py -a resnet18 --dummy
配置
需要在 Pod 中注入环境变量 GPU_CORE_UTILIZATION_POLICY=force,默认的限制策略时该 GPU 只有一个 Pod 在使用时就不会做算力限制。
ps:这也算是一种优化,可以提升 GPU 利用率,反正闲着也是闲着,如果要强制限制就必须增加环境变量
完整 Yaml
以 hostPath 方式将 examples 项目挂载到 Pod 里进行测试,并将 command 配置为启动命令。
通过配置 vGPU 限制为 30% 或者 60% 分别做测试。
