窗口外推技术综述
超长上下文
衡量超长上下文的核心维度
| 维度 | 关键问题 | 示例指标或方法 |
|---|---|---|
| 🧠 记忆能力 | 模型能否保留并使用早期输入信息? | Attention Score, Retrieval Accuracy |
| 🔍 信息利用 | 模型是否正确引用了上下文中的关键信息? | Answer Correctness, Source Attribution |
| 📏 上下文距离 | 模型能处理的最大“有效”token跨度是多少? | Token Distance vs Accuracy 曲线 |
| 🧱 上下文稀疏鲁棒性 | 插入无关信息后仍能保持性能吗? | Needle-In-A-Haystack、Passkey等测试 |
| ⚡ 推理效率 | 上下文越长是否大幅拖慢速度? | 推理时间、显存使用、Token/s |
| 🧠 泛化能力 | 模型对训练时未见过的长上下文是否泛化? | Interpolation vs Extrapolation Comparison |
主流评估方法
| 方法/指标 | 类型 | 适用任务 | 能力维度 |
|---|---|---|---|
| Needle-in-a-Haystack | 对抗测试 | 通用 | 远距记忆、干扰鲁棒性 |
| Passkey Test | 控制变量实验 | 通用 | 记忆保持、跨度泛化 |
| 文档问答 QA | 应用场景评估 | 法律、教育、企业RAG | 信息提取、引用准确性 |
| LRA | 标准评测集 | 学术 | 长序列建模能力 |
| 多轮对话回忆评估 | 用户模拟 | 助理型模型 | 记忆力、上下文一致性 |
| 写作连贯性分析 | 主观评分+BLEU | 生成类任务 | 一致性、记忆性 |
主流技术路线
目前已有多种技术路线尝试破解以上挑战,分别从结构优化、注意力稀疏化、位置编码设计、外部记忆机制等方向切入。
✅ 路线一:稀疏注意力机制(Sparse Attention)
⏩ 方法代表:
Longformer(fixed + sliding window attention)
BigBird(window + global + random)
Sparse Transformer(block sparse)
Reformer(LSH attention)
📌 优势:
将O(n²)降为 O(n√n) 或更低;
结构清晰,较容易在已有Transformer框架中集成。
⚠️ 限制:
对长距离依赖仍然有限制;
在一般语言任务中未显著超过标准全注意力模型。
✅ 路线二:Flash Attention / Linear Attention 加速
⏩ 方法代表:
FlashAttention v1/v2(OpenAI)
xFormers、Memory-efficient Attention
Performer / Linear Transformer(内积核逼近)
📌 优势:
保留全注意力机制,降低显存需求;
FlashAttention 在 GPT-4/Claude等模型中广泛使用。
⚠️ 限制:
FlashAttention 加速的是“计算效率”,并不提升“信息记忆能力”;
Linear Attention 有泛化退化的问题。
✅ 路线三:改进位置编码以支持无限泛化
⏩ 方法代表:
RoPE缩放(如ChatGPT-4-128k)
YaRN(RoPE延拓技术,2023)
ALiBi(位置偏移,Meta)
Position Interpolation (Pi) - 如Claude 100k使用
📌 优势:
实现 RoPE 向更长范围的“插值”泛化;
在不改变模型结构的情况下,延长上下文窗口(RoPE缩放即可)。
⚠️ 限制:
插值策略对不同任务鲁棒性不同;
训练阶段未见的长序列在推理时表现可能不稳定。
✅ 路线四:外部记忆机制(Memory Augmented / Retrieval)
⏩ 方法代表:
RETRO (DeepMind):检索增强Transformer
RAG (Facebook)、LlamaIndex / LangChain Memory
MemGPT、LongChat(Memory Injection)
📌 优势:
通过检索外部知识库或历史记录,实现“动态上下文扩展”;
提高信息检索能力而非模型“死记硬背”。
⚠️ 限制:
需要额外设计召回机制;
召回结果质量决定模型上下文质量。
✅ 路线五:分块处理和延迟更新策略
⏩ 方法代表:
Transformer-XL(带有segment-level recurrence)
GPTCache / Streaming LLMs
Windowed Transformer + Recurrence
📌 优势:
模拟“上下文记忆”的方式实现跨块信息流;
支持流式、低延迟推理。
⚠️ 限制:
对生成任务效果不如全局上下文直接可见。
关键场景与超长上下文需求
| 场景类别 | 示例任务 | 对上下文长度的需求 |
|---|---|---|
| 学术/法律文档 | 合同分析、论文问答 | ✅必须全文处理 |
| 多轮对话 | 私人助理、多Agent协作 | ✅需记住多轮上下文 |
| 代码理解 | 项目级代码生成 | ✅需跨文件全局语义 |
| RAG系统 | 企业知识库问答 | ✅上下文拼接需保持完整 |
| 文本创作 | 小说剧本生成 | ✅情节一致性要求高 |
| 多模态场景 | 视频理解、电子病历分析 | ✅时序长度需求极高 |
多轮对话/Agent协作系统
长文档理解
软件工程
RAG系统
企业内部文档问答
基于大量文档的洞察报告生成
长文档生成
长篇小说/剧本/
视频脚本/课程讲义生成
窗口外推技术
直接外推
提前预留一些维度,训练阶段设为0,推理阶段直接改为其他数字。
插值
线性内插
将不在预训练范围的位置除整数后映射到训练范围,适应相对位置(序信息)更重要的场景。通常需要微调以便适应新的映射关系。
进制转换
NTK-aware插值
RoPE
YaRN
本质是一种新的RoPE方法。
S2-Attention
上下文窗口外推常见问题
- 在注意力机制中距离倍增时容易发生梯度爆炸或收缩
- 在上下文非常长时(如128K),大部分 token 实际上对训练损失的贡献较小(尤其是头尾位置)
DeepSeek应用 YaRN(Peng et al., 2023a)进行上下文扩展,并进行两个额外的训练阶段,每个阶段包含1000步,逐步将上下文窗口从4K扩展到32K,然后扩展到128K。
长上下文大模型(Long-Context LLM)微调
LongLora
| 技术 | 作用 |
|---|---|
| Sequence-Parallel LoRA (SP-LoRA) | 将序列维度并行,用多个 GPU 分担超长序列计算,显著降低单卡显存压力 |
| Hidden State Caching | 在重复的上下文块中缓存隐藏状态,减少冗余计算,加快训练 |
| Mixed-Precision KV Cache Training | 用低精度训练 KV cache,节省内存、提升速度 |
| 项目 | 普通 LoRA | LongLoRA |
|---|---|---|
| 支持上下文长度 | 通常 <8K | 支持长达 128K-1M |
| 显存需求 | 快速增长 | 显著优化,线性扩展 |
| 训练效率 | 慢,受限于序列长度 | 快,支持更大 batch 和序列 |
| 稳定性 | 长 context 下容易崩 | 收敛更稳定 |
参考
Scaling Transformer to 1M tokens and beyond with RMT
突破Transformer输入限制:实测支持200万个有效token