Higher acceptance length, slower prose: Ling’s n=1/2/3 MTP test on one Spark
在Spark系统上对Ling-3.0-flash进行的基准测试评估了MTP设置n=1、n=2和n=3。测试结果显示,虽然平均接受长度随着“n”值的增加而增加(n=1时为1.87,n=2时为2.39,n=3时为2.77),但散文生成速度却有所下降。例如,对于512-token输出,散文吞吐量从n=1时的38.7 tok/s下降到n=3时的33.6 tok/s。代码吞吐量保持相对稳定。研究得出结论,对于所测试的检查点和工作负载,n=1是更有效的设置。
- 发布
- 09/07 15:23 UTC+0
- 收录
- 09/07 21:00 UTC+0
- 来源类型
- 开发者社区
- 档位
- 社区
- 信源状态
- 正常
档位是按信源手工设定的编辑判断,不是逐条打分。
The missing control is visible in sudoingX’s Ling-3.0-flash benchmark graphics. The earlier table leaves Ling’s no-speculation baseline as “not measured.” The later code/prose graphic fills it in: about 23 tok/s without the drafter, against 40.9 on code and 38.7 on prose with MTP n=1, at short prompts. That makes the tuning claim easier to inspect.
The later graphic compares short code and prose workloads with and without drafting. A separate correction in the repository isolates CUDA graphs: the earlier “two flags” result changed graphs and multi-token prediction (MTP) together, so it could not tell you which change produced the gain.
The corrected August 22 measurements on one 128GB DGX Spark, using the official INT4 checkpoint and the vendor’s vLLM fork, were:
Configuration Reported tok/s, short coding task Eager execution, MTP off 20.8 CUDA graphs, MTP off 22.9 CUDA graphs, MTP n=1 40.9 That is roughly 10% more throughput from graphs relative to the eager baseline, followed by roughly 79% more from MTP relative to the graph baseline. Those percentages have different denominators.
Then comes the setting that is tempting to turn up. Here n is num_speculative_tokens: how many draft tokens are proposed per step. vLLM’s documented acceptance-length metric includes a bonus token per verification step, so an average above 1 with n=1 is possible. The creator reports the metric from a vendor fork; its exact historical counting implementation is not supplied.
MTP setting n=1 n=2 n=3 Mean acceptance length 1.87 2.39 2.77 Prose, 512-token output, tok/s 38.7 34.8 33.6 Prose, 2,048-token output, tok/s 37.3 33.6 31.6 Code throughput stayed approximately flat within the reported run-to-run variation. Prose got slower as the mean accepted draft length increased. Acceptance length is not an acceptance percentage, and it is not the optimization objective.
sudoingX describes the configuration in the deployment thread; the pinned benchmark notes contain both tables. These are the author’s measurements, without an independent rerun here. The sweep describes streaming and server-side token counts but does not fully specify its timing denominator, so the numbers should stay labeled as reported throughput.
For this checkpoint and these workloads, n=1 was the useful setting. The transferable experiment is to isolate the no-MTP baseline, then compare draft settings on the output types you actually generate.