特斯拉前AI总监Andrej Karpathy:大模型有内存限制,这个妙招挺好用!

andrej karpathy 用通俗易懂的语言介绍了 speculative execution。
「如今,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,继续使用大型模型进行解码。
由于小模型计算量小,从而大大减少了内存访问需求。
介绍完「speculative decoding」,我们再回到 karpathy 的推特。karpathy 是针对下面内容回复的。
karpathy 表示:对于 llm 来说,「speculative execution」 是一种极好的推理 — 时间优化方法。
它取决于以下方面:在单个输入 token 上分发 llm 所花费的时间与在批处理中分发 k 个输入 token 所花费的时间一样多。产生这样的原因是因为采样严重受内存限制:模型运行时的大部分工作不是在做计算,而是从 vram 读取 transformer 的权重到片上缓存进行处理。如果你要做的工作是来读取这些权值,你可以把它们应用到一整批输入向量上。
但是我们不能一次性采样一批 k 个 token,因为每 n 个 token 都取决于我们在第 n-1 步采样的 token。由于存在串行依赖性,因此基线实现只是从左到右逐一进行。
现在最聪明的想法是使用一个小而便宜的草稿模型(draft model),先生成 k 个 token 候选序列,即一个「草稿」。然后用大模型批量的将输入组合在一起。速度几乎与仅输入一个 token 一样快。接着从左到右遍历模型和样本 token 预测的 logits。任何与「草稿」一致的样本都允许立即跳到下一个 token。如果存在分歧,那么就丢弃「草稿」并承担一些一次性工作的成本(对「草稿」进行采样并为所有后续 token 进行前向传递)。
这种方法起作用的原因在于,很多「草稿」token 都会被接受,因为它们很容易,所以即使是更小的草稿模型也能得到它们。当这些简单的 token 被接受时,我们会跳过这些部分。大模型不同意的 hard token 会回落到原始速度,但由于一些额外的工作,实际上速度会慢一些。
karpathy 表示,这个奇怪的技巧之所以有效,是因为 llm 在推理时受到内存限制,在对单个序列进行采样的 batch size=1 设置中,很大一部分本地 llm 用例都属于这种情况。因为大多数 token 都很「简单」。

【图解评测】蓝宝石RX 460 1024sp超白金
建滔铜箔报告期内收入近5.87亿港元,同比下降3.68%
多管齐下,大唐移动践行5G+AI之道
智慧路灯的现在和未来会是什么样子
如何处理植保无人机喷头堵塞问题?
特斯拉前AI总监Andrej Karpathy:大模型有内存限制,这个妙招挺好用!
AMD发布首款平板电脑低功耗芯片
赛灵思用定点数实现信号处理链
压力变送器故障检修案例分析
物联网卡在物品定位追踪器中的应用
TYLT VU无线充电器:带来更高效充电效果
【底盘大PK】迈腾/天籁
2013新能源、工业与嵌入式应用开发者论坛成都上演
MSP430G2553的引脚功能详细图解
零跑C11成电动汽车行业的价格屠夫
中国制造突破新进展,TCL宣布将发布多款miniLED电视
iGameRTX2070Ultra评测 性能怎么样
贝塔射线扬尘监测仪助力城市空气质量改善
OpenHarmony支持HDMI接口声卡适配说明
铭普光磁推出低成本、双速率数据中心全系光模块产品