ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools(2024.7.16)

Code:https://github.com/THUDM and https://huggingface.co/THUDM

以下是模型架构的主要改进点:

  1. 无偏置(No Bias Except QKV):为了提高训练速度,除了Query、Key、Value(QKV)的偏置外,模型中去除了所有其他偏置项。这样做在长度外推方面观察到了轻微的性能提升。

  2. RMSNorm和SwiGLU:模型采用了RMSNorm替代LayerNorm,以及SwiGLU替代ReLU。这些替代策略被观察到可以提升模型性能。

RMSNorm:

[ \text{RMSNorm}(x) = \frac{x}{\text{RMS}(x)} \otimes g ]

[ \text{RMS}(x) = \sqrt{\frac{1}{d} \sum_{i=1}^{d} x_i^2} ]

  • ( \otimes ) denotes element-wise multiplication.
  • ( g ) is a learned scaling parameter.
  • ( d ) is the dimension of the input vector ( x ).

SwiGLU:

[ \text{SwiGLU}(x) = \sigma(xW_1 + b_1) \otimes (xW_2 + b_2) ]

where:

  • ( \sigma ) is a sigmoid activation function (or another non-linear activation function for the gating part).
  • ( W_1 ) and ( W_2 ) are weight matrices.
  • ( b_1 ) and ( b_2 ) are bias vectors.
  • ( \otimes ) represents element-wise multiplication.
  1. 二维旋转位置嵌入(Rotary Positional Embeddings, RoPE):为了适应GLM中的二维位置编码,将RoPE扩展为二维形式。

  2. 组查询注意力(Group Query Attention, GQA):为了在推理过程中减少KV缓存大小,用GQA替代了多头注意力(MHA)。由于GQA使用的参数少于MHA,因此增加了前馈网络(FFN)的参数数量,将dffn设置为隐藏大小的10/3,以保持模型大小不变。

  3. 上下文长度扩展:模型的上下文长度从最初的2K(ChatGLM),扩展到32K(ChatGLM2和ChatGLM3),再到128K和1M(GLM-4)。这种扩展不仅通过位置编码扩展和对长文本的持续训练实现,还通过长上下文对齐,使GLM-4能够有效处理长文本。

  4. 对齐技术:预训练为LLMs建立了基础,而后训练进一步细化这些模型以符合人类偏好。对于GLM-4,对齐主要通过监督式微调(SFT)和从人类反馈中学习的强化学习(RLHF)实现。SFT中使用真实的人类提示和交互,而不是基于模板或模型生成的响应,这对对齐质量至关重要。RLHF则可以进一步帮助解决响应拒绝、安全性、双语标记生成混合和多轮连贯性等问题。

  5. 智能工具集成:GLM-4 All Tools模型特别对齐,以更好地理解用户意图,并自主选择最合适的工具来完成任务。例如,它可以通过Web浏览器访问在线信息,使用Python解释器解决数学问题,利用文本到图像模型生成图像,并调用用户定义的函数。

finding and Tech:

  • 数据预处理包含了去重,过滤和编码三个过程,最终有10T的数据。去重简单在全部数据中去除重复元素,过滤了具有攻击性语言、占位符文本、源代码的数据,采用了byte pair encoding(BPE)编码。
  • 在SFT训练中发现,真实人类prompt的交互会比设计template进行模型交互更有利于提升对齐质量(Alignment Quality)。
  • Pretrain Loss能够一定程度预见在下游人物的指标,并且loss的下降只有当超过一定阈值才对于模型能力有较大提升。

ChatGLM的更多相关文章

  1. Hugging News #0317: ChatGLM 会成为 HF 趋势榜的第一名吗?

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  2. GLM:通用语言模型

    ChatGPT已经火了一段时间了,国内也出现了一些平替,其中比较容易使用的是ChatGLM-6B:https://github.com/THUDM/ChatGLM-6B ,主要是能够让我们基于单卡自己 ...

  3. 【小白晋级大师】如何设计一个支持10万人用的ChatGPT对接系统

    不停地书写,方能不失在人海茫茫. 1.前言 之前给大家写了ChatGPT对接企业微信的教程,具体可看知乎链接: [奶奶看了都会]ChatGPT3.5接入企业微信,可连续对话 文章结尾说了教程只能适用于 ...

  4. ChatCLM部署随笔

    ChatCLM 博客 ChatGLM Github ChatGLM-webui 介绍 ChatGLM-6B 是一个开源的.支持中英双语的对话语言模型,基于 General Language Model ...

  5. 官宣 | Hugging Face 中文博客正式发布!

    作者:Tiezhen.Adina.Luke Hugging Face 的中国社区成立已经有五个月之久,我们也非常高兴的看到 Hugging Face 相关的中文内容在各个平台广受好评,我们也注意到,H ...

  6. pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例)

    pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例) Part1知识准备 在PyTorch中加载预训练的模型时,通常的工作流程是这样的: my_model = ModelClass ...

  7. 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话

    导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...

  8. 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~

    上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...

随机推荐

  1. Niagara 物联网技术基础应用(文章修复中,不定时更新)

    新手指南 前言 鉴于市面上有关Niagara物联网技术资料较少,笔者结合自生参加竞赛的经历编写此指南,该指南旨在让新手快速上手Niagara workbench 主要分以下几个模块讲解: 物联网软件平 ...

  2. C++与Unity C#交互

    C++与Unity C#交互 C++转C#小工具:https://github.com/jaredpar/pinvoke-interop-assistant C++ Custom.h #pragma ...

  3. 2023/3/21 组会:ChatGPT 对数据增强的影响及 ChatGPT 的鲁棒性,Dense 和 Document 检索方法

    前两个也许跟上了,后两个完全没跟上,以后再详细读读吧qwq 反正组会跟不上才是正常现象. AugGPT: Leveraging ChatGPT for Text Data Augmentation 摘 ...

  4. ClickHouse的物化视图及MySQL表引擎

    MySQL表引擎可以与MySQL数据库中的数据表简历映射,并通过SQL向其发起远程查询. MySQL表引擎可以与物化视图结合,来同步更新MySQL数据库中的数据. 语法: CREATE TABLE [ ...

  5. 在Linux驱动中使用timer定时器

    在Linux驱动中使用timer定时器 原文(有删改): https://www.cnblogs.com/chen-farsight/p/6226562.html 介绍 内核定时器是内核用来控制在未来 ...

  6. Konva 内容重叠无法触发点击事件的解决方法

    写在前面: 环境:Vue3 + Konva + vite 在绘制界面时踩坑,主要是关于 listening 属性的使用 在绘制界面时,不免出现有内容重叠的情况,这会影响事件的触发 使用设置listen ...

  7. P2935

    [USACO09JAN]Best Spot S 题目 约翰拥有P(1<=P<=500)个牧场.贝茜特别喜欢其中的F个.所有的牧场 由C(1 < C<=8000)条双向路连接,第 ...

  8. 探索Nuxt.js的useFetch:高效数据获取与处理指南

    title: 探索Nuxt.js的useFetch:高效数据获取与处理指南 date: 2024/7/15 updated: 2024/7/15 author: cmdragon excerpt: 摘 ...

  9. 2024 暑假友谊赛-热身2 (7.12)zhaosang

    E-E https://vjudge.net/problem/AtCoder-diverta2019_b 给你 a, b, c ,n就是问你有多少(ia+jb+k*c)等于n的答案i,j,k任意几个都 ...

  10. CF30D King's Problem? 题解

    CF30D 题意 有 \(n+1\) 个点,其中的 \(n\) 个点在数轴上.求以点 \(k\) 为起点走过所有点的最短距离,允许重复. 思路 有两种情况: \(k\) 在数轴上(如图1). \(k\ ...