ChatGLM2在ChatGLM1的基础上进行了多方面的优化和改进,本文将会重点讲述其中的优化与收益。
一、主要收益
1. 长文本处理能力:通过FlashAttention技术,ChatGLM2扩展了文本处理长度限制,支持更长的上下文输入,从ChatGLM1的2K提升到了32K,使得模型能够处理更长、更复杂的文本数据。同时,对话阶段使用8K的上下文长度训练,允许更多轮次的对话。提升了模型根据用户反馈进行自我优化的可能性,进一步优化多轮对话质量。
2. 更低的显存占用:基于Multi-Query Attention(MQA)技术,ChatGLM2-6B实现了更高效的推理速度和更低的显存占用。
官方数据显示,推理速度相比初代提升了42%,在INT4量化下,6G显存支持的对话长度从1K提升到8K。
3. 数据集表现:ChatGLM2在多个数据集上均取得了大幅度的提升。据相关数据显示,ChatGLM2在MMLU(+23%)、CEval(+33%)、GSM8K(+571%)、BBH(+60%)等方面均展现出了更强的竞争力。这一成绩不仅证明了ChatGLM2的强大性能,也为其在各个领域的应用提供了更广阔的可能性。(3的内容,来自于GPT-4和文心一言,你还别说好用~)
二、核心技术
-
FlashAttention:优化GPU内存访问开销,通过tiling、重计算、核融合等方式提升注意力机制推理速度。详情,请见本人博客FlashAttention解析——大预言模型核心组建-CSDN博客
-
Multi-Query Attention(MQA):19年的技术,Query依旧分为多个Head,但是每个Head均共享一个Key和Value。详情,请见本人博客MQA(Multi-Query Attention)详解-CSDN博客
-
旋转位置编码(Rotary Position Encoding,简称RoPE)。ChatGLM2使用了新的位置编码。旋转位置编码是一种特殊的位置编码方式,它通过旋转嵌入(Rotary Embedding)来实现对位置信息的编码。这种编码方式能够有效地将位置信息融入到Transformer模型的输入中,帮助模型区分不同位置的token,从而更好地理解句子的语义结构。
-
ChatGLM2升级了基座模型,使用了GLM的混合目标函数。目标函数结合了自回归(Auto-Regression, AR)和自嵌入(Auto-Embedding, AE)两种预训练方法。
- 友好的P-tuning代码:仓库中提供了友好的P-tuning代码,使得fine-tuning模型变得非常方便。
三、总结
相比于GLM1,GLM2能够支持更长的输入、支持更多轮次的对话 并且在各项任务中均有更好的表现。主要使用的技术虽然已经发明,但逐渐被各种大预言模型接受。
关于FlashAttention、MQA的技术细节和代码解析,请移步本人博客