1、背景
ChatGLM-6B作为首个针对中英双语训练并对中文进行优化的开源大规模语言模型,自3月14日开源以来,全球下载量已达300万,成为国内最火的开源语言大模型。5月份,科技部在中关村论坛上发布的《中国人工智能大模型地图研究报告》显示 ChatGLM-6B 位列大模型开源影响力第一名。ChatGLM-6B是基于GLM架构对中文问答和对话进行了优化。
2、GLM 预训练框架
1.目标:
NLU(自然语言理解:分类、实体识别)
Unconditional generation(无条件文本生成:随机写诗等任务)
Conditional generation(条件文本生成:摘要生成等任务)
2.解决方案
○具体流程
⭐️(核心)自回归空白填充(Autoregressive Blank Infilling)
(a)输入文本,对不同长度的文本跨度进行泊松采样,得到两个文本跨度
(b)每个跨度用[MASK]标记,原文本分为两部分:A为损坏的文本,B为不同的文本跨度。B中不同跨度的顺序可以随机排列
(c)GLM自回归生成B中的内容,每个跨度以[S]开始,[E]结束。
2D位置编码:两个向量都被添加到输入标记嵌入中。该编码方法确保模型在预测时不知道被屏蔽跨度的长度。这种设计适合下游任务,因为通常生成的文本的长度是事先未知的。(如果1D位置编码,被mask的部分,通过位置编码是知道mask文本的长度)
(d)自注意力掩码,A的token可以关注自身,但不能关注B,B的token可以关注A和B的前向
○损失函数(条件概率)
○多任务预训练
短跨度预测,为NLU任务,为了在一个模型中同时具备文本生成:
1.文档级别:对单一跨度进行采样,其长度从原始长度的50%-100%的均匀分布中抽出。该目标为生成长文本。
2.句子级别:限制被mask的跨度必须是完整的句子。多个跨度(句子)被取样,以覆盖15%的原始token。目标是针对seq2seq任务,其预测往往是完整的句子或段落。
○模型结构
GLM使用单一的Transformer,并对架构进行了一些修改:
(1)调整了层归一化和残差连接的顺序(post_LN ——> pre_LN);
(2)使用单一的线性层进行输出token预测;
(3)用GeLU替换ReLU激活函数
○微调GLM
NLU任务:为了避免训练与预测不一致,在微调NLU任务时,将标签y(position)映射成词good,输入为 x+[MASK]的prompt,进行文本生成,将生成结果在映射到y。
损失函数则变为分类任务的交叉熵:
3、GLM系列
(1)GLM-130B
- 在GLM架构的基础上做了一些调整:
- 采用旋转位置编码(RoPE)
- 归一化:使用DeepNet的Post-LN
3.前馈网络:Gated Linear Unit(GLU) + GeLU作为激活函数
- 2022年11月,斯坦福大学大模型中心对全球30个主流大模型进行了全方位的评测,GLM-130B 是亚洲唯一入选的大模型。
- 在与 OpenAI、谷歌大脑、微软、英伟达、脸书的各大模型对比中,评测报告显示 GLM-130B 在准确性和恶意性指标上与 GPT-3 175B (davinci) 接近或持平,鲁棒性和校准误差在所有千亿规模的基座大模型(作为公平对比,只对比无指令提示微调模型)中表现不错。
2、ChatGLM
- 参考了 ChatGPT 的设计思路,在千亿基座模型 GLM-130B中注入了代码预训练,通过有监督微调(Supervised Fine-Tuning)等技术实现人类意图对齐。
- ChatGLM 能力提升主要来源于独特的千亿基座模型 GLM-130B。它是不同于 BERT、GPT-3 以及 T5 的架构,是一个包含多目标函数的自回归预训练模型。
3、ChatGLM-6B
- ChatGLM-6B 是一个具有62亿参数的中英双语语言模型。通过使用与 ChatGLM相同的技术,ChatGLM-6B 初具中文问答和对话功能,并支持在单张 2080Ti 上进行推理使用,有如下特点:
- 充分的中英双语预训练:ChatGLM-6B 在 1:1 比例的中英语料上训练了 1T 的 token 量,兼具双语能力。
- 优化的模型架构和大小:吸取 GLM-130B 训练经验,修正了二维 RoPE 位置编码实现,使用传统FFN结构。6B(62亿)的参数大小,也使得研究者和个人开发者自己微调和部署 ChatGLM-6B 成为可能。
- 较低的部署门槛:FP16 半精度下,ChatGLM-6B 需要至少 13GB 的显存进行推理,结合模型量化技术,这一需求可以进一步降低到 10GB(INT8) 和 6GB(INT4), 使得 ChatGLM-6B 可以部署在消费级显卡上。
- 更长的序列长度:相比 GLM-10B(序列长度1024),ChatGLM-6B 序列长度达 2048,支持更长对话和应用。
- 人类意图对齐训练:使用了监督微调(Supervised Fine-Tuning)、反馈自助(Feedback Bootstrap)、人类反馈强化学习(Reinforcement Learning from Human Feedback) 等方式,使模型初具理解人类指令意图的能力。
4、ChatGLM2-6B
- ChatGLM2-6B在V1版本的基础上,主要做了以下改进:
- 更强大的性能:升级了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,相比于初代模型,ChatGLM2-6B 在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升,在同尺寸开源模型中具有较强的竞争力。
- 更长的上下文:基于FlashAttention技术,将基座模型的上下文长度(Context Length)由 ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练,允许更多轮次的对话。但当前版本的 ChatGLM2-6B 对单轮超长文档的理解能力有限,会在后续迭代升级中着重进行优化。
- 更高效的推理:基于Multi-Query Attention技术,ChatGLM2-6B 有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
- FlashAttention
- 在传统的Attention中,Q、K、V作为输入,大小为N×d,如下所示,在计算中需要存储中间值S和P到HBM中,这会极大占用高带宽显存HBM。
- FlashAttention旨在避免从 HBM(High Bandwidth Memory)中读取和写入注意力矩阵,以此来加速和节省内存。
- 计算softmax时候不需要全量input数据,可以分段计算;
- 反向传播的时候,不存储attention matrix (N^2的矩阵),只存储softmax归一化的系数。
- Multi-Query Attention
- 在计算自注意力时,只有Q是Multi-head,K和V都只有一个head。
- 计算复杂度不变,减小了空间复杂度。
- 减少的参数用来增加FFN的参数。