MoE 实践梳理:并行策略、随机性与 DeepSeek
MoE 三个问题:如何并行、为何随机、怎样稳定
1. MoE 的模型并行 vs 数据并行
MoE 训练通常把“专家”视为模型并行单元,再与数据并行组合。下图直观展示了权重如何在 data parallel、model parallel 与 expert parallel 之间拆分:
Model Parallel:同一批 token 被切到不同设备,各自负责部分 FFN/attention 计算;适合巨型专家参数。
Data Parallel:复制一份完整模型,分批处理不同样本;用来堆 throughput。
Expert Parallel:把专家实例平均分发到多卡,token 依据路由结果被 permute 到对应设备。
实战中常出现“三明治”拓扑:DP 包...
注意力头设计
长上下文推理时,显存里除了模型权重,还要留出不断增长的 KV cache。注意力设计的一个核心问题,就是怎样减少历史状态的存储和读取,同时保留足够的表达能力。
本文先从 MHA、MQA、GQA 的头共享关系讲起,再看滑窗、状态空间模型和 MLA。它们改变的对象并不相同:头之间可以共享 K/V,token 之间可以减少连接,历史信息也可以改用 latent 或递归状态保存。文末按具体型号整理了近期模型的公开配置,核对日期为 2026-09-21。
1 从 MHA 看 KV cache 的成本
标准多头注意力(MHA)为每个头配置独立的 Q、K、V 投影。单个头的计算为:
\[\operatorname{Attention}(Q,K,V)=\operatorname{softmax...
Softmax 数值稳定性的危机
大模型训练里,最常被忽略的炸弹往往埋在最熟悉的算子下。Softmax 同时包含指数与除法,一旦输入 logits 偏离正常尺度,就会把梯度链条整段炸成 NaN。本文把课堂随笔整理成一篇可查的博客,集中梳理 softmax 在注意力与输出层中的不稳定来源,以及工业界常用的工程缓解手段
1 Softmax 为什么会失稳
Softmax 把向量 $\mathbf{z}$ 转成概率分布:
\(p_i = \frac{e^{z_i}}{\sum_j e^{z_j}}\)
在自注意力中它直接作用在 $\frac{QK^\top}{\sqrt{d_k}}$ 上。问题在于,$QK^\top$ 的取值范围会随 hidden size、head dim、训练阶段而大幅波动,导致 softmax 出现...
Transformer 超参数的取舍
从 small model 到万亿 token 级的大模型,表现和效率往往被少量关键超参数左右:hidden size、前馈层扩张倍数、注意力头数与 head dim、词表大小、正则化策略以及深宽比例(aspect ratio)。随着参数预算与训练数据呈指数级增长,工程团队反而更依赖这些“旋钮”来稳定收益——一次错误的配置可能让数百万美元的训练算力付诸流水。本文把我在课程里的零散记录整理成一篇可查的博客,并加入实践中反复被问到的背景解释,方便之后设计或复现 Transformer。
阅读顺序上,可以先浏览第 1 节的速览表迅速建立数量级感知,再根据实际需求跳到单独的小节。如果你正打算把某篇论文的配置迁移到自己的项目里,建议直接对照第 7 节的顺序进行 sanity check。
1...
位置编码的演进与 RoPE 的几何直觉
Transformer 自身并不知道序列的顺序,位置编码就是语言模型补齐“谁在前谁在后”的手段。
这篇笔记把常见做法与 RoPE(Rotary Positional Embedding)的思路串起来,方便日后复习与引用。
1 为什么位置编码仍然关键
多头注意力的打分只依赖 $QK^\top$,如果不给 token 附加位置信息,模型无法区分 “we know” 与 “know we”。
因此任何大模型都必须解决:如何在保持可泛化性的同时,不破坏注意力的内积结构。
2 三种经典做法回顾
2.1 Sine embeddings(正弦位置编码)
\[PE_{(pos,2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right), ...
Gated Activation 与 ReGLU
1 标准前馈层回顾
Transformer 前馈层(Feed-Forward Layer, FFN)是注意力块外的主要非线性单元,通常由两层线性映射加一次激活构成
1.1 基础公式
\[FF(x) = \text{ReLU}(x W_1) W_2 = \max(0, xW_1) W_2\]
1.1.1 关键组件
$x$:来自自注意力或上一层输出的输入向量。
$W_1$:升维线性变换,产生中间隐空间。
$\max(0, \cdot)$:共享阈值的 ReLU 激活。
$W_2$:把激活后的特征投影回原始维度。
ReLU 固定使用零阈值,所有神经元以同一规则开关,难以针对不同 token 动态调节信息流。
2 门控机制的引入
为提升自适应能力,Gated ...
Norm 的两种计算方式, LayerNorm vs RMSNorm
1 LayerNorm(层归一化)
1.1 提出背景
LayerNorm 是 Transformer(Vaswani et al., 2017)原始论文中使用的标准归一化方法
1.2 数学定义
\(y = \frac{x - \mathbb{E}[x]}{\sqrt{\mathrm{Var}[x] + \epsilon}} \times \gamma + \beta\)
其中:
对输入 $x \in \mathbb{R}^{d_{model}}$ 的每个样本(token 向量)进行归一化;
减去均值 $\mathbb{E}[x]$;
除以标准差 $\sqrt{\mathrm{Var}[x]}$;
乘以可学习的缩放参数 $\gamma$,再加上偏置 $\beta...
Norm 的两种结构, Pre-Norm vs Post-Norm
1 Pre-Norm 与 Post-Norm 结构
所有现代的大语言模型(LMs)都采用 Pre-Norm 结构
左图为 Post-Norm 结构,即 LayerNorm 放在残差连接(addition)之后
也就是说,每个子层(Self-Attention 或 FFN)计算完,再执行 LayerNorm。
这种结构最早由 Vaswani et al., 2017《Attention is All You Need》 提出。
右图为 Pre-Norm 结构,即 先归一化,再执行子层计算,最后加残差。
这是后来为了解决深层网络训练时的 梯度消失 / 爆炸问题 而改进的版本
2 Pre-LayerNorm 的提出背景
“Pre-LayerNorm(预归一化)” 是 Tra...
共计 214 篇文章,27 页。