在 Transformer 的自注意力机制中,每个 token 都与所有其他 token 相关联。 因此,如果我们有 n 个标记,那么自注意力的计算复杂度为 o(n 2)。 随着序列长度 n 的增加,所需的计算量和存储空间量会直线增长,这会导致非常大的计算和存储开销。
这意味着,当你不再满足于将一个 200 字的段落喂给大模型,而是想给他一个 20,000 字的**时,它的计算量会增加 10,000 倍。
来源:Harm de Vries 博客 输入和输出对话框就像是 AI 通往现实世界的门户。 从 ChatGPT 首次跳转到 4096 个 token,到 GPT-4 将上下文输入长度扩展到 32K,再到 MetaAI 提出的百万个 token 的兆字节法,以及国内大模型厂商 Moon 和百川智能的 200,000 和 350,000 汉字长度的竞争,解决大模型实际问题的过程, 对输入窗口的需求正在成为一个重要的先决条件。
也就是说,当它能像读脑筋急转弯一样仔细细致地读《红楼梦》时,事情就会容易得多。
突破性的奇点落在代币的数量上。 对它的研究从未停止过。
对于上下文长度的推进是必要的,复旦大学和香港大学的研究团队在一篇文章中论证道。 他们做了一个 L-EVAL 基准测试,其中 Claude-100K 在封闭任务的推理方面仍然弱于 GPT-4-32K,但在开放式任务中,时间越长——这意味着它通常有更多的输入标记——优于 GPT-4-32K。
来源:《L-Eval:为长上下文语言模型建立标准化评估》 结论是很积极的,意思是说,努力的故事可以弥补笨拙,如果你脑子不好,可以多给几句指令,傻学生也能有所成就。
在此之前,Google Brain 已经做过类似的实验,曾参与 Bard 研发训练的工程师李伟告诉 Silicon Star,去年,Google 团队通过控制训练输入上下文的长度来观察模型的输出性能,结果确实在上下文长度和模型性能之间存在正相关关系。 这种认识也有助于巴德后来的发展。
至少这是行业内一个非常坚定的方向。 从理论上讲,继续扩展上下文长度不是很好吗?
问题是它无法扩展,而且这个障碍仍然落在变压器上。
基于 Transformer 架构的大模型也意味着接受自注意力机制给出的功能和限制。 自我注意力机制喜欢理解,但它们本质上与长文本输入不兼容。 文本越长,训练难度越大,最坏的结果是梯度或消失。
梯度是参数更新的方向和大小。 理想情况下,在每一轮深度学习 习 之后,大模型生成的内容与人类期望的反应之间的差距应该比以前更近。 如果将模型视为尝试习线性关系 y=wx+b,则 w 表示模型正在寻找的权重。 梯度的概念是表示 w 如何变化。
一个稳定的学习习过程是渐进的,渐进意味着微调是可追溯的。 也就是说,权重不能在不改变或变异的情况下改变。
没有变化或变化很小(即梯度消失)意味着深度学习习网络的学习习时间无限延长;突变称为梯度,权重更新过多,导致网络不稳定。 这可能会导致权重变得非常大或模型发散,从而无法进行训练。
从本质上讲,短文本往往不能完全描述复杂的问题,而且在注意力机制的限制下,处理长文本需要大量的计算能力,这意味着成本的增加。 上下文本身的长度决定了描述问题的能力,而自注意力机制决定了理解和拆解大模型的能力,而算力支撑着这一切。
来源:ARXIV问题仍然在Transformer上,由于自注意力机制的计算复杂性,上下文长度的扩展被困在三角形中。
这个不可能的三角形就在这里,解决方案就在这里。 为了增加上下文的长度,能够将哈希率(金钱和卡片)推到无穷大显然是理想的。 显然,这在现在不现实,所以我们只能移动注意力机制的思想,将计算复杂度从 n 2 降低。
扩展上下文输入的努力在很大程度上促成了变压器革命。
今年 7 月,谷歌的 DeepMind 研究团队提出了一种新的聚焦转换器 (FOT) 框架,该框架使用受对比 习 启发的训练过程来改善(键,值)空间的结构,并允许一些注意力层通过 k 最近邻 (knn) 算法访问外部存储器中的(键、值)对。 此机制有效地扩展了总上下文长度。
这有点像谷歌 2022 年记忆转换器的衍生品,其基于 transformer 的调整逻辑是将它以前看到的所有令牌保存在数据库中,同时在编码长文本的同时向下读取在读取当前片段时,会以 knn 的方式在数据库中找到相似的内容。
将聚焦 Transformer 与 LLAMA-3B 开源模型相结合,成为 LongLLAMA-3B,然后与 LLAMA-3B 在上下文输入的长度上进行比较。 结果,在上下文输入长度达到100k后,Longllama-3b的响应精度从94开始提高5 快速下降。 而LLAMA-3B在超过2K后瞬间跌至0。
来源:Focused Transformer: Contrastive Training for Context Scaling 于 2019 年从 Transformer-XL 中诞生,并引入了段循环机制机制)为模型提供额外的上下文,一年后,Longformer 和 Bigbird 引入了稀疏注意力机制,首次将长度扩展到 4096 个令牌,循环注意力和稀疏注意力机制开始成为 Transformer 的转型方向。
Focused Transformer 也通过 knn 算法实现了某种形式的稀疏注意力,较新的架构调整方案是环注意力。
10 月,Berkeley 的团队提出了 Ring Attention,它从内存的角度改变了 Transformer 框架。 通过块处理自注意力机制和前馈网络计算方法,可以将上下文序列分布在多个设备中,并更有效地进行分析。 从理论上讲,这也消除了单个设备施加的内存限制,允许序列训练和推理处理比以前的内存效率转换器长得多的序列。
也就是说,Ring Attention 实现了“近乎无限的上下文”。
但这件事不是绝对的。 斯坦福大学在9月份发表的一项研究表明,如果上下文太长,模型将跳过中间部分。
他们对许多不同的开源(mpt-30b-instruct、longchat-13b (16k))和闭源(openai 的 GPT-35-Turbo 和 Anthropic 的 Claude)。研究人员通过向输入上下文添加更多文档来增加输入上下文的长度(类似于在检索增强生成任务中检索更多文档);通过修改输入上下文中文文件的顺序,将相关信息放在上下文的开头、中间或结尾,从而修改相关信息在上下文中的位置。
资料来源:“迷失在中间:语言模型如何使用长上下文”显示,随着相关信息位置的变化,模型性能呈现明显的 U 形趋势。 也就是说,当相关信息出现在输入上下文的开头或结尾时,语言模型的性能最佳;当模型必须获取和使用的信息位于输入上下文的中间时,模型性能会显著降低。 例如,当相关信息放在其输入上下文的中间时,gpt35-Turbo 在多文档问题任务上的表现比没有文档时更差(即闭卷设置;56.1%)。此外,研究人员发现,当上下文较长时,模型性能会稳步下降;具有上下文扩展的模型并不一定能更好地使用自己的上下文。
头上的一声巨响。 但这可能是一件好事,因为如果文章太长,人们可能只会记住开头和结尾,大模型与人脑有多相似。
目前,GPT-4 和 LLAMA 2 Long 的上下文长度已达到 32K,而 Claude 21 达到 200k。 在国内的大模型中,chatglm-6b的context长度已经达到了32k,而最新登场的明星公司《暗月面》直接拿出了200k kimi聊天。
月亮暗面的想法也是改造变形金刚,但杨志霖也导致了对抗。
蝌蚪模型和蜜蜂模型。
坦率地说,有很多方法可以使凹形看起来像可以支持更长的上下文输入,而最简单的方法是牺牲模型本身的参数。
模型参数的减少意味着内存消耗的减少和计算的简化,内存和计算资源的重新分配可以转化为相同计算资源下上下文输入长度的增加。 回顾过去,Focused Transformer 的验证是放在一个 3B 小参数模型上,而 Ring Attention 的测试也更侧重于所提方法的有效性验证,而不是一个参数超过 100 亿的大模型。
来源:《Focused Transformer: Contrastive Training for Context Scaling》 但 10 亿级模型参数并不具备太好的智能涌现能力。 杨将其描述为蝌蚪模型,因为它不能再做任何事情了。
除此之外,增加长度的另一种方法是从外部引入搜索机制。
这也是相当多的大型模型可以采取的快速扩展上下文长度的方法——如果不使用自注意力机制,另一种方式是将长文本变成短文本的集合。
例如,公共检索增强生成 (RAG)。 它是一个深度学习习框架,结合了检索和生成机制,旨在将信息检索的能力引入序列生成任务中,以便模型在生成响应或内容时可以利用外部知识库。
来源:当 towhee 模型处理长文本时,引入的搜索机制会检索数据库中的短文本,从而获得由多个短文本响应组成的长文本。 一次只加载它需要的短文本片段,避免了模型无法一次读取整个长文本的问题。
杨志林将这种模型称为蜜蜂模型。
传统的 Transformer 机构,例如 GPT,输入长度有限,通常限制在几百到几千个代币。 这意味着在处理大量信息或长文档时,模型可能会遇到困难。 通过其检索机制,RAG 可以在大型外部知识库中检索信息,然后仅将最相关的片段与原始输入一起输入到生成模型中。 这允许模型处理比其原始输入更大的长度。
这个想法背后的基本原理很有趣。 如果循环注意力和稀疏注意力都是对模型内部注意力机制的改进,属于模型结构级优化,那么通过检索外部数据库中的相关信息片段,然后将最相关的片段与原始输入一起馈入生成模型,避免直接处理完整的长文本,这只是一种输入级优化。
这种方法的主要目的是从大量文档中快速捕获有关当前问题的最相关信息,这些信息可能仅代表原始输入的部分上下文或某些特定方面。 换句话说,这种方法更强调本地信息,可能无法掌握长文本输入的整体含义。
这就像在蜂巢中彼此分离的模块。
蜜蜂模型的说法有些戏谑的意思,指向市面上大型模型厂商利用插件搜索来扩大窗口容量,让人很难不想到近几个月的快速发展,一直在强调其“搜索基因”百川智能。
10月30日,百川智能发布新款百川2-192K大机型。 上下文窗口的长度被拉伸到 192k,相当于大约 350,000 个汉字。 Kimi Chat on the Dark Side of the Moon 将 Claude-100K 的上下文长度扩大了 25倍,百川2-192K几乎是Kimi Chat上限的两倍。
在Longeval长窗口文本理解评测榜中,百川2-192K的表现优于Claude-100K,即使在窗口长度超过100K后仍保持强劲的性能,后者在70K**后表现极快。
但是,对于“我们为什么不尝试更长的上下文”这个问题,还有另一个观察角度。
公开的互联网抓取数据集 CommonCrawl 是 Llama 训练数据集的主要数据**,包括 CommonCrawl 获得的另一大数据集 C4,占 Llama 训练数据集的 82%,而 Commoncrawl 中的语料数据非常短。 ServiceNow的研究员Harm de Vries在一项分析中表示,在这个大型数据集中,超过95%的语料库数据文件的令牌数少于2个字节,其中绝大多数实际上都在1k以下的范围内。
图源:哈姆·德弗里斯博客 “如果你想找到具有明显上下文逻辑的长文本,那就更少了,”李伟说。
预计更长的培训将寄托在书籍甚至维基百科等上。 哈姆·德弗里斯(Harm de Vries)的研究表明,超过50%的维基百科文章拥有超过4k的代币,超过75%的书籍拥有超过16k的代币。 但是,从LLAMA训练所期望的主要数据**的分布来看,维基百科和书籍的比例仅为45%,*arxiv)仅占25%。三者之和只有 270GB 的数据,不到 CommonCrawl 的 10%。
或许目前没有那么多长篇文本语料库可以用来训练,变形金刚不读《红楼梦》,没有那么多《红楼梦》可读,这对于所有追求语境长度的人来说,都是一个真正的问题。