你刚打完问题,ChatGPT或Claude的字几乎同时跳上屏幕。这种“秒回”体验,让人很难想象,背后其实有个数千亿参数的庞然大物,每吐出一个词都要跑完上百层网络。这种速度感怎么来的?一个关键答案叫“投机解码”——它没有改动大模型的一个输出词,却把生文速度抬上去了。

要想说清这个技术,得先看大语言模型的一个根本瓶颈:文本是一个个token生成的。不是一次直接出整个词、句子或段落,而是一个token接一个token。一个token大致相当于一个词或一个词的片段。模型每产出一个token,都得做一次完整的“前向传播”——从嵌入层、自注意力层,一直走到前馈网络,全部参数都要动一遍。

打开网易新闻 查看精彩图片

拿“The cat sat on the ______”来举例。为猜出最后一个词,模型要把前面每个token都处理一遍,算出整句话的注意力分数,再穿过所有网络层。出来一个token,接着下一个token,又重跑一遍。一个700亿参数的模型,单次前向传播大约50毫秒。按顺序生成200个token,差不多要等8到10秒。这个等待,对聊天体验来说太久了。投机解码就是冲着这个瓶颈来的。

它的核心发现有点意思:大模型生成一个索然无味的可预测token,和憋出一个复杂的冷僻术语,花的时间居然一样。写出“I went to”之后的“the”,并不比在长句里造个生僻词更快。而自然语言中,大多数都是这种常见、可预测的token,这么跑就有点浪费。投机解码的做法,是把生成过程拆成两个模型来配合。

一个叫“草稿模型”,体量小、低成本、跑得快,可能只有70亿参数,生成速度比大模型快10倍左右。另一个叫“目标模型”,就是那个大而强的700亿参数主体,它能保证最终输出质量,但不再负责逐个token生成,只干一件事——校验。

面对“The capital of France is _____”这样的句子,草稿模型快速往前猜几个token出来:“Paris”,“,”,“which”,“is”,“located”。这一步只花很少的时间。不过小模型能力有限,可能出错。于是大模型登场了,但它不是来生成的,只做批量验证。大模型可以把草稿给出的这五个候选token,以及原句的前文,一起喂进网络,并行检查这几个token是否符合它自己的概率分布。如果前三个都正确,那就全数接受;如果到第四个token时发现偏差,就扔掉从这开始的后续部分,保留正确的,再生成一个修正token,然后用草稿模型继续往前跑。

整个过程里,大模型一次正向传播就能验证一批token,而不必为每个token单独跑一遍。由于草稿模型猜对的概率相当高,实际平均下来每次能接受好几个token,等效于大幅减少了目标模型的调用次数。于是,聊天时你会觉得字词是流出来的,其实里面有个小模型在替大模型冲刺,大模型则像裁判员一样偶尔叫停纠偏。

有人据此认为,这纯粹是工程上的加速技巧,不提升模型智能。另一方则看到,投机解码让大模型应用的门槛在体验层真正降了下来,效果几乎无损却让反应更快,商业价值不容小觑。判断的关键在于:它维持了原模型输出的每一个词,没有为速度牺牲质量,这种“白得的效率”正是当前落地阶段最稀缺的润滑剂。