「如今,LLM(大语言模型)并不是单点突破的 —— 而是需要多个重要组件有效协同工作的系统。Speculative decoding 是帮助我们从系统角度思考的一个很好的例子。」爱丁堡大学博士生符尧表示道。
符尧上述观点评论的是特斯拉前 AI 总监、年初重回 OpenAI 的 Andrej Karpathy 刚刚发布的一条推特。
人形机器人公司 1X Technologies 的 AI 副总裁 Eric Jang 评价道:「Karpathy 很好的解释了 LLM 的 speculative execution。其他自回归模型可能会以类似的方式加速。连续(扩散)模型可能从 K 步中获益较少(可能在第 1 步后偏离猜测),但可以将其应用于 VQ-latents 的离散代码。」
看完上述评价,我们大概也了解了,Karpathy 说的「Speculative execution」,这是优化技术的一类,采用这个技术的计算机系统会根据现有信息,利用空转时间提前执行一些将来可能用得上,也可能用不上的指令。如果指令执行完成后发现用不上,系统会抛弃计算结果,并回退执行期间造成的副作用(如缓存)。
为了让大家更好的理解 Karpathy 的内容。我们先介绍一下「Speculative decoding」方法,对后续理解更加有益,其主要用于加速大模型的推理。据了解,GPT-4 泄密报告也提到了 OpenAI 线上模型推理使用了它(不确定是否 100%)。
关于「Speculative decoding」,已有几篇重要文献可供参考,这也是 Karpathy 为了写这则推特所参考的论文,包括谷歌今年 1 月发表的论文《Fast Inference from Transformers via Speculative Decoding》、DeepMind 今年 2 月发表的论文《Accelerating Large Language Model Decoding with Speculative Sampling》,以及谷歌等机构 2018 年的论文《Blockwise Parallel Decoding for Deep Autoregressive Models 》 。
简单来说,「Speculative decoding」使用两个模型:一个是原始目标模型称为大模型,另一个是比原始模型小得多的近似模型称为小模型。主要思想是先让小模型提前解码多个 token 进行猜测,并将它们作为单个 batch 输入到一个大模型中进行审核修正,其效果和直接用大模型解码等价。如果小模型猜测的不准确,那么大型模型会放弃小模型预测的 token,继续使用大型模型进行解码。