Assistant我来帮你调研 HAMi 框架和 AWS 的 GPU 虚拟化实践以便为你设计完整的 GPU PaaS 平台动态虚拟化方案。基于对 HAMi 框架和 AWS 实践的调研我来为你设计一个完整的 GPU PaaS 平台动态虚拟化方案。GPU PaaS 平台动态虚拟化方案设计一、方案背景与目标根据 AWS 的实践经验1当前 GPU 虚拟化面临两大趋势小模型推理场景需要细粒度的显存隔离与算力共享大模型部署场景需要多卡资源弹性与固定显存配额本方案基于HAMi (Heterogeneous AI Computing Virtualization Middleware)框架为 Kubernetes 环境构建统一的 GPU 资源管理平台实现显存与算力的精细隔离与共享多租户场景下的资源配额控制动态资源调度与弹性伸缩二、技术架构设计根据 HAMi 官方文档23系统采用分层架构设计┌─────────────────────────────────────────────────────────────────┐ │ 用户层 (PaaS Portal) │ │ AI 模型市场 │ 资源申请界面 │ 监控仪表盘 │ 配额管理 │ ├─────────────────────────────────────────────────────────────────┤ │ 调度层 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ HAMi │ │ Volcano │ │ Kueue │ │ │ │ Scheduler │ │ Scheduler │ │ (Job Queue) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ 准入控制层 │ │ Mutating Webhook (Pod 资源拦截与环境变量注入) │ ├─────────────────────────────────────────────────────────────────┤ │ 设备管理层 │ │ HAMi Device Plugin │ Prometheus Metrics │ Web UI │ ├─────────────────────────────────────────────────────────────────┤ │ 运行时隔离层 │ │ HAMi Core (libvgpu.so) - LD_PRELOAD CUDA API 劫持 │ ├─────────────────────────────────────────────────────────────────┤ │ 硬件层 │ │ NVIDIA A100/T4 │ 华为昇腾 910B │ 海光 DCU │ 寒武纪 MLU │ └─────────────────────────────────────────────────────────────────┘核心组件职责组件职责说明Mutating Webhook拦截 Pod 请求注入配置自动设置 schedulerName、LD_PRELOAD、环境变量4HAMi SchedulerGPU 资源智能调度Filter → Score → Bind 三阶段调度Device Plugin节点侧设备注册与分配向 kubelet 上报虚拟 GPU 资源HAMi Core容器内运行时隔离劫持 cudaMalloc 等 API 实现显存限制三、核心功能设计3.1 资源虚拟化粒度根据 AWS 的实践1HAMi 支持以下维度的资源切分资源类型资源名称说明粒度vGPU 数量nvidia.com/gpu虚拟 GPU 实例数整数显存nvidia.com/gpumem设备显存大小MB算力nvidia.com/gpucoresGPU 核心百分比0-100%显存比例nvidia.com/gpumem-percentage显存占比百分比3.2 隔离机制对比根据调研信息134方案显存隔离算力隔离性能损耗适用场景NVIDIA MIG✅ 硬件级✅ 硬件级5%A100/H100 高端卡NVIDIA MPS❌ 共享✅ 时间片5-10%算力共享场景Time Slicing❌ 共享✅ 时间片10-15%简单复用HAMi✅ 软隔离⚠️ 软限制~18%全场景通用AWS 测试结论HAMi 在多任务并行时算力损耗约 18%但整体 GPU 利用效率显著提升是一种在可控开销下提升资源利用率的实用折中方案1。四、部署方案4.1 组件安装基于 AWS EKS 的部署实践1# 1. 给 GPU 节点打标签kubectl label nodes{node-name}gpuon# 2. 添加 HAMi Helm 仓库helm repoaddhami-charts https://project-hami.github.io/HAMi/# 3. 安装 HAMihelm upgrade-ihami hami-charts/hami-fmy-values.yaml-nkube-system4.2 配置文件设计# my-values.yaml - GPU PaaS 平台配置scheduler:kubeScheduler:imageTag:v1.33.1# 匹配 Kubernetes 版本nvidia:# 显存虚拟化比例 (1.0 不超分配, 1.0 超分配)deviceMemoryScaling:1.0# 每个 GPU 最大任务数deviceSplitCount:10# MIG 策略migstrategy:none# 是否禁用算力限制 (多任务共享算力设为 true)disablecorelimit:true# 默认显存分配 (MB, 0 使用 100% 显存)defaultMem:0# 默认 GPU 核心百分比defaultCores:0# 默认 GPU 数量defaultGPUNum:14.3 节点级配置根据 HAMi v2.8 文档54支持节点级配置覆盖{nodeconfig:[{name:gpu-node-training,operatingmode:hami-core,devicesplitcount:2,devicememoryscaling:1.0,libcudaloglevel:1},{name:gpu-node-inference,operatingmode:hami-core,devicesplitcount:8,devicememoryscaling:1.5,libcudaloglevel:1}]}五、场景化部署示例根据 AWS 实践的两种典型场景1场景一小模型部署显存隔离 算力共享apiVersion:v1kind:Podmetadata:name:inference-pod-smalllabels:app:inferencemodel-type:smallspec:containers:-name:inference-containerimage:inference:v1.0resources:limits:nvidia.com/gpu:1# 请求 1 个 vGPUnvidia.com/gpumem:4000# 请求 4GB 显存requests:nvidia.com/gpu:1nvidia.com/gpumem:4000效果多个小模型 Pod 共享同一物理 GPU 算力但各自拥有独立显存防止 OOM 相互影响。场景二大模型部署多卡 固定显存配额apiVersion:v1kind:Podmetadata:name:llm-podlabels:app:llmmodel-type:largespec:containers:-name:llm-containerimage:vllm:latestcommand:[python,serve.py]resources:limits:nvidia.com/gpu:4# 请求 4 张物理 GPUnvidia.com/gpumem:16000# 每卡 16GB 显存requests:nvidia.com/gpu:4nvidia.com/gpumem:16000关键说明当nvidia.com/gpu: 4时HAMi 会分配4 张物理 GPU 卡而非 4 个 vGPU 切片1。六、高可用与扩展设计6.1 Scheduler 高可用HAMi v2.8 引入了 Leader 选举机制5# Helm values 中启用scheduler:replicaCount:3# 部署多个副本leaderElect:true# 启用 Leader 选举优势避免多 Scheduler 实例调度冲突故障自动切换平滑升级无需人工干预6.2 DRA 原生支持HAMi v2.8 新增对 Kubernetes DRADynamic Resource Allocation的支持5apiVersion:v1kind:Podmetadata:name:dra-gpu-podspec:containers:-name:gpu-containerimage:nvidia/cuda:11.8.0-base-ubuntu22.04resources:limits:nvidia.com/gpu:2nvidia.com/gpumem:4096nvidia.com/gpucores:80DRA 模式下Webhook 自动将传统资源请求转换为 DRA ResourceClaim提供更标准化的资源管理。七、监控与可观测性7.1 Prometheus 指标HAMi 内置 Prometheus 指标端点3指标名称说明vGPUMemoryAllocatedvGPU 显存分配量vGPUCoreAllocatedvGPU 算力分配量hami_build_info版本构建信息7.2 Web UI 可视化HAMi v2.4 提供可选 Web UI3节点设备分配状态每 Pod 的显存/算力使用量历史指标与告警八、与其他方案的对比选型根据调研结论134维度HAMiNVIDIA MIGTime Slicing显存隔离✅ 精确控制✅ 硬件级❌算力隔离⚠️ 软限制✅ 硬件级⚠️ 时间片硬件兼容性全部 NVIDIA GPU仅 A100/H100全部 NVIDIA GPU多租户支持✅✅⚠️K8s 原生集成✅⚠️⚠️运维复杂度中高低选型建议高端卡A100/H100 强隔离需求优先考虑 MIG通用场景 灵活显存分配选择 HAMi快速验证 简单场景Time Slicing九、后续建议渐进式迁移先在开发/测试环境部署 HAMi验证稳定后再切入生产监控基线建立性能基准测试对比使用 HAMi 前后的 GPU 利用率容量规划根据 deviceSplitCount 和实际业务负载合理规划节点规模Quota 治理结合 ResourceQuota 实现多租户资源配额控制版本跟进关注 HAMi 社区更新特别是 v2.8 的 DRA 和高可用特性参考资料1AWS - 基于 HAMi 的 GPU 虚拟化实践https://aws.amazon.com/cn/blogs/china/gpu-virtualization-practice-based-on-hami/2HAMi 官方文档https://project-hami.io/zh/5HAMi v2.8.0 发布标准化与生态完整性的双重演进https://www.theriseunion.com/zh/blog/HAMi-2-8-0.html3Jimmy Song - HAMiKubernetes 上的异构算力虚拟化中间件https://jimmysong.io/zh/book/kubernetes-handbook/ai-native/hami/4John’s Blog - HAMi vGPU 介绍及原理分析https://johng.cn/ai/vgpu-hami基于 HAMi 的 GPU 虚拟化实践 | Amazon Web Services ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎Kubernetes 上的异构 GPU 共享 | HAMi ↩︎ ↩︎HAMiKubernetes 上的异构算力虚拟化中间件 | Jimmy Song ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎HAMi vGPU介绍及原理分析 | John’s Blog ↩︎ ↩︎ ↩︎ ↩︎ ↩︎HAMi v2.8.0发布标准化与生态完整性的双重演进 - 睿思智联 RiseUnion ↩︎ ↩︎ ↩︎ ↩︎