快速摘要: GLM-4.5是智谱推出的MoE架构大语言模型,拥有355B总参数和32B激活参数,使用23T token进行多阶段训练。模型最大特色是采用混合推理方法,同时支持思考模式和非思考模式,重点聚焦Agentic、Reasoning和Coding三大方向。后训练阶段采用专家训练与统一训练两阶段范式,利用自蒸馏技术整合多个专家模型能力。GLM-4.5在TAU-Bench上得分70.1%、AIME 24上91.0%、SWE-bench Verified上64.2%,与DeepSeek-R1和Qwen3-235B等强模型相当或更优。
论文GLM-4.5: Agentic, Reasoning, and Coding (ARC)
Foundation Models
本文提出GLM-4.5模型,GLM-4.5使用MoE架构,总共有355B参数,激活32B参数。GLM-4.5采用了混合推理方法,支持思考模式和非思考模式,使用23T个token进行多阶段训练,并利用专家模型迭代和强化学习进行全面的后训练,GLM-4.5关注的重点是Agentic,Reasoning和Coding,在TAU-Bench上得分70.1%,在AIME 24上得分91.0%,在SWE-bench Verified上得分64.2%。同时,本文也发布了规模稍小的模型GLM-4.5-Air(106B参数)。

论文分别从Pre-Training,Miding-Training和SFT,强化学习,评估等角度介绍了GLM-4.5的训练过程。### Pre-Training
模型架构:GLM-4.5系列采用了MoE架构,使用loss-free balance routing以及MoE层使用sigmoid Gate。与DeepSeek-V3和Kimi K2,GLM-4.5减少了模型的宽度(即隐藏层维度和路由专家的数量),同时增加了模型的高度(即层数)。
GLM-4.5采用了带有RoPE的GQA,hidden维度为5120,96个头head(head数更多)。增加的头数并没有改善训练loss,但在MMLU和BBH等推理benchmark上持续提高了性能。还引入了QK-Norm来稳定注意力的范围。GLM-4.5和GLM-4.5-Air都添加了一个MoE层作为MTP层,以在推理过程中支持投机解码。
模型架构对比如下:
**预训练数据:**预训练语料库包括来自网页、社交媒体、书籍、论文以及代码仓库的文件。- Web:大部分预训练文件是从互联网上爬取的英文和中文网页。将爬取的网页按质量得分划分为不同的buckets。对高质量得分的桶进行上采样,并丢弃低质量得分的桶中的文档。在预训练过程中,高质量得分的桶贡献了相当于3.2个epoch的数据。这样,预训练语料可以强化推理任务所需的高频知识,同时提升对长尾世界知识的覆盖。采用SemDedup去除相似的网页。- Multilingual:在预训练语料中加入了多语言文档。这些多语言语料既来自爬取的网页,也来自Fineweb-2,对高质量的多语言文件进行上采样。- Code:从GitHub和各类代码托管平台整理了源码数据。代码语料经过初步的规则过滤后,再通过特定语言的模型分类,分为高质量、中等质量和低质量。在训练中,上采样高质量代码,同时排除低质量样本。此外,所有源码文件都应用了 Fill-In-the-Middle训练目标。对于与代码相关的网页文档,采用两步检索流程:首先,依据 HTML代码标签或使用FastText分类器识别代码相关内容来初选;随后,使用专门的模型对这些文档进行质量评估,并划分为高、中、低三个类别。最终,应用与源码相同的基于质量的采样策略。对于入选的网页,会使用精细化解析器重新解析,以更好地保留格式和内容。- Math & Science:为了增强推理能力,收集了与数学和科学相关的网页、书籍和论文。使用大语言模型对候选文件进行初步分类,判断其数学和科学相关的得分,并训练一个小规模分类器来预测得分。预训练语料中分数超过某个阈值的文件会被上采样。
GLM-4.5 的预训练过程分为两个阶段:第一阶段,模型主要在网页爬取的通用文件上进行训练;第二阶段,对GitHub和网页爬取的代码以及数学和科学相关的文档进行上采样,训练模型。### Mid-Training
预训练之后,使用多阶段的Mid-Training训练,以进一步提升模型在重要应用领域的性能。与基于大规模训练数据的预训练不同,这些训练阶段利用中等规模的特定领域数据集,包括指令数据。因此,将这些训练阶段称为Mid-Training,具体包括以下内容:
仓库级代码训练:在这个训练阶段,添加来自同一仓库的代码文件,以学习跨文件依赖关系。为了提高模型的软件工程能力,还加入了经过模型过滤的query、拉取请求(PRs)以及来自GitHub的commit,将相关issues、PRs和commit连接到一个上下文中,并以类似diff的格式组织提交记录。训练序列长度会从4K扩展到32K。
合成推理数据训练:为数学、科学和代码竞赛添加合成推理内容。从网页和书籍中收集大量与推理任务相关的问题和答案,并使用推理模型合成推理过程。
长上下文与智能体训练:为了进一步提升模型的长上下文性能,将训练序列长度从32K扩展到128K,并对预训练语料库中的长文档进行上采样。此阶段还纳入了大规模的合成agent trajectory。
下图展示了预训练和中期训练的完整阶段,预训练最大序列长度保持在4k,中训练中扩展到32k至128k:
在预训练期间,没有使用best-fit packing,因为随机截断是预训练阶段良好的数据增强策略。对于中训练中的数据集,使用了best-fit packing以避免截断推理过程或仓库级代码。
**超参数:**使用Muon优化器来调整除embedding、bias和RMSNorm权重之外的所有参数,迭代步数N设为5,动量μ设为0.95,并将缩放的Muon更新RMS设为0.2。Muon优化器可以加速收敛并容忍更大的bsz。使用余弦衰减学习率调度进行学习率调整,而不是预热稳定衰减(WSD)。早期的实验表明,使用WSD训练的模型在SimpleQA、MMLU等bench上表现较差,在稳定阶段存在欠拟合。学习率从0经过预热阶段上升到2.5e-4,然后衰减到2.5e-5,直至中期训练结束。使用批量大小预热策略,在前500B个token的训练中,批量大小从16M个token逐渐增加到64M个token,并在剩余的训练中保持不变。权重衰减比设为0.1,并且不使用dropout。在预训练期间将最大序列长度设为4096,并在中期训练阶段将其扩展到32768和131072,在将序列长度扩展到32K时,还调整了RoPE,从10,000调整到1,000,000,以提高长上下文建模能力。对于loss-free balance routing,将前15T个token的偏差更新率设为0.001,其余token设为0.0。还应用了auxiliary sequence-level balance loss,权重为0.0001,以避免任何单个序列内的极端不平衡。前15T个token的MTP损失权重λ设为0.3,其余token设为0.1。### SFT
将训练后过程分为两个不同阶段。在阶段1(专家训练)中,构建在推理、智能体和通用聊天三个领域专门化的专家模型。在阶段2(统一训练)中,采用自蒸馏技术整合多个专家模型,最终交付一个能够具有思考和非思考能力的混合模型。
在阶段1(专家训练)和阶段2(统一训练)的开始都进行监督微调(SFT)。在专家训练阶段,SFT的主要作用是提供冷启动,使模型具备基本的聊天、推理和工具使用能力,随后在专家强化学习训练中进一步增强,以实现性能提升。在统一训练阶段,SFT的目的是将不同专家模型的能力蒸馏到一个能够处理不同类型任务的混合推理通用模型中。
**冷启动SFT:**在冷启动阶段,利用一小部分带CoT回答的监督微调数据。这种方法确保每个专家模型在强化学习阶段之前具备足够的基础能力。
**整体SFT:**在整体SFT阶段,收集数百万个涵盖推理任务(数学、代码、科学等)、通用聊天(写作、翻译、摘要、闲聊等)、智能体任务(基本工具使用、编码能力,真实项目开发等)以及来自先前训练的专家模型的长期上下文理解任务的样本,并使用最大上下文长度为128K个token的base模型进行训练。通过从不同专家的输出中蒸馏,模型学会对每个任务应用最有效的长CoT推理,以得出准确答案。对于某些需要快速回答的领域(如闲聊),长时间的思考过程是不必要的,因此精心设计了包含完整推理但缺乏明确思考过程的数据,从而创建一个混合推理模型。
此外,本文发现以下策略有助于准备SFT数据以获得最佳性能。
**减少函数调用模板中的字符转义:**此前的工作中函数调用参数主要以JSON格式表示,但当这些参数包含代码段时,代码中的大量字符需要转义,迫使模型生成大量转义字符,从而增加了模型的学习负担。为了缓解这一限制,本文提出了一种函数调用模板,将函数调用键和值封装在类似XML的特殊标记内,从而避免转义。
Reject Sampling:在从专家模型中采样时,采用全面的多阶段过滤流程,包括:(1)去除重复、过短或截断的样本,以及不符合有效推理格式的样本;(2)对有客观答案的样本进行正确性验证;(3)利用奖励模型过滤主观问题的回答;(4)对于调用工具的场景,确保符合适当的工具调用协议并验证轨迹是否达到预期的终端状态。
prompt选择和response-level scaling:过滤具有挑战性的prompt并进行response-level scaling被证明是有效的**。根据响应长度去除底部50%的prompt,结果在数学和科学任务上提高了2%-4%**。对这些hard prompt应用response scaling可以带来进一步的提升。为每个提示生成4个response带来了额外的1%-2%的改进。
**自动智能体SFT数据构建:**构建智能体SFT数据涉及四个步骤:1.智能体框架和工具收集:收集一组智能体框架和真实世界的工具API及MCP服务器,同时利用大语言模型自动构建和模拟一批工具。2.任务合成:基于这些框架和工具,自动合成一组智能体任务。对于相对成熟的框架,利用大语言模型理解其功能并自动生成相关query或任务。对于更碎片化或分散的工具,首先选择一个代表性子集,并同样利用大语言模型构建关于这个子集的任务。这些任务涵盖单步和多步工具调用场景。3.轨迹生成:对于每个合成的任务,利用现有的大语言模型生成工具调用轨迹。此外,通过将大语言模型作为用户模拟器,多步工具调用任务被转换为涉及多轮对话的轨迹。4.质量过滤:对于每个轨迹,使用多个评估智能体来评估任务是否完成,只保留成功的轨迹。### Reasoning RL
Reasoning RL包括数学、代码生成和科学推理等关键领域,基于GRPO算法,不包括KL损失项。
基于难度的课程学习:在强化学习过程中,模型的熟练程度会不断提高,从而与静态训练数据不匹配。为了应对这一挑战,本文采用了两阶段强化学习。二阶段使用特别难的数据,采样次数扩大到512。
64K输出长度的单阶段RL:先前的研究建议在多阶段进行强化学习,逐步增加最大输出长度。然而,本文的实验表明,这种多阶段方法不如直接在64K的最大目标长度上进行的单阶段强化学习过程有效。由于初始的SFT已经使模型适应生成64K长度,引入最大长度较短的强化学习阶段可能导致模型遗忘其长上下文能力。这通常会导致模型平均输出长度显著且不可逆的下降。在最终的64K长度强化学习阶段,这种性能下降难以恢复。
**动态采样温度:**采样温度是控制轨迹多样性的关键参数,温度过低会导致输出收敛且探索性不足,而温度过高则会引入低质量,噪声样本,损害模型准确性和训练效率。本文动态调整采样温度,以在准确性和探索性之间保持平衡。当rollout的平均reward稳定时,将其视为收敛阶段,并提高采样温度以鼓励更大的多样性。为了降低引入过多噪声的风险,实施了一种质量控制机制:在一系列温度下对保留的验证集定期评估模型性能。然后,下一个训练阶段的温度设置为不会导致当前最优值性能下降超过1%。
**代码和科学RL:**本文得出了以下结论,对于代码强化学习,损失计算的选择对训练效率至关重要,token-level loss有很好的效果。对于科学强化学习,在GPQA-Diamond benchmark上发现,与使用混合质量或未经验证的数据进行训练相比,仅使用专家验证的多项选择题进行强化学习可显著提高性能。
GLM-4.5进行了agentic方面的训练,重点关注web-search和code generation。
**智能体的数据收集与合成:**对于web-search任务和open-domain information seeking任务,开发了一个数据合成pipeline,构建跨多个网络源的多步推理的question-answer pair。数据集构建结合了两种方法:(1)知识图谱的multi-hop reasoning驱动的自动化pipeline;(2)从多个网页中提取并选择性融合内容的人工提取,以准备强化学习训练信号。
对于软件工程任务,精心收集了大量的GitHub pull request和issues,以创建一个包含用户prompt和可执行单元测试的现实软件开发benchmark。所有评估都在具有分布式系统的沙盒内运行。
**RL和迭代自蒸馏:**GRPO训练,训练目标为:
对于web-search任务,将最终答案的准确性作为整个智能体轨迹的reward。对于code任务,利用具有可验证测试用例的SWE数据进行强化学习训练。**实验表明,在web-search和SWE任务上进行强化学习训练可在其他任务和基准测试(如通用工具使用和编码任务,如Terminal-Bench)中带来性能提升。**此外,应用过程格式惩罚以确保模型生成正确的工具调用格式。如果智能体轨迹生成过程中模型未能生成正确的工具格式,该过程将被停止,轨迹将获得零reward。
由于在智能体任务上进行强化学习训练非常耗时,本文采用自蒸馏方法迭代地提高SFT冷启动模型的性能。首先在初始冷启动模型上进行强化学习训练以提高智能体性能。一**旦训练达到一定步数或reward停滞,就用强化学习训练模型生成的response替换原始冷启动数据来进行自蒸馏,从而创建一个更优的SFT模型。**然后,在这个增强模型上进行进一步的强化学习训练,逐步增加训练难度。
对于agent任务,观察到随着与环境交互轮次的增加,性能会有显著提升。与reasoning任务的test-time scaling(scale token)相比,agent任务通过持续与环境交互来利用test-time scaling:
General RL旨在全面提升模型的整体性能,其中reward包括基于规则的反馈、RLHF和RLAIF。这种混合框架提供了更稳健的训练信号。
Function Calling RL:函数调用强化学习分为逐步基于规则的强化学习和端到端多轮强化学习。- Step-wise rule-based RL:对于具有明确工具调用过程的任务,在训练数据中为每一步调用标注真实的函数调用,给定任务和先前step/轮的函数调用,模型被训练生成下一个response,该response可以是函数调用或用户的回复。使用基于规则的奖励,引导模型在连续轮次中做出正确的函数调用。奖励函数如下:

**Pathology RL:**作为最终的后训练阶段,通用RL需要修复潜在的问题,例如语言冗余、过度重复、格式错误。虽由于这些问题发生率较低(通常少于 1% 的输出),策划了一个专门的RL数据集,通过识别高度可能触发这些行为的提示词来训练。### RL基建
对于通用强化学习任务或旨在增强模型推理能力的任务(例如数学和代码生成),同步架构更为有效。在这种设置下,训练和推理引擎位于同一工作节点上。结合动态采样,这显著减少了GPU空闲时间并最大化了资源利用率。相反,对于软件工程(SWE)等智能体任务,为确保智能体环境能够持续运行并最大化数据吞吐量,采用分散的异步模型,强化学习框架的rollout组件直接暴露给智能体环境,而训练和推理的GPU则独立调度。这种解耦使智能体环境能够不断生成新数据,而不会被训练周期所阻碍。通过利用Ray框架的资源调度和异步能力,可以灵活地将推理和训练引擎放置在同一GPU或不同GPU上。这种对同步和异步训练的支持使不同的强化学习任务能够共享一组基础优化,用于训练和推理。
**混合精度推理加速Rollout:**Rollout效率一直是强化学习训练中的瓶颈。为解决这一问题,在利用FP8进行推理的同时支持BF16训练,以加速数据生成阶段。在每次策略更新迭代中,在将模型参数发送进行rollout之前,会对模型参数进行FP8量化。。
**面向智能体的强化学习基建设计:**为了进行智能体任务的强化学习,设计了一个完全异步和解耦的强化学习基建。首先设计了一个基于Docker的高并发运行环境,为每个任务提供隔离的环境,减少rollout开销。此外,实现了一个完全异步的强化学习训练循环。由于智能体任务在类型和轨迹长度上可能有所不同,同步的强化学习训练通常会导致严重的GPU利用率不足,因为工作节点会等待最慢的rollout完成。因此将GPU划分为专用的rollout引擎和训练引擎:rollout引擎不断生成轨迹,而训练引擎更新模型权重并定期将其同步回rollout引擎。这种解耦设计防止了长或多样的轨迹阻塞整个训练流程,从而在智能体交互高度可变的情况下,也能保持高吞吐量。另一个挑战是现有智能体框架的多样性,这些框架针对不同任务进行了定制。引入了一个统一的HTTP端点接口,并结合了一个集中式数据池。所有轨迹都存储在这个数据池中,作为训练的共享源。这种架构将特定任务的rollout逻辑与强化学习训练过程解耦,实现了异构智能体框架的无缝集成。此外,数据池支持可定制的、特定任务的过滤和动态采样策略,以确保在不同任务中获得高质量的强化学习训练数据。### 评估
预训练模型的评估结果:
后训练评估结果:
Agent评估:
SWE评估:
通用评估:
安全评估:

Comments