<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Attention on Richelieu's Blog</title><link>https://beaiera.top/tags/attention/</link><description>Recent content in Attention on Richelieu's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 05 Jun 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://beaiera.top/tags/attention/index.xml" rel="self" type="application/rss+xml"/><item><title>vLLM 中的 Attention Sink 与 Sliding Window Attention 深度解析</title><link>https://beaiera.top/posts/vllm-deepseek-v4-attention-sink-swa/</link><pubDate>Fri, 05 Jun 2026 12:00:00 +0800</pubDate><guid>https://beaiera.top/posts/vllm-deepseek-v4-attention-sink-swa/</guid><description>&lt;h2 id="概述"&gt;概述&lt;/h2&gt;
&lt;p&gt;本文围绕 vLLM 推理引擎中的两个关键注意力机制展开深入分析：&lt;strong&gt;Attention Sink&lt;/strong&gt;（注意力沉没）和 &lt;strong&gt;Sliding Window Attention&lt;/strong&gt;（滑动窗口注意力，SWA）。内容涵盖它们的设计原理、vLLM 中的代码实现、KV cache 管理流程，以及 DeepSeek V4 模型如何运用这些技术。&lt;/p&gt;
&lt;p&gt;所有分析基于 vLLM 代码库中 DeepSeek V4 相关的实现。&lt;/p&gt;</description></item><item><title>vLLM Cascade Attention：用法、场景与原理解析</title><link>https://beaiera.top/posts/vllm-cascade-attention/</link><pubDate>Mon, 01 Jun 2026 10:50:00 +0800</pubDate><guid>https://beaiera.top/posts/vllm-cascade-attention/</guid><description>&lt;h2 id="概述"&gt;概述&lt;/h2&gt;
&lt;p&gt;Cascade Attention（级联注意力）是 vLLM 推理引擎中针对&lt;strong&gt;多请求共享长前缀&lt;/strong&gt;场景的一种注意力优化技术。它将标准 attention 拆解为 prefix（前缀）和 suffix（后缀）两个阶段，显著降低 KV cache 的全局内存读取量，在共享 system prompt 的批量推理场景中可实现最高数十倍的 attention 加速。&lt;/p&gt;
&lt;p&gt;本文将深入剖析 cascade attention 的设计思想、使用方式、适用场景、实现原理，并与 FlashAttention、FlashDecoding 等其他优化技术进行对比。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一cascade-attention-的核心思想"&gt;一、Cascade Attention 的核心思想&lt;/h2&gt;
&lt;h3 id="标准-attention-的冗余"&gt;标准 Attention 的冗余&lt;/h3&gt;
&lt;p&gt;在大语言模型的批量推理中，多个请求往往共享一个较长的 system prompt。例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chatbot 场景&lt;/strong&gt;：所有请求共享 &amp;ldquo;You are a helpful assistant&amp;hellip;&amp;rdquo; 等 system prompt&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document QA&lt;/strong&gt;：多用户对同一篇文档提问，文档内容为公共前缀&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-Consistency&lt;/strong&gt;：对同一 prompt 采样多条推理路径&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;标准 attention 的处理方式是每个 request 独立计算其完整的注意力——包括共享的 system prompt。这意味着&lt;strong&gt;同一份前缀 KV cache 被重复加载多次&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="cascade-的拆解思路"&gt;Cascade 的拆解思路&lt;/h3&gt;
&lt;p&gt;Cascade attention 将一次 attention 计算拆成三步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Prefix 阶段&lt;/strong&gt;：将所有请求的 query 拼成一个&amp;quot;大序列&amp;quot;，对共享前缀做一次非因果（bidirectional）attention&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suffix 阶段&lt;/strong&gt;：每个请求各自对其独有的后缀做因果（causal）attention&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Merge&lt;/strong&gt;：通过 LSE（log-sum-exp）rescaling 将两阶段结果加权合并&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;数学上等价于标准 attention，但计算量和显存带宽需求大幅降低。&lt;/p&gt;</description></item><item><title>DeepSeek Attention 中为什么除以 √d_k — 从代码到数学</title><link>https://beaiera.top/posts/deepseek-attention-div64/</link><pubDate>Mon, 01 Jun 2026 10:30:00 +0800</pubDate><guid>https://beaiera.top/posts/deepseek-attention-div64/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;在 Transformer 的 Scaled Dot-Product Attention 中，有一个看似简单却至关重要的操作：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Q&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;K&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_k&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个 &lt;code&gt;÷√d_k&lt;/code&gt; 几乎出现在每一个 Attention 实现中。DeepSeek 的 MLA（Multi-head Latent Attention）也不例外。本文从 DeepSeek V4 的 vLLM 实现代码出发，深入探讨这个缩放因子的数学动机、工程实现，以及 DeepSeek 特有的优化变体。&lt;/p&gt;
&lt;h2 id="标准-attention-中的缩放因子"&gt;标准 Attention 中的缩放因子&lt;/h2&gt;
&lt;h3 id="softmax-的饱和问题"&gt;Softmax 的&amp;quot;饱和&amp;quot;问题&lt;/h3&gt;
&lt;p&gt;原始 Attention 计算公式为：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Attention(Q, K, V) = softmax(QK^T / √d_k) V
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;设 Q、K 的每个元素是独立同分布、均值为 0、方差为 1 的随机变量。对于向量 &lt;code&gt;q&lt;/code&gt; 和 &lt;code&gt;k&lt;/code&gt;（维度为 &lt;code&gt;d_k&lt;/code&gt;），其点积的均值和方差为：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;E[q·k] = Σ E[q_i·k_i] = 0
Var(q·k) = Σ Var(q_i·k_i) = d_k
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;即点积的方差正比于 &lt;code&gt;d_k&lt;/code&gt;。当 &lt;code&gt;d_k&lt;/code&gt; 较大时（如 128、512），点积的绝对值会很大，导致 softmax 进入梯度极小的饱和区：&lt;/p&gt;
&lt;p&gt;当某个 &lt;code&gt;x_i&lt;/code&gt; 远大于其他值时，&lt;code&gt;e^{x_i}&lt;/code&gt; 会主导分母，softmax 输出接近 one-hot，梯度趋近于 0，训练难以收敛。&lt;/p&gt;</description></item><item><title>DeepSeek MLA 中 QKV Head Dimension 的处理差异</title><link>https://beaiera.top/posts/deepseek-mla-head-dim/</link><pubDate>Mon, 01 Jun 2026 10:20:00 +0800</pubDate><guid>https://beaiera.top/posts/deepseek-mla-head-dim/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;Multi-head Latent Attention（MLA）是 DeepSeek-V2/V3 系列模型中最核心的架构创新之一。它在标准 Multi-Head Attention（MHA）的基础上引入了低秩压缩，大幅降低了 KV cache 的显存占用，同时保持了与 MHA 相当的模型质量。&lt;/p&gt;
&lt;p&gt;本文从 &lt;strong&gt;QKV head dimension 处理差异&lt;/strong&gt; 这一视角切入，深入分析 MLA 的设计原理、vLLM 中的具体实现，以及这种设计带来的性能收益。&lt;/p&gt;
&lt;h2 id="1-标准-mha-回顾"&gt;1. 标准 MHA 回顾&lt;/h2&gt;
&lt;p&gt;在标准 MHA 中，给定输入序列 &lt;code&gt;X ∈ ℝ^{S×D}&lt;/code&gt;，Q、K、V 通过三个独立的线性变换得到：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Q = X @ W_Q → [S, H, d_head]
K = X @ W_K → [S, H, d_head]
V = X @ W_V → [S, H, d_head]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其中 &lt;code&gt;d_head = D / H&lt;/code&gt;，三者&lt;strong&gt;完全相等&lt;/strong&gt;。注意力计算为：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Attention(Q, K, V) = softmax(Q @ K^T / √d_head) @ V → [S, H, d_head]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输出再经 &lt;code&gt;W_O&lt;/code&gt; 映射回 &lt;code&gt;D&lt;/code&gt; 维。这种 Q/K/V 共享同一 head dim 的设计深入人心，以至于很多人默认这是注意力机制的&amp;quot;必须要求&amp;quot;。&lt;/p&gt;</description></item></channel></rss>