某天你看到一张benchmark图表:Cerebras 969 tok/s,vLLM 770 tok/s,某个闭源方案声称 1200 tok/s。数字看起来很像 apples-to-apples,其实完全是两个物种。
这不是"参数不同导致差异"的问题,而是"将六维曲面投影到一维轴上再假装可以还原"的欺骗。你把六个自由度的参数压扁成一个数字,然后当别人问"你用的是什么配置"时,你才开始补全那些"隐藏参数"。这时候,原来的数字已经不再诚实。
六个被藏起来的参数
-
模型大小:405B和26B在同一台机器上不会跑到同一个 tok/s。Cerebras的数字是405B单流,4090上是26B。不同产品卖不同东西,一个卖低延迟巨型模型,一个卖高吞吐小模型。
-
提示长度 vs 输出长度:prefill是算力瓶颈,decode是内存瓶颈。128提示+128输出几乎全是decode;8000提示+256输出几乎全是prefill。两者在同一硬件上呈现截然不同的数字。多数agent工作负载是prefill重的,因为prompt要承载工具、上下文和超长system message。
-
输出长度:KV cache随着输出填满而拖慢decode。32token输出从未有时间减速,4000token输出则越跑越慢。以短输出平均的数字会美化硬件;Chen et al. 2024的Sequoia直接记录了这一非线性:稳态数字低于爆发窗口。
-
并发度:最被隐瞒的一个参数。我给出的770 aggregate是在并发8下得出的;折算到单流是96 tok/s。而Cerebras的969是并发1。同一硬件可以选择任意一个数字来讲述给不同的听众听。
-
KV cache预算:PagedAttention(Kwon et al., 2023)在这里是基础变化。vLLM暴露权衡:--gpu-memory-utilization、--max-num-seqs、--max-model-len。厂商benchmark很少公布比率,导致你无法复现,也无法判断图表是否在production-realistic的context length下得出。
-
decode vs prefill混比:Zhong et al., 2024的DistServe干脆把两个阶段拆到不同硬件上,因为瓶颈不同。合在一起报一个数字,是在两个物理机制之间做平均。两个系统同样报出"200 tok/s"的headline,但其中可能有完全不同的prefill-tail延迟。
你把它们全部钉住,比较才变得可读。留任何一个自由,图表就变成装饰。
为什么厂商不告诉你
因为那张漂亮的、大得离谱的数字是用来卖货的。如果告诉你"这是在并发1、128提示、32输出下测出的",你会觉得"这不是我需要的";如果告诉你"这是在prefill-only的短输出下跑出来的",你会问"我的长对话怎么办?"。隐瞒参数是营销的一部分。
不是"我们没测过其他配置",而是"我们测了,但那些数字不好看,所以不放在宣传册上"。这是正常的市场行为。但问题是:大多数人把marketing当成了engineering,把可操纵的数字当成了客观真理。
我如何审视任何 tok/s 声称
我有一个快速质询清单,用来在相信任何数字之前问厂商:
-
模型与参数量:跑的是哪个模型,多少参数?
-
提示和输出长度分布:你是用什么prompt长度和输出长度来测的?
-
并发度:单流还是聚合?如果是聚合,并发是多少?
-
KV cache利用率:最大context是多少?GPU memory utilization怎么设的?
-
静态 vs 连续批处理:用的是哪种调度?
-
稳态 vs 爆发窗口:你报告的是哪个时间段的数字?
如果厂商给不出这六个,那个数字就不是测量,是销售道具。
更进一步,我会要求他们给出"在生产并发度(比如16或32)下的数字"。大多数人会突然换一张看起来不那么炫但更有用的图表。这说明他们知道真相,只是选择不放在封面。
aggregate和per-stream不是"同一个指标的不同缩放",而是"共享单位的两个不同指标"。把latency和bandwidth拿来比较,仅仅因为分母里都有"时间",是同样的范畴错误。
结论
一个没有run配置的tok/s数字不是benchmark,是宣传册。
作为CTO,我关心的是生产环境下的真实性能:当16个agent同时发起请求时,当prompt是8000 token时,当需要稳定输出4000 token时,系统的表现如何?这些数字很少出现在marketing slide上,但它们是唯一对工程决策有意义的信息。
下一次看到"969 tok/s"或"1200 tok/s"的大标题时,先问一句:这六个参数被钉住了吗?如果没有,那就是装饰,不是数据。
参考文献
- Kwon et al. 2023, "Efficient Memory Management for Large Language Model Serving with PagedAttention"
- Zhong et al. 2024, "DistServe: Disaggregating Prefill and Decoding for Goodput-optimized Large Language Model Serving"
- Chen et al. 2024, "Sequoia: Scalable, Robust, and Hardware-aware Speculative Decoding"
- Cerebras 2024, "Cerebras Inference: AI at Instant Speed"
- vLLM Project, "vLLM Performance Tuning"