什么是上下文窗口?

添加 alt 文本术语

作者

Dave Bergmann

Senior Staff Writer, AI Models

IBM Think

什么是上下文窗口?
 

大型语言模型 (LLM) 的上下文窗口(或“上下文长度”)是模型在任何时候可以考虑或“记住”的文本量,以词元为单位。更大的上下文窗口使 AI 模型能够处理更长的输入,并将更多的信息整合到每个输出中。

LLM 的上下文窗口可被视为其工作记忆。它决定了 LLM 在不遗忘先前对话细节的情况下可以进行多长时间的对话。它还决定了一次可以处理的文档或代码样本的最大大小。当提示、对话、文档或代码库超过人工智能模型的上下文窗口时,必须对其进行截断或总结,模型才能继续处理。

一般来说,增加 LLM 的上下文窗口大小意味着更高的准确性、更少幻觉、更连贯的模型响应、更长的对话以及分析更长数据序列的能力提高。然而,增加上下文长度并非没有代价:它通常需要增加算力要求,导致成本增加,并且更容易受到对抗性攻击的影响。

小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

上下文窗口和标记化

在现实世界中,语言模型的上下文长度不是用单词来衡量的,而是用词元来衡量的。要了解上下文窗口在实践中的工作原理,必须了解这些词元的工作原理

LLM 处理语言的方式与人类处理语言有着根本的不同。我们用来表示语言的最小信息单位是单个字符(例如字母、数字或标点符号),而 AI 模型使用的最小语言单位是词元。为了培训语言理解模型,为每个词元分配了一个 ID 号;这些 ID 编号,而不是单词或词元本身,可用于培训模型。这种语言的词元化大大降低了处理文本和从中学习所需的算力。

词元所能代表的文本量差别很大:一个词元可以代表一个字符、一个词的一部分(如后缀或前缀)、一个完整的词,甚至一个简短的多词短语。考虑一下字母“a ”在以下示例中的不同作用:

Jeff drove a car。” 

此处的 a 是一个完整的单词。在这种情况下,它将由一个单独的词元表示。

Jeff is amoral。”

此处的 a 不是一个词,而是它对标准的补充 明显改变了这个词的含义。Amoral 因此将由两个不同的词元来表示:其中一个分配给 a 和另一种标准

“Jeff loves his cat。”

此处的 a 只是单词 cat 中的一个字母 。它本身没有语义,因此需要用单独的词元来表示。


单词到词元没有固定的“汇率”,不同的模型或词元器(负责词元化的更大模型的模块化子集)可能会以不同的方式对同文本段落执行不同方式的词元化。高效的词元化有助于增加可纳入上下文窗口范围的实际文本量。但对于一般目的,一个合适的估算值是每个单词大约 1.5 个词元。Hugging Face 的 Tokenizer Playground 是一种简单的方法,可以查看和试验不同的模型如何对文本输入进行词元化。

训练数据中语言结构和表现形式的不同会导致某些语言的标记化效率高于其他语言。例如,2024 年 10 月的一项研究探讨了用英语和泰卢固语标记同一句子的例子。尽管泰卢固语译文的字符数明显少于英语译文,但其上下文中的词元数却是英语译文的 7 倍多。

Mixture of Experts | 12 月 12 日,第 85 集

解码 AI:每周新闻摘要

加入我们世界级的专家小组——工程师、研究人员、产品负责人等将为您甄别 AI 领域的真知灼见,带来最新的 AI 资讯与深度解析。

为什么模型具有最大上下文长度?
 

虽然上下文窗口通常与用于摘要生成文本和其他自然语言处理 (NLP) 任务的 LLM 相关联,但上下文长度作为一种技术考虑因素,并不是语言模型所独有的。上下文窗口的概念与任何使用转换器架构的机器学习模型都相关,而转换器架构构成了大多数现代生成式 AI 模型,几乎是所有的 LLM。

转换器模型使用自我注意机制来计算输入不同部分之间的关系和依赖关系(例如段首和段尾的字词)。从数学的角度来说,自注意机制计算文本序列中每个词元的权重向量,其中每个权重代表该词元与序列中其他词元的相关性。自回归 LLM 每次生成其输出的下一个单词时,都会以迭代方式查阅这些权重。上下文窗口的大小决定了模型在任何时刻可以“关注”的最大词元数量。

值得注意的是,在模型的上下文窗口中,实际用户输入的文本往往不是唯一占用空间的内容。在很多情况下,例如使用聊天机器人,模型还会收到“系统提示”(用户通常不会察觉该提示),该提示会对模型行为和对话的其他方面产生影响。在推理过程中,从外部数据源获取的用于检索增强生成 (RAG) 的补充信息也同样存储在上下文窗口中。特殊字符、换行和其他格式化措施也会占用一部分的可用上下文。

值得注意的是,语言模型并不是唯一使用转换器的神经网络。例如,一些用于图像生成的扩散模型在其架构中加入了自我关注。在这些模型中,所关注的上下文不是书面内容中代表单词(或单词的一部分)的词元之间的上下文,而是图像中像素之间的上下文在这种模型中,上下文长度适用于模型必须理解其关系的像素数量。如果高分辨率图像包含的像素过多,无法同时处理,那么就会超出其上下文窗口。
 

上下文窗口和计算资源
 

为模型配备一个大的上下文窗口是有代价的,无论是比喻意义上还是字面意义上。计算需求与序列长度成平方关系:例如,如果输入词元的数量增加一倍,模型就需要 4 倍的处理能力来处理。

同样,增加上下文长度也会减慢输出速度。每次模型自回归预测序列中的下一个词元时,它都会计算该词元与序列中每个前一个词元之间的关系。推理在序列或对话开始时可能相对较快,但随着上下文长度的增加会逐渐变慢。这对于需要实时近乎即时推理的用例来说是个问题。

语言模型的平均上下文长度的最新进展部分得益于新技术,这些新技术提高了推理速度和效率,足以充分抵消这些固有的代价。这些优化技术甚至允许小型开源现代 LLM 提供比 2022 年底推出 OpenAI 的 ChatGPT 的原始 GPT-3.5 模型指数级增大的上下文窗口。

 

长上下文窗口的挑战
 

即使采取了充分的措施来协调计算要求和处理速度,扩展模型的上下文长度限制也会带来额外的挑战和复杂性。
 

性能挑战

和人一样,LLM 可能会被大量的额外细节淹没。它们也可能会变得懒散,走认知的捷径。2023 年的一篇论文发现 LLM 无法“在长输入上下文中妥善利用信息”。更具体地说,作者观察到,当相关信息位于输入上下文的开头或结尾时,模型的性能最佳。他们进一步观察到,当模型必须仔细考虑长上下文中间的信息时,性能会下降1

提高转换器自注意力机制本身效率的新方法,例如旋转位置嵌入 (RoPE),旨在修改注意力向量中词元的位置编码。基于 RoPE 方法的广泛采用提高了涉及词元彼此相隔较远距离的任务的性能和速度。

正在进行的研究提出了许多基准,旨在衡量 LLM 有效查找和使用大量相关信息的能力,例如大海捞针(needle-in-a-haystack,NIAH)RULERLongBench


安全和网络安全挑战

更长的上下文窗口还可能产生意想不到的效果,即为对抗性提示提供更长的攻击面。Anthropic 最近的研究表明,增加模型的上下文长度也会增加其“越狱”和(随后)被激发产生有害响应的脆弱性。2

 

突出 LLM 的上下文窗口大小
 

自最初的生成式预训练转换器 (GPT) 发布以来,大型语言模型的上下文窗口平均大小呈指数级增长。迄今为止,每一代的 LLM 通常都需要明显加长的上下文长度。目前,著名商业模式提供的最大上下文窗口已超过 100 万个词元。上下文窗口是否会继续扩大,或者我们是否已经接近实际必要性的上限,还有待观察。

以下是一些常提及型号和型号系列在 2024 年 10 月之前提供的当前上下文长度,以供参考。

 

OpenAI 的 GPT 系列:

  •  
  • 为 ChatGPT 的发布提供支持的 GPT-3.5 模型的最大上下文长度为 4,096 个词元,后来通过 GPT-3.5-Turbo 扩展到 8,192 个词元。
  • GPT-4 在推出时,其上下文长度也是 8192 个词元。虽然 GPT-4 和 GPT-4-Turbo 的上下文窗口后来都增加到了 128,000 个词元,但其最大输出词元的上限仍然是 4,096 个词元。
  • GPT-4o 和 GPT-4o Mini 都有包含 128,000 个词元的上下文窗口,输出上限为 16,384 个词元。
 

新的 o1 模型系列同样提供 128,000 个词元的上下文窗口,但它们提供更长的输出上下文长度。

Meta Llama 模型

最初的 Llama 模型的最大上下文长度为 2,048 个词元,在 Llama 2 中,长度增加了一倍,达到 4,096 个词元。在 2024 年 4 月推出期间,Llama 3 模型提供了包含大约 8,000 个词元的上下文窗口。

随着 Llama 3.1 模型的推出,Llama 的上下文长度显著增加,提供 128,000 个词元的长上下文窗口。Llama 3.2 模型的最大上下文长度同样为 128,000 个词元。

Mistral Large 2

Mistral Large 2Mistral AI 提供的旗舰模型)具有 128,000 个词元的上下文窗口。

Google Gemini 模型

Google 的 Gemini 系列模型提供了目前商业语言模型中最大的上下文窗口。Google 的旗舰型号 Gemini 1.5 Pro 提供高达 200 万个词元的上下文长度。其他 Gemini 1.5 模型(例如 Gemini 1.5 Flash)具有 100 万个词元的上下文窗口。

Anthropic 的 Claude 模型

Anthropic 最新的 Claude 模型,如 Claude 3.5 Sonnet,提供约 20 万个词元的标准上下文窗口。2024 年 9 月初,Anthropic 宣布,通过其新的"克劳德企业"计划访问的模型将提供扩大的 50 万个词元上下文窗口。

脚注

1. "Lost in the Middle: How Language Models Use Long Contexts",arXiv,2023 年 7 月 6 日
2
“多次越狱”,Anthropic,2024 年 4 月 2 日

 
相关解决方案
IBM watsonx Orchestrate

使用 IBM® watsonx Orchestrate 轻松设计可扩展的 AI 助手和代理、自动执行重复任务并简化复杂流程。

探索 watsonx Orchestrate
自然语言处理工具和 API

通过强大灵活的库、服务和应用组合,加速实现人工智能的商业价值。

深入了解 NLP 解决方案
AI 咨询与服务

通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。

深入了解人工智能服务
采取后续步骤

使用 IBM® watsonx Orchestrate 轻松设计可扩展的 AI 助手和代理、自动执行重复任务并简化复杂流程。

探索 watsonx Orchestrate 深入了解 NLP 解决方案