StreamingLLM输入、输出无限长的小记

2023-10-19 14:24:38 浏览数 (2)

本文中: 最多400万token上下文、推理提速22倍,StreamingLLM火了,已获GitHub 2.5K星 提到了StreamingLLM可以提供给模型无限输入、无限输出的能力,大概解读一下这个概念

可以实现:

  • 可以支持无限输入,但原理不是全记住这些输入
  • 可以支持无限输出

1 第一个概念点:KV Cache

Transformer推理性能优化技术很重要的一个就是K V cache,能否通俗分析,可以结合代码?

本来每次模型输出都是依次进行:

代码语言:javascript复制
step 0 input: Lionel Messi is a player
step 1 input: Lionel Messi is a player who
step 2 input: Lionel Messi is a player who has
step 3 input: Lionel Messi is a player who has been
step 4 input: Lionel Messi is a player who has been a
step 5 input: Lionel Messi is a player who has been a key
step 6 input: Lionel Messi is a player who has been a key part
step 7 input: Lionel Messi is a player who has been a key part of
step 8 input: Lionel Messi is a player who has been a key part of the
step 9 input: Lionel Messi is a player who has been a key part of the team
step 10 input: Lionel Messi is a player who has been a key part of the team's
step 11 input: Lionel Messi is a player who has been a key part of the team's success
step 12 input: Lionel Messi is a player who has been a key part of the team's success.
step 13 input: Lionel Messi is a player who has been a key part of the team's success.

 Input: Lionel Messi is a
Output: Lionel Messi is a player who has been a key part of the team's success.

当前轮输出token与输入tokens拼接,并作为下一轮的输入tokens,反复多次。可以看出第i 1轮输入数据只比第i轮输入数据新增了一个token,其他全部相同!因此第i 1轮推理时必然包含了第 i 轮的部分计算。KV Cache,缓存当前轮可重复利用的计算结果,下一轮计算时直接读取缓存结果,就是这么简单,不存在什么Cache miss问题。

2 attention sink

attention sink这个词笔者认为是 注意力机制一直关注的地方。从下图可知,也就是前几个token ,不论文章多长,前几个token一直非常重要。

如果文章非常长,那开头还这么重要,是不是有违常理? 这里的大概解释是,softmax导致的

由于Softmax需要所有位置的值的总和为1,因此必须“表态”给某些位置较大的权重,这就可能导致错误的权重更新,而这个错误在后续的过程中很难被纠正。

因为前几个token非常重要, 由此StreamingLLM 提供了【Window Attention的改进版】

attention关注两个区域:

  • 黄色区域,attention sinks,前几个token
  • 蓝色区域,rolling kv cache,临近的几个token

由此,为啥StreamingLLM可以支持无限输入,代表,attention只关注了以上两个部分

3 无限输出

StreamingLLM的作用更像是可以自动帮你新建会话。比如,你和一个2K窗口的机器人说话,它说到2K token就戛然而止,你需要再补个“继续”之类的,才能继续对话。 StreamingLLM帮你省了这一步,直接流式无限输出了


参考: LLM推理技术之StreamingLLM:如何拥有无限长生成能力 最多400万token上下文、推理提速22倍,StreamingLLM火了,已获GitHub 2.5K星 StreamingLLM 框架问世,该框架有哪些功能?

0 人点赞