前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >StreamingLLM输入、输出无限长的小记

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

作者头像
悟乙己
发布2023-10-19 14:24:38
3210
发布2023-10-19 14:24:38
举报
文章被收录于专栏:素质云笔记素质云笔记

本文中: 最多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 框架问世,该框架有哪些功能?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 第一个概念点:KV Cache
  • 2 attention sink
  • 3 无限输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档