在这篇文章中,我们将演示每次在生成步骤中将整个序列(包括提示语 tokens 和生成的文本 tokens )作为输入时,将会涉及到的冗余计算。也就是说,使用整个序列作为每一次 token 生成的输入可能会导致一些不必要的计算,而这篇文章将会探讨如何通过一种名为 KV 缓存的技术来避免这些冗余计算。 该技术简单来说就是存储和重复使用我们原本需要重新计算的部分。最后,我们将了解 KV 缓存技术是如何修改生成阶段(generation phase)并使其有别于启动阶段(initiation phase)的。
01 关于 Transformer 注意力层的简要回顾
让我们先来了解一下最原始版本的 Transformer(图1) 模型中多头注意力(MHA)层的一些情况。


图1 — Transformer 解码器层(上方)和双头(自)注意力层(下方)的详细视图,输入序列长度为 3。
为了简单起见,我们假设只处理长度为 t 的单个输入序列(即 batch size 为 1 ):
在整个处理过程的每一步上,输入序列(提示语)中的每个 token 都由一个稠密向量(dense vector)表示(图1中的浅
订阅专栏 解锁全文
441

被折叠的 条评论
为什么被折叠?



