因为不懂推测解码,被面试官鄙视了...

我是丁师兄,专注于智能驾驶方向大模型落地,公众号:丁师兄大模型。

大模型1v1学习,已帮助多名同学上岸国内外大厂


前两天有个学员抱怨后天就要面试了,心里难免紧张。尽管他做了很多准备,但他还是担心面试官会问到像“大模型中的推测解码”这种复杂的技术问题。为了不在关键时刻掉链子,我迅速的进行了模拟演练,帮他理了理思路...

01可以简单介绍一下文本生成的概念吗?

可以的,文本生成主要包括两个过程:前向传递和解码。

前向传递是把输入通过模型中的各个层进行处理,生成一组潜在的 token,每个 token 都有其概率,表示它跟随给定输入的可能性。

解码过程则是从这些潜在 token 中选择一个来生成输出,常用的方法是贪婪解码,即选择概率最高的 token。

例如,当我们输入一个句子时,模型通过前向传递处理生成一组可能的下一个 token,然后通过解码选出最有可能的那个单词。

如下图是一个文本生成过程的例子,输入被送到大语言模型中,在这里它经历前向过程。模型返回一组 token 及其相关的概率。

然后我们通过选择概率最高的 token 进行解码,并将其附加到输入中,这个更新后的输入再次经历整个过程。

选择 token 后,我们将其附加到现有输入中,再次进行前向传递和解码。这个迭代过程构成了现代语言模型中文本生成的基础。 

02大语言模型响应延迟的主要原因是什么?

大语言模型的响应时间延迟主要是因为前向传递过程非常耗时。

尤其是当模型在本地托管或者服务于有限数量的用户时,需要频繁加载层权重到本地设备,这个过程受到了内存带宽的限制,被称为“内存受限”。

另外,对于较大的批处理大小,瓶颈通常会转向计算受限过程。换句话说,模型的计算资源也可能成为瓶颈,影响响应时间。

03推测解码是怎么解决这个问题的呢?

推测解码通过缓存 Key 和 Value 状态来优化生成过程。在生成过程中,模型只需计算新 token 的注意力,而不必重新计算所有先前 token 的注意力。

这显著减少了计算时间,提高了响应速度。比如,模型在生成一段文本时,先计算并缓存中间状态,下次生成时直接利用这些缓存,不再重复计算,节省了大量时间。

04可以详细说说推测解码的工作原理吗?

推测解码的关键在于缓存前向传递中计算的 Key 和 Value 状态。

具体步骤是:

  • 初始输入处理:输入经过前向传递生成一组 token 及其概率。

  • 选择 token 并缓存:从这些 token 中选择概率最高的那个,将其附加到输入中,同时缓存 Key 和 Value 状态。

  • 重复迭代:更新后的输入再次进行前向传递和解码,这次利用缓存的状态来加速计算。

  • 评估 token:在每次迭代过程中,不仅预测下一个 token,还评估所选择的 token 是否是最优选择。

通过这些步骤,推测解码能在保证高质量文本生成的同时,大大加快生成速度。这种方法对于需要快速响应的应用,特别有效。

05缓存具体是怎么减少冗余计算的?

缓存通过存储当前生成的 token 列表,使前向传递只需计算下一个 token 的概率,而不必重新计算所有先前 token 的概率。

例如,如果已经生成了一段文本,缓存可以记录前面部分的计算结果,生成新 token 时只需计算新加部分的概率。这样就避免了重复计算,极大提高了效率。

06推测解码如何在小模型和大模型之间取得平衡

推测解码通过结合小模型的低延迟和大模型的高质量来实现平衡。

具体来说:

  • 选择一个小模型和一个大模型,它们使用相同的分词器,以便比较它们的 logits。

  • 使用小模型生成一定数量的候选新 token,比如 3 个。

  • 将原始输入与这 3 个新 token 结合,输入到大模型中进行前向传递,得到新输入 token 的概率列表。

  • 使用贪婪解码对最后的 4 个 token 进行解码,从左到右比较大模型解码的 token 与候选新 token。如果 token 匹配,我们接受它们并将其附加到原始输入。继续这个过程,直到第一次不匹配发生,此时将大模型的 token 附加到输入中,再次传递给小模型生成另外 3 个 token,重复整个过程。

通过这种方法,每次迭代中生成 1 到 4 个新 token,既利用了小模型的速度,又确保了大模型的质量。

END


我是丁师兄,专注于智能驾驶方向大模型落地,公众号:丁师兄大模型。

大模型1v1学习,已帮助多名同学上岸国内外大厂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值