跳到正文
ARCHITECTURE SYNTHESIS · LONG CONTEXT

能接收一百万 Token,只是长上下文问题的开始

长窗口不是把 max_length 改大。先分清 checkpoint 支持、服务准入、训练适配与任务有效长度;再检查位置坐标、信息路径、逻辑 KV、物理分配、证据选择与跨段状态。最后用任务、位置、长度和系统指标证明它真的可用。

01 · 四份长度合同

“标称、准入、训练、有效”不能共用一个窗口数字

Tokenizer 通常只负责把输入变成 token,并不替 checkpoint 决定可用窗口。长上下文要分别核对模型/配置声明、运行时实际准入、训练与适配长度分布,以及目标任务达到质量和成本门槛的有效长度。

Tinput+Toutput reserveTadmittedT_{\mathrm{input}} + T_{\mathrm{output\ reserve}} \le T_{\mathrm{admitted}}

T_input 常包含系统指令、工具 schema、历史消息、用户内容与多模态输入折算;T_output reserve 是为输出预留的 token。不同 API 的计数、截断与输出占窗规则不同,必须以当前模型文档和返回的 usage 为准。

口径由谁决定真正说明什么不能推出什么
模型 / 配置声明权重、位置方案、模型卡与配置发布方声称该 checkpoint 可接受或评测到的范围当前部署一定开放同样长度
运行时准入API、runtime、显存与调度策略本次输入加输出预算是否被服务接收模型会稳定利用每个位置
训练 / 适配分布预训练、继续训练和长文采样配方模型真正见过哪些长度、任务与位置分布所有目标任务都能外推到最长点
任务有效长度你的评测集、SLO 与风险门槛在给定任务和长度分布上仍可接受的最大区间能迁移成另一任务的通用“真实窗口”
例子 · 同样是“128K”

找一个随机密码,与汇总 300 份合同的例外条款,不是同一难度

前者可能只需在干扰文本里定位一条显眼字符串;后者要召回多条分散证据、识别否定与版本、按规则聚合,再给出可追溯出处。单针准确率很高,也不能证明第二种任务同样可靠。

白话记忆

模型声明像仓库设计图,服务准入像今天实际开放的库位,训练分布像工人练过的货架与订单,有效长度才是他在时限和错误率门槛内真能找齐、核对并打包的范围。

02 · 六类责任图

六类责任都要交代,但不是六个模块都要安装

许多争论把问题压成“长窗口还是 RAG”。更准确的做法是逐层问:坐标还能解释吗?信息怎样可达?逻辑状态有多大、物理上怎样放?证据是否需要筛选?有限窗口外保留什么?最后怎样证明有效?一次性且资料已装得下的任务可以不做检索,有限会话也可以不做跨段状态,但省略必须是明确选择。

长上下文六类责任图:任务合同位于中央;位置层负责坐标但不决定连接,注意力层负责信息路径但不分配物理显存,KV 与运行时负责逻辑状态和物理分配但不保证任务正确,检索与压缩按需筛选外部证据但可能漏召回,跨段状态按需延续有限窗口外历史但通常有损,评测把任务、位置、长度和系统结果反馈给各层。
这是责任地图,不是固定流水线或采购清单。每一层都要给出“采用、跳过或外包”的理由;采用某一层,也不会自动完成其他层的职责。 查看原图 ↗
03 · 位置与可见性

位置、连接、跨卡切分是三份不同契约

RoPE/YaRN 处理位置相位与训练外坐标,Full/SWA/Sparse/Linear 等机制决定信息路径,Context Parallelism(上下文并行,CP)只把序列张量切到多张卡。坐标可表示,不代表远处有直达边;有直达边,不代表权重学会利用;跨卡算得动,也不代表模型能力变长。

RoPE · Rotary Position Embedding:位置相关部分依赖相对位移

RoPE 让每对 Q/K 维度按不同频率旋转,使点积中的位置项依赖 m−n。超出训练长度后,频率与内容表示的组合可能进入模型不熟悉的分布;只放大 position id 或配置上限,不是能力证明。

YaRN · Yet another RoPE extensioN:不只是“把坐标压短”

YaRN 组合 NTK-by-parts 的分频处理与 attention logit scaling。原论文主要结果包含少量长上下文微调,也报告 Dynamic-YaRN 在不微调下继续外推;“10× 少 token、2.5× 少训练步”是相对论文所选先前方法和实验,不是任意模型的固定节省。

Full Attention:因果 Prefill 每头每层有 T(T+1)/2 个可见 pair

位置 t 可直接给 0…t 的历史分配权重。FlashAttention 用 tiling 与 online softmax 减少 HBM 往返和中间量,仍计算算法意义上的精确注意力;它不删除 token pair,也不扩 checkpoint 的有效长度。

SWA / Sparse:减少直达边,不等于免费保留全局访问

Mistral 7B 的 Sliding Window Attention(滑动窗口注意力,SWA)让每层读取固定近邻窗口,并可用 rolling buffer 限制 KV。其他稀疏模式可加入全局 token、块或跨段边;成本下降时必须列出哪些远处位置仍能直达、哪些只能跨层间接传播。

Linear / Recurrent:固定的是 Decode carry,不是无损记忆

历史被更新进固定形状或有界状态,再与当前 token 交互。流式 Decode 的 carry 可不随已解码长度增长,但训练/Prefill 仍处理 T 个位置;有限状态要共享容量,不能据此承诺随机找回任意久远原文。

Context Parallelism:分摊每卡激活,不减少全局语义工作

Megatron Core 的 CP 沿序列维切分输入与激活;attention 仍要让本地 Q 与全序列 KV 交互,因此各 rank 必须交换 KV。它可降低单卡激活压力并并行 prefill,却不改变 mask、总 token pair、训练分布或模型输出定义。

04 · 四个“记忆”词义

逻辑 KV、物理分页、外部检索与压缩状态不能互相冒名

它们都被口语称为 memory,却处在不同层。PagedAttention 管“同一批逻辑 KV 怎样放”,Prefix Cache 管“哪些已算前缀可以复用”,RAG 管“哪些外部证据进入输入”,递归状态管“窗口外历史怎样有损延续”。

KV + PAGING

逐 token 逻辑状态与物理块

KV Cache 避免 Decode 每步重算历史表示。PagedAttention 把逻辑块映射到非连续物理块,降低预留与碎片,并能按实现共享引用;它不减少 checkpoint 规定的逻辑 KV 元素,也不提高答案准确率。

RETRIEVAL

可更新、可授权的外部证据

按 query、权限与时间筛选文档或结构化记录,再把证据和出处送入窗口。它可缩短输入并更新知识,风险是漏召回、切块断义、hard negative、排序偏差与权限过滤错误。

COMPRESSED STATE

有限窗口外的有界摘要

可以是文字摘要、结构化槽位、递归神经状态或压缩记忆。Infini-attention 把局部因果注意力与长期线性压缩状态放在同一 block;有界资源来自压缩,不等于旧原文可逐字无损恢复。

真实组合 · 反复问一个大型代码库

索引负责找文件,长窗口负责跨文件读,prefix cache 负责别重复算

先用符号、路径、关键词与向量索引缩小候选文件;把相关实现、测试和调用链送入长窗口;若多轮请求产生相同 token prefix,再复用对应 KV blocks。vLLM 的实现按 parent hash、当前 block token IDs 与 LoRA/多模态/cache salt 等额外 namespace 查找,并只缓存完整块;“语义相似”但 token 不同不会自动命中。

当前产品边界

截至 2026-07-14,Google 长上下文指南仍把 1M+ 输入用于长文、代码与多模态场景,同时建议删除不需要的 token,并明确多针准确率不等同于单针;当前缓存文档则说明 Gemini API 对共同前缀可使用 implicit caching。具体模型窗口、最低缓存 token、计费与命中字段会变化,页面只保留核查日期,不把它们写成跨模型常量。

05 · 成本手算

32K → 128K:因果 pair 约 16×,逐 token KV 正好 4×

先算模型级逻辑工作,再讨论 kernel、分页、并行与调度怎样改变物理执行。把这两层混在一起,最容易把“单卡放得下”误报成“总工作变少”。

Ncausal(T)=T(T+1)2per head, per layerN_{\mathrm{causal}}(T)=\frac{T(T+1)}{2}\quad\text{per head, per layer}
CAUSAL PAIRS

536,887,296 → 8,590,000,128

取 32K=32,768、128K=131,072,每头每层的下三角可见 pair 比例约 15.9996×。FlashAttention 不删除这些 pair。

KV CACHE

32K → 128K:约 4×

逐 token KV 按序列长度线性增长。层数、KV 头、head dim 和 dtype 不变时,长度四倍就是容量四倍。

REPEATED PREFILL

20 次相同前缀 ≠ 必算 20 遍

Prefix Cache 命中可跳过已缓存完整块的 prefill;仍要处理新后缀、做 cache lookup 并保留/读取 KV。收益取决于 token 级匹配、namespace、驻留与驱逐。

KV bytes=B×L×T×2K,V×HKV×dh×sbytes\mathrm{KV\ bytes}=B\times L\times T\times 2_{K,V}\times H_{KV}\times d_h\times s_{\mathrm{bytes}}

B 为并发序列数,L 为层数,T 为每序列缓存长度,H_KV 为 KV heads,d_h 为每头维度,s_bytes 为每元素字节。它算整个模型的逻辑张量,不是 Tensor/Context Parallel 后的单 rank 驻留量。

KV 手算 · BF16 / batch 1

32 层、8 KV 头、head dim 128

32K 时为 32×32768×8×128×2(K/V)×2 bytes = 4 GiB;128K 时为 16 GiB。若有 16 条同长并发序列,模型级逻辑 KV 是 256 GiB,尚未计权重、激活、临时 workspace、页表与对齐。PagedAttention 不能把这 256 GiB 的逻辑元素凭空变少,但可减少物理预留/碎片,并在前缀确实相同时共享块。

手段真正改变没有改变
GQA / MLA checkpoint每 token 的逻辑 KV 表示宽度不能靠 Serving 开关迁移既有权重
KV 量化每元素字节和量化 metadatatoken 数与模型质量风险
PagedAttention物理分配、碎片、共享与回收checkpoint 的逻辑元素数
Prefix Cache重复前缀的 prefill 计算首次 prefill、后缀与 Decode
Context Parallelism每 rank 的序列切片与并行时间全局 mask、pair 集合与模型能力
Chunked Prefill调度粒度和长短请求干扰整段 prompt 最终需处理的语义工作
别用复杂度替代压测

FlashAttention 能显著减少 Full Attention 的 IO 和峰值中间量,却不会把所有硬件上的端到端耗时固定成某个公式;线性、稀疏或跨卡方法也可能受小矩阵、门控、通信和 kernel 成熟度限制。最终要按 Prefill/Decode、长度、batch、缓存命中与并发分别测。

06 · 系统选型

先问证据全集是否值得入窗,再问是否需要全局联合推理

查询是否“稳定”不是 RAG 与长窗口的分界:同一索引完全可以服务不断变化的问题。更可靠的入口是证据全集能否装入当前准入预算、是否频繁更新或受权限约束,以及答案是否需要跨大部分原文做精确交互。2024 年一项三模型、九个 query-based 数据集研究中,资源充足的长窗口平均优于其固定 RAG 配方,而 RAG 更省输入成本;这只是特定模型、retriever 和 top-k 的快照,说明应按任务路由,而不是宣布永远赢家。

长上下文系统决策树:先问证据全集能否且是否值得放入一次运行时准入窗口;若不能或不值得,先做带权限与出处的检索、结构化查询或过滤,并单独守召回率;若可以,再问任务是否需要大范围原文联合交互,不需要时仍可用分段、摘要或检索降成本,需要时才使用 checkpoint 真正支持的 Full 或带全局路径的 Hybrid。所有分支再分别检查相同 token prefix 是否可缓存、持续流是否需要有损状态,以及位置、注意力、KV、Context Parallelism 和评测合同。
检索决定“送什么”,长窗口决定“同时处理多少”,Prefix Cache 决定“哪些相同前缀不重算”,Context Parallelism 只决定“怎样跨卡分摊”。四者可以组合,也不能互相冒充。 查看原图 ↗
07 · 评测闭环

不要只报最大长度,要画出“任务 × 长度 × 位置”的退化曲线

RULER v3 在 17 个当时标称至少 32K 的 aligned 模型上跑 13 个合成任务:尽管 vanilla Needle-in-a-Haystack 接近满分,只有约一半在 32K 超过作者定义的 85.6%“有效长度”阈值。这个阈值取自 Llama2-7B 在 4K 的分数,是 2024 论文的诊断尺,不是今天所有模型或业务的通用及格线。

评测覆盖最适合回答不能单独证明
RULER13 个可控合成任务;检索、多跳追踪、聚合、QA长度和任务复杂度升高时怎样退化真实领域质量与当前产品排名
LongBench4,750 个实例、21 个数据集、六类中英任务QA、摘要、few-shot、代码等多任务表现精确控制证据位置与任意超长长度
Lost in the Middle多文档 QA 与合成 KV retrieval 的位置扫描同一证据换到开头、中间、末尾会怎样所有新模型都必然保持同一 U 形偏差
业务回放真实文档、权限、提示模板、工具与长度分布你的有效窗口、SLO、成本和失败归因离开当前版本与流量后的普遍结论

能力轴:从检索到综合

单针检索只测定位;多针测同时召回;变量追踪与多跳测跨段关系;聚合测计数、排序、归纳和冲突消解。真实长文任务至少覆盖后两类。

位置轴:固定内容,只移动证据

Lost in the Middle 在其 2023 模型快照中观察到开头/末尾较高、中间较低的 U 形曲线。它提供的是控制变量协议,不是永恒定律;当前 checkpoint 仍应扫描开头、中间、末尾,并加入相似 hard negatives。

长度轴:不要只测 4K 与最大值

建议覆盖 4K、8K、16K、32K、64K、128K 等业务关键点,画准确率与拒答率曲线。可用窗口是达到质量门槛的区间,不是配置文件中的一个数。

系统轴:TTFT、TPOT、显存、费用和 Goodput

长 prompt 首先推高 Prefill 与 Time to First Token(首 token 延迟,TTFT);在增长型 KV 架构里,更长历史也会增加 Decode 每步读取,使 Time per Output Token(每输出 token 时间,TPOT)可能随长度变差。按并发、缓存命中和长度分布测 P50/P95 与达标吞吐。

归因轴:证据没进来、被截断、没用对,还是缓存错了

RAG 要分别记录候选召回、权限过滤、重排、装配与生成正确率;长窗口要记录实际 token 数、截断与证据位置;Prefix Cache 要记录命中 token 和 namespace;有损状态要测压缩前后信息保留。最终错误才能回到负责的那层。

最终交付物

不要给产品一个脱离任务的“真实窗口”单值。交付应是一组版本化曲线:checkpoint/runtime 版本、任务切片、证据位置、输入/输出长度、并发与缓存状态 → 质量、拒答、TTFT、TPOT、显存、费用和 Goodput。

RESEARCH LEDGER

一手来源与证据边界

优先使用论文、官方文档、官方模型卡和代码仓库。页面中的数字只代表来源所述设置,不自动外推到其他模型与数据。

R01
RoFormer: Enhanced Transformer with Rotary Position EmbeddingSu et al. · 2021

RoPE 的旋转位置表示,以及 Q/K 点积中的相对位置差。

R02
YaRN: Efficient Context Window Extension of Large Language ModelsPeng et al. · ICLR 2024 · arXiv v3 2026

NTK-by-parts 频率处理、attention scaling、少量长上下文适配与动态外推的实验边界。

R03
Mistral 7BMistral AI · 2023

滑动窗口注意力与 rolling buffer KV Cache 的真实模型实例。

R04
FlashAttention: Fast and Memory-Efficient Exact Attention with IO-AwarenessDao et al. · NeurIPS 2022

精确全注意力的 IO-aware 实现不会减少 token pair 或改变 mask。

R05
Efficient Memory Management for LLM Serving with PagedAttentionKwon et al. · SOSP 2023

KV 逻辑块到物理块的映射、碎片控制、引用计数与写时复制共享。

R06
Automatic Prefix CachingvLLM v0.14.1 docs · 核查于 2026-07-14

相同 token prefix 的 KV block 复用、hash namespace、完整块与 cache salt 边界。

R07
Retrieval-Augmented Generation for Knowledge-Intensive NLP TasksLewis et al. · NeurIPS 2020

把参数记忆与可检索的外部非参数记忆组合。

R08
Retrieval Augmented Generation or Long-Context LLMs?Li et al. · EMNLP Industry 2024

三种 2024 模型、九个 query-based 数据集上的 RAG/长窗口对照与 Self-Route;仅作特定实验快照。

R09
Leave No Context Behind: Efficient Infinite Context Transformers with Infini-attentionGoogle · 2024 preprint

局部因果注意力与长期线性压缩状态结合;有界资源不等于无损回看。

R10
RULER: What's the Real Context Size of Your Long-Context Language Models?Hsieh et al. · COLM 2024

17 个模型、13 个合成任务上的多针、变量追踪、聚合与有效长度阈值。

R11
LongBench: A Bilingual, Multitask Benchmark for Long Context UnderstandingBai et al. · 2023

4,750 个中英测试实例、21 个数据集和六类真实/合成长文本任务。

R12
Lost in the Middle: How Language Models Use Long ContextsLiu et al. · TACL 2024

固定内容、扫描证据位置的评测协议,以及 2023 模型上的 U 形历史结果。

R13
Context Parallel PackageNVIDIA Megatron Core docs · 核查于 2026-07-14

沿序列维切分输入与激活、交换 KV;分摊每卡资源但不改变模型语义。

R14
Gemini API: Long contextGoogle AI for Developers · 更新于 2026-06-22 · 核查于 2026-07-14

1M+ 上下文用法、多针限制、无关 token、TTFT 与重复内容建议。

R15
Gemini API: Context cachingGoogle AI for Developers · 更新于 2026-07-07 · 核查于 2026-07-14

当前 Gemini API 的 implicit caching、共同前缀与缓存命中计量。