赞
踩
人是以字数来计算文本长度,大语言模型 (LLM)是以 token 数来计算长度的。LLM 使用 token 把一个句子分解成若干部分。
token 可以是一个单词、一个单词中的一个部分、甚至是一个字符,具体取决于它使用的标记化方法 (tokenization method)。比如:句子 “ChatGPT is great !” 可能会被分割成 [“Chat”, “G”, “PT”, " is", " great", “!”] 这 6 个 tokens。
上下文 token 长度为什么会有限制?有以下3方面的相互制约:文本长短、注意力、算力,这3方面不可能同时满足,也就是存在“不可能三角”,如下图所示:
也就是说:上下文文本越长,越难聚焦充分注意力(Transformer 网络的注意力机制),难以完整理解;注意力限制下,短文本无法完整解读复杂信息;处理长文本需要大量算力,从而提高了成本。
根本原因还是大模型的 Transformer 网络结构的自注意力机制,自注意力机制的计算量会随着上下文长度的增加呈平方级增长,比如:上下文增加32倍时,计算量实际会增长1000倍。这就构成了“不可能三角”中的第一组矛盾:上下文文本长短与注意力。
另外在大模型实际部署时,企业端根本无法提供很大的算力支持,这也就倒逼厂商无论是扩大模型参数还是文本长度,都要紧守算力一关。但现阶段要想突破更长的文本技术,就不得不消耗更多的算力,于是就形成了文本长短与算力之间的第二组矛盾。
突破大模型的 tokens 限制主要采用以下 3种方法。
方法一:采用 LongLoRA 微调技术重建自注意力计算方式。
通过 LongLoRA 微调技术将长文本划分为不同的组,在每个组里进行计算,而不用计算每个词之间的关系,从而降低计算量,提供生成速度。
方法二:采用 RAG 技术给大模型开“外挂”。
将长文本切分为多个短文本处理,大模型在处理长文本时,会在向量数据库中对短文本进行检索,以此来获得多个短文本回答构成的长文本。每次只加载所需要的短文本片段,从而避开了模型无法一次读入整个长文本的问题。
方法三:提升大模型支持的上下文长度。
对大模型的上下文长度持续优化,比如:以 OpenLLaMA-3B 和 OpenLLaMA-7B 模型为起点,在其基础上进行微调,产生了LONGLLaMA 新模型。该模型很容易外推到更长的序列,在 8K tokens上训练的模型,很容易外推到 256K 窗口大小。
在技术侧这3种方法到底如何实现?可以参与我们下面的技术群
技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。
成立了大模型技术交流群,本文完整代码、相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:来自CSDN + 技术交流
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。