vLLM 中的 Attention Sink 与 Sliding Window Attention 深度解析

概述 本文围绕 vLLM 推理引擎中的两个关键注意力机制展开深入分析:Attention Sink(注意力沉没)和 Sliding Window Attention(滑动窗口注意力,SWA)。内容涵盖它们的设计原理、vLLM 中的代码实现、KV cache 管理流程,以及 DeepSeek V4 模型如何运用这些技术。 所有分析基于 vLLM 代码库中 DeepSeek V4 相关的实现。 ...

June 5, 2026 · 6 min · 1111 words

vLLM Cascade Attention:用法、场景与原理解析

概述 Cascade Attention(级联注意力)是 vLLM 推理引擎中针对多请求共享长前缀场景的一种注意力优化技术。它将标准 attention 拆解为 prefix(前缀)和 suffix(后缀)两个阶段,显著降低 KV cache 的全局内存读取量,在共享 system prompt 的批量推理场景中可实现最高数十倍的 attention 加速。 本文将深入剖析 cascade attention 的设计思想、使用方式、适用场景、实现原理,并与 FlashAttention、FlashDecoding 等其他优化技术进行对比。 一、Cascade Attention 的核心思想 标准 Attention 的冗余 在大语言模型的批量推理中,多个请求往往共享一个较长的 system prompt。例如: Chatbot 场景:所有请求共享 “You are a helpful assistant…” 等 system prompt Document QA:多用户对同一篇文档提问,文档内容为公共前缀 Self-Consistency:对同一 prompt 采样多条推理路径 标准 attention 的处理方式是每个 request 独立计算其完整的注意力——包括共享的 system prompt。这意味着同一份前缀 KV cache 被重复加载多次。 Cascade 的拆解思路 Cascade attention 将一次 attention 计算拆成三步: Prefix 阶段:将所有请求的 query 拼成一个"大序列",对共享前缀做一次非因果(bidirectional)attention Suffix 阶段:每个请求各自对其独有的后缀做因果(causal)attention Merge:通过 LSE(log-sum-exp)rescaling 将两阶段结果加权合并 数学上等价于标准 attention,但计算量和显存带宽需求大幅降低。 ...

June 1, 2026 · 6 min · 1143 words

DeepSeek Attention 中为什么除以 √d_k — 从代码到数学

引言 在 Transformer 的 Scaled Dot-Product Attention 中,有一个看似简单却至关重要的操作: scores = Q @ K^T / math.sqrt(d_k) 这个 ÷√d_k 几乎出现在每一个 Attention 实现中。DeepSeek 的 MLA(Multi-head Latent Attention)也不例外。本文从 DeepSeek V4 的 vLLM 实现代码出发,深入探讨这个缩放因子的数学动机、工程实现,以及 DeepSeek 特有的优化变体。 标准 Attention 中的缩放因子 Softmax 的"饱和"问题 原始 Attention 计算公式为: Attention(Q, K, V) = softmax(QK^T / √d_k) V 设 Q、K 的每个元素是独立同分布、均值为 0、方差为 1 的随机变量。对于向量 q 和 k(维度为 d_k),其点积的均值和方差为: E[q·k] = Σ E[q_i·k_i] = 0 Var(q·k) = Σ Var(q_i·k_i) = d_k 即点积的方差正比于 d_k。当 d_k 较大时(如 128、512),点积的绝对值会很大,导致 softmax 进入梯度极小的饱和区: 当某个 x_i 远大于其他值时,e^{x_i} 会主导分母,softmax 输出接近 one-hot,梯度趋近于 0,训练难以收敛。 ...

June 1, 2026 · 4 min · 721 words

DeepSeek MLA 中 QKV Head Dimension 的处理差异

引言 Multi-head Latent Attention(MLA)是 DeepSeek-V2/V3 系列模型中最核心的架构创新之一。它在标准 Multi-Head Attention(MHA)的基础上引入了低秩压缩,大幅降低了 KV cache 的显存占用,同时保持了与 MHA 相当的模型质量。 本文从 QKV head dimension 处理差异 这一视角切入,深入分析 MLA 的设计原理、vLLM 中的具体实现,以及这种设计带来的性能收益。 1. 标准 MHA 回顾 在标准 MHA 中,给定输入序列 X ∈ ℝ^{S×D},Q、K、V 通过三个独立的线性变换得到: Q = X @ W_Q → [S, H, d_head] K = X @ W_K → [S, H, d_head] V = X @ W_V → [S, H, d_head] 其中 d_head = D / H,三者完全相等。注意力计算为: Attention(Q, K, V) = softmax(Q @ K^T / √d_head) @ V → [S, H, d_head] 输出再经 W_O 映射回 D 维。这种 Q/K/V 共享同一 head dim 的设计深入人心,以至于很多人默认这是注意力机制的"必须要求"。 ...

June 1, 2026 · 5 min · 909 words