TwKit
正在载入
TwKit

很多人以为投机解码(Speculative Decoding)之所以快,是因为“验证比生成更省算力”。 完全错了。 真相恰恰相反:开启投机解码后,生成同一段… · @mylifcc · TwKit

@mylifcc

很多人以为投机解码(Speculative Decoding)之所以快,是因为“验证比生成更省算力”。 完全错了。 真相恰恰相反:开启投机解码后,生成同一段序列的总计算量(FLOPs)不降反升。那它凭什么还能提速? AI 研究员 Joe Barrow 用几张极简图把底层逻辑扒得干干净净: 1️⃣ 逐词解码的真正瓶颈在显存(Memory Bound) 跑像 Qwen3.5-27B 这样的模型,每吐出 1 个 Token,GPU 都要把 27B 的活跃参数从全局显存完整搬运一遍。算力大量闲置,时间全花在等数据加载上。 2️⃣ 用“深度”换“广度”(Trading Breadth for Depth) 假设单次搬运权重顺手算 5 个 Token(T=5)才刚好吃满算力。传统批处理是同时推 5 条不同序列各进 1 步(广度);投机解码则是趁着算力白白空转,把 5 个 Token 押注在同一条序列上并行验证(深度)。 3️⃣ 高并发下盲目开启反而降速 当线上 Batch Size 已经很大、GPU 处于计算受限(Compute Bound)时,再开固定深度的投机解码只会平白浪费算力,尤其是草稿被拒的时候。 两个核心工程结论: • 这就是为什么 vLLM 专门设计了 --speculative-disable-by-batch-size 参数,在高负载下自动关停投机解码。 • 下一代方向(如 dSpark)不再死磕固定深度,而是根据实时 Batch 大小动态缩放每条序列的投机深度。 你们线上跑推理服务时,Batch Size 超过多少会选择关掉投机解码?

曝光 307 · 评论 2 · 点赞 4 · 书签 1

查看原帖