Appearance
长上下文技术
长上下文是大语言模型的核心能力之一。从 2019 年 GPT-2 的 1K token 到 2024 年 Gemini 的 1M+ token,上下文长度在 5 年内增长了超过 1000 倍。本文系统介绍长上下文技术的演进、分布式注意力、位置编码扩展方法与评测体系。
发展历程
| 时间 | 里程碑 | 上下文长度 | 关键突破 |
|---|---|---|---|
| 2019 | GPT-2 | 1,024 | 基于 Transformer 的生成模型 |
| 2020 | GPT-3 | 2,048 | 大规模预训练,窗口固定 |
| 2022 | GPT-3.5 | 4,096 | 对话优化,实用化起步 |
| 2023.03 | GPT-4 | 8K / 32K | 长上下文版本发布 |
| 2023.05 | Claude 2 | 100K | 首次突破 10 万 token |
| 2023.10 | GPT-4 Turbo | 128K | OpenAI 正式支持 128K |
| 2024.02 | Gemini 1.5 Pro | 1M | Google 突破百万 token |
| 2024.03 | Claude 3 | 200K | 多模态长上下文 |
| 2024.06 | Qwen2 | 128K | 国产开源长上下文模型 |
| 2024.09 | GPT-4o | 128K | 原生多模态长上下文 |
| 2024.12 | Gemini 2.0 | 2M | 突破 200 万 token |
技术演进阶段
- 暴力扩展(2020-2022):直接增加位置编码长度,计算复杂度 O(n²) 随序列长度增长
- 位置编码插值(2023):Position Interpolation (PI)、NTK-aware scaling,通过微调将短上下文模型扩展至更长
- 原生长上下文训练(2024):从预训练阶段就使用长序列,Ring Attention 等分布式训练技术
- 百万级普及(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 Parallelism | DeepSpeed-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 Scaling | 2-4x | 少量/无需 | 非均匀频率缩放 |
| YaRN | 16-32x | 少量 | NTK + 注意力修正 |
| LongRoPE | 500x+ | 需要 | 进化算法搜索最优插值 |
YaRN(Yet another RoPE extension method)
论文:Peng et al., "YaRN: Efficient Context Window Extension of Large Language Models", 2023
核心创新:
- NTK-aware interpolation:结合 NTK 理论进行非均匀插值
- 长度缩放修正:调整注意力温度(temperature)
- 注意力缩放:解决长上下文注意力 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 Turbo | 128K | 统一长上下文 |
| Claude 3 Opus | 200K | 多模态长上下文 |
| Gemini 1.5 Pro | 1M | 原生百万 token |
| Gemini 2.0 Flash | 2M | 200 万 token |
| o1 / o3 | 200K | 推理模型长上下文 |
开源模型
| 模型 | 上下文长度 | 扩展方法 |
|---|---|---|
| Llama 3 | 8K (base) | 基础长度 |
| Llama 3.1 | 128K | 原生长上下文训练 |
| Qwen2 / Qwen2.5 | 128K | 原生长上下文 |
| DeepSeek-V2/V3 | 128K | MLA 注意力优化 |
| Kimi (Moonshot) | 200K | 长上下文专长 |
Needle in Haystack 评测
评测原理
在长文本中随机插入特定信息("针"),测试模型能否在大量无关信息("干草堆")中找到并回忆该信息。
标准测试流程:
- 准备干草堆:使用长文档或重复文本
- 插入针:在特定深度位置插入关键信息
- 构建问题:询问与针相关的问题
- 评估回答:检查模型是否能正确提取针信息
评测变体
| 变体 | 说明 |
|---|---|
| Multi-Needle | 同时插入多个针,测试同时检索多条信息的能力 |
| Needle Pair | 插入两个相关的针,测试关联分散信息的能力 |
| Code Needle | 在长代码库中插入特定函数,评估代码理解和检索能力 |
主要评测框架
| 框架 | 特点 | 链接 |
|---|---|---|
| RULER | 更全面的长上下文基准 | github.com/hsiehjackson/RULER |
| LongBench | 中文长上下文评测 | github.com/THUDM/LongBench |
| InfiniteBench | 超长上下文压力测试 | github.com/OpenBMB/InfiniteBench |
常见失败模式
- Lost in the Middle:中间位置信息丢失
- Early Position Bias:偏向开头信息
- Late Position Bias:只能记住结尾信息
- Context Dilution:上下文过长导致注意力分散
技术栈与未来方向
长上下文技术栈
应用层:长文档问答、代码分析、多轮对话、视频理解
────────────────────────────────────────────────────────
扩展层:YaRN / LongRoPE / NTK-aware Scaling
────────────────────────────────────────────────────────
训练层:Ring Attention / Sequence Parallelism / 长文本预训练
────────────────────────────────────────────────────────
基础层:RoPE / ALiBi / 其他位置编码 + Transformer 架构
────────────────────────────────────────────────────────
硬件层:多 GPU/TPU 集群、高速互联、大显存未来发展方向
- 无限上下文:通过 RAG 与长上下文结合,实现"伪无限"上下文
- 高效推理:稀疏注意力、KV cache 压缩、投机解码
- 多模态长上下文:视频、音频的长序列建模
- 记忆机制:外部记忆 + 工作记忆的协同
- 上下文自适应:根据任务动态调整上下文使用策略
相关页面
- Context Window — 上下文窗口概念与技术进展
- RoPE (Rotary Position Embedding) — RoPE 详细原理
- RAG vs Long Context — RAG 与长上下文的对比
- FlashAttention — 注意力计算优化
- Transformer Architecture — Transformer 架构详解