<?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>DeepSeek on Richelieu's Blog</title><link>https://beaiera.top/tags/deepseek/</link><description>Recent content in DeepSeek on Richelieu's Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 02 Jun 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://beaiera.top/tags/deepseek/index.xml" rel="self" type="application/rss+xml"/><item><title>DeepSeek V4 MegaMoE Kernel 深度解析</title><link>https://beaiera.top/posts/2026-06-02-deepseek-v4-megamoe/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0800</pubDate><guid>https://beaiera.top/posts/2026-06-02-deepseek-v4-megamoe/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;h3 id="经典-moe-的计算过程"&gt;经典 MoE 的计算过程&lt;/h3&gt;
&lt;p&gt;在深入 MegaMoE 之前，先梳理一下经典 MoE（Mixture of Experts）层的完整计算流程。以一个具体配置为例：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;T = 8 # 当前 batch 中的 token 数
H = 7168 # hidden size
I = 2048 # intermediate size（每个 expert 的 FFN 中间维度）
E = 256 # 总 expert 数量
K = 6 # 每个 token 激活的 expert 数（top-K）
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id="第一步路由routing"&gt;第一步：路由（Routing）&lt;/h4&gt;
&lt;p&gt;输入 &lt;code&gt;hidden_states&lt;/code&gt; 形状为 &lt;code&gt;[T, H]&lt;/code&gt;（即 &lt;code&gt;[8, 7168]&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;通过 Gate 线性层：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;gate = hidden_states @ W_gate^T # W_gate: [E, H]
→ gate: [T, E] = [8, 256] # 每个 token 对每个 expert 的得分
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;对每个 token 施加 scoring 函数（如 &lt;code&gt;softmax&lt;/code&gt; 或 &lt;code&gt;sqrt(softplus)&lt;/code&gt;），然后取 top-K：&lt;/p&gt;</description></item><item><title>DeepSeek V4 MoE 量化技术详解</title><link>https://beaiera.top/posts/2026-06-02-deepseek-v4-moe-quantization/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0800</pubDate><guid>https://beaiera.top/posts/2026-06-02-deepseek-v4-moe-quantization/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;p&gt;本文整理自一次围绕 vLLM 代码库中 DeepSeek V4 MoE 模块的技术讨论，内容涉及 MXFP4 与 NVFP4 的量化方案对比、Block Quantized GEMM 的设计原理、FP4 packed 存储格式、以及 DeepGEMM 库中 FP8×FP4 在 Blackwell 硬件上的具体实现。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一deepseek-v4-moe-核心优化概览"&gt;一、DeepSeek V4 MoE 核心优化概览&lt;/h2&gt;
&lt;p&gt;DeepSeek V4 的 MoE 模块在 vLLM 中的实现包含了大量优化：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepGEMM MegaMoE&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;融合 EP dispatch + L1 GEMM + SwiGLU + L2 GEMM + EP combine 为单 mega-kernel，NVLink 通信与计算重叠&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FP4 (MXFP4/NVFP4) 权重量化&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4-bit 浮点权重 + UE8M0 block scale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Expert Parallelism 多后端&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DeepEP、FlashInfer NVLink、MORI、NIXL 等多种 all-to-all 策略&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fused TopK Bias Routing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;sqrt(softplus) 得分函数、e_score_correction_bias、hash MoE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;EPLB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;每层跟踪 expert 负载，动态重新分配&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fused MLA Kernel&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Q-norm + RoPE + KV quant + cache insert 融合为单 CUDA 核&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MTP (Multi-Token Prediction)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;共享 MoE 架构的 speculative decoding&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="二mxfp4-与-nvfp4-的区别"&gt;二、MXFP4 与 NVFP4 的区别&lt;/h2&gt;
&lt;p&gt;DeepSeek V4 Flash 使用 FP4 权重，有两个可选方案：&lt;strong&gt;MXFP4&lt;/strong&gt; (OCP 开放标准) 和 &lt;strong&gt;NVFP4&lt;/strong&gt; (NVIDIA 私有格式)。切换由 HuggingFace config 中的 &lt;code&gt;moe_quant_algo&lt;/code&gt; 字段控制。&lt;/p&gt;</description></item><item><title>DeepSeek-v2 Routed Scaling Factor 应用时机详解</title><link>https://beaiera.top/posts/deepseek-routed-scaling/</link><pubDate>Mon, 01 Jun 2026 11:40:00 +0800</pubDate><guid>https://beaiera.top/posts/deepseek-routed-scaling/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;DeepSeek-V2/V3 系列模型采用了 MoE（Mixture of Experts）架构，其中 &lt;code&gt;routed_scaling_factor&lt;/code&gt; 是一个重要的超参数，用于缩放 routed expert 的输出。该系数来自模型 config，在 &lt;code&gt;DeepseekV2MoE.__init__&lt;/code&gt; 中初始化：&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="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;routed_scaling_factor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;routed_scaling_factor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;默认值通常为 &lt;code&gt;1.0&lt;/code&gt;，但 DeepSeek-V2 系列（如 deepseek-v2、deepseek-coder-v2）设置的典型值是 &lt;code&gt;2.5&lt;/code&gt; 或 &lt;code&gt;1.0&lt;/code&gt;，取决于具体子模型。&lt;/p&gt;
&lt;h2 id="控制开关"&gt;控制开关&lt;/h2&gt;
&lt;p&gt;在 vLLM 的 &lt;code&gt;deepseek_v2.py&lt;/code&gt; 中，关键代码如下：&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;apply_routed_scale_to_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_rocm_aiter_moe_enabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;routed_scaling_factor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;routed_scaling_factor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;apply_routed_scale_to_output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_rocm_aiter_moe_enabled&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;这个 bool 值决定了 &lt;code&gt;routed_scaling_factor&lt;/code&gt; 由谁处理——是 kernel 内部还是 runner 外部。&lt;/p&gt;</description></item><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 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><item><title>DeepSeek V3 MoE 模块计算与通信逻辑详解</title><link>https://beaiera.top/posts/deepseek-v3-moe/</link><pubDate>Mon, 01 Jun 2026 10:10:00 +0800</pubDate><guid>https://beaiera.top/posts/deepseek-v3-moe/</guid><description>&lt;h2 id="概述"&gt;概述&lt;/h2&gt;
&lt;p&gt;DeepSeek V3 的 MoE（Mixture of Experts）模块是其核心组成部分，采用 &lt;strong&gt;Shared + Routed Expert&lt;/strong&gt; 架构。本文基于 vLLM 代码库，深入分析其计算流程、通信模式、量化方案以及性能优化策略。&lt;/p&gt;</description></item></channel></rss>