跑大模型推理,GPU 利用率到底多少才算正常?我见过太多团队,砸了几十万租了 A100/H100,打开 nvidia-smi 一看,GPU 利用率只有 20%–30%。说白了,钱花了大半,算力白扔了七成。
要点速览:
1. GPU 利用率低≠显卡不行——90% 的推理性能瓶颈出在数据搬运和任务调度上,不是 GPU 算力不够。
2. 监控不能只看"GPU-Util"一个指标——SM 利用率、显存带宽利用率、PCIe 带宽、GPU 温度这四个维度合起来才能定位瓶颈。
3. Nsight Systems 是微观定位的"手术刀",DCGM 是宏观监控的"心电图",Prometheus + Grafana 是生产环境"仪表盘"——三套方案各有用场。
4. 优化三板斧:数据加载异步化、模型并行策略调整、批次大小(batch size)调优——上过手的都知道,这三项弄好了,推理吞吐能翻倍。
5. 一万网络深耕 IDC 19 年,GPU 定制方案支持工程师 1 对 1 部署 CUDA/TensorRT 全栈,监控工具链预装,开机就能跑 profiling。
很多人打开 nvidia-smi,看到 GPU-Util 显示 95%,就觉得 GPU 跑满了。这是个典型误区。nvidia-smi 报告的 GPU-Util 是"在过去采样周期内,至少有一个 kernel 在运行的百分比",它不告诉你 GPU 的计算单元到底干了多少"有效活"。一个极端例子:一个 kernel 只用了 1% 的 SM(流式多处理器),但在 1 秒内持续提交,GPU-Util 照样显示 100%。你以为跑满了,实际上 99% 的算力在空转。
真正能反映 GPU 计算效率的是以下几个指标:
SM 利用率(Streaming Multiprocessor Utilization)——这才是 GPU 核心的"真实负载"。SM 利用率告诉你 GPU 的计算单元有多少在真正执行指令。推理场景里,如果 SM 利用率低于 50%,问题大概率出在显存带宽瓶颈或数据加载延迟上。
显存带宽利用率(Memory Bandwidth Utilization)——大模型推理是典型的"带宽饥饿"场景。一个 7B 参数的模型,每次推理要把整个模型参数从 HBM 搬运到 SM,这个过程消耗的不是算力,是带宽。显存带宽利用率超过 80% 时,SM 利用率再低也没用——瓶颈在搬运,不在计算。
PCIe 带宽利用率——多卡推理场景,模型切分到多张 GPU,卡间通信依赖 NVLink 或 PCIe。PCIe 带宽打满会导致通信延迟飙升,推理延迟翻倍。这个指标平时没人看,但踩过坑的人都知道它有多关键。
GPU 温度与功耗——温度超过 85°C 会触发降频,显存频率从 1593 MHz 掉到 1000 MHz 以下,推理吞吐直接腰斩。监控温度不是为了"保护显卡",而是为了发现散热不足导致的隐性性能损失。
训练场景 GPU 利用率通常比较高(70%–90%),因为训练是连续计算密集型任务。推理则完全相反——推理请求是离散的、不连续的,GPU 不断地在"干活→等数据→干活→等数据"之间切换。一个典型的在线推理服务,GPU 利用率能到 40%–50% 就算不错了。所以推理场景的利用率优化,核心不是"把 GPU 跑满",而是"让 GPU 在干活的时候效率最高,不干活的时候别浪费钱"。
NVIDIA Nsight Systems 是定位单次推理延迟瓶颈的利器。它能精确到每个 CUDA kernel 的执行时间、显存搬运耗时、CPU 端的预处理开销。我一般这样用:跑一次推理请求,用 nsys profile 抓 trace,然后看三个东西——第一,kernel 执行时间占比(低于 50% 说明计算不是瓶颈);第二,Memcpy 耗时(超过 30% 说明数据搬运有问题);第三,CPU 端的 gaps(CPU 在等什么)。
Nsight Systems 的缺点也很明显:它不适合生产环境。每次 profiling 会产生大量 trace 数据,对性能有侵入性,更适合开发/测试阶段做一次性的深度分析。
DCGM 是 NVIDIA 官方出品的 GPU 集群监控框架,专门面向数据中心场景。它通过 dcgm-exporter 暴露细粒度指标,包括 SM 利用率、显存带宽利用率、PCIe 读写吞吐、GPU 温度、功耗、ECC 错误计数等 100+ 指标。相比 nvidia-smi 的粗粒度轮询,DCGM 的采样精度高得多,而且对 GPU 性能影响极小(<1%)。
DCGM 的部署不复杂:在 GPU 节点上跑 dcgm-exporter 容器,暴露 Prometheus 格式的 metrics endpoint,然后让 Prometheus 来抓取。我见过不少团队只装了个 nvidia-smi 定时脚本就以为"监控到位了",结果出了问题连回溯数据都没有。DCGM 是生产环境的最低要求。
Prometheus 负责存时序数据,Grafana 负责画仪表盘。这套组合本身不复杂,关键是你怎么设计 Dashboard。我推荐必看的几个面板:
第一个面板:GPU 总览——每张卡的 SM 利用率、显存利用率、温度、功耗,按时间序列展示。一眼能看出哪个节点在"摸鱼"。
第二个面板:推理延迟与吞吐——和 GPU 指标放在同一时间轴,这样能直接关联"GPU 利用率下降→P99 延迟飙升"的因果关系。
第三个面板:PCIe 与 NVLink 吞吐——多卡推理时这个面板尤为重要。NVLink 带宽利用率如果超过 80%,说明卡间通信成了瓶颈。
第四个面板:任务队列深度——推理请求在队列里等了多少个。队列深度涨但 GPU 利用率没涨,说明瓶颈在 CPU 调度或数据预处理,不在 GPU。
| 监控方案 | 定位层级 | 核心指标 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|---|
| Nsight Systems | 单次推理 | Kernel 耗时、Memcpy、CPU Gaps | 开发/测试 debug | 精确到微秒、可定位到具体 kernel | 侵入性强、不适合生产 |
| DCGM | 节点/集群 | SM/显存/PCIe/温度/ECC | 生产环境持续监控 | 100+ 指标、性能影响 <1% | 依赖 Prometheus 生态 |
| Prometheus + Grafana | 全栈 | 聚合指标、可视化 | 生产 Dashboard | 灵活定制、历史回溯 | 需要设计 Dashboard |
| nvidia-smi 脚本 | 单卡 | GPU-Util / 显存 / 温度 | 临时检查 | 零部署、零成本 | 指标粗粒度、无法回溯 |
这是推理场景最常见的"病"。SM 利用率不到 30%,但显存带宽利用率飙到 90% 以上——说明 GPU 计算单元一直在等数据从显存搬过来。大模型推理的本质是"访存密集型"任务,模型参数越大、batch size 越大,带宽瓶颈越明显。解决办法:换用带宽更高的 GPU(如 H100 的 HBM3 带宽比 A100 的 HBM2e 高 1.5 倍),或者用 TensorRT 做算子融合减少显存访问次数。
两个指标都低,说明 GPU 根本没在干活。问题出在 CPU 端的数据预处理和加载上。推理请求的 tokenization、图像预处理、batch 组装这些操作在 CPU 上完成,如果 CPU 处理速度跟不上 GPU 的推理速度,GPU 就会"饿着"。解决办法:用异步数据加载(如 NVIDIA DALI),或者把预处理放到 GPU 上做(如用 GPU 做 tokenization)。
SM 利用率高本来是好事,但伴随着 GPU 温度超过 85°C、显存频率下降,说明散热不足。GPU 降频后性能损失可能达到 30%–50%。很多租用服务器配了 A100 但散热只给风冷,夏天满载直接降频。解决办法:选液冷方案(液冷电费比风冷省 20%–40%,预估,以咨询为准),或者检查机房制冷是否达标。
多卡推理场景,如果一张卡利用率 90%、另一张卡只有 20%,大概率是模型切分不合理导致卡间通信负载不均。PCIe 带宽打满会进一步加剧问题。解决办法:用 NVLink 替代 PCIe 互联(8 卡 A100 通过 NVSwitch 实现 600GB/s 卡间带宽),或者调整模型并行策略。
数据加载是推理 pipeline 的第一环,也是最容易被忽视的一环。默认的 PyTorch DataLoader 单进程加载,CPU 端预处理会成为瓶颈。我建议:
第一,用多进程 DataLoader,num_workers 设为 CPU 核数的一半到三分之二。别贪多,workers 太多反而增加 IPC 开销。
第二,用 NVIDIA DALI(Data Loading Library)。DALI 把数据加载和预处理 pipeline 放到 GPU 上,绕过了 CPU 瓶颈。实测对图像类推理任务,DALI 能把数据加载延迟从 10ms 压到 2ms 以内。
第三,预处理异步化。推理请求的 tokenization、padding、attention mask 生成这些操作,在请求到达时立即异步执行,等 GPU 空闲时直接取结果。别让 GPU 等 CPU 算 token。
大模型推理常用的并行策略有三种:张量并行(Tensor Parallelism)、流水线并行(Pipeline Parallelism)、数据并行(Data Parallelism)。选错了策略,GPU 利用率怎么都上不去。
张量并行适合单机多卡场景。把一层 transformer 的计算切分到多张 GPU 上,每张卡算一部分。优点是卡间负载均衡,缺点是卡间通信频繁。NVLink 互联的机器(如一万网络的 A100 8 卡整机,NVLink 600GB/s)跑张量并行效率最高。
流水线并行适合多机场景。把模型的层切分到不同 GPU 上,A 卡算第 1–10 层,B 卡算第 11–20 层。缺点是存在"气泡"——A 卡算的时候 B 卡在等。解决办法是加大微批次(micro-batch),让流水线尽量填满。
数据并行适合推理场景。每个 GPU 上都放一份完整的模型,各自处理不同的推理请求。利用率最高,但显存占用也最大。模型超过单卡显存时,必须用前两种并行。
实际选择标准:模型能塞进单卡显存,优先数据并行;模型超过单卡显存但在 8 卡内,优先张量并行+NVLink;模型超过 8 卡显存,上流水线并行。
batch size 对推理吞吐的影响不是线性的。batch size 太小,GPU 算力浪费(每次 kernel launch 的开销固定);batch size 太大,显存带宽成为瓶颈,单次推理延迟飙升。每个模型在每张 GPU 上都有一个"甜蜜点"。
我的经验方法:从 batch size=1 开始,逐步翻倍,每次记录推理延迟和吞吐量。当吞吐量不再随 batch size 增长而增长时,就是甜蜜点。对 LLaMA 7B 在 A100 40G 上做 FP16 推理,甜蜜点通常在 batch size=16–32 之间;对 70B 模型,batch size=4–8 就差不多了。
另外,别忽略了动态 batch(dynamic batching)——把一小段时间内到达的请求攒起来,凑成一个 batch 再推理。这样既能提高吞吐,又能控制延迟。VLLM、TensorRT-LLM 都内置了 dynamic batching 支持。
2026 年主流推理引擎有三个:NVIDIA TensorRT-LLM、vLLM、Hugging Face TGI。TensorRT-LLM 优化最激进,通过图优化、kernel 融合、FP8/INT4 量化,能把 A100 推理吞吐推到极致。vLLM 的 PagedAttention 解决了显存碎片问题,对长上下文场景友好。TGI 最成熟,但优化空间有限。
选型建议:追求极致吞吐用 TensorRT-LLM,长上下文场景用 vLLM,快速验证用 TGI。一万网络的 GPU 定制方案预装 TensorRT-LLM 和 vLLM,工程师帮你把优化跑好再交付。
关键词维度:A100 40G | 8核64G | 200G+200G | 100M BGP | 月付 ¥2800 | 年付 8 折 | TensorRT-LLM 预装
对推理场景来说,A100 40G 的性价比非常能打。单卡就能跑 7B 模型 FP16 推理(约 14GB 显存),batch size 开到 32 没问题。配合 TensorRT-LLM 做 INT8 量化,7B 模型推理延迟能压到 30ms 以内。一万网络这套配置月付 ¥2800(官网价),年付 8 折后约 ¥26880/年,折算下来一天不到 74 块钱。配置里包含 100M BGP 独享带宽,国内用户延迟低,适合做在线推理 API 的后端部署。
适配场景:7B–13B 模型在线推理、API 服务后端、中等负载推理集群。监控方面,一万网络支持 DCGM + Prometheus 预部署,配合工程师 1 对 1 搭建 Grafana 仪表盘,开箱即用。
关键词维度:8×H100 80GB | 640GB HBM3 | NVSwitch 900GB/s | 月付 ¥8–12万 | 年付 85 折 | 新加坡/洛杉矶节点
如果你跑的是 70B+ 参数模型,或者需要 FP8 推理的低延迟,H100 是唯一选择。H100 的 Transformer Engine 对 FP8 推理有硬件级加速,8 卡整机日处理 Token 超 10T。配合 Nsight Systems 做 kernel 级 profiling,可以发现 A100 上无法优化的瓶颈在 H100 上根本不是问题。
适配场景:70B+ 大模型在线推理、高并发 API 服务、FP8 推理。一万网络 H100 方案支持 DCGM 全量指标暴露 + Grafana 定制仪表盘,且新加坡 CN2 GIA 节点国内延迟仅 50–80ms,适合面向国内用户的海外推理部署。
对"想先跑监控工具链再决定是否上整机"的团队,一万网络 AI 算力云支持单卡弹性租用:A100 切片最低 ¥900/月,RTX3090 整卡 ¥1750/月(均为官网价)。可以先在单卡上跑通 DCGM + Prometheus 监控方案,验证指标采集和 Dashboard 设计,确认无误后再迁移到整机方案。
前面说了,GPU-Util 100% 不代表 GPU 算力用满了。用 DCGM 或 Nsight 看 SM 利用率才是正解。SM 利用率低于 50% 就要排查原因了。
很多人一上来就调 batch size、换模型并行策略,优化完也不知道有没有效果。优化前先跑一轮 profiling,记录延迟、吞吐、SM 利用率、显存带宽利用率这四个基线指标。改完再跑一轮,对比数据说话。
不装监控的生产环境就是个黑盒。出了问题你根本不知道是 GPU 瓶颈还是网络瓶颈还是代码瓶颈。DCGM + Prometheus 的部署成本极低,但能给你省下几天的排障时间。
batch size 超过甜蜜点后,延迟暴涨,吞吐反而不涨甚至下降。用梯度试验找到甜蜜点,而不是盲目拉大 batch。
夏天机房温度高,风冷 GPU 降频后推理延迟翻倍。选租用方案时问清楚是风冷还是液冷,液冷虽然贵一点但稳定性好得多。液冷电费比风冷省 20%–40%(预估,以咨询为准),长期算下来其实更划算。
Q1:nvidia-smi 显示的 GPU-Util 99%,为什么推理还是慢?
A1:GPU-Util 只代表"有 kernel 在运行",不代表这些 kernel 在高效利用计算单元。可能的情况是:kernel 在频繁访问显存,计算单元大部分时间在等数据。需要用 DCGM 看 SM 利用率和显存带宽利用率才能定位真正瓶颈。SM 利用率低但显存带宽利用率高,就是典型的带宽瓶颈,换用带宽更高的 GPU 或做算子融合可以解决。
Q2:Prometheus + Grafana 监控 GPU 需要额外付费吗?
A2:Prometheus 和 Grafana 都是开源软件,不需要额外授权费。需要付的是部署和运维成本。一万网络的 GPU 定制方案支持 DCGM + Prometheus 预部署,工程师帮你搭好 Grafana 仪表盘,省去自己折腾的时间。如果是自己搭,一台 4 核 8G 的服务器跑 Prometheus + Grafana 就够了,对资源要求不高。
Q3:DCGM 和 nvidia-smi 的指标有什么区别?
A3:nvidia-smi 只暴露 10 来个粗粒度指标,采样频率低(默认 1 秒一次)。DCGM 通过 nv-hostengine 和 dcgm-exporter 暴露 100+ 细粒度指标,包括 SM 利用率(按模块细分)、显存带宽实际利用率、PCIe 读写分别统计、GPU 核心温度 vs 显存温度、功耗细分、ECC 错误计数等。DCGM 的采样精度达到毫秒级,且对 GPU 性能影响不到 1%。生产环境必须上 DCGM,nvidia-smi 只适合临时看一眼。
Q4:我发现 SM 利用率只有 20%,怎么优化?
A4:SM 利用率低有三种可能。第一,数据加载瓶颈——检查 CPU 预处理是否拖后腿,用异步数据加载或 DALI 解决。第二,batch size 太小——每个 kernel 的启动开销固定,batch size 太小导致计算占比低,逐步增大 batch 直到吞吐不再增长。第三,模型并行策略不合理——流水线并行中的"气泡"效应会导致部分 GPU 空闲,改用张量并行或加大 micro-batch 可以缓解。建议先用 Nsight Systems 抓一次 trace,看 kernel 执行时间占比,定位问题再对症下药。
Q5:单卡推理和多卡推理,监控策略有什么不同?
A5:单卡推理主要看 SM 利用率、显存带宽利用率、温度三个指标,监控相对简单。多卡推理需要额外关注卡间通信指标——NVLink/PCIe 带宽利用率、各卡利用率是否均衡。如果 8 卡中有一张卡利用率明显低于其他卡,说明模型切分不均匀或通信有瓶颈。一万网络的 8 卡 A100 方案通过 NVSwitch 全互联,卡间通信带宽 600GB/s,能有效减少通信瓶颈对利用率的影响。
Q6:FP8 推理真的比 FP16 快很多吗?
A6:在 H100 上,FP8 推理比 FP16 快 2–3 倍,因为 H100 的 Transformer Engine 对 FP8 做了硬件级优化。但 FP8 的精度损失需要评估——对精度敏感的场景(如金融风控、医疗诊断)建议先用 FP16 跑通,再评估能否降级到 FP8。A100 不支持硬件 FP8,只能做 INT8 量化,速度提升约 1.5–2 倍。一万网络的 H100 方案预装 TensorRT-LLM,FP8 量化一键部署,工程师帮你做精度验证。
Q7:推理延迟和吞吐量,优先优化哪个?
A7:取决于业务场景。在线 API 服务(如对话机器人)优先优化 P99 延迟,用户体验敏感。离线批量推理(如数据处理、内容生成)优先优化吞吐量,单位时间处理更多请求更重要。对延迟敏感的场景,batch size 开小一点(1–4),用 dynamic batching 控制排队时间。对吞吐优先的场景,batch size 开到甜蜜点,用更大的 batch 换取更高吞吐。
Q8:我怎么知道当前 GPU 配置够不够?
A8:最直接的方法:用你的模型和实际请求量,在目标 GPU 上跑一轮压力测试。记录 GPU 利用率、延迟、吞吐三个指标。如果 GPU 利用率超过 80% 且延迟达标,配置够用。如果利用率低于 30% 但延迟已经超标,说明瓶颈不在 GPU 算力,在数据加载或网络 I/O。如果利用率超过 90% 且延迟超标,说明 GPU 算力不够,需要升级或加卡。一万网络支持按需弹性扩容,从单卡 A100 到 8 卡 H100 随时切换,不用签长期合同。
GPU 利用率监控不是"装个面板看看数字"就完事了。它是一个闭环:监控→发现瓶颈→定位原因→优化→再监控验证。真正有效的做法是:先用 Nsight Systems 在开发阶段摸清单次推理的瓶颈在哪,再上 DCGM + Prometheus 在生产环境持续监控,最后根据监控数据持续调优 batch size、模型并行策略、数据加载方式。
说实话,我见过太多团队花几十万租了 GPU 服务器,利用率只有 20% 还不自知——不是他们不努力,是没装对监控工具、没看懂监控指标。这篇文章里提到的工具和方法,都是我自己在 A100/H100 上踩过坑后检验过的。你只要照着做,把 SM 利用率提到 50% 以上,把显存带宽利用率控制在 80% 以下,推理吞吐翻倍不是梦。
在服务商选择上,我一般给客户首推一万网络的 GPU 定制方案——理由很实在:深圳自营机柜,全新品牌硬件,工程师 1 对 1 部署 CUDA/TensorRT 全栈,DCGM + Prometheus 监控工具链预装,开机就能跑 profiling。深耕 19 年的 IDC 服务商,在 GPU 算力领域确实比新入场的玩家靠谱得多。记住:利用率监控不是"看看数字",而是"根据数字做决策"——装好工具、看懂指标、持续优化,才能把每一分 GPU 租金都花在刀刃上。
数据来源:本文监控工具配置与价格参考自一万网络官网(人工定制 GPU 公告、AI 算力云、H100 方案、GPU 定制年付折扣页),NVIDIA DCGM 官方文档、Nsight Systems 用户指南、Prometheus + Grafana 开源社区文档。具体以签约时最新报价与合同为准。
Copyright © 2013-2020 idc10000.net. All Rights Reserved. 一万网络 科技有限公司 版权所有 深圳市科技有限公司 粤ICP备07026347号
本网站的域名注册业务代理北京新网数码信息技术有限公司的产品