大模型为什么会有 tokens 限制?

人是以字数来计算文本长度,大语言模型 (LLM)是以 token 数来计算长度的。LLM 使用 token 把一个句子分解成若干部分。

token 可以是一个单词、一个单词中的一个部分、甚至是一个字符,具体取决于它使用的标记化方法 (tokenization method)。比如:句子 “ChatGPT is great !” 可能会被分割成 [“Chat”, “G”, “PT”, " is", " great", “!”] 这 6 个 tokens。

大模型为什么会有 tokens 限制?_第1张图片

上下文 token 长度为什么会有限制?有以下3方面的相互制约:文本长短、注意力、算力,这3方面不可能同时满足,也就是存在“不可能三角”,如下图所示:

大模型为什么会有 tokens 限制?_第2张图片

也就是说:上下文文本越长,越难聚焦充分注意力(Transformer 网络的注意力机制),难以完整理解;注意力限制下,短文本无法完整解读复杂信息;处理长文本需要大量算力,从而提高了成本。

根本原因还是大模型的 Transformer 网络结构的自注意力机制,自注意力机制的计算量会随着上下文长度的增加呈平方级增长,比如:上下文增加32倍时,计算量实际会增长1000倍。这就构成了“不可能三角”中的第一组矛盾:上下文文本长短与注意力。

另外在大模型实际部署时,企业端根本无法提供很大的算力支持,这也就倒逼厂商无论是扩大模型参数还是文本长度,都要紧守算力一关。但现阶段要想突破更长的文本技术,就不得不消耗更多的算力,于是就形成了文本长短与算力之间的第二组矛盾

大模型如何突破 tokens 限制?

突破大模型的 tokens 限制主要采用以下 3种方法。

方法一:采用 LongLoRA 微调技术重建自注意力计算方式

通过 LongLoRA 微调技术将长文本划分为不同的组,在每个组里进行计算,而不用计算每个词之间的关系,从而降低计算量,提供生成速度。

大模型为什么会有 tokens 限制?_第3张图片

方法二:采用 RAG 技术给大模型开“外挂”

将长文本切分为多个短文本处理,大模型在处理长文本时,会在向量数据库中对短文本进行检索,以此来获得多个短文本回答构成的长文本。每次只加载所需要的短文本片段,从而避开了模型无法一次读入整个长文本的问题。

大模型为什么会有 tokens 限制?_第4张图片

方法三:提升大模型支持的上下文长度

对大模型的上下文长度持续优化,比如:以 OpenLLaMA-3B 和 OpenLLaMA-7B 模型为起点,在其基础上进行微调,产生了LONGLLaMA 新模型。该模型很容易外推到更长的序列,在 8K tokens上训练的模型,很容易外推到 256K 窗口大小。

大模型为什么会有 tokens 限制?_第5张图片

在技术侧这3种方法到底如何实现?可以参与我们下面的技术群

技术交流&资料

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

成立了大模型技术交流群,本文完整代码、相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:来自CSDN + 技术交流

通俗易懂讲解大模型系列

  • 做大模型也有1年多了,聊聊这段时间的感悟!

  • 用通俗易懂的方式讲解:大模型算法工程师最全面试题汇总

  • 用通俗易懂的方式讲解:不要再苦苦寻觅了!AI 大模型面试指南(含答案)的最全总结来了!

  • 用通俗易懂的方式讲解:我的大模型岗位面试总结:共24家,9个offer

  • 用通俗易懂的方式讲解:大模型 RAG 在 LangChain 中的应用实战

  • 用通俗易懂的方式讲解:一文讲清大模型 RAG 技术全流程

  • 用通俗易懂的方式讲解:如何提升大模型 Agent 的能力?

  • 用通俗易懂的方式讲解:ChatGPT 开放的多模态的DALL-E 3功能,好玩到停不下来!

  • 用通俗易懂的方式讲解:基于扩散模型(Diffusion),文生图 AnyText 的效果太棒了

  • 用通俗易懂的方式讲解:在 CPU 服务器上部署 ChatGLM3-6B 模型

  • 用通俗易懂的方式讲解:使用 LangChain 和大模型生成海报文案

  • 用通俗易懂的方式讲解:ChatGLM3-6B 部署指南

  • 用通俗易懂的方式讲解:使用 LangChain 封装自定义的 LLM,太棒了

  • 用通俗易懂的方式讲解:基于 Langchain 和 ChatChat 部署本地知识库问答系统

  • 用通俗易懂的方式讲解:在 Ubuntu 22 上安装 CUDA、Nvidia 显卡驱动、PyTorch等大模型基础环境

  • 用通俗易懂的方式讲解:Llama2 部署讲解及试用方式

  • 用通俗易懂的方式讲解:基于 LangChain 和 ChatGLM2 打造自有知识库问答系统

  • 用通俗易懂的方式讲解:一份保姆级的 Stable Diffusion 部署教程,开启你的炼丹之路

  • 用通俗易懂的方式讲解:对 embedding 模型进行微调,我的大模型召回效果提升了太多了

  • 用通俗易懂的方式讲解:LlamaIndex 官方发布高清大图,纵览高级 RAG技术

  • 用通俗易懂的方式讲解:为什么大模型 Advanced RAG 方法对于AI的未来至关重要?

  • 用通俗易懂的方式讲解:使用 LlamaIndex 和 Eleasticsearch 进行大模型 RAG 检索增强生成

  • 用通俗易懂的方式讲解:基于 Langchain 框架,利用 MongoDB 矢量搜索实现大模型 RAG 高级检索方法

  • 用通俗易懂的方式讲解:使用Llama-2、PgVector和LlamaIndex,构建大模型 RAG 全流程

你可能感兴趣的:(大模型理论与实战,大模型,大模型,LLM,RAG,人工智能)