#speculative decoding
developer.nvidia.com · ⭐️ 9/10 · 2026-10-13
rss · NVIDIA Inference Performance Blog · 10月12日 16:00 「背景」 混合模型把 SSM 层与少量注意力层交错,SSM 用固定状态代替随上下文增长的 KV 缓存;但作者指出,在服务批量下,SSM 层可在最长约 100K token 的上下文中成为解码瓶颈,并使投机解码和量化更复杂。 「方案」 ReplaySSM 的核心是缓存最近的 SSM 输入而非完整状态,把状态表示成“检查点 + 输入缓冲区”。非 flush 步只追加当前输入,并用检查点和缓冲区计算输出,不写状态;缓冲区(最优窗口 L=16)填满后,flush 步把缓冲输入折叠进检查点并写一次 HBM,从而把输出计算与状态更新解耦。作者在 Nemotron 3(Mamba-2)和 Qwen3.5(GDN)的四个模型、H100 与 B300 上评估,batch 256 下内核提速 1.46–1.80×、解码步提速 1.20–1.47×,但 batch 1 无收益。投机解码只需追加草稿输入并按接受前缀推进缓冲区指针,不保存状态快照;配合 output-only 计算,GSM8K、T=4、batch 512 下吞吐达 vLLM 投机解码的 1.85–2.10×(接受长度匹配)。量化也被拆分:高精度检查点用于循环更新,低精度副本只用于非 flush 读,舍入误差不再回灌;Qwen3.5-4B 上 NVFP4 读加 FP32 循环把 128K token 的 KL 从 0.136 降到 0.0038,GPQA-Diamond 上共享 NVFP4 检查点损失 3–31 个百分点,分离精度则恢复到多数模型约 2 个百分点内。 「启示」 作者的核心结论是:把 SSM 状态从每步读写的矩阵改为检查点加近期输入缓冲,能让 SSM 层重新变快,并把投机回滚与读写精度解耦;这一表示层改动已进入 TensorRT-LLM、vLLM、SGLang、FlashInfer 以及 GLM-5.3-Flash、Kimi-K3 的生产服务。 标签: SSM, speculative decoding, quantization, inference optimization, hybrid models
developer.nvidia.com · ⭐️ 8/10 · 2026-10-28
rss · NVIDIA Inference Performance Blog · 10月27日 15:00 「背景」 在 NVIDIA DGX Spark 上以 batch size 1 运行 Ling-3.0-flash 时,剖析显示解码受内存带宽限制,每一步都要读取模型权重,其中 MoE 计算和词表输出投影(LM head)尤其突出。 「方案」 作者据此评估了三项互补优化:用 Humming 的 MXFP4 MoE 内核按实际形状在运行时编译,使合成负载吞吐提高 9.3%;仅对 LM head 做在线 FP8 量化以减半其权重读取,累计提高 21.7%;再用模型自带的 NEXTN 层做 MTP 推测解码(3 个草稿步、4 个验证位置),把合成吞吐从 36.09 提升到 102.88 tok/s,累计提升 185.1%。MTP 的验证成本主要来自 MoE 专家激活而非注意力:普通解码每个 token 激活 8 个专家,验证 4 个 token 时最多激活 32 个,验证成本约为普通解码步的 2.26 倍。三项叠加还有个隐蔽陷阱:启用 FP8 LM head 与 MTP 时,草稿模型必须共享完整的 LM-head 模块而非仅权重;否则框架会静默把 FP8 权重当 BF16 使用,接受长度跌至 1.00,性能反而低于基线。在 1,319 道 GSM8K 题的端到端测试中,三项优化使吞吐提高 42.5%、平均延迟降低 24.5%,准确率几乎不变(96.89%→96.82%);作者提醒合成负载的 185.1% 因接受长度更高(3.90 对 2.68)及采样、输出长度不同而被高估。 「启示」 作者的核心结论是,在内存受限的解码中,降低每步权重读取与减少解码步数可以叠加,但真实收益强烈依赖工作负载;部署时必须显式确认每项优化确实生效,而不能只凭最终性能反推配置。 标签: MoE inference, speculative decoding, FP8 quantization, LLM inference optimization, DGX Spark