OLMo 2 & Olmo 3

OLMo 2 & Olmo 3 Thinking

原文第 2、15 节。OLMo 系列是 Allen Institute for AI 发布的”全透明”开源模型——训练数据 / 训练代码 / 训练报告全公开。在 benchmark 上不算最顶尖,但是 LLM 复现的”模板”。

OLMo 2 核心:Post-Norm + QK-Norm

OLMo 2 整体沿用 GPT 骨架(仍是 MHA,不用 GQA / MLA),但有两点与主流不同的设计:

2.1 [[Post-Norm vs Pre-Norm|Post-Norm 风格]]

OLMo 2 的 RMSNorm 放在 attention / FFN 之后(Post-Norm),而不是主流的 Pre-Norm 位置。Norm 仍然在残差连接内部。

  • 原始 Transformer(2017):Post-LN(norm 在残差外)
  • GPT-2 之后大多数 LLM:Pre-Norm(norm 在 attention / FFN 前)
  • OLMo 2:Post-Norm(norm 在 attention / FFN 后,仍在残差内)

这种放置是 OLMo 2 团队在实验中发现的稳定训练的手段。

Figure 8: A comparison of Post-Norm, Pre-Norm, and OLMo 2’s flavor of Post-Norm.

2.2 [[QK-Norm]]

QK-Norm = 另一个 RMSNorm 层,放在 attention 模块内,对 q、k 应用 RoPE 之前做归一化。

  • 起源:2023 年的 Scaling Vision Transformers 论文
  • 效果:与 Post-Norm 一起,显著稳定训练
  • 后续广泛采用:Gemma 2/3、MiniMax M2 等
class GroupedQueryAttention(nn.Module):
    def __init__(self, d_in, num_heads, num_kv_groups, head_dim=None, qk_norm=False, ...):
        if qk_norm:
            self.q_norm = RMSNorm(head_dim, eps=1e-6)
            self.k_norm = RMSNorm(head_dim, eps=1e-6)
        ...

    def forward(self, x, mask, cos, sin):
        queries = self.W_query(x)
        keys = self.W_key(x)
        values = self.W_value(x)
        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)
        ...

2.3 小结

Figure 9: A plot showing the training stability for Pre-Norm vs OLMo 2’s flavor of Post-Norm.

Figure 10: An architecture comparison between Llama 3 and OLMo 2.

注意:Figure 9 同时混入了 QK-Norm 的影响,所以 Post-Norm 单独贡献多少并不容易看出。

3 个月后发布的 32B OLMo 2 改用了 GQA。

Olmo 3 Thinking(2025-11-20 发布)

Allen AI 在 2025 年 11 月发布了 Olmo 3 7B 和 32B(注意官方拼写改了,从 OLMo → Olmo),并加了 reasoning 变体。

关键设计

  • 继承 Post-Norm(沿用 OLMo 2 的经验,验证稳定性)
  • 7B 仍用 MHA(与 OLMo 2 一致),但加了滑动窗口注意力来缩 KV cache(类似 Gemma 3)
  • 32B 改用 GQA(与 Llama 3 / Qwen3 一致)
  • YaRN 用于 context extension 到 64k(Qwen3 是可选 32k → 131k)
  • 32B 架构缩放与 Qwen3 32B 比例相近(intermediate 从 5x 提到 5.4x)

Figure 44: Olmo 3 7B and Qwen3 8B side by side.

Figure 45: Olmo 3 32B and Qwen3 32B side by side.

训练与代码

Olmo 3 提供了 from-scratch 实现 notebook,是学习 LLM 架构的好资源。

相关笔记

  • [[QK-Norm]]
  • [[Post-Norm vs Pre-Norm]]
  • [[滑动窗口注意力(Sliding Window Attention)]]
  • [[Qwen3 系列]]

来源

原文 section 2 & 15 链接:https://magazine.sebastianraschka.com/p/the-big-llm-architecture-comparison