摘要:NVIDIA实测显示,输入从4K增长到128K后,注意力在DeepSeek-R1预填充阶段的耗时占比从18%升至85%。长上下文效率已经不能只靠更快内核,而要同时设计Query/KV头比例、头维度、有效KV状态和多卡并行方式。
2026 年 7 月 31 日,NVIDIA 发布长上下文注意力协同设计分析。它用 GPU 实测和算术强度模型说明:上下文从 4K 增长到 128K 后,注意力在 DeepSeek-R1 预填充阶段的耗时占比由 18% 升至 85%。长上下文效率已经进入模型架构、数值精度、GPU 内核和多卡并行共同决定的阶段。
大模型的上下文窗口还在变长。代码智能体要连续读取仓库、编译日志和工具调用记录,研究智能体要处理几十篇论文,企业知识助手可能把合同、制度、设备手册和历史对话同时放进提示词。128K、256K 乃至百万 token,正在从模型参数表上的能力指标变成线上服务的实际负载。
窗口变长以后,问题很快从“能否放得下”转向“能否及时返回”。用户发出请求后,系统先处理整段输入,等待第一个 token;随后逐 token 生成回答。前一阶段决定首字等待时间,后一阶段决定回答流畅度。两者都调用注意力,却受完全不同的硬件瓶颈约束。
NVIDIA 此次给出的结论很直接:长上下文注意力不能只依赖部署阶段换一个更快的 CUDA 内核。查询头与 KV 头的比例、每个头的维度、有效 KV 状态规模,以及多张 GPU 如何切分注意力,都应在模型设计阶段考虑。模型架构若与 GPU 执行方式错位,后续优化很容易遇到物理上限。

128K 上下文为何让注意力成为主角
标准自注意力可以写成:
$$
Attention(Q,K,V)=softmax\left(\frac{QK^T}{\sqrt{d}}\right)V
$$
输入序列中的每个 token 生成 Query、Key 和 Value。预填充时,每个 Query 都要与大量 Key 计算相关性,再用归一化权重汇总 Value。序列长度记为 $n$,完整稠密注意力的核心计算量随 $n^2$ 增长。
NVIDIA 以 DeepSeek-R1 的预填充为例:4K 上下文时,注意力只占总耗时的 18%;到 128K 时,该比例升至 85%。上下文长度扩大 32 倍,稠密注意力的理论工作量可扩大约 1024 倍,而前馈网络等逐 token 计算主要保持线性增长。最终,原来与其他模块并列的注意力路径压倒了其余部分。
这组数据也符合 Amdahl 定律。一个模块只占 18% 时,即使把它无限加速,整体收益也有限;当它占到 85%,任何长上下文优化都绕不开注意力。继续把大量工程资源投到前馈层或其他小算子上,边际收益会迅速下降。
预填充和解码,是两种不同的硬件问题
一次大模型推理通常分为两个阶段。
**预填充(Prefill)**一次性处理全部输入token。在稠密注意力、足够长的普通全量prefill和NVIDIA文中的FP8内核配置下,查询长度等于输入序列长度,大规模矩阵乘法具有充足并行度,主要受计算吞吐限制,通常属于compute-bound,也就是“算得不够快”。
**解码(Decode)**每轮通常只生成一个新token。在非推测式、单token解码下,这个token的Query要读取全部历史Key和Value,矩阵在查询方向上非常窄,大量时间花在从高带宽显存HBM搬运KV Cache,通常属于memory-bound,也就是“数据搬得不够快”。
NVIDIA 用算术强度描述这种差异:
$$
Arithmetic\ Intensity=\frac{FLOPs}{Bytes\ Accessed}
$$
单位数据搬运对应的计算越多,GPU 越容易进入计算受限区;计算很少、读写很多时,性能受显存带宽限制。预填充的大矩阵乘法位于 Roofline 模型的计算平台区,单 token 解码则落在带宽斜坡区。
这一差异会改变优化优先级。预填充需要提高矩阵计算效率、减少二次方工作量;解码更需要缩小 KV Cache、减少每个 token 的显存读取。只看“注意力总耗时”而不区分阶段,容易把正确方法用在错误位置。
多轮智能体还有一种特殊状态:系统复用了很长的前缀缓存,新一轮用户输入很短,却要访问巨大的历史 KV Cache。此时名义上仍属于预填充,硬件行为却更接近解码,同样受显存带宽约束。
FlashAttention 解决了什么,又留下了什么
原始实现会显式生成 $n\times n$ 注意力分数矩阵。上下文很长时,这张矩阵既占显存,又需要在 HBM 与计算单元之间频繁往返。FlashAttention 的核心贡献是 IO 感知:把 Q、K、V 分块从 HBM 送入片上 SRAM,在一个融合内核中完成三步操作:
- 计算 $QK^T$,得到当前分块的注意力分数;
- 用在线 Softmax 维护运行中的最大值与归一化和;
- 计算注意力权重与 V 的乘积并累积输出。
这样可以避免物化完整注意力矩阵,大幅减少显存读写。两次批量矩阵乘法主要运行在 Tensor Core 上,Softmax 指数运算使用特殊函数单元。
FlashAttention 改善了数据流,却没有取消稠密注意力的数学规模。每个 token 仍要与全部历史 token 建立关系,预填充的总工作量依旧近似 $O(n^2)$。到了超长上下文,内核已经高效,模型结构本身便成为下一层瓶颈。
第一条设计规则:让更多 Query 共享 KV
注意力头并不一定各自拥有独立的 Key 和 Value。NVIDIA 用三个变量描述头结构:
- QH:Query 头数量;
- KH:Key/Value 头数量;
- $G=QH/KH$:每个 KV 头服务的 Query 头数量,也称 Group Size。
传统多头注意力 MHA 中,QH 与 KH 相等,所以 $G=1$。分组查询注意力 GQA 让 4、8、16 个 Query 头共享一个 KV 头。多查询注意力 MQA 将 KH 压到 1,所有 Query 头共享同一组 K、V。
这种共享对解码很重要。每生成一个 token,模型都要从 HBM 读取历史 KV。KH 越少,读取数据越少;同一份 KV 被更多 Query 头复用,单位字节对应的计算量越高。
NVIDIA 的分析显示,在 FP8 KV Cache 假设下,解码算术强度近似为 $2G$。$G$ 从 1 增至 8,算术强度可提升 8 倍。实测曲线中,$G$ 每翻倍,解码运行时间大约减半;在 32K KV 长度下,超过 $G=16$ 后固定开销开始主导,收益趋平,而 128K 曲线由于任务更大,仍较好地延续接近 2 倍的趋势。
预填充呈现另一幅图景。输入长度为 32K 时,$G$ 从 8 提升到 16,算术强度增幅不足 6%;从 MHA 的 $G=1$ 一直改到 MQA 的 $G=64$,预填充运行时间变化小于 1%。预填充已经拥有足够大的矩阵,减少 KV 头难以进一步喂饱计算单元。
因此,Group Size 主要应围绕解码效率选择。这里也有模型质量约束:KV 共享越强,表示容量可能变化,需要在训练阶段验证准确率。NVIDIA 给出的是性能规律,并没有声称所有模型都应无条件采用 MQA。
KV Cache 到底会吃掉多少显存
每一层、每一个历史 token 都要保存 K 和 V。忽略元数据与对齐开销,KV Cache 大小可以近似写成:
$$
KV\ Bytes=2\times Layers\times Tokens\times KH\times Hsz\times BytesPerElement
$$
其中的 2 代表 K 和 V,Hsz 是单个头的维度。
假设一个传统MHA/GQA/MQA模型有80层、64个Query头、头维度128,缓存使用FP8,每个元素1字节,并把128K按131,072个token计算,单条序列的理论KV占用如下:
| 注意力形式 | KV 头数 KH | Group Size | 单序列 KV Cache |
|---|---|---|---|
| MHA | 64 | 1 | 约 160 GiB |
| GQA | 8 | 8 | 约 20 GiB |
| GQA | 2 | 32 | 约 5 GiB |
| MQA | 1 | 64 | 约 2.5 GiB |
这是一个说明数量级的推导,不对应某个已发布模型,也未计入分页、内存碎片和批处理。该公式描述传统未压缩K/V缓存,不直接适用于DeepSeek-R1的MLA、latent KV、滑动窗口或混合层状态。它揭示了KH对部署密度的影响:从64个KV头降到8个,缓存缩小8倍;可用显存由此容纳更多并发请求,数据中心吞吐也会提高。
KV 低比特量化、缓存压缩、滑动窗口、稀疏注意力和混合架构也在解决同一问题。Nemotron 3 一类混合模型只让部分层维护持续增长的全局 KV 状态,其余层使用更轻的序列建模方式。模型能够接受很长输入,并不要求每一层都以同样成本保存全部历史。
第二条规则:头维度要贴合 GPU 的“砖块”
模型设计者常把 Head Dimension 设置为 64、128、256 或更大。数学上,维度翻倍会同时增加计算量和数据量,两者比值基本不变;硬件执行却是离散分块的。
GPU 矩阵内核以固定 tile 处理数据,内存传输也遵循对齐单位。NVIDIA 指出,Hsz=64 在一些内核上仍可能占用 128 宽的 tile,相当于只填了一半却支付完整成本;Hsz 最好是 128 的倍数,以匹配 tile 和 128 字节传输。Hsz 达到 512 或更大时,又会逼近 Tensor Memory(TMEM)容量约束。
综合矩阵乘法、KV 读取、Softmax 与片上资源,NVIDIA 推荐 128 或 256 作为更高效的头维度。128 适合控制 KV 规模,256 能在预填充时用更多矩阵计算摊薄 Softmax 固定成本。选择仍需结合模型精度与总隐藏维度,推荐值是一条硬件友好经验,并非通用质量结论。
第三条规则:缩短“有效序列”,比只换 GPU 更重要
上下文长度对两个阶段的影响具有明显不对称性:
- 预填充:输入长度翻倍,稠密注意力工作量约增至 4 倍;
- 解码:KV Cache 长度翻倍,每步读取量和运行时间约增至 2 倍。
NVIDIA 的内核实测验证了这一趋势。短序列时,启动、归约和后处理等固定开销会让增幅低于理想倍数;序列足够长后,预填充逐渐贴近平方曲线,解码逐渐贴近线性曲线。
这意味着“标称 1M 上下文”与“每次都用 1M token”之间应保持距离。检索增强生成可以先挑选相关片段,前缀缓存可以复用不变内容,滑动窗口只让局部 token 参与完整注意力,稀疏注意力只计算高价值连接,KV 压缩减少历史状态的字节数。应用侧的上下文治理与模型侧的注意力设计具有同等价值。
推测解码也能改变硬件状态。普通解码一次只有一个 Query,矩阵太窄;推测解码先产生多个候选 token,再由大模型并行验证,相当于扩大有效 GEMM-M。候选数量足够时,解码的算术强度上升,可能从显存带宽受限向计算受限移动。
第四条规则:多 GPU 数量要服从 KV 头数
模型放到多张 GPU 后,常用 Tensor Parallelism(TP)把注意力头分摊到不同设备。若 QH=64、KH=8、TP=8,每张 GPU 获得 8 个 Query 头和 1 个完整 KV 头,切分自然。
当 TP 大于 KH,问题出现了。同一个 KV 头服务的 Query 组会跨越多个 GPU,每个设备都需要保存一份共享 KV,缓存与显存带宽被重复消耗。增加 GPU 数量没有继续缩小注意力状态,反倒产生额外通信和复制。
NVIDIA给出的边界是 TP ≤ KH,并且KV头应能在GPU之间整除、均匀分配,使每张GPU至少拥有一个完整KV头及其Query组。例如KH=6、TP=4虽然满足TP≤KH,仍不能自然均匀切分。采用MQA或只有两个KV头的GQA模型,会很快用尽TP的扩展空间。此后应更换并行维度:
- Attention Data Parallelism(ADP)按请求分配注意力;
- KV Parallelism(KVP)沿长序列切分 KV Cache;
- Expert Parallelism(EP)单独分摊 MoE 前馈专家。
TensorRT-LLM中的Wide EP让注意力使用ADP、MoE前馈层使用EP。Helix则用KVP切分长序列KV,可配合满足 TP_A ≤ KH 的注意力TP;进入FFN阶段后重新组织为TP,MoE模型还可以结合EP。它们体现了一条重要原则:注意力与前馈层的数据形态不同,可以采用不同的并行策略;用单一TP参数贯穿所有模块,通常难以达到最优。
对模型公司和算力中心意味着什么
NVIDIA 的四条清单面向模型设计者,也会影响推理平台和 GPU 集群采购。
对模型公司而言,QH/KH、Hsz 和注意力层比例要在预训练前确定。训练完成后再把 MHA 改成 GQA,会牵涉权重转换、继续训练和质量回归。硬件约束正在提前进入架构搜索:模型不只追求基准分数,还要计算首 token 延迟、单用户生成速度、集群吞吐和每百万 token 成本。
对推理平台而言,需要分开测量 TTFT(首 token 时间)与 TPOT(后续 token 间隔)。128K 输入的 TTFT 主要由预填充决定,持续生成数千 token 的交互体验更多受解码影响。预填充与解码可以分离部署,分别选择并行度、批量和资源配比。
对算力中心而言,峰值 FLOPS 无法单独解释长上下文性能。预填充需要计算吞吐,解码需要 HBM 容量与带宽,多机部署还依赖 NVLink、网络拓扑和高效集合通信。相同数量的 GPU,模型头结构和并行方案不同,能承载的 128K 并发数可能相差数倍。
对企业应用而言,最便宜的 token 是没有送进注意力的 token。文档去重、层级摘要、精准检索、对话状态压缩和工具结果清理,可以同时降低 TTFT、KV Cache 和调用成本。把历史记录无选择地累积进提示词,会逐轮放大显存与延迟压力。
这些数据应该怎样理解
NVIDIA 的分析聚焦稠密注意力,并基于 FP8 注意力计算与 FP8 KV Cache 的内核测量。曲线使用 QH=64、特定 Group Size、Batch 和 32K/128K 序列等配置。它展示的是清晰的硬件规律,不能直接换算成某个完整模型的端到端加速倍数。
模型质量也没有被这组性能数据覆盖。减少 KV 头、改变头维度、引入滑动窗口或稀疏注意力,都可能影响训练稳定性和长距离信息检索能力。一次“针尖查找”测试高分,也不能代表复杂多文档推理在生产环境中的质量。
此外,这套建议针对 NVIDIA GPU 的 tile、传输对齐、TMEM 和 TensorRT-LLM 并行实现。算术强度、KV 规模与 $O(n^2)$ 等基本规律具有普遍性,具体甜点参数会随加速器架构和软件栈变化。
结语
长上下文正在改变大模型的性能中心。4K 输入时,注意力只是执行路径的一部分;128K 输入时,它可能占据 85% 的预填充时间。到了这个尺度,单个内核优化已经不够,模型头结构、KV 精度、有效序列长度和多卡切分必须协同考虑。
NVIDIA 给出的四条规则可以概括为:用更大的 Group Size 提高解码复用,选择 128 或 256 的硬件友好头维度,压缩持续增长的有效 KV 状态,并让并行度服从KV头数量及其可整除关系。它们没有消除长上下文的成本,却把成本来自哪里、应该在哪一层解决,解释得相当清楚。
未来的百万 token 模型能否大规模服务,取决于一整条协同链路:训练时选择可部署的注意力结构,推理时使用 IO 感知内核和低精度缓存,集群按模块采用不同并行策略,应用端控制进入上下文的信息量。窗口长度只是入口,速度、并发和成本才决定它能否成为稳定的生产能力。
参考资料
- NVIDIA Technical Blog:Co-Designing AI Model Attention for Fast, Interactive Long-Context Inference,2026-07-31。
- NVIDIA Technical Blog:AI Model Co-Design — Hardware-Friendly LLM Design,2026-07-10。
- FlashAttention:Fast and Memory-Efficient Exact Attention with IO-Awareness。
- NVIDIA TensorRT-LLM:Parallelism Strategies。
- NVIDIA:Scaling Large MoE Models with Wide Expert Parallelism。
- TensorRT-LLM:Helix Parallelism。
注:关键百分比、内核测试趋势和四项设计指南来自NVIDIA官方技术文章;80层、64个Query头的KV Cache表格、Amdahl解读及部分企业工程建议为依据公开公式所作推导,不代表NVIDIA已发布模型配置。实际性能会随模型、GPU、精度、批量、序列分布和软件版本变化。