当前位置: 首页 > backend >正文

【大模型】ChatGLM训练框架

一、ChatGLM-1(初代)概览

ChatGLM-1 基于 GLM(General Language Model)设计,提出“自回归空格填充”策略,兼具双向理解与自回归生成能力,具备 NLU 和 NLG 双重优势。

二、GLM 预训练框架详解

GLM 框架的核心目标是打破自编码与自回归模型的壁垒,实现统一编码与生成。以下分模块详细说明:

1. 预训练目标:自回归空格填充(Autoregressive Blank Infilling)

  • 拆分与遮蔽:给定原始文本序列 x = [ x 1 , x 2 , … , x n ] x=[x_1, x_2,\ldots,x_n] x=[x1,x2,,xn],根据泊松分布 (λ≈3) 随机采样多个连续 spans,直到约 15% token 被遮蔽,生成:
    • Part A:剩余未遮蔽 tokens,顺序保持原状;
    • Part B:所有被 mask spans,以 [S]...tokens...[E] 标记,每个 span 前后包裹专用哨兵。
  • Span Shuffle:将 Part B 中的各个 span 顺序随机打乱,构造所有可能的排列集合 Z m Z_m Zm,使模型能学习不同上下文依赖排列
  • 自回归生成:对每种排列 z ∈ Z m z\in Z_m zZm,模型最大化:

L b l a n k = E z ∼ Z m [ ∑ i = 1 m log ⁡ p θ ( s z i ∣ x corrupt , s z < i ) ] \mathcal{L}_{\mathrm{blank}} = \mathbb{E}_{z\sim Z_m} \left[ \sum_{i=1}^m \log p_\theta(s_{z_i} \mid x_{\text{corrupt}}, s_{z_{<i}}) \right] Lblank=EzZm[i=1mlogpθ(szixcorrupt,sz<i)]

模型在预测当前第 i i i 个 span 时,可访问:

  • 双向可见:Part A 中所有 tokens
  • 单向可见:之前已预测的 spans s z < i s_{z_{<i}} sz<i

2. 二维位置编码(2D Positional Encoding)

  • 第一维:表示原始文本中的绝对位置(Part A 和被 mask spans 在原文中的起止位置)。
  • 第二维:表示在每个 span 内部的相对偏移,用于区分同一 span 中各 token 顺序。

两组位置编码分别映射至独立 embedding,然后相加到 token embedding 上,为 GLM 提供跨 span 与内部顺序双重位置信息。

3. Attention Mask 设计

  • Part A ↔ Part A:完全双向可见,保证编码器能力。
  • Part A ← Part B:Part B 中的 token 可见全体 Part A,获取上下文信息。
  • Part B 内部:遵循因果约束(Causal),仅可见自身及之前已生成 token,防止未来信息泄露。
  • Part B ↛ Part A:Part A 不可见 Part B,确保生成依赖只从 Part A 及已生成 spans。
    此设计使模型同时具备双向编码与自回归解码机制。

4. 采样与噪声策略

  • 泊松分布采样:选取 spans 长度符合 Poisson(λ),模拟多样化遮蔽长度。
  • 重复采样:对同一输入多次不同遮蔽,增强模型泛化。
  • Mask 比例:调控在 10%–20% 间最优,通常设为 15%。

5. 多目标扩展

为了兼顾长文本生成与短文本理解,GLM 在空格填充基础上,增加:

  1. 文档级 Seq2Seq:随机 mask 文档中 50%–100% 连续区域,以生成长段落;
  2. 句子级填空:完整句子为单元进行 mask,覆盖比例同样约 15%,用于下游 NLU 微调。
    总损失:

L b l a n k + β L d o c + γ L s e n t \mathcal{L}_{\mathrm{blank}} + \beta\mathcal{L}_{\mathrm{doc}} + \gamma\mathcal{L}_{\mathrm{sent}} Lblank+βLdoc+γLsent

其中超参 ( α , β , γ ) (\alpha,\beta,\gamma) (α,β,γ) 通过验证集调优。

6. 模型结构细节

在标准 Transformer Decoder 架构上做如下调整

  • LayerNorm 与残差重排:提高稳定性;
  • Unified LM-Head:单层线性映射输出所有词汇预测;
  • 激活函数:改用 GeLU。

整个模型通常为 28 层、hidden size 4096、head 数 16。

三、ChatGLM-2 与 ChatGLM-3 简要

核心继承:ChatGLM-2/3 在架构上沿用 GLM 解码思想,仅对位置编码、注意力机制、Norm、激活及推理优化。

  1. 位置编码:弃二维编码,启用 RoPE;
  2. 注意力:全因果(Decoder-only),不再区分 Part A/B;
  3. 推理优化:Multi-Query Attention + INT4 量化;
  4. 微调与对齐:人类偏好对齐(RLHF);
  5. ChatGLM-3:与 2 架构一致,词表与细节迭代。
http://www.xdnf.cn/news/10964.html

相关文章:

  • CMS32M65xx/67xx系列CoreMark跑分测试
  • 工业协议修改器:让ModbusRTU485与Profibus无障碍对话
  • SpringBoot核心注解详解及3.0与2.0版本深度对比
  • Python爬虫解析动态网页:从渲染到数据提取
  • CapCut(剪映国际版)软件及安装教程
  • 基于新课标的中小学人工智能课程教学解决方案
  • 基于大模型的短暂性脑缺血发作(TIA)全流程预测与诊疗辅助系统详细技术方案
  • 如何在 DataGrip 中 连接 Databend
  • 客户线索商机怎么管?客户线索商机管理工具哪个好?
  • 【数学】高斯积分+伽马函数公式自用背诵笔记
  • 互联网c++开发岗位偏少,测开怎么样?
  • uboot ping不了
  • 在Windows下编译出llama_cpp_python的DLL后,在虚拟环境中使用方法
  • Delphi 设置文件 永久只读
  • java30
  • 《TCP/IP 详解 卷1:协议》第4章:地址解析协议
  • 2025.6.3总结
  • 【记录】Python|Python支持if 1<a<2、if not a、if a is None这三种写法
  • JavaScript 对象展开语法
  • java29
  • 信息过载时,如何筛选重要信息
  • 把两个标签内容显示在同一行
  • BSRR对比BRR对比ODR
  • MySQL - Windows 中 MySQL 禁用开机自启,并在需要时手动启动
  • Vue3 中使用 i18n
  • 【MATLAB去噪算法】基于CEEMD联合小波阈值去噪算法(第三期)
  • 离散数学_数理逻辑(二):命题逻辑的推理
  • CET6 仔细阅读 24年6月第三套-C2 可变性这一块
  • 代码随想录算法训练营第60期第五十六天打卡
  • 系统思考:短期利益与长期系统影响