技术深度解析
核心欺骗在于nvidia-smi如何定义GPU利用率。该指标在NVIDIA管理库(NVML)中技术上称为“GPU利用率”,它测量的是在采样周期内,至少有一个内核在GPU上执行的时间占比。这本质上是一个二进制的占用计数器——而非已完成计算工作量的度量。
考虑一个典型的Transformer推理工作负载。单个注意力内核可能启动并占用GPU 10微秒,但在此期间,只有一部分可用的流式多处理器(SM)处于活动状态。作为矩阵乘法主力的张量核心可能处于空闲状态,因为该内核受内存限制。同时,内存带宽可能仅饱和到其峰值的20%。然而,nvidia-smi报告了100%的利用率,因为内核正在运行。
这好比通过工厂前门是否打开来衡量其利用率,而不是根据实际组装了多少产品。结果是:一个看似完全繁忙的GPU,其实际交付的计算能力可能仅为理论峰值FLOPs的1%-10%。
Utilyze是一款开源工具,可在GitHub上获取(仓库:`utilyze/utilyze`,目前拥有2300+星标),它通过更低层级对GPU进行检测来解决这一问题。它不再轮询内核占用率,而是使用NVIDIA的CUPTI(CUDA性能分析工具接口)来捕获实际的内核执行时长和内存传输量。然后,它计算“计算吞吐率”——在给定时间窗口内,已实现的FLOPs与理论峰值FLOPs之比。这直接衡量了GPU执行了多少有用计算。
| 指标 | 测量内容 | 仪表盘显示100%时的典型值 |
|---|---|---|
| nvidia-smi GPU利用率 | 内核占用时间 | 100% |
| Utilyze计算吞吐率 | 已实现FLOPs / 峰值FLOPs | 1%-10% |
| 内存带宽利用率 | 实际带宽 / 峰值带宽 | 10%-30% |
| SM活跃周期 | 至少有一个线程束活跃的周期 | 30%-60% |
数据要点: 该表揭示了鲜明的脱节。当nvidia-smi报告完美利用率时,实际计算吞吐率和内存带宽使用率却低得惊人。这意味着团队正在为他们并未使用的GPU容量付费,通常超出10倍甚至更多。
Utilyze的方法并非没有代价。CUPTI检测会引入开销——通常对监控的工作负载造成2%-5%的性能损失——并且需要对GPU驱动程序的根级访问权限。这使得它不适用于每一毫秒都至关重要的生产推理服务,但对于容量规划和成本优化审计而言,它极具价值。
关键参与者与案例研究
GPU利用率欺骗多年来一直是AI基础设施的隐性税负,但直到最近才有工具将其曝光。关键参与者分为三类:延续错误指标的现有企业、提供修正方案的初创公司,以及夹在中间的超大规模云服务商。
NVIDIA 是问题的首要来源。nvidia-smi和NVML是GPU监控的事实标准,被所有主要云提供商和监控工具使用。NVIDIA并未优先考虑修复这一指标,很可能是因为虚高的利用率数字使其硬件看起来比实际更高效,从而支撑其高价策略。然而,NVIDIA自身的性能分析工具如Nsight Systems和Nsight Compute能提供准确数据——但它们是为开发者设计的,而非用于实时监控仪表盘。
云服务商(AWS、Google Cloud、Azure)都在其监控控制台中使用源自nvidia-smi的指标。AINews已确认,AWS的CloudWatch GPU指标、GCP的Cloud Monitoring以及Azure的Monitor都报告了同样有缺陷的利用率百分比。这意味着每个依赖这些仪表盘的AI团队都在基于谎言做出资源配置决策。例如,一个在AWS上看到90% GPU利用率的团队可能决定不缩减其集群规模,而实际上他们只使用了9%的计算能力。
Utilyze(由前NVIDIA工程师创立)是最突出的修正工具。该工具已被多家AI实验室采用,包括一家中等规模的生成式AI初创公司。该公司在运行Utilyze审计后,将其GPU集群从200块A100缩减至40块——实现了5倍的成本削减。该公司的CTO告诉AINews:“我们原以为利用率是95%。Utilyze显示只有8%。我们每年在闲置的张量核心上烧掉了200万美元。”
| 工具 | 指标 | 准确性 | 开销 | 最佳使用场景 |
|---|---|---|---|---|
| nvidia-smi | 内核占用率 | 低 | 0% | 快速健康检查 |
| Utilyze | 计算吞吐率 | 高 | 2%-5% | 容量规划、审计 |
| NVIDIA Nsight | 全面性能分析 | 非常高 | 5%-15% | 开发、调试 |
| DCGM(NVIDIA) | 多种GPU指标 | 中等 | 0%-2% | 集群监控 |
数据要点: 该表显示了准确性与开销之间的明确权衡。Utilyze提供了高准确性,但代价是适度的性能开销和访问权限要求。