大语言模型基础-Transformer之上下文

1. 什么是"上下文"?


在自然语言处理(NLP)中,"上下文"指的是一个词、一句话或一段文本所处的语言环境。它提供了理解当前单元所必需的信息。

  • 例句:"苹果发布了新产品。"
  • 如果没有上下文,"苹果"可能指水果,也可能指公司。
  • 上下文1(前文):"科技巨头苹果公司今日召开发布会,"
  • 上下文2(前文):"水果店今天进货了,红彤彤的苹果"
  • 有了上下文,模型就能准确消除歧义。

对 Transformer 模型而言,上下文就是模型在生成或理解当前词时所能"看到"和"利用"的所有其他词的信息

2. 上下文在AI中的作用


上下文是使AI模型(尤其是语言模型)产生"智能"行为的核心。其主要作用体现在:

  1. 消除歧义 :很多词语或句子在不同的上下文中含义完全不同。
  • 例句:"苹果很甜。" 和 "苹果发布了新手机。"
  • 没有上下文,模型不知道"苹果"指的是水果还是公司。有了上下文,模型就能准确理解。
  1. 维持连贯性与状态追踪 :在长文本生成或多轮对话中,上下文使得模型能够记住之前说过什么,从而保持话题的一致性和逻辑的连贯性。
  • 对话示例
  • 用户: "你知道北京时间吗?"
  • AI: "现在是北京时间下午3点。"
  • 用户: "那旧金山呢?" (如果没有上下文,模型无法理解"那"指代什么)

模型依靠上下文(第一轮问答)知道"那"指的是"时间",从而正确回答旧金山的时间。

  1. 提供推理依据 :复杂的推理任务需要依赖上下文中的多条信息进行综合判断。
  • 示例:阅读一篇长文章后回答"为什么主角最后做出了那个决定?",模型需要综合全文的多个事件和描述(上下文)才能推导出答案。
  1. 决定模型的能力上限模型能够利用的上下文越长,它能处理的任务就越复杂,比如阅读长论文、分析长代码文件、进行超长对话等。上下文长度是衡量一个大模型能力的关键指标之一

3. 上下文和上下文工程的区别


为防止初学者混淆上下文和上下文工程的概念,本文先简单介绍上下文工程,更深入的技术细节会在后续的文章中介绍。

上下文工程 是一门旨在策略性地设计、构建和优化输入信息,以最大限度地提升AI模型(尤其是大语言模型)在特定任务上性能的艺术、技术和科学。

简单来说,它就是:

"如何与AI模型有效沟通,从而引导它给出你最想要的答案"的一套方法论。

它不是关于修改模型本身,而是关于如何更好地使用模型。模型的权重是固定的,而上下文工程的目的是通过精心设计"输入",来控制和塑造模型的"输出"。

上下文工程的主要应用领域

  • 提示工程:这是上下文工程最基础、最常见的形式,专注于设计单次的提示。
  • 检索增强生成RAG是上下文工程的集大成者 。它通过从外部知识库(如公司文档、数据库)中自动检索相关信息,并将其作为"背景信息"动态地注入上下文窗口,从而让模型能够基于最新、最准确的事实来回答问题。
  • 智能体 :AI智能体(Agent)通过多轮对话和工具调用(如计算、搜索)来完成任务。在整个交互过程中,持续维护和更新对话历史(上下文) 就是上下文工程,它确保了智能体拥有完成整个任务所需的全部信息。

两者对比

特性 上下文 上下文工程
本质 信息/数据 过程/方法/技术
角色 模型的输入参考材料 设计、准备和优化这些输入的策略
焦点 "是什么"- 内容本身 "怎么做"- 如何组织、呈现和优化内容
状态 静态的 动态的、迭代的
目标 为模型提供信息 最大化模型在特定任务上的性能和可靠性
类比 建筑材料(砖块、水泥) 建筑设计、施工工艺

4.原始Transformer的上下文及限制


原始Transformer的核心是**自注意力机制,**虽然有如下优点:

  • 当处理序列中的某一个位置(token)时,自注意力机制允许它直接关注到序列中的所有其他位置(包括它自己)
  • 这种"全局视野"使得模型能够建立任意两个token之间的直接联系,无论它们相距多远。这是Transformer相比RNN等模型的巨大优势。

但原始Transformer存在严重的上下文长度限制,主要源于计算复杂度和内存消耗

  1. 计算复杂度 :自注意力机制的计算复杂度是 O(n²),其中 n 是序列长度(上下文长度)。
  • 含义:如果序列长度变为原来的2倍,计算量(所需时间和算力)会变为原来的4倍;长度变为10倍,计算量变为100倍。这在计算上是不可持续的。
  1. 内存消耗 :自注意力机制需要计算并存储一个 n x n 的注意力矩阵(Attention Matrix),用于表示所有token两两之间的关联强度。这个矩阵非常消耗内存。
  • 举例:假设序列长度 n=2048 ,每个元素是32位浮点数(4字节),那么这个矩阵的大小是 2048 * 2048 * 4字节 ≈ 16.78 MB 。如果 n=8192 ,矩阵大小暴增到 268 MB 。对于更长的序列(如100k),内存需求会达到惊人的程度,远超现有GPU的显存容量。

因此,原始Transformer架构无法直接处理超长上下文,这成为了它推广应用的一个瓶颈。

5.如何增加Transformer上下文长度


目前,不存在绝对"无限制"上下文长度的Transformer技术 ,但已经出现了多种能够极大扩展上下文长度 (例如达到百万甚至理论上无限长度)的技术方案。它们通过改进模型结构、记忆机制和注意力计算等方式来突破原始Transformer的上下文限制。主要思路是在保持模型性能的同时,降低计算和内存的复杂度。以下是几种主流方向:

  1. 稀疏注意力 :并非所有token之间都需要进行密集的注意力计算。稀疏注意力只让每个token关注一小部分关键的其他token(如局部窗口、随机散点、或全局特殊token)。
  • 代表Longformer (结合局部窗口注意力和全局注意力)、BigBird(结合局部、随机和全局注意力)。
  • 效果:将复杂度从 O(n²) 降低到 O(n) 或 O(n log n),使处理数万token成为可能。
  1. 递归/分层机制 :将长文本分成较短的片段,按顺序处理,并通过某种机制(如状态递归、记忆库)让模型在处理当前片段时能够获取之前片段的信息。
  • 代表Transformer-XL 引入了段级递归* 和相对位置编码,使模型能够超越当前片段的限制,建立更长期的依赖关系。*
  1. 外部记忆库 :让主模型专注于处理当前局部上下文,同时将一个可查询的外部数据库(记忆库) 作为补充信息的来源。需要时,模型可以去这个记忆库里检索相关信息。
  • 代表RAG , RETRO。这种方法非常适合知识密集型任务。
  1. 内核化/近似注意力 :使用数学方法对标准的注意力矩阵进行近似,避免直接计算和存储这个大矩阵。
  • 代表Linformer (通过低秩矩阵近似)、Performer(使用快速注意力核函数)。
  1. FlashAttention (一种极其重要的工程优化):由Stanford等人提出,是一种IO感知的精确注意力算法 。它通过精妙的分块计算策略,将注意力计算过程在GPU的快速显存(SRAM)和慢速显存(HBM)间进行优化,极大地减少了内存读写次数
  • 关键 :它不是近似计算,而是计算精确的注意力*,但更快、更省内存。这使得在现有硬件上处理更长的上下文成为现实,已被广泛应用于最新的大模型训练中。*
  1. 多维注意力 :例如多查询注意力(MQA)分组查询注意力(GQA)。它们通过让多个注意力头共享同一个"键(K)"和"值(V)"矩阵,来大幅减少推理过程中需要缓存的数据量(KV Cache),从而支持更长的序列生成。

大多数先进的大模型都综合运用了以上多种技术,才能实现支持数十万甚至数百万token上下文窗口的能力。

总结


希望以上信息能帮助你通俗的了解上下文及Transformer在上下文长度扩展方面的前沿进展。随着大模型在长文摘要、代码生成、对话等场景的应用越来越广,用户对超长上下文的需求也越来越紧迫,相关的新技术也在不断涌现。上文描述的部分技术可能已经被淘汰,但对于了解技术的演进路线还是很有帮助。

相关推荐
relis3 小时前
解密大语言模型推理:Prompt Processing 的内存管理与计算优化
android·语言模型·prompt
zzywxc7873 小时前
AI行业应用:金融、医疗、教育、制造业的落地案例全解析
人工智能·深度学习·spring·机器学习·金融·数据挖掘
Ai工具分享3 小时前
视频增强AI哪个效果好?实战对比帮你找到最适合的工具
人工智能·音视频
山烛4 小时前
OpenCV 模板匹配
人工智能·python·opencv·计算机视觉·目标跟踪·模板匹配
财经三剑客4 小时前
追觅极境冰箱震撼上市:以首创超低氧保鲜科技打造家庭健康中心
大数据·人工智能·科技
机器之心4 小时前
被网友逼着改名的谷歌Nano Banana,正在抢99%时尚博主的饭碗
人工智能·openai
小王爱学人工智能4 小时前
残差神经网络的案例
人工智能·深度学习·神经网络
LLM精进之路4 小时前
0825-0829 | 大模型方向周报:多模态模型研究、训练与优化策略、安全与对齐等方向
人工智能·深度学习·机器学习
一尘之中4 小时前
《空中隧道》:一位金融预言家写在1927年的“科幻小说”,藏着何种投资秘钥?
人工智能·金融·ai写作