大模型(LLM)支持的“上下文长度(Context Length / Context Window)”本质上是模型一次能够“看到”和“记住”的 token 数量。它由多个因素共同决定:
1. Transformer 架构本身
绝大多数大模型基于 Transformer。
Transformer 的核心是 Attention:
\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\left(\frac{QK^T}{\sqrt{d}}\right)V
这里的问题在于:
- 每个 token 都要和之前所有 token 做 attention
- 序列越长,计算量越大
- 显存占用增长极快
经典 Attention 的复杂度:
O(n^2)
其中:
- ( n ) = 上下文 token 数量
这意味着:
| Context | Attention 规模 |
|---|---|
| 2K | 约 400 万 |
| 32K | 约 10 亿 |
| 128K | 约 160 亿 |
所以最根本的限制来自:
- Attention 计算量
- Attention 显存消耗
([Hugging Face][1])
2. Position Encoding(位置编码)
模型不仅要知道“词是什么”,还要知道“词在第几个位置”。
上下文长度很大程度取决于:
- Position Embedding 的设计
- 是否支持长距离位置泛化
早期:绝对位置编码
比如 GPT-2:
- 训练时只支持 2048
- 超过直接崩
因为位置 embedding 表是固定大小。
后来:RoPE(旋转位置编码)
现在主流模型:
- Llama
- Qwen
- DeepSeek
- Mistral
基本都用 RoPE。
RoPE 可以更容易扩展上下文。([Reddit][2])
为什么 RoPE 还能继续扩?
因为它不是:
“第 100 个 token 用第 100 个 embedding”
而是:
“通过旋转角度表达相对位置关系”。
所以:
- 可以做插值(Position Interpolation)
- 可以做 RoPE Scaling
- 可以 NTK-aware scaling
这也是为什么很多模型:
- 训练时 8K
- 推理时能魔改到 32K / 128K
3. 训练数据长度
这是一个经常被忽视但很关键的问题。
模型不是“理论支持 128K”就真懂 128K。
如果训练时:
- 大部分样本只有 2K
- 很少出现长文档
那么:
即使技术上塞进去 128K, 模型也会:
- 注意力退化
- 遗忘前文
- 中间内容丢失
- 出现 “Lost in the Middle”
所以:
真正有效的上下文长度 ≠ 宣称的上下文长度
4. KV Cache(最核心的工程瓶颈)
推理时最重要的是 KV Cache。
Transformer 会缓存:
- Key
- Value
避免每次重新计算历史 token。([Hugging Face][1])
KV Cache 大小基本和:
- context length
- layer 数
- head 数
- hidden size
线性相关。
大致公式:
\mathrm{KV\ Cache}\propto L\times H\times D\times T
其中:
- (L):层数
- (H):注意力头数
- (D):head dimension
- (T):context length
为什么长上下文特别吃显存?
因为:
上下文每增加一个 token:
- 每一层都要多存 KV
- 所有历史 token 都要保留
KV Cache 会线性爆炸。([LLMHardware.io][3])
例如:
| 模型 | 4K Context | 128K Context |
|---|---|---|
| 7B | 几 GB | 十几 GB |
| 70B | 十几 GB | 几十~上百 GB |
所以很多时候:
限制长上下文的不是模型,而是显存。
5. 推理框架优化
现代框架会做很多优化:
FlashAttention
降低 Attention 显存占用。
PagedAttention(vLLM)
像虚拟内存一样管理 KV Cache。
GQA / MQA
减少 KV Head 数量。
比如:
- Multi-Head Attention:每个头都存 KV
- Grouped Query Attention:多个 Query 共用 KV
能显著降低长上下文成本。([InsiderLLM][4])
6. 模型训练方式
长上下文模型通常会专门训练:
- Long context finetune
- YaRN
- NTK scaling
- Position interpolation
- LongLoRA
否则模型虽然“能吃进去”,但理解效果会很差。
7. 理论上还有更深层限制
目前 Transformer 长上下文仍有根本问题:
- 信息稀释
- 注意力退化
- 中间遗忘
- Memory bandwidth 瓶颈
甚至学术界现在都在研究:
- KV Cache Compression
- Sparse Attention
- Linear Attention
- State Space Model(Mamba)
- RWKV
因为传统 Transformer 长上下文成本太高。([arXiv][5])
简单总结
大模型上下文长度主要由:
| 因素 | 是否关键 |
|---|---|
| Attention 复杂度 | 非常关键 |
| Position Encoding | 非常关键 |
| KV Cache 显存 | 极其关键 |
| 训练数据长度 | 非常关键 |
| GPU 显存/带宽 | 极其关键 |
| 推理优化 | 很关键 |
| 长上下文训练技巧 | 很关键 |
可以把它理解成:
“上下文长度”本质上是: 模型结构 + 位置编码 + 显存容量 + KV Cache 管理 + 长文本训练能力 的综合结果。
参考链接
I don't understand context window extension"
"KV Cache and VRAM: How Context Length Blows Up Your GPU Memory (2026)"
"KV Cache: Why Context Length Eats Your VRAM (And How to Fix It) | InsiderLLM"