跳到主要内容

2 篇博文 含有标签「speculative-decoding」

查看所有标签

投机采样(Speculative Decoding)是一项流式传输协议决策,而非推理优化

· 阅读需 14 分钟
Tian Pan
Software Engineer

每一篇关于投机解码(Speculative Decoding)的论文中提到的“等效输出”保证,其实是对 token 分布的保证,而不是对用户所见内容的保证。仔细阅读证明过程,你会发现一个纯粹的数学等效性:拒绝采样的接受标准旨在确保投机后的输出分布与目标模型(target model)独立生成的分布完全一致。这一保证约束的是离开推理引擎的字节流,而对于五百毫秒前已经到达用户屏幕、现在却必须收回的字节,它只字未提。

如果你在小模型生成草稿 token 的那一刻就将其流式传输给客户端,那么每当验证器拒绝某个后缀时,你实际上是在对自己的用户进行 A/B 测试。半个段落会自行重写。函数名在 IDE 已经完成语法高亮后发生改变。语音合成(TTS)可能已经读出了“答案很可能是否定的”,随后验证器却将其替换为“答案是肯定的,但有几点需要注意”。数学逻辑上,最终分布与慢速路径一致;但从用户体验来看,他们亲眼目睹了模型在公开场合“反悔”。

这是投机解码中未被计入加速倍数的部分。它也将所谓的“免费 3 倍吞吐量”变成了一个没人预料到的、长达一个半季度的流式协议开发工作。

投机解码实战:那顿并非免费的午餐

· 阅读需 11 分钟
Tian Pan
Software Engineer

你的 700 亿参数模型在推理时大部分时间都在等待内存读取,而非进行计算。现代 GPU 每从内存读取一个字节就能执行数百次算术运算,但自回归 Transformer 解码每加载一个字节只进行寥寥数次运算。硬件在空转,而你的用户在等待。投机解码利用了这一差距:让一个小而快的模型提前起草多个 token,然后让大模型在一次并行传递中一并验证。承诺是延迟降低 2-3 倍,且输出质量在数学上完全一致。但现实远没有这么简单。

经过两年在 Google 搜索、编程助手和开源服务框架中的生产部署,投机解码已经从研究新奇事物毕业为标准优化手段。但"标准"并不意味着"即插即用"。该技术在草稿模型选择、批处理大小敏感性和内存开销方面有许多尖锐的边界条件,它们决定了你是获得 3 倍加速还是净减速。