MTP最佳妥协点随上下文填充而移动:Strix Halo上的全上下文基准测试
本文探讨了在Strix Halo硬件上,MTP(多令牌预测)的最佳深度如何随上下文长度变化。作者测试了不同上下文深度下的解码性能,发现MTP的接受率保持稳定,但验证成本随上下文增长,导致最优深度下降。此外,文章还比较了ROCm和Vulkan后端的性能差异,并强调了预填充成本在长上下文工作负载中的重要性。
几周前,kmarble发布了一组关于Strix Halo硬件的全上下文基准测试,结果清晰:在空上下文时,ROCm解码35B MoE模型的速度为46 tok/s,是Vulkan的两倍以上;但当KV缓存填充到76k令牌时,ROCm性能暴跌至16.6 tok/s,降幅达64%,而Vulkan仅下降12%。kmarble的解决方案是启用MTP,将ROCm性能恢复至37.5 tok/s。
然而,作者本人无法使用这一方案——他的Bosgame M5主板遇到Issue #6182,根本无法运行ROCm。因此,kmarble的ROCm+MTP方案对他及受类似问题影响的用户并不适用。
作者转而研究Vulkan路径,发现其性能表现与kmarble的数据大致吻合,但存在一个关键差异:kmarble只测试了固定MTP深度(n=2),而作者发现MTP的最佳深度随上下文长度变化。
测试设置:使用Qwen3.6-27B和Qwen3.6-35B-A3B模型,UD-Q5_K_XL量化,llama.cpp b9295,Vulkan/RADV,Bosgame M5(gfx1151,96 GB统一VRAM)。测试了空、32k、64k、76k四种上下文深度,并进行了MTP深度扫描。
核心发现:解码吞吐量随上下文下降,但MTP始终优于非MTP。然而,作者的非MTP性能下降幅度(约29%)是kmarble的12%的两倍多,这可能归因于更轻的量化(Q5 vs Q8)。重要的是,MTP接受率在所有深度下保持平坦(MoE约50%,Dense约56%),表明性能下降并非由草案头效率降低引起,而是验证成本随缓存增长所致。
随着上下文增长,最佳MTP深度向低位移:MoE模型的最佳深度从空上下文的n=2变为64k时的n=1;Dense模型在76k时峰值平坦化,n=1、n=3、n=4之间差异不大。过度猜测在高上下文下会导致损失,因为每个验证步骤都因大缓存而昂贵。
预填充是长上下文工作负载的真正成本:在76k时,MoE预填充需约17分钟,Dense模型需51分钟。对于交互式对话,一次预填充后后续对话仅需毫秒级处理;但对于批量处理,预填充吞吐量决定可行性。
最后,作者比较了不同路径下的性能:他的最佳路径(Vulkan+MTP n=1 at 76k)达到44.9 tok/s,高于kmarble的ROCm+MTP(37.5 tok/s),但作者强调这主要归因于量化差异,而非后端优劣。