自清华大学数据挖掘实验室(THUDM)3月开源ChatGLM-6B已经过去了3个多月,最近他们又带来了性能全面提升的“船新”版本-ChatGLM2-6B。别看名字变化小,其实更新的模型性能是又有量又实用。不了解ChatGLM的小伙伴可以看我这篇文章(ChatGLM:一个开源的中英双语大语言模型)。
更新要点
惯例,我们先总结下本次的更新要点:
上下文从2k扩展到了32k:这个更新在整个LLM开源届都是相当炸裂,目前绝大多数开源模型的上下文都只有2k,而GPT3.5已经升级到了16k,GPT4目前支持8K,Claude的特殊版本极限可以支持100k。因此仅就多轮对话能力来讲,开源模型和私有模型还存在代差。而这次ChatGLM2的上下文直接提升到了32k,直接到了私有模型水平,无疑是极大的提高了模型的多轮对话能力。当然,不出意外,很快开源模型的上下文能力就会有整体提升了,具体原因后面再展开说。
性能极大提升,C-Eval超GPT4:ChatGLM2-6B 使用了 GLM 的混合目标函数,经过了 1.4T 中英标识符的预训练与人类偏好对齐训练,基座模型获得了极大的提升。在 MMLU(+23%)、CEval(+33%)、GSM8K(+571%) 、BBH(+60%)等数据集上的性能取得了大幅度的提升。这里尤其耀眼的是CEval(这是一个由上海交通大学语言智能技术实验室提出的中文基础模型评估套件)成绩,ChatGLM2-6B目前已经超越了GPT4,跃居榜首。这里简单解释下,CEval并不是一个没有含金量的大模型评估套件,相反在中文评估能力上CEval还是我认为目前最权威的指标之一。所以ChatGLM2-6B的CEval成绩超过GPT4确实提升巨大。但是,经过实际体验后,客观的说ChatGLM2-6B依然还和GPT4有一定差距,但是提升也确实很大。这并不是说CEval评估的不准,主要是一个评估的侧重点问题,这个也放到后续具体讨论。
推理效率提高:在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。说白了,使用门槛进一步降低了,本来ChatGLM就是入门显卡(如3060TI)玩大模型的最好选择,现在ChatGLM2-6B成了最好的上位替代。
有条件的商业开源:ChatGLM2-6B 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用。虽然还是有条件的,但是还是开了商用的口子,下次说不定就完全商用开源了,在国内环境下,还是非常有魄力的。
简单谈谈GLM
这里我觉得还是有必要在简单介绍下GLM,虽然它和GPT都姓G,但实际上并不是一家子。GLM是清华大学和腾讯AI Lab联合提出的一种基于自回归空白填充的通用语言模型(GLM)。GLM的核心思想是,在预训练阶段,将输入文本中的一些连续或不连续的片段替换为特殊的空白符号,并按照任意顺序预测这些空白处的内容。这样做有两个好处:一是可以增加模型对文本结构和语义的理解能力;二是可以通过调整空白的数量和长度,适应不同类型的任务。例如,如果空白很少且很短,那么就相当于进行掩码语言建模(MLM),适合NLU任务;如果空白很多且很长,那么就相当于进行完全自回归建模(ARM),适合无条件生成任务;如果空白在文本前后分布不均匀,那么就相当于进行部分自回归建模(PARM),适合有条件生成任务。
GLM在多个数据集和任务上进行了实验验证,结果显示,在相同的模型大小和数据下,GLM均优于BERT、T5和GPT,并且使用比BERT Large少1.25倍的参数,就能达到单个预训练模型的最佳性能。这证明了GLM对不同下游任务的泛化能力和效率。
GLM本身模型构架上的优势还是很明显的,ChatGLM-6B 的性能几乎同等于很多开源的13B的模型。
更长的上下文
本次ChatGLM2-6B上下文从2k扩展到了32k主要是应用了一种叫做 FlashAttention 的技术。flash-attention是一种快速、高效、可扩展的注意力机制,它利用了一种称为哈希感知(hash-aware)的技术,可以根据它们的相似性将输入序列中的元素分配到不同的桶(bucket)中。这样,模型只需要计算桶内元素之间的注意力权重,而不是整个序列。这大大减少了计算量和内存需求,同时保持了较高的精度和表达能力。
ChatGLM2-6B虽然可以支持32k,但是在对话阶段使用 的8K 的上下文长度训练,因此其多轮对话能力大大增强了,但是对单轮超长文档的理解能力依然有限。整体测试下来确实比大部分开源模型的体感要强,尤其是在长文本问答和总结方面,优势明显。
但是 ,本次ChatGLM2-6B长上下文的先发优势可能也无法维持太久,因为最新在上下文领域的新技术也是层出不穷。尤其是Meta的新作《Extending Context Window of Large Language Models via Positional Interpolation》,该论文提出了一种位置插值(Position Interpolation,PI)的方法,可以在最小的微调(1000步以内)的情况下,将基于RoPE的预训练LLMs(如LLaMA模型)的上下文窗口大小扩展到32768,并保持整体性能几乎不变。不出意外,LLaMA家族的众多模型很快将会具备32k上下文能力。
性能极大提升
这里我直接放ChatGLM2-6B官方的对比,可以看出来本次版本的性能提升还是非常显著的。
数理逻辑
知识推理
长文档理解
C-Eval
这里还是再稍微多介绍几句C-Eval。C-Eval数据集包含13948个多选题,涵盖52个不同的学科领域,如语文、数学、物理、化学、生物、历史、地理、政治、经济、法律等。这些题目分为四个难度等级,分别对应小学、初中、高中和大学的教育阶段。每个题目都有四个选项,其中一个是正确答案,另外三个是干扰项。每个题目还有一个问题类型标签,表示该题目考察的是事实性知识、推理能力、应用能力还是创新能力。
C-Eval数据集旨在全面地评估基础模型在中文领域的表现,包括语言理解、知识获取、逻辑推理和跨领域迁移等方面。该数据集已经在Hugging Face平台上公开发布,并提供了一个可视化的网页,方便用户浏览和使用。该数据集也已经被用于测试了多个主流的基础模型,如BERT、RoBERTa、ERNIE等,发现它们在该数据集上的表现还有很大的提升空间。
下图是目前最新的C-Eval测评结果榜单:
首先,从测试结果上看,我认为ChatGLM2-6B超越GPT4是比较真实的,大家从榜单的具体成绩可以看出,ChatGLM2-6B主要赢在Social Science,Humanities 和 Others 这三项上。而这三项实际上和训练的语料关系是比较大的,其中的很多项目是和国家的国情相关的,而非世界通识。因此,虽然我们不知道GPT4的中文语料占比,但是按照GPT3.5来推测的话,中文语料应该不会超过2%。而ChatGLM2-6B的语料是以中文为主的,所以在这几项上ChatGLM2-6B也并不足为奇。
其次,ChatGLM2-6B的C-Eval评分高并不代表其中文能力已经超过GPT4了,因为大家看到了C-Eval测试其实就是单选题。做题做的好只能说明中文知识储备丰富,并不等于中文能力更强。这和我个人的测试体感也是相符的,即ChatGLM2-6B确实进步很大,但也就是类似Vicuna-13B英文这个级别的能力。如果加上多轮对话和更复杂的任务,GPT4还是完胜。
推理效率提高
加速推理方面,ChatGLM2-6B主要应用了Multi-Query Attention技术。Multi-Query Attention 是一种新颖的注意力机制,它可以有效地提高 Transformer 模型的推理速度,同时保持高质量的序列表示。它的核心思想是将多个注意力头的键和值合并为一个共享的张量,从而减少了内存访问的开销。这样,每个注意力头只需要计算自己的查询向量,然后与共享的键和值进行点积运算,得到输出向量。Multi-Query Attention 可以看作是一种权衡,它牺牲了一些模型的容量和表达能力,换取了更快的推理速度和更低的资源消耗。在官方的模型实现下,推理速度相比初代提升了 42%,INT4 量化下,6G 显存支持的对话长度由 1K 提升到了 8K。
本次的效率提升还是挺大的,确实降低了其使用门槛。再加上其又放松了模型的开源限制,目前是可以有限制的商用的。因此,其实在很多类似客户或者文档问答的任务中,目前已经可以考虑用ChatGLM2-6B来代替GPT3.5了。
结语
ChatGLM2-6B的发布无疑震撼了表面歌舞升平,实际死气沉沉的国产开源LLM社区。希望在ChatGLM2-6B的鲶鱼效应下,我们能看到越来越多,也越来越好的国产开源LLM。
!