本文中:
最多400万token上下文、推理提速22倍,StreamingLLM火了,已获GitHub 2.5K星
提到了StreamingLLM可以提供给模型无限输入、无限输出的能力,大概解读一下这个概念
可以实现:
- 可以支持无限输入,但原理不是全记住这些输入
- 可以支持无限输出
1 第一个概念点:KV Cache
Transformer推理性能优化技术很重要的一个就是K V cache,能否通俗分析,可以结合代码?
本来每次模型输出都是依次进行:
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 框架问世,该框架有哪些功能?