<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>投机解码 on CAO ZUOHUA</title><link>https://caozuohua.github.io/tags/%E6%8A%95%E6%9C%BA%E8%A7%A3%E7%A0%81/</link><description>Recent content in 投机解码 on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 14 Sep 2026 10:30:00 +0800</lastBuildDate><atom:link href="https://caozuohua.github.io/tags/%E6%8A%95%E6%9C%BA%E8%A7%A3%E7%A0%81/index.xml" rel="self" type="application/rss+xml"/><item><title>让 2B 当侦察兵：投机解码的原理、实测数据与失效边界</title><link>https://caozuohua.github.io/posts/2026-09-14-speculative-decoding-explained/</link><pubDate>Mon, 14 Sep 2026 10:30:00 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-09-14-speculative-decoding-explained/</guid><description>&lt;h1 id="让-2b-当侦察兵投机解码的原理实测数据与失效边界"&gt;让 2B 当侦察兵：投机解码的原理、实测数据与失效边界&lt;/h1&gt;&#10;&lt;p&gt;上一篇我们提到，2B 小模型最&amp;quot;值钱&amp;quot;的用法之一是给大模型当草稿机。这个技术的正式名字叫&lt;strong&gt;投机解码（Speculative Decoding）&lt;/strong&gt;。它的效果相当戏剧化：有人实测把 27B 模型的生成速度从 25 tok/s 提到 45 tok/s，也有人实测把 60 tok/s 掉到 45 tok/s——&lt;strong&gt;用的是同一个技术&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;本文面向没有推理优化背景的读者，先讲清&amp;quot;为什么能加速&amp;quot;，再讲清&amp;quot;为什么有时反而变慢&amp;quot;，中间穿插多组真实实测数据。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="一先搞懂一个反直觉的事实大模型生成慢不是因为算不过来"&gt;一、先搞懂一个反直觉的事实：大模型生成慢，不是因为算不过来&lt;/h2&gt;&#10;&lt;p&gt;这是理解投机解码的唯一前提。&lt;/p&gt;&#10;&lt;p&gt;大模型生成文字是一个字一个字往外蹦的（术语叫自回归）。每蹦一个字，都要把&lt;strong&gt;整个模型的全部权重&lt;/strong&gt;从显存里完整读一遍。以 27B 模型 Q4 量化为例，权重约 16 GB——也就是说，&lt;strong&gt;每生成一个字，就要搬运 16 GB 数据&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;这带来一个关键结论：瓶颈在&lt;strong&gt;内存带宽&lt;/strong&gt;，不在计算能力。显卡的计算单元绝大部分时间在空转等数据。用一张带宽 936 GB/s 的 RTX 3090 举例，理论上限就是 936 ÷ 16 ≈ 58 tok/s，无论这张卡的算力有多强。&lt;/p&gt;&#10;&lt;p&gt;所以加速的方向有两条：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;减少要搬运的数据量（量化、用小模型）——代价是质量。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;让空转的算力干点活&lt;/strong&gt;——这正是投机解码的思路，且&lt;strong&gt;不损失任何质量&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="二核心思路让便宜的小模型去猜让贵的大模型去批改"&gt;二、核心思路：让便宜的小模型去&amp;quot;猜&amp;quot;，让贵的大模型去&amp;quot;批改&amp;quot;&lt;/h2&gt;&#10;&lt;p&gt;打个比方。大模型是个写文章很慢但水平很高的资深编辑，小模型是个打字飞快但水平一般的实习生。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;传统方式&lt;/strong&gt;：编辑一个字一个字亲自写，写一个字想一下，慢。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;投机解码&lt;/strong&gt;：实习生先一口气猜出接下来 5 个字，编辑拿过来一次性扫一眼——&lt;strong&gt;&amp;ldquo;前 3 个对，第 4 个不对&amp;rdquo;&lt;/strong&gt;。于是前 3 个字直接采纳（几乎白赚），第 4 个字由编辑自己改，第 5 个字扔掉重来。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;关键在于：&lt;strong&gt;编辑一次性检查 5 个字的成本，和检查 1 个字的成本几乎一样&lt;/strong&gt;。因为权重的搬运量在一次前向传播里是固定的，检查 5 个 token 只是把这条数据多算几遍而已——而算力本来就是空闲的。&lt;/p&gt;</description></item></channel></rss>