简介:本文以单台笔记本、单张24 GB级独立显卡承载270亿参数级模型为评测对象,系统拆解投机解码吞吐的三种口径:5秒窗口脉冲峰值、端到端均值与长期持续值。读者可掌握峰值数字的三乘数合成方式、真实约束的定位方法、并发摊薄效应的验证路径,以及接受率为何取决于工作负载而非引擎本身,从而判断这类高吞吐数字能否在自己的业务中复现。
本次评测的对象不是”某个模型好不好”,而是单卡本地环境下大模型推理吞吐数字的可靠性问题。
原始评测记录给出了一组极具冲击力的结果:单台笔记本、一张24 GB显存级的独立显卡(显存带宽约896 GB/s),承载一个270亿参数级、采用4位浮点级低比特量化的模型(权重占用约16.78 GiB),配合自编译的推理服务引擎,在八路并发下测出了5秒窗口峰值1508 tok/s、端到端1302.9 tok/s、单流325.4 tok/s。
这三个数字都是真实的,但它们回答的是三个不同的问题。本文的核心工作,是把”评测记录本身”当成评测对象,检验这类数字在什么条件下成立、由什么因素合成、以及在真实业务里会退化成什么样。
适合读者:负责本地推理部署与调优的开发者、需要在端侧或单机环境评估可行性的架构师、要判断供应商宣传吞吐是否可信的技术负责人、以及正在做推理选型与容量规划的企业技术团队。
需要提前说明的判断边界:本文不做”某方案一定最好”的结论。所有性能判断都绑定在明确的口径上——换一个分母、换一个窗口、换一种输入分布,结论就可能完全相反。
| 编号 | 待验证问题 | 为什么重要 |
|---|---|---|
| Q1 | 宣称的峰值吞吐与日常可用吞吐之间差多少 | 直接决定选型时该信哪个数字 |
| Q2 | 限制投机解码效果的真实约束是什么 | 命令行参数与实际能力可能不一致 |
| Q3 | 串行成本模型为什么在多并发下失效 | 决定容量规划是否需要留出放大系数 |
| Q4 | 高接受率是引擎能力还是工作负载属性 | 决定能否把实验室结论搬到生产 |
被测系统由三部分组成,理解它们各自的作用域是解读结果的前提:
投机解码的基本逻辑值得复述:草稿分支先连续猜若干个token,目标模型一次性验证这批猜测,猜对的部分直接接受,从而把多次串行前向压成一次。它带来三个乘数——并发路数 × 每轮接受token数 × 轮速。
单纯报吞吐不足以指导决策,需要建立多维度框架:
| 维度 | 观察指标 | 本次关注点 |
|---|---|---|
| 性能 | 峰值吞吐、持续吞吐、单流吞吐、每位置成本 | 三档口径分离记录 |
| 有效性 | 接受率、平均接受token数 | 在不同输入分布下的波动 |
| 资源 | 显存占用、权重与缓存余量 | 量化后是否还有扩容空间 |
| 可复现性 | 输入样本、并发、统计窗口、分母定义 | 能否被第三方独立复现 |
| 可维护性 | 参数暴露程度、配置与实现的耦合 | 产品层约束是否透明 |
| 场景适配 | 交互式、补全式、批处理式负载 | 峰值能否转化为业务收益 |
这是全文最重要的一节。同一个系统、同一次运行,可以合法地报出1508、1302.9、465~490三个数字,因为它们分别是:
| 口径 | 数值 | 定义 | 适用场景 |
|---|---|---|---|
| 5秒窗口脉冲峰值 | 1508 tok/s | 任意5秒滚动窗口内的最高瞬时速率 | 只说明硬件与引擎的物理上限 |
| 端到端均值 | 1302.9 tok/s | 全部接受token ÷ 从首个请求到末个请求结束的总墙钟时间 | 极短、高度可预测的定制负载 |
| 日常八路聚合持续值 | 465~490 tok/s | 真实对话/补全/Agent混合负载下的稳定区间 | 容量规划与成本估算 |
1508属于极限脉冲,不是日常吞吐。把它写进选型报告作为容量依据,会导致约三倍的资源高估或反向的SLA失守。
| 记录项 | 数值 |
|---|---|
| 并发路数 | 8 |
| 每轮提交token数 | 约16 |
| 轮速 | 11.8 轮/秒 |
| 接受率 | 99.9% |
| 5秒窗口峰值 | 1508 tok/s |
| 端到端 | 1302.9 tok/s |
| 单流 | 325.4 tok/s |
| 日常八路聚合 | 465~490 tok/s |
峰值合成校验:8 路 × 16 token × 11.8 轮/秒 ≈ 1510 tok/s,与实测1508吻合。这说明峰值不是玄学,而是三个乘数的乘积——其中前两项已贴死引擎与条件上限,唯一还有变量的是轮速,而轮速由接受率决定。
评测中发现的反直觉现象:命令行参数写着草稿上限为8,实测却能跑到15。
原因:真正的硬约束是草稿分支的宽度域为 15+1=16(15个草稿位置加1个验证位)。产品层暴露的”8”只是一个硬编码的保守默认值,不是能力边界。
评测启示:定位真实约束必须做参数扫描——逐档提高草稿深度,观察吞吐拐点和显存/计算开销变化。只读文档或只看默认值,会系统性低估系统能力;反过来,若默认值本身设得比真实约束高,也会让调优者在错误方向上浪费大量时间。配置项与实际约束之间的偏差,本身就是一项可评测的质量指标。
按单流每位置成本外推,草稿加深后的卷积会落到”物化”慢路径,单流每位置成本从 0.72 ms 涨到 1.08 ms。据此推算吞吐上限只有约 752 tok/s。
实测端到端却是 1302.9 tok/s,高出近一倍。
原因:慢路径的成本中包含一块与batch规模无关的固定开销。单流时这块开销全部由1个请求承担;八路并发时,同一块固定开销被8个位置摊薄,每位置成本降到0.47 ms。
评测启示:
接受率从约84%推高到99.9%,表面上像是引擎变强了,实际决定因素是prompt里有没有写死数量要求。
一个特别有价值的反例:单独重复字母 a 的内容在信息论上最可预测,但因为命中了结束标记,实测只跑到 6.2%。这说明”可预测性”必须与”输出长度可控”同时成立,接受率才有意义。
评测启示:接受率是工作负载属性。真实对话、代码补全、Agent任务的内容熵远高于构造样本,无法达到99.9%的可预测性,因此日常八路聚合回落到465~490 tok/s才是合理预期。评测报告中如果不标注输入样本的来源与构造方式,接受率数字不可跨场景引用。
原始记录中主动更正了两处此前报错的数字,这两类错误在工程实践中极其常见:
错误一:分母选错。 曾报”八路1200/1269 tok/s”,实际是把标称12秒当成了分母,而请求实际耗时29~103秒。改用真实墙钟时间后,真实值为 489.6 tok/s。差了约2.5倍。
错误二:窗口瞬时值当持续值。 曾报”八路780 tok/s”,实际取自一个5秒滚动窗口内的瞬时速率,不能代表持续吞吐。
评测清单(可直接复用):
# 通用压测骨架(伪代码,不依赖任何特定厂商工具)CONCURRENCY_LEVELS = [1, 2, 4, 8]SAMPLE_GROUPS = {"对话": load_conversation_samples(),"补全": load_completion_samples(),"Agent": load_tool_call_samples(),}REPEATS = 3results = []for level in CONCURRENCY_LEVELS:for name, samples in SAMPLE_GROUPS.items():runs = []for _ in range(REPEATS):with timed() as t:accepted, rejected = [], []for batch in schedule(samples, concurrency=level):out = infer(batch, draft_depth=SCAN_DEPTH) # 扫描真实约束accepted += out.accepted_tokensrejected += out.rejected_tokenswall = t.elapsed() # 真实墙钟,作为唯一分母runs.append(metric(wall=wall,sustained=sum(accepted) / wall,window_peak=peak_over_window(runs_token_series, 5.0),accept_rate=sum(accepted) / (sum(accepted) + sum(rejected)),))results.append(aggregate(name, level, runs)) # 取中位数,记录离散度
测试流程要点:固定引擎版本与编译选项 → 固定量化格式与草稿深度 → 预热至显存与缓存稳定 → 每档位重复3次以上并报告中位数与离散度 → 同一次运行内同时输出三种口径 → 保留原始token时间序列以便复核。
| 业务场景 | 应重点关注 | 本次数据的可迁移性 |
|---|---|---|
| 实时对话 | 首token延迟、单流生成速率、尾延迟 | 单流325.4 tok/s可作为参考上限 |
| 代码补全 | 首token延迟、接受率稳定性 | 需按真实代码分布重新测接受率 |
| Agent/工具调用 | 多轮稳定性、结构化输出正确率 | 可预测性低,持续吞吐应参照465~490 |
| 批量离线处理 | 端到端聚合吞吐、资源占用 | 可尝试接近峰值条件,但受输入分布限制 |
| 端侧/离线私有化 | 显存余量、并发上限、能耗与散热 | 24 GB显存+16.78 GiB权重余量偏紧 |
需要补充的是,若考虑在云端承载同类推理负载,应关注云服务器规格、容器平台、对象存储、负载均衡、日志服务、监控告警、身份认证与安全防护等通用能力类目,并以实测压测结果而非标称指标作为容量依据。
本次评测的实质结论是:单卡笔记本跑270亿参数级模型、达到1500 tok/s量级的瞬时吞吐是可验证的物理事实,而465~490 tok/s的日常聚合吞吐才是可用于规划的事实。两者相差约三倍,差异来源被完整拆解为三个乘数、一次参数约束错判、一次成本模型外推偏差,以及一处工作负载可预测性假设。
对评测工作本身而言,最有价值的收获不是任何一个吞吐数字,而是三条方法论:真实约束靠扫描而非文档、成本模型必须实测并发摊薄、口径必须随数字同行。掌握这三条,面对任何声称高吞吐的本地推理方案,读者都能快速判断这个数字在自己的业务条件下能剩下多少。