在 AI 研发中,GPU 已经成了最核心的生产资料。但随之而来的是一个巨大的成本黑洞:影子租户。
这种现象在压力大的交付期尤为明显。比如 2026 年二季度,英伟达 H200 面临停产与出口管制,国内芯片价格水涨船高(参考《H200停产后,国产芯片谁能扛训练?》)。很多团队发现,虽然集群利用率曲线看起来很平稳,但月度账单却在飙升,预算很快见底。问题就出在那些“看不见”的算力消耗上。
谁在偷偷占用你的 GPU?
所谓的“影子租户”,就是那些未经授权、没被监控,却持续吃资源的负载。在实际工程中,它们通常长这样:
- 被遗忘的临时环境:工程师为了调试临时开了个命名空间或 Pod,任务跑完忘了删。如果
restartPolicy设成了Always,这些 Pod 就会像幽灵一样一直运行。 - 僵尸 Pod:因为脚本死锁、无限循环或配置错误导致卡死。它们不产出任何结果,但显存一直被占着。
- 过度申请(Over-provisioning):
requests和limits设得太高。资源被“预订”了,但实际在空转。 - 资源“占坑”:某个团队预估需要 100 张卡,但为了保险申请了 200 张。峰值才用到 120 张,剩下的 80 张大部分时间在浪费。
在 FinOps 的视角下,这些都是典型的“未归属成本”(Unattributed Cost)。
用 Prometheus 给集群做次“审计”
要清理,得先能看见。对于 K8s GPU 集群,Prometheus 是最好的审计工具,但不能只看默认指标,得写自定义查询来揪出异常。
基于 nvidia-dcgm-exporter 和 Kubernetes Metrics Server,可以重点关注这三类指标:
1. 找出“占位不干活”的 Pod
# 查询过去 24 小时内,GPU 平均利用率低于 10% 的 Pod
avg by (pod) (DCGM_FI_DEV_GPU utilization{container!="POD"}[24h:1h]) < 10
结合 kube_pod_labels 标签,能直接追溯到是哪个项目组在浪费。
2. 揪出超期运行的测试 Pod
# 创建超过 72 小时,且名称包含 test/tmp/debug 的 Pod
(time() - kube_pod_created{namespace!="kube-system"} > 259200)
and
(kube_pod_labels{pod=~".*-(test|tmp|debug)-.*"} == 1)
一个测试 Pod 跑了三天还没关,大概率是被遗忘了。
3. 识别“显存爆满但计算空闲”的死锁 Pod
# 显存使用率 > 90%,但计算利用率 < 5% 且持续 1 小时
DCGM_FI_DEV_FB_USED / DCGM_FI_DEV_FB_FREE > 0.9
and
DCGM_FI_DEV_GPU utilization < 5
and
DCGM_FI_DEV_GPU utilization offset 1h < 5
这是典型的模型加载后陷入死锁或等待数据的症状。
将这些结果在 Grafana 中做成“浪费热力图”,按命名空间着色。在某 AI 团队的实践中,仅靠这一步就发现了 40% 的潜在浪费点。
怎么清理才不会误杀?
发现目标后,不能直接 kubectl delete,否则可能会误杀生产任务。建议采取分级处理:
- 危险级:生产任务但配置异常 $ ightarrow$ 立即告警,人工介入。
- 警告级:名称含 test/tmp 等且运行超 72 小时 $ ightarrow$ 自动通知业主,打上标记标签。
- 清理级:运行超 14 天的测试 Pod,或被标记警告后仍未处理的僵尸 Pod $ ightarrow$ 自动删除。
这里有个工程细节:清理 Operator 必须限制并发数(比如每分钟最多删 5 个),且优先处理非生产命名空间,避免对集群调度造成冲击。
把成本意识变成“肌肉记忆”
单次大扫除没用,得在工作流里建立机制:
- 强制标签化:所有负载必须带
team、project、cost-center标签。没标签的 Pod 直接拒绝调度,或自动被归类为“影子租户”优先清理。 - 资源“护照”机制:借鉴私有化部署中的安全思路,申请测试 GPU 时必须声明预计使用时长。到期自动回收,需要继续用则手动续约,从源头杜绝“申请后即遗忘”。
- 成本看板公开化:把 Prometheus 的浪费数据直接挂在 Grafana 看板上,按团队对比。当工程师看到自己的团队每月浪费掉数万元算力时,自觉性会提高很多。
算力虽然不说话,但账单会。清理影子租户不仅是写几个脚本,更是建立一种对资源负责的文化。通过这套监控和治理,企业能直接省下 30% 以上的非核心算力浪费——这笔钱省下来,足够多雇几个高级 AI 工程师。