从提示到预测:理解LLM中的预填充、解码和KV缓存

从提示到预测:理解LLM中的预填充、解码和KV缓存

💡 原文英文,约300词,阅读约需1分钟。
📝

内容提要

本文介绍了如何使用PyTorch实现选择器函数,生成条件张量,并计算不同注意力头的得分矩阵,最终得到上下文向量。

🎯

关键要点

  • 使用PyTorch实现选择器函数,生成条件张量。
  • 选择器函数根据条件返回+1/-1的张量。
  • 定义了多个注意力头,每个头选择不同的token。
  • 头1选择偶数位置的token,头2选择最后一个token,头3选择第一个token,头4选择所有可见token。
  • 计算每个头的得分矩阵,并进行堆叠。
  • 应用因果掩码,确保位置i只能关注于位置<=i。
  • 将得分转换为注意力权重,并处理完全掩码的行。
  • 计算上下文向量,输出每个注意力头的上下文。

延伸问答

如何使用PyTorch实现选择器函数?

选择器函数通过条件返回+1/-1的张量,并生成条件张量。

注意力头的选择策略是什么?

不同的注意力头选择不同的token,例如头1选择偶数位置的token,头2选择最后一个token。

如何计算注意力头的得分矩阵?

通过将查询Q与选择器生成的K矩阵相乘,并进行缩放来计算得分矩阵。

因果掩码在计算中有什么作用?

因果掩码确保位置i只能关注于位置<=i,从而保持信息的因果性。

如何将得分转换为注意力权重?

得分通过softmax函数转换为注意力权重,并处理完全掩码的行。

上下文向量是如何计算的?

上下文向量通过将注意力权重与值V矩阵相乘得到。

➡️

继续阅读