发生了什么
NVIDIA在9月10日公布Nemotron 3 Ultra NIM 2.0.12的服务测试。硬件是四张B200,负载包含64K输入、400 Token输出、76% KV缓存复用率,目标是每位用户50 Token/s,也就是约20毫秒的Token间延迟。
在这个前提下,官方称未开启NIM优化的基线吞吐为718 Token/s,开启完整优化栈后为1997 Token/s,约2.5倍。这里的“多服务2.5倍用户”不是任何场景下的保证,而是同一交互速度门槛下,系统可承载并发量的对比。
关键事实与证据
测试配置、结果与复现命令来自NVIDIA技术文章。NIM 2.0.12组合了模型感知内核、四卡张量并行、前缀与Mamba状态复用、调度和显存参数调整,以及MTP推测解码。
这些优化的收益不能简单相加。缓存复用对重复系统提示和多轮代理很有价值,对每次都完全不同的短请求则可能很小;推测解码依赖候选Token接受率,也会消耗额外显存。官方测试由NVIDIA完成,只覆盖特定模型、硬件与流量形态,尚不是跨框架的通用结论。
技术原理:吞吐为什么必须和延迟一起看
把并发开得更高,GPU通常会更忙,总吞吐也会上升;但批次排队会拉长首字时间和Token间延迟。如果只看吞吐,最“高效”的配置可能也是用户体验最差的配置。正确做法是画Pareto曲线:对每个并发档位,同时记录系统吞吐与用户侧延迟,只比较满足服务等级目标的点。
前缀缓存避免重复计算相同上下文;部分前缀匹配让并非完全一致的请求也能复用一段结果;张量并行把模型切到多张GPU;调度器决定多少序列和Token同时在途;MTP先一次提出多个候选Token,再由主模型验证。任何一层改变,都可能移动计算、显存和等待之间的平衡。
flowchart LR
A[代表性请求轨迹] --> B[并发档位扫描]
B --> C[前缀与状态缓存]
C --> D[张量并行和模型内核]
D --> E[调度 批处理 显存]
E --> F[MTP推测解码]
F --> G[吞吐 TTFT ITL]
G --> H{满足用户SLO吗}
H -->|否| B
H -->|是| I[选择Pareto最优配置]
一个具体场景
一家代码审查服务让代理反复读取同一仓库规则和大型代码上下文。系统提示、工具说明与多数仓库文件在多轮里重复,前缀和状态缓存很可能有效。若产品要求流式输出不低于50 Token/s,团队可以把并发从1、4、8、16逐级增加,直到P95 Token间延迟接近红线,再比较开启缓存和MTP后的可承载请求数。
换成一次性短问答,64K输入和76%缓存复用就不再代表真实流量。此时照搬2.5倍数字,可能会高估收益。
对开发者和团队的影响
对平台工程师,优化工作会从“找最快框架”转成“保存流量画像并持续回放”。模型升级、提示词变长、代理工具增加,都可能改变最佳配置。对产品团队,必须把用户体验翻译成可测SLO,例如P95首字低于两秒、Token间延迟低于40毫秒,而不是只说“响应要快”。
普通用户最终感知到的不是显卡型号,而是等待时间、流式输出是否卡顿和高峰期能否稳定服务。系统优化的价值,应该用这些结果来结算。
同一套测试还应持续回放,避免模型或提示词变化后沿用过期结论。
我的判断及依据
我的判断是,大模型推理下一阶段最值钱的能力,是可重复的性能工程,而不是单次跑分。依据是这次2.5倍提升来自一组相互作用的配置,并且官方明确要求使用代表性轨迹构建Pareto曲线。能保存请求分布、版本和SLO的团队,才有资格判断一次优化是否真实。
适用边界与风险
4×B200、Nemotron 3 Ultra、64K输入和高缓存复用并不代表多数应用。平均值还可能掩盖尾延迟、冷缓存、突发流量和失败重试。敏感生产请求在制作为压测轨迹前必须脱敏。任何“更新到新版本”也要固定镜像标签或摘要,否则前后对比无法复现。
一次可执行的压测步骤
- 从生产采样并脱敏输入长度、输出长度、到达间隔与重复前缀比例。
- 先定义P95首字时间和Token间延迟红线,再扫并发档位。
- 分别测试冷缓存、热缓存和突发流量,不只跑稳定平均负载。
- 固定模型、精度、镜像摘要和硬件,逐项记录配置变化。
- 选择满足SLO的最高吞吐点,并计算每千次请求成本。
你的线上AI服务更容易被哪项指标拖垮:首字延迟、单用户生成速度、并发量,还是缓存命中率?
关注「蜗牛聊AI」,一起看懂技术变化背后的真正机会。
本文首发于 java4u.cn,转载请注明出处。
别被单一吞吐数字误导:把用户体验翻译成可测SLO,再用真实流量回放做性能工程,才是把GPU用满又不牺牲延迟的正道。适合平台与推理优化团队。