最近一份覆盖数万Kubernetes集群的分析数据,把AI基础设施的尴尬摊开了:GPU平均利用率只有5%。CPU大概8%,内存20%,GPU反而垫底。这意味着企业掏钱买来的昂贵算力,95%时间在空转。健康水平大约在50%左右,差距巨大。有人把整机房的H100、H200囤着,却因为“怕抢不到”而长期闲置,结果账单照付,产出寥寥。
问题不在卡本身性能差,而在分配方式太粗暴。默认情况下,一个Pod请求nvidia.com/gpu: 1就独占整张物理卡。轻量推理、小模型微调、embedding服务,往往只用到10%-40%算力,剩下的全浪费。训练任务高峰期能冲到80%以上,但平均下来还是低。开发者习惯“先申请整卡再说”,实验跑完也不及时释放,节点就这么挂着烧钱。一张H100闲置一小时成本不低,团队规模稍大,一个月就能冒出好几万美元的隐形支出。
更糟的是,软件层面的时间共享(time-slicing)虽然能把一张卡虚拟成多个,但没有硬件隔离。一个任务OOM或者抢带宽,容易拖累邻居。生产环境尤其怕这种噪声。这时候,硬件级分区就派上用场了。
NVIDIA的Multi-Instance GPU(MIG)就是针对这事儿的。它把一张支持的卡(A100、H100、H200,以及更新的Blackwell系列)切成最多7个独立实例。每个实例有自己的计算核心、高带宽内存、缓存和带宽配额,故障完全隔离。一张卡可以同时跑多个不同大小的推理服务,或者混合训练+推理,互不干扰。管理员还能动态重配:白天切成多个小实例服务低吞吐推理,晚上合成大实例做训练。
实操上,Kubernetes环境最常见。先装好NVIDIA GPU Operator。然后通过ConfigMap定义分区配置。举例,H100 80GB常见几种:
- 1g.10gb:7个实例,适合小分类器或轻量embedding
- 2g.20gb:3个,适合7B级模型开发测试
- 3g.40gb:2个,适合中等规模推理或微调
- 全卡:留给大模型训练
配置大概长这样(简化版):

apiVersion: v1
kind: ConfigMap
metadata:
name: default-mig-parted-config
namespace: gpu-operator
data:
config.yaml: |
version: v1
mig-configs:
all-balanced:
- devices: all
mig-enabled: true
mig-devices:
"1g.10gb": 2
"2g.20gb": 1
"3g.40gb": 1应用后,给节点打标签激活,比如nvidia.com/mig.config=all-balanced。注意:改配置前必须drain节点,正在跑的Pod会被驱逐,所以选维护窗口,或者配好PodDisruptionBudget。Pod请求时直接写nvidia.com/mig-2g.20gb: 1就行,调度器会匹配对应实例。
有团队实测,原先一张卡只跑一个服务,利用率长期20%以下;切成多个后,同一硬件同时服务3-5个轻量任务,整体利用率轻松上到60%以上。再叠加上弹性,效果更明显。有人算过,把机队从60%推到85%有效利用率,相当于把固定成本摊到更多有用GPU小时上,单小时有效成本能降大约30%。
时间切片适合开发环境或极轻负载,配置更简单,通过GPU Operator开replicas就行,一张卡虚拟成4-8个。但没有内存隔离,vLLM这类默认占90%显存的服务得手动调低--gpu-memory-utilization,不然直接OOM。生产优先MIG。
动态资源分配(DRA)最近在Kubernetes 1.34正式GA,进一步解放了调度。不再死盯节点标签和计数器,工作负载可以直接声明需要的属性:多少显存、什么架构、是否支持NVLink。驱动发布ResourceSlice,调度更灵活。多租户、多模型混部场景特别香。配合MIG,能把碎片化资源拼得更紧。
监控是必须的。装DCGM Exporter,盯几个关键指标:GPU利用率、显存使用/空闲、功耗、时钟。设告警:利用率连续30分钟低于20%就提醒,可能是该缩容或重分区的信号;显存超90%持续5分钟,考虑换更大实例或再切一刀。Grafana有现成的NVIDIA仪表盘,直接套。

常见误区也得避。一是盲目全切最小实例,大模型KV缓存一上来就爆。先评估模型大小和batch,7B FP16大概14GB权重,加上下文再加几GB,2g.20gb可能紧,优先3g.40gb。二是忽略节点生命周期。实验节点跑完不自动缩到零,照样烧钱。用支持GPU的自动扩缩容,空闲30分钟就下线,预热时间3-8分钟要提前预留。三是全用按需实例,Spot比例极低。可中断的训练、批推理、预处理,Spot能省六成以上,配合检查点机制就行。四是不隔离通用服务。用Taint和Affinity把纯CPU的微服务挡在GPU节点外,专卡专用。
把这些串起来,中小团队就能把浪费压下去。白天用多个小MIG实例跑在线推理,晚上合成大卡做离线训练或微调;流量低时整体缩容,高峰再弹起来。云端弹性正好补位。像NexGpu这类云算力平台,提供灵活的GPU租赁和调度能力,能快速拉起支持MIG的实例,按需增减,不用自己囤硬件。实验阶段租小切片,生产扩全卡,成本跟着真实负载走,而不是跟着FOMO走。
实际落地时,建议分步走。先量测现有集群真实利用率,找出长期低负载节点。再挑一两张卡试MIG,跑混合负载验证隔离和性能。确认无误后,全量推,并接上自动扩缩和Spot策略。推理服务再叠连续批处理、PagedAttention、前缀缓存这些,利用率还能再抬一截。训练则关注数据管道是否喂得上,避免GPU干等。
有人担心切分后性能线性下降。硬件隔离保证了带宽和缓存专属,实测小实例上的推理延迟和吞吐更可预测,整体机房产出反而更高。多租户场景下,故障隔离尤其值钱——一个租户的OOM不会拖垮整张卡。
现在算力价格有回升迹象,H200等已有上调,再浪费不起。与其继续囤闲卡,不如把现有资源切细、调度活、监控紧。云端配合MIG,一张卡当几张用,弹性按需补,中小团队也能跑出接近大厂的效率。动手改配置比再下一单采购单更划算。试过的人基本回不去全卡独占的老路了。
NexGPU-算力租赁,GPU服务器,GPU云算力,AI服务器租用-新闻博客
评论(0)