主流大模型上下文窗口管理机制全景分析
每个 token 只关注前后固定大小的局部窗口,通过多层堆叠扩大感受野。
Mistral 7BMixtralLongformer
| 优点 | 缺点 |
|---|---|
| 计算复杂度 O(n·w),显存线性增长 | 单层无法捕捉超窗口远距离依赖 |
| 推理速度恒定,适合流式部署 | 深层信息传递可能衰减失真 |
| KV cache 可固定大小 | "首尾呼应"型任务表现较差 |
适用:实时对话、流式生成、显存受限的边缘部署、~32K 以内文本
保留全部历史 KV,保证精确注意力。显存 = O(n·L·d),128K 上下文 70B 模型轻松吃掉 40+ GB。
多个 query head 共享一组 KV head,KV cache 压缩 4-8 倍,几乎不损精度。训练时确定的结构级压缩,目前最主流的工程优化。
KV 值从 FP16 量化到 INT4/INT8/FP8,显存降 2-4 倍。近期 token 高精度、远期激进量化。已成生产标配。
保留累计注意力最高的"重击手"token + 最近 token,淘汰中间低注意力 token。
✓ 显存恒定,保留信息密度最高的 token
✗ 注意力分数 ≠ 语义重要性,误删不可逆
保留起始 token(attention sink)+ 最近窗口,中间全部丢弃。
✓ 极简稳定,适合无限长流式对话
✗ 中间信息完全丢失,"只记得开头和最近"
Prefill 阶段根据注意力模式分层压缩 KV,不同层保留不同数量。
✓ 分层自适应,压缩比高
✗ 与模型架构耦合,通用性有限
不丢弃而是合并相似 token 的 KV 向量。信息保留率优于硬淘汰,计算开销略高。
| 方法 | 最适合 | 不适合 |
|---|---|---|
| H₂O | 通用长文本推理 | 每个 token 都重要的精确任务 |
| StreamingLLM | 无限长对话/流式 | 需要回溯历史的任务 |
| SnapKV | 长文档理解 | 多轮对话 |
| Token Merging | 高压缩比需求 | 延迟敏感场景 |
| 变体 | 方法 | 效果 |
|---|---|---|
| Linear Scaling | 位置索引 ÷ 缩放因子 | 简单有效,需少量微调 |
| NTK-aware | 调整基频 θ(高频不变、低频拉伸) | 免微调效果好 |
| YaRN | NTK + 注意力缩放 + 温度修正 | 当前最佳 RoPE 外推方案 |
| Dynamic NTK | 推理时动态调整基频 | 免训练,按需伸缩 |
不用位置编码,注意力分数加线性距离惩罚。天然支持外推,但对极远距离关注能力弱于 RoPE 方案。
SSM 天然处理长序列(线性复杂度)+ Attention 层负责精确检索。Gemini 1.5 Pro 实现 1M-10M token 上下文。
长序列分块,块间流式传递 KV。Ring Attention 多设备环形传递,理论上可处理无限长度。
外推能力排序(经验性):
ALiBi ≈ YaRN > Dynamic NTK > NTK-aware > Linear Scaling >> 无外推 RoPE
| 场景 | 推荐方案组合 |
|---|---|
| 生产级 API 服务 | GQA + FP8 KV cache + PagedAttention + YaRN |
| 实时流式对话 | 滑动窗口 + StreamingLLM + Attention Sink |
| 长文档分析 (100K+) | Full attention + SnapKV + YaRN |
| 边缘/端侧部署 | MQA + INT4 KV cache + 滑动窗口 |
| 超长上下文 (1M+) | 混合 SSM/Attention + Ring Attention + 分层压缩 |
| RAG 增强 | 中等窗口 + 外部检索,无需极致外推 |
方向是多策略混合——没有单一银弹。GQA + 量化 KV cache 已是标配,外推用 YaRN/NTK 系列,超长场景走 SSM 混合架构或分层记忆。纯靠暴力扩窗口的路线正在被更精巧的稀疏/压缩方案取代。