ChatGLM
- 实现思想
- 模型结构
- 配置
- 迭代版本
ChatGLM-6B : 清华大学的一个开源、支持中英双语的对话语言模型,基于 General Language Model(GLM)架构,具有 62 亿参数
特点 :
- 优点 : INT4下,只要 6GB 显存 ; ChatGLM2-6B 序列长度达 32K ; 人类类意图对齐训练
- 缺点 : 模型容量小, 模型记忆和语言能力较弱 ; 多轮对话能力较弱
衍生应用 :
- LangChain : ChatGLM 应用 , 实现基于可扩展知识库的问答
- 闻达 : 基于 ChatGLM-6B 实现类 ChatPDF 功能
实现思想
GLM : 基于自回归空白填充目标的通用预训练框架
- 原理 : 输入文本中随机挖去一些连续的文本片段,然后训练模型按照任意顺序重建这些片段
具体实现思想:
- 原始文本
x=[x_1,x_2,...,x_6]
随机进行连续 mask,如 : mask掉[x_3]
和[x_5,x_6]
- 将
[x_3]
和[x_5,x_6]
替换为[MASK]
,并打乱 PartB 顺序。为了捕捉跨度之间的内在联系,才随机交换跨度的顺序 - GLM 自回归地生成 PartB。每个片段在输入时 , 前面加上
[S]
,在输出时 , 后面加上[E]
。表示不同片段之间的位置关系 - 自注意力掩码 (灰色区域被掩盖) : PartA 词语能自我看到 (图蓝色框) ,但不能看到 PartB。PartB 词语能看到 PartA 和 PartB 中的前面的词语 (图黄色 , 绿色框对应两个片段)
模型结构
ChatGLM : 采用 Transformer 的改进 Decoder 模块,又名 Prefix-Decoder
改动点 :
- embedding : embedding 层的梯度缩小10倍,减小了梯度的范数 , 提升训练稳定性
- layer normalization : 基于 DeepNorm 的
post layer norm
- 激活函数 : 用 GeGLU 替换 ReLU 激活函数
- 位置编码 : 用 旋转位置编码 ROPE 替换 绝对位置编码
配置
ChatGLM-6B 参数 :
配置 | 数值 |
---|---|
参数 | 6.2B |
隐藏层维度 | 4096 |
层数 | 28 |
注意力头数 | 32 |
训练数据 | 1T |
词表大小 | 130528 |
最大长度 | 2048 |
硬件要求 :
量化等级 | 最低GPU显存 (推理) | 最低GPU显存 (高效参数微调) |
---|---|---|
FP16(无量化) | 13GB | 14GB |
INT8 | 10GB | 9GB |
INT4 | 6GB | 7GB |
迭代版本
ChatGLM2-6B : 比第一代 , 改进 :
- 更强大的性能 : 在各项对话任务中性能提升了整整571%
- 更长的上下文 : 支持 32K 的上下文长度,而 ChatGLM-6B 只能支持2K
- 更高效的推理 : 采用 FlashAttention 技术,在更低的显存资源下以更快的速度进行推理
ChatGLM3-6B : 比前两代 , 改进 :
- 多模态理解能力 : 在 10 余个国际标准图文评测集上取得 SOTA
- 代码增强模块 : 根据用户需求生成代码并执行,自动完成数据分析、文件处理等复杂任务
- 网络搜索增强 : 能自动根据问题在互联网上查找相关资料并在回答时提供参考相关文献或者文章链接