Skip to content

长上下文技术

长上下文是大语言模型的核心能力之一。从 2019 年 GPT-2 的 1K token 到 2024 年 Gemini 的 1M+ token,上下文长度在 5 年内增长了超过 1000 倍。本文系统介绍长上下文技术的演进、分布式注意力、位置编码扩展方法与评测体系。

发展历程

时间里程碑上下文长度关键突破
2019GPT-21,024基于 Transformer 的生成模型
2020GPT-32,048大规模预训练,窗口固定
2022GPT-3.54,096对话优化,实用化起步
2023.03GPT-48K / 32K长上下文版本发布
2023.05Claude 2100K首次突破 10 万 token
2023.10GPT-4 Turbo128KOpenAI 正式支持 128K
2024.02Gemini 1.5 Pro1MGoogle 突破百万 token
2024.03Claude 3200K多模态长上下文
2024.06Qwen2128K国产开源长上下文模型
2024.09GPT-4o128K原生多模态长上下文
2024.12Gemini 2.02M突破 200 万 token

技术演进阶段

  1. 暴力扩展(2020-2022):直接增加位置编码长度,计算复杂度 O(n²) 随序列长度增长
  2. 位置编码插值(2023):Position Interpolation (PI)、NTK-aware scaling,通过微调将短上下文模型扩展至更长
  3. 原生长上下文训练(2024):从预训练阶段就使用长序列,Ring Attention 等分布式训练技术
  4. 百万级普及(2024-2025):1M+ token 成为高端模型标配

分布式注意力技术

Ring Attention(环形注意力)

论文:Liu et al., "Ring Attention with Blockwise Transformers for Near-Infinite Context", 2024

核心思想

  • 将序列分割成多个 block,分配到不同设备
  • 以环形通信模式传递 Key/Value 状态
  • 每个设备只需存储一个 block 的 KV cache

工作流程

设备0 → 设备1 → 设备2 → ... → 设备N → 设备0
  ↑_________________________________________↓
  
每个设备:
1. 接收前一个设备的 KV 状态
2. 计算当前 block 的注意力
3. 将更新后的 KV 传递给下一个设备

优势:突破单设备显存限制,支持理论上无限的上下文长度

局限:通信开销随设备数量增加,需要专门的分布式训练框架支持

Striped Attention(条纹注意力)

核心思想:将注意力矩阵按条纹模式分割,每个设备负责计算特定的注意力条纹,减少设备间通信量。

其他分布式注意力变体

技术特点
Sequence ParallelismDeepSpeed-Ulysses、Megatron-LM 实现,将序列维度与数据并行结合
Blockwise Parallel Transformers将注意力计算分块执行,支持更大的 batch size
MInference针对长上下文推理的优化框架,动态选择注意力计算策略

位置编码扩展方法

RoPE 基础

Rotary Position Embedding(旋转位置编码)通过旋转矩阵编码位置信息:

latex
f(q, m) = qe^{im\theta}, \quad \theta_i = 10000^{-2i/d}

原始限制:训练时的最大长度决定了有效编码范围,直接外推会导致注意力分数混乱。

位置编码插值方法对比

方法扩展比例是否需要微调核心思想
Direct Extrapolation有限直接外推
Position Interpolation (PI)2-8x需要线性缩放位置
NTK-aware Scaling2-4x少量/无需非均匀频率缩放
YaRN16-32x少量NTK + 注意力修正
LongRoPE500x+需要进化算法搜索最优插值

YaRN(Yet another RoPE extension method)

论文:Peng et al., "YaRN: Efficient Context Window Extension of Large Language Models", 2023

核心创新

  1. NTK-aware interpolation:结合 NTK 理论进行非均匀插值
  2. 长度缩放修正:调整注意力温度(temperature)
  3. 注意力缩放:解决长上下文注意力 softmax 退化问题

效果

  • Llama 2 7B/13B:从 4K 扩展到 128K
  • 仅需 400 步微调(约 0.1% 原始预训练数据)
  • 在 128K 长度上保持低困惑度

LongRoPE

论文:Ding et al., "LongRoPE: Extending LLM Context Window Beyond 2 Million Tokens", 2024

突破:将 Llama 2 从 4K 扩展到 2M+ tokens,采用进化算法搜索最优位置插值因子、分阶段扩展策略。


各模型上下文长度对比

闭源商业模型

模型上下文长度技术特点
GPT-4 Turbo128K统一长上下文
Claude 3 Opus200K多模态长上下文
Gemini 1.5 Pro1M原生百万 token
Gemini 2.0 Flash2M200 万 token
o1 / o3200K推理模型长上下文

开源模型

模型上下文长度扩展方法
Llama 38K (base)基础长度
Llama 3.1128K原生长上下文训练
Qwen2 / Qwen2.5128K原生长上下文
DeepSeek-V2/V3128KMLA 注意力优化
Kimi (Moonshot)200K长上下文专长

Needle in Haystack 评测

评测原理

在长文本中随机插入特定信息("针"),测试模型能否在大量无关信息("干草堆")中找到并回忆该信息。

标准测试流程

  1. 准备干草堆:使用长文档或重复文本
  2. 插入针:在特定深度位置插入关键信息
  3. 构建问题:询问与针相关的问题
  4. 评估回答:检查模型是否能正确提取针信息

评测变体

变体说明
Multi-Needle同时插入多个针,测试同时检索多条信息的能力
Needle Pair插入两个相关的针,测试关联分散信息的能力
Code Needle在长代码库中插入特定函数,评估代码理解和检索能力

主要评测框架

框架特点链接
RULER更全面的长上下文基准github.com/hsiehjackson/RULER
LongBench中文长上下文评测github.com/THUDM/LongBench
InfiniteBench超长上下文压力测试github.com/OpenBMB/InfiniteBench

常见失败模式

  1. Lost in the Middle:中间位置信息丢失
  2. Early Position Bias:偏向开头信息
  3. Late Position Bias:只能记住结尾信息
  4. Context Dilution:上下文过长导致注意力分散

技术栈与未来方向

长上下文技术栈

应用层:长文档问答、代码分析、多轮对话、视频理解
────────────────────────────────────────────────────────
扩展层:YaRN / LongRoPE / NTK-aware Scaling
────────────────────────────────────────────────────────
训练层:Ring Attention / Sequence Parallelism / 长文本预训练
────────────────────────────────────────────────────────
基础层:RoPE / ALiBi / 其他位置编码 + Transformer 架构
────────────────────────────────────────────────────────
硬件层:多 GPU/TPU 集群、高速互联、大显存

未来发展方向

  1. 无限上下文:通过 RAG 与长上下文结合,实现"伪无限"上下文
  2. 高效推理:稀疏注意力、KV cache 压缩、投机解码
  3. 多模态长上下文:视频、音频的长序列建模
  4. 记忆机制:外部记忆 + 工作记忆的协同
  5. 上下文自适应:根据任务动态调整上下文使用策略

相关页面

AI Knowledge Base — 持续积累