智谱新年的第一篇论文:GLM-5 技术报告解读来了!

 Datawhale干货 

技术解读:智谱 GLM-5

昨天,智谱开源 GLM-5 技术报告,40 页,副标题是“from Vibe Coding to Agentic Engineering”。
Image

论文链接:https://arxiv.org/abs/2602.15763

Vibe Coding 是什么?是你跟 AI 说「帮我写个贪吃蛇」,它给你写出来。

Agentic Engineering 是什么?是你说「这个系统有个 bug」, AI 自己去找问题、改代码、跑测试,全程不用你管。

从“辅助写代码”到“独立完成工程任务”,这个转变对模型训练提出了完全不同的要求。我们对这份报告进行了解读。

一、先看数据

GLM-5 发布后,硅谷顶级风投机构 a16z 发布了一组数据:开源大模型和顶级闭源模型之间的能力差距,正在以肉眼可见的速度快速收窄。

Image

正面对标的,就是 GLM-5 和 Claude Opus 4.6。

具体来看,GLM-5 在几个关键评测上的表现:

Image
  • SWE-bench Verified 77.8%,开源模型最高。这个测试要求模型修复真实 GitHub 仓库里的 bug。几万行代码的项目,找问题、理解上下文、写方案、跑通测试,全流程完成。

  • BrowseComp 75.9%,这是所有模型里最高的。这个任务要求模型自己决定搜什么、点哪些链接、从多个网页提取信息、综合得出答案。

Image
  • Artificial Analysis Intelligence Index 拿了 50 分,开源模型第一次达到这个水平。

这些数据指向一个方向:GLM-5 是为 Agent 场景优化的。从 a16z 的数据背书,到 LMArena 的真实用户投票,GLM-5 在 coding 和 agentic 能力上,已经站到了全球第一梯队。

值得一提的是,GLM-5 发布前做过匿名盲测,代号 Pony Alpha,被很多海外大 V 认为是 Claude 或 Grok。而且GLM-5 从发布之初就原生适配了华为昇腾、摩尔线程等七大国产芯片平台,完成了从内核到框架的深度优化。

Image

数据看完了,那么问题来了:要训练出这样真正能干活的 Agent,首先得解决什么?

GLM-5 没有特别关注更大的模型,而是更聪明的扩展方式:把 DSA 稀疏注意力和异步强化学习结合起来,用更聪明的方式解决长程 Agent 任务。

Image

在多个长程任务上的结果。左: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 时,计算量大到难以承受。

1. 选择重要的 token

此时,GLM-5 采用了 DeepSeek 提出的 DSA 来降低成本。DSA 的思路是用一个轻量级索引器动态判断哪些 token 最重要,然后只对这些 token 做注意力计算。

报告说 DSA 能把长序列注意力计算降低 1.5-2 倍。对 20 万 token 的上下文,可以用一半成本完成相同工作。这样,就不需要处理更多的 token 了。

2. 确定性 vs 速度

在实际使用 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 团队踩了坑才找到答案。

3. 更好的管理上下文

降低了计算成本,保证了训练稳定,但长上下文还有个问题:怎么用好?

GLM-5 设计了三种思考模式:

Image

  • 交错思考:每轮都思考,但内容简短

  • 保留思考:只在第一轮深度思考,后续直接执行

  • 轮次级思考:每轮独立思考,上一轮的思考会被清除

在 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 的构建了一套完整的训练体系。

Image
1. 分层训练不同能力

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 团队没有选择一次性训练所有能力,而是分层训练、逐步叠加。

2. 着重构建训练环境

这套训练体系的背后,设计了一个大量可验证的训练环境。

  • 软件工程任务GLM-5 团队收集了大量 GitHub Issue-PR 对,用 RepoLaunch 框架自动构建可执行环境。这个流程会分析依赖、生成安装脚本、提取测试命令、用 LLM 生成日志解析函数判断测试是否通过。最终构建了超过 1 万个可验证环境,覆盖 9 种编程语言。

  • 终端任务设计了三阶段数据合成流程:LLM 生成任务草稿→构建 Agent 实例化为 Docker 环境和测试脚本→精炼 Agent 检查优化。产生数千个可验证任务,Docker 构建成功率超 90%。

  • 搜索任务从早期搜索 Agent 轨迹中收集 200 万+高质量网页,用 LLM 提取实体关系构建知识图谱。从图谱中选低频实体作种子,扩展多跳邻域,生成需要多步推理的问题。生成的问题经过三轮筛选:去掉太简单的、太难的、答案不唯一的。

这些环境是 Agent RL 训练的基础。没有可验证的环境,就没法自动给出奖励信号。

1 万个可验证环境,数千个 Docker 任务,200 万+网页知识图谱——GLM 团队在此投入了很多。

3. 高效优化基座模型

训练体系搭好了,环境也构建完成,但还有个前提:基座本身得足够强。

GLM-5 在预训练阶段做了两个工程优化,让原本不兼容的技术能够协同工作。

一个是让 MLA 和 Muon 配合工作。这两个技术单独用都很好,但组合起来会冲突:MLA 要“合”, Muon 要“分”。GLM-5 团队的解法叫“Muon Split”:在优化时先把 MLA 压缩的表示按注意力头拆开,让 Muon 对每个头独立优化,优化完再合并。实验显示这个改动让 MLA+Muon 达到了和标准 GQA 相当的性能,同时保留了 MLA 的显存和速度优势。

Image

在 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

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容