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
以下是模型架构的主要改进点:
-
无偏置(No Bias Except QKV):为了提高训练速度,除了Query、Key、Value(QKV)的偏置外,模型中去除了所有其他偏置项。这样做在长度外推方面观察到了轻微的性能提升。
-
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.
-
二维旋转位置嵌入(Rotary Positional Embeddings, RoPE):为了适应GLM中的二维位置编码,将RoPE扩展为二维形式。
-
组查询注意力(Group Query Attention, GQA):为了在推理过程中减少KV缓存大小,用GQA替代了多头注意力(MHA)。由于GQA使用的参数少于MHA,因此增加了前馈网络(FFN)的参数数量,将dffn设置为隐藏大小的10/3,以保持模型大小不变。
-
上下文长度扩展:模型的上下文长度从最初的2K(ChatGLM),扩展到32K(ChatGLM2和ChatGLM3),再到128K和1M(GLM-4)。这种扩展不仅通过位置编码扩展和对长文本的持续训练实现,还通过长上下文对齐,使GLM-4能够有效处理长文本。
-
对齐技术:预训练为LLMs建立了基础,而后训练进一步细化这些模型以符合人类偏好。对于GLM-4,对齐主要通过监督式微调(SFT)和从人类反馈中学习的强化学习(RLHF)实现。SFT中使用真实的人类提示和交互,而不是基于模板或模型生成的响应,这对对齐质量至关重要。RLHF则可以进一步帮助解决响应拒绝、安全性、双语标记生成混合和多轮连贯性等问题。
-
智能工具集成:GLM-4 All Tools模型特别对齐,以更好地理解用户意图,并自主选择最合适的工具来完成任务。例如,它可以通过Web浏览器访问在线信息,使用Python解释器解决数学问题,利用文本到图像模型生成图像,并调用用户定义的函数。
finding and Tech:
- 数据预处理包含了去重,过滤和编码三个过程,最终有10T的数据。去重简单在全部数据中去除重复元素,过滤了具有攻击性语言、占位符文本、源代码的数据,采用了byte pair encoding(BPE)编码。
- 在SFT训练中发现,真实人类prompt的交互会比设计template进行模型交互更有利于提升对齐质量(Alignment Quality)。
- Pretrain Loss能够一定程度预见在下游人物的指标,并且loss的下降只有当超过一定阈值才对于模型能力有较大提升。