背景
在之前的文章 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 | — |
三大核心创新:
- MLA-256 + Muon Split:优化 MLA 的解码效率,使 Muon 优化器能稳定训练 MLA
- DSA (DeepSeek Sparse Attention):以近乎无损的方式将 \(O(L^2)\) attention 降低到 \(O(Lk)\)
- 异步 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 维。为减少解码计算量:
这保持了训练计算量和参数量不变,但降低了解码计算(因为 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 的关键参数
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 采用五阶段流水线:
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)
核心损失函数:
其中 training-inference mismatch ratio:
pop 算子(用于过滤 train-infer 不一致的 token):
超参数:\(\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):
Importance sampling ratio:
Calibration function:
优势:无需维护历史 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:
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 能力。