今天是2023年10月6日,星期五,北京,天气晴,国庆假期最后一天。
我们今天来看看几个有趣的话题,一个是利用KV-Cache让大模型处理长文更高效:StreamingLLM,这个在当前大模型长文本推理上有一定的帮助。
另一个是ccks2023知识图谱会议上开放了一些论坛的材料(https://sigkg.cn/ccks2023/),今天翻了翻,有一些好的思路截取分享出来,对于大模型时代在知识图谱的一些走势有启发作用。
一、利用注意力汇聚让大模型更高效处理长文本:StreamingLLM
大模型的效率问题一直是我们所关注的。例如在训练端,有先后出现flash-attention,用来加速训练速度,针对长文本训练上,LONGLORA利用shift short attention偏置短注意力来低成本进行长文本微调。
而在多轮对话等流媒体应用中部署大型语言模型(LLM)是迫切需要的,因为在这些应用中预计会有长时间的交互。
《EFFICIENT STREAMING LANGUAGE MODELS WITH ATTENTION SINKS》一文针对上述问题,提出了一种优化方案。
地址:arxiv.org/abs/2309.17453,github.com/mit-han-lab/streaming-llm
注意,这个工作并不是针对长文本做的一些算法优化,也不是某些公众号说吹嘘的处理无限度上下文的工作(“研究者提出了一种名为「StreamingLLM」的方法,使语言模型能够流畅地处理无穷无尽的文本”),正如该工作所提到的,StreamingLLM与最近的上下文扩展方法是正交的,在StreamingLLM的语境中,”语境扩展”指的是使用更大的缓存来存储更多最新标记的可能性,是冲着高效解码去的。
其在处理文章,并没有改变llm上下文窗口大小,只保留最近的标记和注意力,丢弃中间的标记,这意味着模型只能处理最新的标记。上下文窗口仍受初始预训练的限制。例如,如果Llama-2在预训练时使用了4096个上下文窗口,那么Llama-2上的StreamingLLM的最大缓存大小仍为4096。
1、提出背景
在解码阶段,缓存先前标记的键值状态(KV)会消耗大量内存。其次,流行的LLM无法泛化到比训练序列长度更长的文本。窗口注意力(Window attention)只缓存最近的KV,这是一种自然的方法,但当文本长度超过缓存大小时,这种方法就失效了。
图1显示了StreamingLLM与现有方法的对比图示,建模任务为:语言模型在长度为L的文本上进行预训练,预测第T个标记(T≫L)。
(a)Dense Attention的时间复杂度为O(T2),缓存大小不断增加。当文本长度超过预训练文本长度时,其性能会下降。
(b)Window Attention会缓存最近L个标记的KV,这种方法只在最近标记的KV状态上保持一个固定大小的滑动窗口。
虽然推理效率很高,这种方法能确保在缓存被填满后仍能保持稳定的内存使用率和解码速度,但一旦序列长度超过缓存大小,即甚至只是删除第一个标记的KV,模型就会崩溃,性能就会急剧下降,如图3所示。
(c)重新计算的滑动窗口为每个新标记从最近的L个标记中重建KV状态,带重新计算的滑动窗口,这种方法会为每个生成的标记重建最近标记的KV状态。虽然它在长文本上表现良好,但由于上下文重新计算中的二次注意力,其复杂度为O(TL2),因此速度明显较慢,这使得这种方法在实际的流应用中并不实用。
2、具体实现原理
Streaming LLM保留注意力汇聚(几个初始标记),以便结合最近的标记进行稳定的注意力计算,是一种kv-cache的方法
该工作观察到一个有趣的现象,注意力汇聚(attention sink),保留初始标记的KV将在很大程度上恢复窗口注意力的性能,注意力下沉的出现是由于初始标记作为”下沉”的注意力得分很高,即使它们在语义上并不重要。
图2显示了256个句子(每个句子长度为16)中Llama-2-7B的平均注意力对数可视化。前两层(第0层和第1层)的注意力图显示出”局部”模式,最近的标记受到更多关注。
在最下面两层之外,该模型在所有层和头中都高度关注初始标记。
也就是说,大量注意力分数被分配给了初始标记,而不管这些标记与语言建模任务是否相关,这些标记称为注意力汇聚(attention sink),尽管它们缺乏语义意义,但却收集了大量的注意力分数,原因归结于Softmax操作,该操作要求所有上下文标记的注意力分数总和为1。因此,即使当前查询在许多以前的标记中没有很强的匹配,模型仍然需要将这些不需要的注意力值分配到某处,从而使其总和为1。
初始标记作为汇标记的原因很直观,由于自回归语言建模的特性,初始标记对几乎所有后续标记都是可见的,这使得它们更容易被训练成注意力汇聚。
基于上述见解,该工作提出流式语言模型(StreamingLLM),利用注意力汇聚具有高注意力值这一事实,保留这些注意力汇可以使注意力分数分布接近正态分布,StreamingLLM只需保持注意力汇标记的KV值(仅4个初始标记就足够了)和滑动窗口的KV值,就能锚定注意力计算并稳定模型的性能。
3、实验效果
在结论方面,该工作表明,StreamingLLM可以让Llama-2、MPT、Falcon和Pythia进行稳定而高效的语言建模,在预训练过程中添加一个占位符作为专门的注意力汇聚,可以进一步改进流式部署。
我们可以注意到,该工作的FAQ部分,做了一些答疑,以免带来一些误解,可供参考:
1)对于LLMs来说,”处理无限长输入”意味着什么?
使用LLM处理无限长文本是一项挑战。值得注意的是,存储之前所有的键和值(KV)状态需要大量内存,模型可能难以生成超过其训练序列长度的文本,StreamingLLM通过只保留最新的标记和注意力汇聚,而丢弃中间的标记。这样,模型就能在不重置缓存的情况下从最近的标记生成连贯的文本,这是早期方法所不具备的能力。
2)LLM的上下文窗口会扩大吗?
不会。上下文窗口保持不变,只保留最近的标记和注意力,丢弃中间的标记,这意味着模型只能处理最新的标记。上下文窗口仍受初始预训练的限制。例如,如果Llama-2在预训练时使用了4096个上下文窗口,那么Llama-2上的StreamingLLM的最大缓存大小仍为4096。
3)是否可以在StreamingLLM中输入长篇文本(如一本书)进行摘要?
虽然可以输入长篇文本,但模型只能识别最新的标记。因此,如果输入的是一本书,StreamingLLM可能只会对结尾段落进行摘要,而这些段落的内容可能并不深刻。正如前面所强调的,我们既没有扩大LLM的上下文窗口,也没有增强它们的长期记忆。StreamingLLM的优势在于无需刷新缓存就能从最近的标记生成流畅的文本。
4)StreamingLLM的理想用例是什么?
StreamingLLM针对多轮对话等流式应用进行了优化。它非常适合模型需要持续运行而不需要大量内存或依赖过去数据的场景。基于LLM的日常助手就是一个例子。StreamingLLM可以让模型持续运行,根据最近的对话做出响应,而无需刷新缓存。早期的方法要么需要在对话长度超过训练长度时重置缓存(丢失最近的上下文),要么需要根据最近的文本历史重新计算KV状态,而这可能会非常耗时。
二、CCKS2023之大模型背景下的知识图谱研究趋势
张宁豫老师《面向知识图谱的构建与推理研究进展》介绍了当前知识图谱的研究趋势,从方法范式、处理对象、任务类型、评测维度等几个方面展开论述,这些归类方式具有一定的指引性:
1、方法范式扩展:端到端学习、工具调用与神经符号集成、多智能体人机协同
基于大模型进行端到端抽取已经成为一大趋势,例如UIE: Unified Structure Generation、 InstructUIE: Multi-task Instruction Tuning、KGT5: A sequence-to-sequence T5-small model、 TechGPT:Technology-Oriented Generative Pretrained Transformer。
其中,以“知识图谱构建”为核心的关系三元组抽取等各类信息抽取任务,以“阅读理解”为核心的各类智能问答任务,以“文本理解”为核心的关键词生成等各类序列生成任务
在工具调用与神经符号集成上,Graph-ToolFormer使用LLM调用处理Graph数据的 工具,完成复杂的图推理等任务。StructGPT将符号推理与大模型推理迭代结合,采用高Iterative Reading then-Reasoning (IRR)迭代阅读-推理方法。Neural-Symbolic Entangled Framework将复杂KG的推理解耦为上下文KG搜索与逻辑查询推理的结合提升推理能力。
在多智能体人机协同上,Agent:以LLM为核心,可以与agent、tool、human等协作完成任务。
2、处理对象扩展:模型参数(隐式知识)、视觉、音频、表格
在处理对象上,扩展为模型参数(隐式知识),包括PLM + Commonsense KG、PLM + Ontological Knowledge、PLM + Knowledge Graph、利用语言模型解决多模态实体、关系抽取链接与推理任务。
又如,SpeechRE从音频数据中提取实体之间语义关系的问题,Table to KG将问题拓展到表格,从表格数据中提取实体和关系构建知识图谱的问题。
3、任务类型扩展:复杂知识建模与获取、类比推理
在任务类型扩展上,拓展至复杂知识建模与获取,如用大模型来获取本体知识,利用语言模型获取脚本知识为专业化小型模型赋予约束语言规划能力。
又如,ANALOGYKB将现有的知识图谱(KG)衍生而来的一个百万规模的类比知识库(KB),进行相同关系的类比、类似关系的类比,MKG_Analogy基于structure mapping理论模拟多模态类比过程
4、评测维度扩展:系统评测、具身评测
在模型评估方面,目前已发展为系统评测、具身评测两种,其中AgentBench一个多维度的演进基准,评估LLM作为代理在多轮开放式生成环境(知识图谱)中的推理和决策能力。
二、大模型背景下事理图谱的研究动向及落地场景
秦兵老师的《知识计算与大模型能力》以及李涓子老师的《大模型时代知识工程使命的再审视》也给出了一些十分有趣的观点,如下:
1、知识图谱作为后处理工具对输出进行验证
2、利用知识图谱构建更好的prompt
实际上,我们在之前的文章中有介绍到,可以利用知识图谱来生成prompt。
对于事理知识增强的prompt,认知指导的双系统推理,事理图谱中获得大量相关证据,生成知识增强的提示;大模型对于 提示信息进行综合与精炼。
3、利用大模型进行知识图谱构建
知识工程借力大模型,通过提示将大模型存储的大量参数化知识转化为符号知识,通过上下文学习或者指令微调从给定资源中获取多种类型的知识。
4、利用知识图谱进行大模型评测
Knowledge-oriented LLM Assessment,KoLA,可以用来做大模型评测。
5、落地场景之金融研报辅助生成
李金龙老师的《金融大模型的研究与应用》介绍了几个有趣的金融领域应用场景,投研分析的研报辅助生成
探索大模型+投研能力,在研究员沉淀的投研框架之上,从传统规则模板式的辅助研报编写,向结合大模型的多样化生成转变,表达更灵活,题材更多样,基于研究员总结的投研逻辑和大模型NL2SQL的技术,解决研报生成中大模型的幻觉问题。
6、落地场景之语音速记,会议录音上传,语音文字识别,大模型摘要撰写
丹渥智能《基于大语言模型的数智化一站式投研端》一文介绍语音速记功能,提出ChatMiner文档信息挖掘功能。
7、落地场景之对话与问答:知识图谱增强可靠性并提供事实凭据
王文广老师《知识图谱与大模型融合应用探索与实践》一文,介绍了知识图谱在产业落地中的一些探索。
总结
本文主要介绍了利用KV-Cache让大模型部署流式解码更快:StreamingLLM、CCKS2023之大模型背景下的知识图谱研究趋势和一些落地场景,这些都很有启发意义。
对于ccks2023各个论坛的报告也都开放了,感兴趣的可以前去看看。
今天是国庆假期的最后一天,假期归零,节后继续加油。
参考文献
1、https://sigkg.cn/ccks2023/
2、丹渥智能.《基于大语言模型的数智化一站式投研端》,ccks2023
3、王文广.《知识图谱与大模型融合应用探索与实践》,ccks2023
4、李金龙.《金融大模型的研究与应用》,ccks2023
5、秦兵.《知识计算与大模型能力》,ccks2023
6、李涓子.《大模型时代知识工程使命的再审视》,ccks2023
7、张宁豫.《面向知识图谱的构建与推理研究进展》,ccks2023
8、arxiv.org/abs/2309.17453,github.com/mit-han-lab/streaming-llm
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。