Datawhale干货
技术解读:智谱 GLM-5

论文链接:https://arxiv.org/abs/2602.15763
Vibe Coding 是什么?是你跟 AI 说「帮我写个贪吃蛇」,它给你写出来。
Agentic Engineering 是什么?是你说「这个系统有个 bug」, AI 自己去找问题、改代码、跑测试,全程不用你管。
从“辅助写代码”到“独立完成工程任务”,这个转变对模型训练提出了完全不同的要求。我们对这份报告进行了解读。
一、先看数据
GLM-5 发布后,硅谷顶级风投机构 a16z 发布了一组数据:开源大模型和顶级闭源模型之间的能力差距,正在以肉眼可见的速度快速收窄。

正面对标的,就是 GLM-5 和 Claude Opus 4.6。
具体来看,GLM-5 在几个关键评测上的表现:

SWE-bench Verified 77.8%,开源模型最高。这个测试要求模型修复真实 GitHub 仓库里的 bug。几万行代码的项目,找问题、理解上下文、写方案、跑通测试,全流程完成。
BrowseComp 75.9%,这是所有模型里最高的。这个任务要求模型自己决定搜什么、点哪些链接、从多个网页提取信息、综合得出答案。

Artificial Analysis Intelligence Index 拿了 50 分,开源模型第一次达到这个水平。
这些数据指向一个方向:GLM-5 是为 Agent 场景优化的。从 a16z 的数据背书,到 LMArena 的真实用户投票,GLM-5 在 coding 和 agentic 能力上,已经站到了全球第一梯队。
值得一提的是,GLM-5 发布前做过匿名盲测,代号 Pony Alpha,被很多海外大 V 认为是 Claude 或 Grok。而且GLM-5 从发布之初就原生适配了华为昇腾、摩尔线程等七大国产芯片平台,完成了从内核到框架的深度优化。

数据看完了,那么问题来了:要训练出这样真正能干活的 Agent,首先得解决什么?
GLM-5 没有特别关注更大的模型,而是更聪明的扩展方式:把 DSA 稀疏注意力和异步强化学习结合起来,用更聪明的方式解决长程 Agent 任务。

在多个长程任务上的结果。左:Vending-Bench 2;右:CC-Bench-V2
一、时间维度:提升Agentic RL的训练效率
Agentic RL 为什么难训练
传统强化学习训练数学推理或代码生成,一个样本从生成到获得反馈只要几秒。模型输出答案,判题系统给分,结束。整个过程在 GPU 集群内部完成。
Agent 任务不一样。模型要修一个 bug,需要先浏览代码库找相关文件,理解代码逻辑,写修改方案,运行测试,看测试结果,如果失败还要分析错误继续改。
这就产生了严重的资源浪费:训练用的 GPU 在等。等 Agent 执行完任务,等数据回来,才能继续训练。
传统的同步强化学习框架在这种场景下效率很低。你可以加更多 GPU,但 GPU 还是在等,因为瓶颈不在计算,在外部环境的响应时间。
这是暴力扩展解决不了的问题。
Slime:把生成和训练拆开
GLM-5 团队的解法是让生成和训练完全独立运行。
Slime 框架分两部分:
Rollout 集群专门负责执行 Agent 任务。这些服务器各自独立,每台跑一个或多个任务。任务完成后把完整轨迹(模型的每步操作、环境的每次反馈)打包发送出去。
训练集群专门负责更新模型参数。收到轨迹数据就立刻训练,不等新任务执行完成。
核心是:两边不互相等待。Rollout 集群持续产生数据,训练集群持续消化数据。
但这种异步设计带来两个新问题。
第一个是 token 对齐。
Rollout 集群用的模型版本和训练集群用的可能不一样。比如 Rollout 用 1.3 版本生成数据,等数据到训练集群,模型已经更新到 1.5 了。
如果直接把 1.3 版本的 token 序列拿给 1.5 版本训练,可能出问题。因为两个版本的分词器可能不完全一致,新版本可能加了特殊 token。
这时,Slime 加了个 TITO(Token-In-Token-Out)网关。不管收到哪个版本的 token,都先还原成原始文本,再用当前训练版本的分词器重新编码。
第二个是离策略训练的稳定性。
因为生成数据的模型和训练时的模型不是同一版本,训练集群收到的是“旧策略”产生的数据。用旧策略数据训练新策略,如果处理不当,训练会不稳定甚至崩溃。
Slime 用“双侧重要性采样”来控制:在 token 级别和样本级别都做重要性加权,既能利用历史数据,又不会让极端样本把训练带偏。
同时,Slime 会记录每条数据是哪个版本生成的,自动丢弃过于陈旧的样本;会识别那些因为环境故障、而非模型能力问题导致失败的样本,避免噪声数据。
训练效率问题,是所有做 Agent RL 的团队都会遇到。目前,整个 Slime 框架已经开源,其他团队可以直接在这基础上继续探索。
空间维度:Agent 的上下文太长
Slime 解决了训练效率,但 Agent 还有另一个麻烦:上下文太长。
修 bug 要读几十个代码文件,深度搜索要浏览几十个网页。这些内容加起来,上下文轻松超过 10 万 token。标准注意力机制的计算复杂度是 O(L²),当 L=200K 时,计算量大到难以承受。
此时,GLM-5 采用了 DeepSeek 提出的 DSA 来降低成本。DSA 的思路是用一个轻量级索引器动态判断哪些 token 最重要,然后只对这些 token 做注意力计算。
报告说 DSA 能把长序列注意力计算降低 1.5-2 倍。对 20 万 token 的上下文,可以用一半成本完成相同工作。这样,就不需要处理更多的 token 了。
在实际使用 DSA 时,GLM-5 团队遇到了一个新问题:强化学习训练不稳定。
问题出在 DSA 的 top-k 算子上。DSA 需要从所有 token 中选出最重要的 k 个来计算注意力。如果用 CUDA 优化的 top-k 实现,速度快,但输出是非确定性的——同样的输入,每次运行可能选出不同的 token。
这在推理时问题不大,但在强化学习训练时会出大问题。因为强化学习需要计算策略的概率比值,如果同样的输入每次输出不一样,概率就对不上,训练几步后性能就会急剧下降。
GLM-5 团队的解法是换成 PyTorch 原生的 torch.topk。这个实现比 CUDA 版本慢一点,但输出是确定性的——同样的输入,每次选出的 token 都一样。用了确定性 top-k 后,强化学习训练才稳定下来。
这个选择很有意思:为了训练稳定,牺牲了一部分推理速度。但这个 trade-off 是值得的——训练是一次性成本,推理是持续成本。更重要的是,这暴露了一个问题:很多为推理优化的技术,不一定适合训练。
同时,GLM-5 在强化学习训练时冻结了 DSA 索引器的参数,只更新模型主体。这样既加速了训练,也避免了索引器在训练中出现不稳定的学习行为。
这个发现挺重要的。DSA 本身是 DeepSeek 提出的,但怎么在 RL 的场景下用好 DSA, GLM-5 团队踩了坑才找到答案。
降低了计算成本,保证了训练稳定,但长上下文还有个问题:怎么用好?
GLM-5 设计了三种思考模式:

交错思考:每轮都思考,但内容简短
保留思考:只在第一轮深度思考,后续直接执行
轮次级思考:每轮独立思考,上一轮的思考会被清除
在 SWE-bench 上,轮次级思考比交错思考效果好 2 个百分点。原因是 SWE-bench 需要很多轮交互,交错思考的内容会占用太多空间,挤掉代码和测试结果。
在搜索任务上,GLM-5 用了「Keep-recent-k」策略:当交互历史超过一定长度,只保留最近 k 轮的工具调用内容(k=5)。这个策略把 BrowseComp 分数从 55.3% 提升到 62.0%。进一步,他们引入“混合层次管理”:如果总上下文超过 32K,就完全清空工具调用历史重新开始,但继续应用 Keep-recent-k。最终达到 75.9%,所有模型最高。
核心思想是:长上下文越长越好?不对。关键是在有限空间里保留最关键的信息。
GLM-5 的完整训练方案
解决了训练效率和长上下文这两个核心问题,我们把视角拉回来。要训练出真正能干活的 Agent,GLM-5 的构建了一套完整的训练体系。

GLM-5 的强化学习分三个阶段:
Reasoning RL:训练推理能力,用数学题、科学问题、算法竞赛这类有标准答案的任务。
Agentic RL:训练 Agent 能力,用真实软件工程任务、终端操作、多步搜索任务。这里用的就是 Slime 框架。
General RL:训练对话能力,用开放式对话、创意写作、角色扮演等任务。
这个顺序很重要。推理能力是基础,Agent 能力建立在推理之上,对话能力最容易被遗忘所以放最后。Reasoning → Agentic → General, GLM-5 把能力分了层。
神经网络有个特性叫“灾难性遗忘”:学习新任务时会部分忘记旧任务。如果先训练对话再训练编程,对话能力可能退化。
GLM-5 用“跨阶段蒸馏”来缓解。在第二阶段训练时,把第一阶段的最佳模型当“教师”,让正在训练的模型在学新能力的同时保持旧能力。
效果很明显。不做蒸馏,从 Agentic RL 进入 General RL 后,SWE-bench 分数从 77.8% 掉到 73.2%。做了蒸馏,分数基本不掉。
GLM 团队没有选择一次性训练所有能力,而是分层训练、逐步叠加。
这套训练体系的背后,设计了一个大量可验证的训练环境。
软件工程任务:GLM-5 团队收集了大量 GitHub Issue-PR 对,用 RepoLaunch 框架自动构建可执行环境。这个流程会分析依赖、生成安装脚本、提取测试命令、用 LLM 生成日志解析函数判断测试是否通过。最终构建了超过 1 万个可验证环境,覆盖 9 种编程语言。
终端任务:设计了三阶段数据合成流程:LLM 生成任务草稿→构建 Agent 实例化为 Docker 环境和测试脚本→精炼 Agent 检查优化。产生数千个可验证任务,Docker 构建成功率超 90%。
搜索任务:从早期搜索 Agent 轨迹中收集 200 万+高质量网页,用 LLM 提取实体关系构建知识图谱。从图谱中选低频实体作种子,扩展多跳邻域,生成需要多步推理的问题。生成的问题经过三轮筛选:去掉太简单的、太难的、答案不唯一的。
这些环境是 Agent RL 训练的基础。没有可验证的环境,就没法自动给出奖励信号。
1 万个可验证环境,数千个 Docker 任务,200 万+网页知识图谱——GLM 团队在此投入了很多。
训练体系搭好了,环境也构建完成,但还有个前提:基座本身得足够强。
GLM-5 在预训练阶段做了两个工程优化,让原本不兼容的技术能够协同工作。
一个是让 MLA 和 Muon 配合工作。这两个技术单独用都很好,但组合起来会冲突:MLA 要“合”, Muon 要“分”。GLM-5 团队的解法叫“Muon Split”:在优化时先把 MLA 压缩的表示按注意力头拆开,让 Muon 对每个头独立优化,优化完再合并。实验显示这个改动让 MLA+Muon 达到了和标准 GQA 相当的性能,同时保留了 MLA 的显存和速度优势。

在 GQA-8 和 MLA 等各变体上的评估结果
另一个是参数共享的多 token 预测。GLM-5 用 3 个预测层,但这 3 层共享参数。共享参数强迫模型学习更通用的“多步预测”能力。测试显示,在相同推测步数下,GLM-5 的接受长度比 DeepSeek-V3 高约 8%。
写在最后
回到副标题的问题:从 Vibe Coding 到 Agentic Engineering,这个转变意味着什么?
意味着 AI 训练的扩展方式变了。
以前,训练一个模型,核心是暴力扩展。更大的模型、更多的数据、更长的训练时间。模型训练完,发布权重,就结束了。
现在,训练一个 Agent,核心是聪明扩展。异步架构(Slime)解决时间维度问题,稀疏注意力(DSA)解决空间维度问题,能力分层训练、大量可验证的环境、基座优化——每一个都是在用更聪明的方式,而不是更大的规模。
更重要的是,智谱的这套方案开源了。Agent 训练从此不再是少数团队的黑箱实验,而是可以被复制、被改进、被超越的工程实践。
模型能力可以追赶,工程范式的开放,才能让整个生态往前走。

一起“点赞”三连↓
<原文链接:https://mp.weixin.qq.com/s/_p06crSIs5uzbJqxEUcxsA

















暂无评论内容