🪧 样例演示 • ⏬ 在 GitHub 下载模型 • ✉️ 邮箱 • 📃 论文 (Comming soon) GLM-130B 是一个开源开放的双语(中文和英文)双向稠密模型,拥有 1300 亿个参数,模型架构采用通用语言模型(GLM1)。它旨在支持仅在一台 DGX-A100(40G * 8)或 DGX-1(含 32G V100 * 8)服务器上对千亿规模的参数进行高效推理。截至2022年7月3日,GLM-130B 已经对超过 4000 亿个文本标识符(中文和英文各 2000 亿)进行了训练,它有以下独特优势: 双语:同时支持中文和英文。 任务表现(英文): 在 LAMBADA2 上优于 GPT-3 175B3(+4.0%)、OPT-175B4(+5.5%)和 BLOOM-176B(+13.0%),在 MMLU5 上略优于 GPT-3 175B(+0.9%)。 任务表现(中文):在 7 个零样本 CLUE6 数据集(+24.26%)和5个零样本 FewCLUE7 数据集(+12.75%)上明显优于 ERNIE TITAN 3.0 260B 8。 快速推理:支持用一台 A100 服务器使用 SAT 和 FasterTransformer 进行快速推理(速度最高可达2.5倍)。 可复现性:所有的结果(超过30个任务)都可以用我们开源的代码和模型参数轻松复现。 多平台:支持在 NVIDIA、Hygon DCU、Ascend 910 和 Sunway 处理器上进行训练与推理 图 1. GLM-130B 的任务表现:与 MMLU 和 LAMBADA 上类似规模的模型相比。(请注意,目前这些均为中间结果,我们尽力做出公平的评估,并欢迎大家一起参与评估。) GLM-130B 的模型参数和推理代码在我们的 GitHub 仓库 公开提供。预训练和微调的代码以及研究论文即将发布。 GLM-130B:构思 2021年12月,我们在清华大学知识工程实验室举行了一次头脑风暴,构思了 GLM-130B 项目。我们讨论认为,预训练一个开放的高水平的语言模型具有重大意义,尤其是中英双语语言模型。尽管 GPT-33 是这类工作的先驱,但其并不为世界上绝大多数人所能获取;此外,它也只是一个英文语言模型。因此,我们决定启动 GLM-130B 项目(代号 “千亿”)。值得注意的是,我们去年建立的“悟道1.75T模型”是一个含 480 个专家混合(MoE)的稀疏模型,而非 GPT-3 那样的稠密模型;因此,构建一个稠密的千亿模型将是一个全新的挑战。我们的目标是训练一个在下游任务上具有高表现水平的双语预训练稠密模型,并将其开放给世界上的每一个人——每个人都可以在任何地方下载它,且都仅需一台带有合适的 GPU 的服务器来使用它。 尽管有如此宏伟的目标,我们很快发现自己面临着尴尬的局面: 缺乏计算资源:没有组织和机构愿意赞助如此大的项目,并免费将其公开。 缺乏合适的预训练算法:尽管 GPT-3 取得了成功,但其用于预训练的代码和训练中遇到的问题和解决方案并未公开。 缺乏快速推理解决方案:由于我们希望将模型发放给所有人,因此我们需要设计快速推理解决方案,允许以低计算资源来运行模型推理。 关于预训练模型架构,我们最终选择了 GLM1(ACL'22),因为它在我们的实践中的表现十分优异。经过几轮讨论和探索,我们最终决定训练一个 1300 亿参数的 GLM 模型。这样规模的模型,能够仅在一台 DGX-A100(40G * 8)服务器上就进行单机快速推理。 我们的第一次具体尝试始于 2022 年 1 月,当时我们得到了一个小型的 GPU 服务商的赞助,用于测试运行。然而,我们很快意识到,我们大大低估了在如此规模(>100B)下预训练一个模型的技术难度:预训练一个高水平的 100B 规模的模型,与训练一个没有具体水平要求的 10B 规模的模型是完全不同的。由于频繁的随机硬件故障、模型梯度爆炸、算法中意外的过多内存使用、新的 Megatron 和 DeepSpeed 框架中 3D 流水线的调试、无法从优化器状态中恢复、进程间 TCP 响应受阻,以及许多许多意外的 “bug”,项目被多次推迟。清华 PACMAN 团队在这段困难时期向我们伸出了援手,我们一起成功地修复了大部分的 “bug”。 到了 3 月份,我们仍然缺少计算资源,但幸运的是我们得到了在其他几个平台上进行测试的机会,包括 Ascend 910、Hygon DCU、NVIDIA 和 Sunway。对我们来说,眼前的最大的挑战是,如何使我们的训练代码适应这些不同的平台,因为它们底层的算子相当不同。此外,它还引入了许多新的问题:不支持大维度向量快速计算的 element-wise 算子,以及阻碍收敛的各种问题——输入嵌入层的过大梯度,Post-LN、Pre-LN9 和Sandwich-LN10 的不稳定性,Dataloader 状态种子恢复,以及 Softmax 和 Attention 的计算精度选择——当然还包括我们自己犯的种种错误。在所有热心的合作伙伴的巨大帮助下,我们终于使我们的预训练算法可以在所有的平台上运行——这是一项令人瞩目的成就。图 2 中的 GLM-130B 的时间轴,涵盖了截至目前我们所遇到和解决的大部分问题。 图 2. 截至2022年7月31日,训练GLM-130B遇到和解决的主要问题的时间轴 4月26日,我们得到了来自 Zhipu.AI(智谱AI)——一家旨在“让机器像人一样思考”的人工智能初创公司——慷慨的计算赞助。经过又一个星期的测试,我们终于在 5 月 6 日在其 96 台 DGX-A100(40G*8)服务器上启动了 GLM-130B 模型的训练。此外,智谱还派出了一个工程师团队,协助评估预训练模型,并正在建立一个演示网站。 整个预训练阶段横跨两个月,在此期间,我们开始考虑训练完成后的推理解决方案,并在只有一台 V100(32G*8)的服务器上实现了合理速度的 130B 模型推理。我们与来自清华 NLP(BMInf)的合作伙伴一起,正在探索在一台 RTX-3090 服务器(24G * 8)上使用 GLM-130B 进行推理的可能性,这将真正使尽可能多的人能够使用 100B 规模的模型。我们将继续进一步降低资源要求,并随时向大家公布这一重要工作项目的最新情况。 GLM-130B:任务表现 截至 2022 年 7 月 3 日,GLM-130B 模型已经在超过 4000 亿个文本标识符上进行了训练,其少样本学习的性能达到并超过了被广泛采用的大规模多任务语言理解基准(MMLU)5 的 GPT-3 的水平(参见本博客顶部的图 1(左))。具体来说,GLM-130B 的 5 样本小样本学习性能在训练了 400B(双语)文本标识符后达到了 44.8% 的准确率。 除了语言理解任务外,我们还在LAMBADA2 上考察了 GLM-130B 的语言建模能力,这是一项具有挑战性的零样本末位单词预测任务,被广泛用于大规模语言模型的性能评估。图1(右)展示了相关模型的零样本性能(OPT4 和 BLOOM 的中间结果取自 BLOOM 的评估库)。GLM-130B 在零样本学习的 LAMBADA(En)上达到了 80.2% 的准确率,而 GPT-3 175B 为 76.2%,PaLM 540B 提供的 SOTA 为 77.9%11。 由于 GLM-130B 是一个双语(英文和中文)语言模型,我们还在两个中文NLP基准上评估它的零样本性能,即 CLUE6(中文语言理解评估)和 FewCLUE7。值得注意的是,中文的下游数据集并不包括在多任务指令预训练中。GLM-130B 相比目前最大的中文语言模型 ERNIE 3.0 Titan 260B8,在所有数据集上都产生了很好的表现。 图 3. GLM-130B 在部分 CLUE 和 FewCLUE 基准数据集的零样本性能。 最后,我们仍在继续对 GLM-130B 进行广泛的下游任务测试,包括 SuperGLUE12、Big-bench13 等等。随着实验的进行,我们将及时向大家汇报结果。 GLM-130B:模型 在这一部分,我们将简单介绍一下GLM-130B模型背后的技术。更多的细节和源代码可以在项目的 GitHub 仓库 中找到。 GLM-130B 是一个双语(中文和英文)的双向语言模型,有 1300 亿个参数,在超过 4000 亿个文本标识符上训练。它是基于通用语言模型(GLM1)架构。GLM-130B 利用自回归空白填充作为其主要的预训练目标。以图4中的句子为例,它掩盖了随机的连续文本区间(例如,“complete unkown”),并对其进行自回归预测。 图 4. 例子:GLM-130B 在语料“Like a complete unknown, like a rolling stone”进行自回归填空预训练 在实操中,GLM-130B 使用两种不同的掩码标识符([MASK] 和 [gMASK]),分别用于短文和长文的生成。此外,它还采用了新提出的 Transformer 架构技术,包括旋转位置编码(RoPE)14、DeepNorm15 层规范化和高斯误差 GLU(GeGLU)16 17。所有这些设计都为这个大规模的语言模型的高水平表现做出了贡献。最终,GLM-130B 模型含有 70 层 Transformer,隐层维度维度 12,288,最大序列长度2,048,以及一个基于 icetk 的 150,000 个标识符的双语分词器。 在这种模型结构下,GLM-130B 对超过 4000 亿个双语标记(2000 亿英文和 2000 亿中文标记)进行了预训练。它的预训练目标由两部分组成。第一部分(95%)是自我监督的预训练,利用公开的大规模语料库(即 Pile18(英文)和 WudaoCorpus19(中文))以及其他一些较小的中文语料库的自回归空白填充。第二部分(5%)是在 T0++20 和 DeepStruct21 的构成的 70 个不同数据集的抽样子集上进行多任务指令预训练,格式为基于指令的多任务多提示序列到序列的生成。这种设计使 GLM-130B 具有强大的能力,可以在其他数据集上进行了零样本学习,以及从英文到中文的零样本迁移。 最后,无论是从研究、工程、硬件、部署和计算资源的角度,训练 GLM-130B 都是一个巨大的挑战。在硬件和模型的测试、训练和评估过程中,GLM-130B 团队的学生负责人——曾奥涵和刘潇——付出了巨大的努力,并在各种压力下,夜以继日致力于使这个项目取得成功。在此,我们向曾奥涵、刘潇、整个技术团队和我们慷慨的 GPU 赞助商表示诚挚的谢意。 下一步工作 GLM-130B 的开发仍在继续。我们邀请世界各地的用户和合作者加入它的开放社区,以推动大型预训练模型和人工智能的发展。目前,我们正致力于以下方向的研究: GLM-130B 的进一步训练:最近的研究表明,大规模语言模型通常训练不足22。根据Chinchilla 的估计,一个 130B 语言模型的最佳训练标识符训练量应该是 4.0T 左右,比我们目前所训练的数量要大 10 倍。我们正在寻找赞助商和计算平台来支持 GLM-130B 的进一步训练。 INT8 量化:GLM-130B 以 FP16 精度进行训练,总共需要 260G 的 GPU 内存来存储模型权重。DGX-A100 服务器提供了 320G 的 GPU 内存,所以它很适合 GLM-130B。然而,A100 的价格对于绝大多数用户来说,仍然是无法承担的。我们正在对 GLM-130B 模型进行 INT8 量化,以减少推理内存的需求,使 GLM-130B 有可能在具有较小 GPU 内存的服务器上运行(例如,8 * RTX 3090 GPU)。 混合专家(MoE)方法以扩展模型规模:混合专家模型(Mixture-of-Experts, MoE)已被证明是扩展模型参数的有效方法 23 24,然而,MoE模型在相同规模下的表现并不如稠密模型好。我们之前的工作——“悟道1.75T”在基于4.8B的稠密模型,将专家数量扩展到480个以达到1.75万亿的参数。基于我们的高性能稠密模型 GLM-130B 的 1300 亿个参数,我们正在尝试使用混合专家技术,如 FastMoE 25 与其加速版本 FasterMoE 来进一步扩大它的规模,以达到数万亿甚至十万亿的参数,从而获得更高的性能表现。 参数高效 P-Tuning:尽管大型语言模型具有卓越的零样本和少样本学习能力,在下游数据集上调整它们可以进一步提高它们在特定任务上的性能。然而,它们数量庞大的参数在微调中造成了巨大的冗余和成本。基于我们以前的工作 P-Tuning26 和 P-Tuning v227,我们正在努力尝试将它们应用到 GLM-130B 中,以实现参数高效的迁移学习。 致谢 这一项目由国家自然科学基金国家杰出青年科学基金项目(No. 61825602)支持。 学生负责人 曾奥涵(清华大学计算机系知识工程实验室),刘潇(清华大学计算机系知识工程实验室) 技术贡献 清华大学计算机系知识工程实验室 — the Knowledge Engineering Group at Tsinghua 杜政晓,丁铭,郑勤锴,赖瀚宇,汪子涵,杨卓毅,于济凡,张笑涵,郑问迪,夏箫,徐逸凡,谭咏霖,东昱晓,唐杰 清华大学计算机系 PACMAN 实验室 — the Parallel Architecture & Compiler technology of Mobile, Accelerated, and Networked systems Group at Tsinghua 马子轩,何家傲,孙桢波,翟季冬,陈文光 清华大学计算机系自然语言处理实验室(BMInf) — the Natural Language Processing Group at Tsinghua 曾国洋,韩旭,赵威霖,刘知远 智谱AI — an AI startup that aims to teach machines to think like humans 薛宇飞,王山,陕杰才,姜皓瀚,郭振钢,张鹏 Computation Sponsor 智谱AI 项目总负责 唐杰(清华大学计算机系知识工程实验室 & 北京智源人工智能研究院) Du, Zhengxiao, Yujie Qian, Xiao Liu, Ming Ding, Jiezhong Qiu, Zhilin Yang, and Jie Tang. “GLM: General Language Model Pretraining with Autoregressive Blank Infilling.” In Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pp. 320-335. 2022. ↩︎ ↩︎ ↩︎ Paperno, Denis, Germán Kruszewski, Angeliki Lazaridou, Quan Ngoc Pham, Raffaella Bernardi, Sandro Pezzelle, Marco Baroni, Gemma Boleda, and Raquel Fernández. “The LAMBADA dataset: Word prediction requiring a broad discourse context.” arXiv preprint arXiv:1606.06031 (2016). ↩︎ ↩︎ Brown, Tom, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared D. Kaplan, Prafulla Dhariwal, Arvind Neelakantan et al. “Language models are few-shot learners.” Advances in neural information processing systems 33 (2020): 1877-1901. ↩︎ ↩︎ Zhang, Susan, Stephen Roller, Naman Goyal, Mikel Artetxe, Moya Chen, Shuohui Chen, Christopher Dewan et al. “Opt: Open pre-trained transformer language models.” arXiv preprint arXiv:2205.01068 (2022). ↩︎ ↩︎ Hendrycks, Dan, Collin Burns, Steven Basart, Andy Zou, Mantas Mazeika, Dawn Song, and Jacob Steinhardt. “Measuring Massive Multitask Language Understanding.” In International Conference on Learning Representations. 2020. ↩︎ ↩︎ Xu, Liang, Hai Hu, Xuanwei Zhang, Lu Li, Chenjie Cao, Yudong Li, Yechen Xu et al. “CLUE: A Chinese Language Understanding Evaluation Benchmark.” In Proceedings of the 28th International Conference on Computational Linguistics, pp. 4762-4772. 2020. ↩︎ ↩︎ Xu, Liang, Xiaojing Lu, Chenyang Yuan, Xuanwei Zhang, Huilin Xu, Hu Yuan, Guoao Wei et al. “Fewclue: A chinese few-shot learning evaluation benchmark.” arXiv preprint arXiv:2107.07498 (2021). ↩︎ ↩︎ Wang, Shuohuan, Yu Sun, Yang Xiang, Zhihua Wu, Siyu Ding, Weibao Gong, Shikun Feng et al. “Ernie 3.0 titan: Exploring larger-scale knowledge enhanced pre-training for language understanding and generation.” arXiv preprint arXiv:2112.12731 (2021). ↩︎ ↩︎ Xiong, Ruibin, Yunchang Yang, Di He, Kai Zheng, Shuxin Zheng, Chen Xing, Huishuai Zhang, Yanyan Lan, Liwei Wang, and Tieyan Liu. “On layer normalization in the transformer architecture.” In International Conference on Machine Learning, pp. 10524-10533. PMLR, 2020. ↩︎ Ding, Ming, Zhuoyi Yang, Wenyi Hong, Wendi Zheng, Chang Zhou, Da Yin, Junyang Lin et al. “Cogview: Mastering text-to-image generation via transformers.” Advances in Neural Information Processing Systems 34 (2021): 19822-19835. ↩︎ Chowdhery, Aakanksha, Sharan Narang, Jacob Devlin, Maarten Bosma, Gaurav Mishra, Adam Roberts, Paul Barham et al. “Palm: Scaling language modeling with pathways.” arXiv preprint arXiv:2204.02311 (2022). ↩︎ Wang, Alex, Yada Pruksachatkun, Nikita Nangia, Amanpreet Singh, Julian Michael, Felix Hill, Omer Levy, and Samuel Bowman. “Superglue: A stickier benchmark for general-purpose language understanding systems.” Advances in neural information processing systems 32 (2019). ↩︎ Pettee, Mariel, Chase Shimmin, Douglas Duhaime, and Ilya Vidrin. “Beyond imitation: Generative and variational choreography via machine learning.” arXiv preprint arXiv:1907.05297 (2019). ↩︎ Su, Jianlin, Yu Lu, Shengfeng Pan, Bo Wen, and Yunfeng Liu. “Roformer: Enhanced transformer with rotary position embedding.” arXiv preprint arXiv:2104.09864 (2021). ↩︎ Wang, Hongyu, Shuming Ma, Li Dong, Shaohan Huang, Dongdong Zhang, and Furu Wei. “Deepnet: Scaling transformers to 1,000 layers.” arXiv preprint arXiv:2203.00555 (2022). ↩︎ Hendrycks, Dan, and Kevin Gimpel. “Gaussian error linear units (gelus).” arXiv preprint arXiv:1606.08415 (2016). ↩︎ Dauphin, Yann N., Angela Fan, Michael Auli, and David Grangier. “Language modeling with gated convolutional networks.” In International conference on machine learning, pp. 933-941. PMLR, 2017. ↩︎ Gao, Leo, Stella Biderman, Sid Black, Laurence Golding, Travis Hoppe, Charles Foster, Jason Phang et al. “The pile: An 800gb dataset of diverse text for language modeling.” arXiv preprint arXiv:2101.00027 (2020). ↩︎ Yuan, Sha, Hanyu Zhao, Zhengxiao Du, Ming Ding, Xiao Liu, Yukuo Cen, Xu Zou, Zhilin Yang, and Jie Tang. “Wudaocorpora: A super large-scale chinese corpora for pre-training language models.” AI Open 2 (2021): 65-68. ↩︎ Sanh, Victor, Albert Webson, Colin Raffel, Stephen Bach, Lintang Sutawika, Zaid Alyafeai, Antoine Chaffin et al. “Multitask Prompted Training Enables Zero-Shot Task Generalization.” In The Tenth International Conference on Learning Representations. 2022. ↩︎ Wang, Chenguang, Xiao Liu, Zui Chen, Haoyun Hong, Jie Tang, and Dawn Song. “DeepStruct: Pretraining of Language Models for Structure Prediction.” In Findings of the Association for Computational Linguistics: ACL 2022, pp. 803-823. 2022. ↩︎ Hoffmann, Jordan, Sebastian Borgeaud, Arthur Mensch, Elena Buchatskaya, Trevor Cai, Eliza Rutherford, Diego de Las Casas et al. “Training Compute-Optimal Large Language Models.” arXiv preprint arXiv:2203.15556 (2022). ↩︎ Fedus, William, Barret Zoph, and Noam Shazeer. “Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity.” Journal of Machine Learning Research 23, no. 120 (2022): 1-39. ↩︎ Zoph, Barret, Irwan Bello, Sameer Kumar, Nan Du, Yanping Huang, Jeff Dean, Noam Shazeer, and William Fedus. “Designing effective sparse expert models.” arXiv preprint arXiv:2202.08906 (2022). ↩︎ He, Jiaao, Jiezhong Qiu, Aohan Zeng, Zhilin Yang, Jidong Zhai, and Jie Tang. “Fastmoe: A fast mixture-of-expert training system.” arXiv preprint arXiv:2103.13262 (2021). ↩︎ Liu, Xiao, Yanan Zheng, Zhengxiao Du, Ming Ding, Yujie Qian, Zhilin Yang, and Jie Tang. “GPT understands, too.” arXiv preprint arXiv:2103.10385 (2021). ↩︎ Liu, Xiao, Kaixuan Ji, Yicheng Fu, Zhengxiao Du, Zhilin Yang, and Jie Tang. “P-tuning v2: Prompt tuning can be comparable to fine-tuning universally across scales and tasks.” arXiv preprint arXiv:2110.07602 (2021). ↩︎