<?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>MLA on Richelieu's Blog</title><link>https://beaiera.top/tags/mla/</link><description>Recent content in MLA on Richelieu's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 01 Jun 2026 11:20:00 +0800</lastBuildDate><atom:link href="https://beaiera.top/tags/mla/index.xml" rel="self" type="application/rss+xml"/><item><title>DeepSeek MLA 在 DCP 分布式环境中的 Prefill 阶段解析</title><link>https://beaiera.top/posts/mla-dcp-prefill/</link><pubDate>Mon, 01 Jun 2026 11:20:00 +0800</pubDate><guid>https://beaiera.top/posts/mla-dcp-prefill/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;DeepSeek 提出的 MLA（Multi-head Latent Attention）通过将 KV 压缩到低维 latent 空间，大幅降低了推理时的 KV cache 开销。但在 DCP（Decode Context Parallel，即上下文并行）分布式环境下，MLA 的 prefill 阶段设计与 decode 阶段有显著差异。本文从实现角度展开分析。&lt;/p&gt;
&lt;h2 id="什么是-dcp"&gt;什么是 DCP&lt;/h2&gt;
&lt;p&gt;DCP（Decode Context Parallel）是一种将 KV cache 按序列维度切分到多个 GPU 的分布式策略。每个 rank 只持有完整 KV cache 的 &lt;code&gt;1/dcp_world_size&lt;/code&gt;，从而减少单卡显存占用，支持更长的上下文。&lt;/p&gt;
&lt;p&gt;与更常见的 DP（Data Parallel，扛并发）和 EP（Expert Parallel，分摊 MoE 参数显存）不同，DCP 解决的是&lt;strong&gt;单请求长上下文&lt;/strong&gt;场景下 KV cache 放不下的问题。&lt;/p&gt;
&lt;h2 id="mla-prefill-vs-decode两条不同的路径"&gt;MLA Prefill vs Decode：两条不同的路径&lt;/h2&gt;
&lt;p&gt;MLA 在 prefill 和 decode 阶段走了截然不同的计算路径：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Prefill (&lt;code&gt;forward_mha&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;Decode (&lt;code&gt;forward_mqa&lt;/code&gt;)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;KV 形态&lt;/td&gt;
&lt;td&gt;完整 MHA（N 头）&lt;/td&gt;
&lt;td&gt;Latent（1 头）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Head dim&lt;/td&gt;
&lt;td&gt;&lt;code&gt;P+R&lt;/code&gt;（~192）&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Lkv+R&lt;/code&gt;（~576）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;计算特性&lt;/td&gt;
&lt;td&gt;Sq ≈ Skv，计算密集&lt;/td&gt;
&lt;td&gt;Sq ≪ Skv，避免显存搬运&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Prefill&lt;/strong&gt; 走 MHA 路径：&lt;code&gt;kv_c&lt;/code&gt; 通过 &lt;code&gt;W_UK&lt;/code&gt;/&lt;code&gt;W_UV&lt;/code&gt; 解压成完整多头 K/V（N 个头），然后做标准的多头注意力。因为 prefill 时新 token 数和 context 长度在同一量级，展开 KV 做计算密集的 attention 是划算的。&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>