2025-07-25 22:07 浙江
Datawhale干货
作者:Sebastian Raschka
距离最初的 GPT 架构问世,已经过去了七年。乍看之下,回溯到 GPT-2(2019 年),再展望 DeepSeek-V3 和 Llama 4(2024-2025 年),人们或许会惊讶于这些模型在结构上竟依然如此相似。编译:PaperAgent
当然,位置嵌入已经从绝对位置编码演变为旋转位置编码(RoPE),多头注意力机制已基本被分组查询注意力机制所取代,更高效的 SwiGLU 激活函数也取代了 GELU 等传统激活函数。但在这些细微的改进背后,我们是真正看到了突破性的变化,还是仅仅在对相同的架构基础进行打磨?
架构示意图:DeepSeek V3/R1、OLMo 2、Gemma 3、Mistral Small 3.1、Llama 4、Qwen3、SmolLM3和Kimi 2
一、DeepSeek V3/R1
DeepSeek V3 中引入的两种关键架构技术,这些技术提高了其计算效率,并使其有别于许多其他 LLM:多头潜在注意力(MLA)、混合专家(MoE):1.1 多头潜在注意力(MLA)
MLA旨在解决传统多头注意力(MHA)在大规模模型中内存占用过高的问题。与分组查询注意力(GQA)相比,MLA通过压缩键和值张量来进一步减少内存使用。MHA 与 GQA 的比较。此处,组大小为 2,其中两个查询共享一个键值对。在MLA中,键和值张量在存储到KV缓存之前会被压缩到一个低维空间。在推理时,这些压缩的张量会被重新投影回原始大小。这种设计虽然增加了额外的矩阵乘法操作,但显著降低了内存占用。MLA(用于 DeepSeek V3 和 R1)与常规 MHA 的比较。
二、OLMo 2
2.1 归一化层放置OLMo 2采用后归一化(Post-Norm)策略,与大多数LLM采用的前归一化(Pre-Norm)不同。这种设计旨在提高训练稳定性。在OLMo 2中,归一化层被放置在注意力模块和前馈模块之后,而不是之前。这种设计与原始Transformer架构中的Post-LN类似,但使用了RMSNorm而非LayerNorm。Post-Norm、Pre-Norm和OLMo 2的Post-Norm变体的对比图。OLMo 2 和 Llama 3;可以看出,除了 OLMo 2 仍然使用传统的 MHA 而非 GQA 之外,它们的架构在其他方面相对相似。Llama 3 和 OLMo 2 的架构比较。class GroupedQueryAttention(nn.Module):
def __init__(
self, d_in, num_heads, num_kv_groups,
head_dim=None, qk_norm=False, dtype=None
):
# ...
if qk_norm:
self.q_norm = RMSNorm(head_dim, eps=1e-6)
self.k_norm = RMSNorm(head_dim, eps=1e-6)
else:
self.q_norm = self.k_norm = None
def forward(self, x, mask, cos, sin):
b, num_tokens, _ = x.shape
# Apply projections
queries = self.W_query(x)
keys = self.W_key(x)
values = self.W_value(x)
# ...
# Optional normalization
if self.q_norm:
queries = self.q_norm(queries)
if self.k_norm:
keys = self.k_norm(keys)
# Apply RoPE
queries = apply_rope(queries, cos, sin)
keys = apply_rope(keys, cos, sin)
# Expand K and V to match number of heads
keys = keys.repeat_interleave(self.group_size, dim=1)
values = values.repeat_interleave(self.group_size, dim=1)
# Attention
attn_scores = queries @ keys.transpose(2, 3)
# ...
三、Gemma 3
四、Mistral Small 3.1
五、Llama 4
六、Qwen3
6.1 密集模型Qwen3 0.6B和Llama 3 1B的架构对比图七、SmolLM3