pydata: Huiming's learning notes

Keep Looking, Don't Settle

GLM-5: From Vibe Coding to Agentic Engineering

背景

在之前的文章 DeepSeek-V3.2 Lightning Indexer 中,我们详细介绍了 DeepSeek Sparse Attention (DSA) 的 Lightning Indexer 如何通过 top-k 选择实现 token 级别的稀疏注意力。GLM-5 作为智谱的下一代基础模型,同样采用了 DSA 来降低长上下文场景的计算和推理成本,同时在 MLA 架构和 RL 训练流程上做了重要创新。

本文基于 GLM-5 技术报告Z.ai 博客,总结 GLM-5 的核心架构设计和训练方法。


1. 模型概览

GLM-5 的核心定位是将 vibe coding 升级为 agentic engineering——不仅仅是写代码,而是能完成端到端的软件工程任务。

参数 GLM-5 GLM-4.5 (对比)
总参数量 744B 355B
激活参数量 40B 32B
专家数量 256
Transformer 层数 80
注意力机制 MLA-256 + DSA MLA
优化器 Muon (with Muon Split) Muon
预训练 tokens 28.5T
上下文长度 200K

三大核心创新:

  1. MLA-256 + Muon Split:优化 MLA 的解码效率,使 Muon 优化器能稳定训练 MLA
  2. DSA (DeepSeek Sparse Attention):以近乎无损的方式将 \(O(L^2)\) attention 降低到 \(O(Lk)\)
  3. 异步 RL 基础设施 + Agent RL 算法:解耦生成与训练,支持长 horizon 交互学习

2. MLA-256 与 Muon Split

2.1 问题:MLA + Muon 的不兼容性

GLM-4.5 使用 MLA (Multi-Latent Attention) 减少推理时的 KV Cache(latent KV-cache 维度为 576)。但当使用 Muon 优化器时,标准 MLA 无法匹配 GQA-8(8 query groups, 2048维 KV-cache)的性能。

原因在于 Muon 对 MLA 的上投影矩阵 \(\mathbf{W}^{UQ}, \mathbf{W}^{UK}, \mathbf{W}^{UV}\) 做整体矩阵正交化(Newton-Schulz iterations),但不同 attention head 需要以不同的 scale 更新。

2.2 Muon Split

核心思想:将上投影矩阵按 head 切分为独立的小矩阵,对每个 head 独立地做正交化。

原始做法:对 \(\mathbf{W}^{UQ} \in \mathbb{R}^{d_c \times (d_h \cdot n_h)}\) 做整体正交化。

Muon Split:将 \(\mathbf{W}^{UQ}\) 切分为 \(n_h\)\(\mathbf{W}^{UQ}_i \in \mathbb{R}^{d_c \times d_h}\),对每个 \(\mathbf{W}^{UQ}_i\) 独立做正交化。

效果:

  • 不同 attention head 的权重可以以不同 scale 更新
  • 训练过程中 attention logits 的 scale 保持稳定,无需额外的 clipping 策略

2.3 MLA-256:减少解码计算

标准 MLA 的解码瓶颈:MLA 做 576 维的点积,而 GQA 只做 128 维。为减少解码计算量:

$$\text{MLA-256}: \quad d_h = 192 \to 256, \quad n_h \text{ 减少 } \frac{1}{3}$$

这保持了训练计算量和参数量不变,但降低了解码计算(因为 head 数量减少)。

2.4 消融实验

配置 MMLU BBH GSM8K HumanEval
GQA-8 (baseline) 61.2 53.3 47.6 38.5
MLA 61.5 48.9 46.2 33.5
MLA + Muon Split 62.5 51.8 45.0 36.7
MLA-256 + Muon Split 62.0 51.3 47.5 36.6

MLA-256 + Muon Split 性能匹配标准 MLA + Muon Split,同时降低了解码计算。


3. DeepSeek Sparse Attention (DSA)

3.1 设计思路

DSA 将传统的 dense \(O(L^2)\) attention 替换为动态、细粒度的 token 选择机制

  • 引入一个轻量级的 Lightning Indexer,为每个 query token 打分,选出 top-k 个最相关的 KV entries
  • 主 attention 只在选出的 \(k\) 个 entries 上计算,复杂度从 \(O(L^2)\) 降低到 \(O(Lk)\)

与 SWA(Sliding Window Attention)等固定模式不同,DSA 根据内容动态决定哪些 token 重要,因此不会丢失长程依赖。

3.2 GLM-5 中 DSA 的关键参数

$$ \begin{aligned} & k = 2048 \quad \text{(top-k 选择数)} \\ & \text{Indexer: 基于 DeepSeek-V3.2 的 Lightning Indexer 架构} \end{aligned} $$

3.3 DSA 训练流程

DSA 不从头训练,而是从 MLA 基座模型通过 continue pre-training 引入:

Stage 1: Warmup(仅训练 Indexer)

  • 1000 步
  • 每步 14 个序列,每序列 202,752 tokens
  • 最大学习率 5e-3
  • 冻结所有基座模型权重,仅训练 indexer 参数

Stage 2: Sparse Adaptation(联合训练)

  • 使用 mid-training 的超参数
  • 共 20B tokens(远少于 DeepSeek-V3.2 的 943.7B tokens)
  • Indexer 和基座模型联合优化

3.4 DSA vs 其他 Efficient Attention(消融实验,GLM-9B, RULER@128K)

方法 RULER@128K 相对 baseline 下降
Full Attention (baseline) 75.28
SWA Interleave 44.93 −30.35
SWA Pattern (search-based) 69.59 −5.69
GDN 64.00 −11.28
SimpleGDN 67.03 −8.25
DSA ~75 ~0(近乎无损)

DSA 是唯一几乎无损的高效 attention 方案——因为 Lightning Indexer 实现了 token 级别的精确选择,不会像 SWA 那样系统性丢失远距离 token。

3.5 GLM-4.7-Flash + DSA 实验

配置 64K 128K
Baseline (MLA) 85.34 79.21
DSA warmup only 84.05 71.35
DSA full (warmup + adaptation) 87.06 78.86

Full DSA 在 16K/32K/64K 上甚至超过 baseline(分别 +0.86, +0.49, +1.72),仅在 128K 有 0.35 分的微小下降。

3.6 DSA 在 RL 中的特殊处理

在 RL 训练阶段使用 DSA 有两个关键发现:

1. 必须使用确定性 top-k

非确定性的 CUDA top-k 实现会导致"仅几步后性能急剧下降,伴随 entropy 崩塌"。GLM-5 全程使用 torch.topk(确定性但稍慢)。

类比:这类似于 MoE 模型中用 routing replay 保持 top-k expert 选择的确定性。但由于 DSA 的 \(k=2048\) 远大于 MoE 的 \(k\),存储索引不现实,必须在算子层面保证确定性。

2. 冻结 Indexer 参数

RL 阶段默认冻结 indexer 参数——避免 sparse attention routing 和 policy 的联合优化带来不稳定。


4. Multi-Token Prediction (MTP) 参数共享

GLM-5 训练时使用 3 层 MTP(Multi-Token Prediction),但采用参数共享——3 层共享权重,推理时的内存开销与 DeepSeek-V3 相同。

效果:GLM-5 的 speculative decoding 接受长度为 2.76(4 speculative steps),优于 DeepSeek-V3.2 的 2.55。


5. 预训练

5.1 数据构成(28.5T tokens)

  • Web 数据:基于 DCLM classifier + World Knowledge classifier 过滤
  • 代码数据:相比 GLM-4.5 去重后增加 28% unique tokens
  • 数学/科学:chunk-and-aggregate 打分算法,严格排除合成/AI 生成数据
  • 长文档:重点优化科学论文、技术报告

5.2 Mid-Training(上下文扩展)

三阶段渐进式扩展:

阶段 上下文长度 训练 tokens
1 32K 1T
2 128K 500B
3 200K 50B

额外引入 ~10M issue-PR pairs (~160B unique tokens) 的软件工程数据。


6. Post-Training Pipeline

GLM-5 的 post-training 采用五阶段流水线:

$$\text{SFT} \to \text{Reasoning RL} \to \text{Agentic RL} \to \text{General RL} \to \text{On-Policy Cross-Stage Distillation}$$

6.1 SFT

  • 最大上下文 202,752 tokens
  • 三种 thinking 模式:Interleaved Thinking, Preserved Thinking, Turn-level Thinking
  • 覆盖:General Chat, Reasoning, Coding & Agent

6.2 Reasoning RL(GRPO + IcePop)

核心损失函数:

$$\mathcal{L}(\theta) = -\mathbb{E}\left[\frac{1}{G}\sum_{i=1}^G \frac{1}{|y_i|}\sum_{t=1}^{|y_i|} \text{pop}(\rho_{i,t}, \frac{1}{\beta}, \beta) \cdot \min\left(r_{i,t}\hat{A}_{i,t}, \text{clip}(r_{i,t}, 1-\epsilon_l, 1+\epsilon_h)\hat{A}_{i,t}\right)\right]$$

其中 training-inference mismatch ratio:

$$\rho_{i,t} = \frac{\pi^{\text{train}}_{\theta_{\text{old}}}(y_{i,t}|x, y_{i,<t})}{\pi^{\text{infer}}_{\theta_{\text{old}}}(y_{i,t}|x, y_{i,<t})}$$

pop 算子(用于过滤 train-infer 不一致的 token):

$$\text{pop}(\rho, \frac{1}{\beta}, \beta) = \begin{cases} \rho, & \frac{1}{\beta} \leq \rho \leq \beta \\ 0, & \text{otherwise} \end{cases}$$

超参数\(\beta=2\), \(\epsilon_l=0.2\), \(\epsilon_h=0.28\), group size=32, batch size=32, fully on-policy。

混合域:Mathematics, Science, Code (competitive programming + scientific coding), Tool-Integrated Reasoning (TIR)。

6.3 Agentic RL

Token-in-Token-out (TITO)

保留推理引擎的精确 tokenization(而非对文本重新 tokenize),消除 token 边界、空白/归一化处理等微妙不匹配。

Direct Double-Sided Importance Sampling

优化目标(token 级 clipping):

$$L(\theta) = \mathbb{E}_t\left[f(r_t(\theta), \epsilon_l, \epsilon_h)\hat{A}_t \log\pi_\theta(a_t|s_t)\right]$$

Importance sampling ratio:

$$r_t(\theta) = \exp(\log\pi_\theta(a_t|s_t) - \log\pi_{\text{rollout}}(a_t|s_t))$$

Calibration function:

$$f(x; \epsilon_l, \epsilon_h) = \begin{cases} x, & 1-\epsilon_l < x < 1+\epsilon_h \\ 0, & \text{otherwise} \end{cases}$$

优势:无需维护历史 policy checkpoints \(\pi_{\theta_{\text{old}}}\),直接用 rollout 时的 log probability。

Off-Policy Sample Dropping

  • 记录每个 trajectory 的 policy 权重版本 \((w_0, ..., w_k)\)
  • \(w' - w_0 > \tau\)(过时阈值),丢弃该 trajectory
  • group 内 >50% 有效则保留并 padding,否则丢弃整个 group

DP-Aware Routing

  • 一致性哈希将 rollout ID 映射到固定的 DP rank
  • 最大化 multi-turn 交互中的 KV-cache 复用
  • 轻量级动态负载均衡

6.4 On-Policy Cross-Stage Distillation

最终阶段用于恢复早期阶段的能力。将 advantage 替换为 teacher-student gap:

$$\hat{A}_{i,t} = \text{sg}\left[\log\frac{\pi^{\text{infer}}_{\theta_{\text{teacher}}}(y_{i,t}|x, y_{i,<t})}{\pi^{\text{train}}_\theta(y_{i,t}|x, y_{i,<t})}\right]$$

Group size = 1(advantage 来自 teacher gap,不需要组内方差),batch size = 1024。


7. 异步 RL 基础设施("Slime" 框架)

7.1 核心设计

  • 训练引擎与推理引擎部署在不同 GPU 设备
  • 推理引擎持续生成 trajectories
  • 当 trajectory 数量达到阈值时触发训练
  • 每 K 个梯度更新后同步权重
  • 每次权重同步后重置 optimizer state

7.2 Multi-Task Rollout Orchestrator

  • 每个任务实现独立的 rollout/reward 微服务
  • 支持 >1000 并发 rollouts
  • 将 trajectories 标准化为统一的 message-list 格式
  • 动态调整任务采样比例

7.3 Tail-Latency 优化

  • Multi-node inference (EP64, DP64 over 8 nodes)
  • FP8 rollouts 降低 per-token latency
  • MTP 加速小 batch decoding
  • Prefill-Decode (PD) disaggregation 防止 multi-turn RL 中的干扰

7.4 容错

  • 心跳驱动:rollout server 定期发送心跳
  • 不健康节点主动终止并注销
  • 重试请求自动路由到健康节点

8. 环境规模

8.1 SWE Environments

  • 超过 10K 可验证环境,覆盖上千个代码仓库
  • 9 种编程语言:Python, Java, Go, C, CPP, JavaScript, TypeScript, PHP, Ruby
  • 基于 RepoLaunch 框架
  • 提取 Fail-to-Pass (F2P) 和 Pass-to-Pass (P2P) 测试用例

8.2 Terminal Environments

  • Docker 构建准确率 >90%
  • 两种合成 pipeline:from seed data 和 from web-corpus

8.3 Search Tasks (BrowseComp)

  • Web Knowledge Graph 含 >2M 页面
  • 三阶段过滤 pipeline 生成高难度问题
  • Context Management: Keep-recent-k (\(k=5\)) + Discard-all 混合策略
  • 阈值 \(T=32k\) 触发 context reset
  • 效果:55.3% → 62.0% (keep-recent) → 75.9% (full hierarchical strategy)

9. 总结

GLM-5 的核心贡献:

维度 创新点 效果
架构 MLA-256 + Muon Split 匹配 GQA 性能,降低解码计算
注意力 DSA (k=2048) 近乎无损的 sparse attention,200K context
推理加速 MTP 参数共享 (3层) 接受长度 2.76 (vs DeepSeek-V3.2 的 2.55)
RL 基础设施 Slime 异步框架 解耦生成与训练,>1000 并发 rollout
RL 算法 GRPO+IcePop, TITO, Direct IS fully on-policy, 无需 historical checkpoint
Agent 能力 10K+ SWE environments 端到端软件工程,9种编程语言

GLM-5 将 DSA 证实为可以应用于任意 MLA 模型的通用加速方案(仅需 20B tokens 的 continue pre-training),并通过大规模异步 RL 和丰富的 agent 环境,首次在开源模型中达到 frontier 级别的 agentic engineering 能力。