A Survey of Large Language Models
大语言模型综述系统性升级
Wayne Xin Zhao, Kun Zhou, Junyi Li, Tianyi Tang, Xiaolei Wang, Yupeng Hou, Yingqian Min, Beichen Zhang, Junjie Zhang, Zican Dong, Yifan Du, Chen Yang, Yushuo Chen, Zhipeng Chen, Jinhao Jiang, Ruiyang Ren, Yifan Li, Xinyu Tang, Zikang Liu, Peiyu Liu, Jian-Yun Nie, Ji-Rong Wen [Renmin University of China]
大语言模型综述:今年3月末,我们在arXiv网站发布了大语言模型综述文章《A Survey of Large Language Models》的第一个版本V1,该综述文章系统性地梳理了大语言模型的研究进展与核心技术,讨论了大量的相关工作。自大语言模型综述的预印本上线以来,受到了广泛关注,收到了不少读者的宝贵意见。在发布V1版本后的3个月时间内,为了提升该综述的质量,我们在持续更新相关的内容,连续进行了多版的内容修订(版本号目前迭代到V11),论文篇幅从V1版本的51页、416篇参考文献扩增到了V11版本的85页、610篇参考文献。V11版本是我们自五月中下旬开始策划进行大修的版本,详细更新日志请见文章结尾,已于6月末再次发布于arXiv网站。相较于V1版本,V11版本的大语言模型综述有以下新亮点:
新增了对LLaMA模型及其衍生模型组成的LLaMA家族介绍; 新增了具体实验分析,包括指令微调数据集组合方式实验以及部分模型综合能力评测; 新增了大语言模型提示设计提示指南以及相关实验,总结了提示设计的原则、经验; 新增了参数高效适配和空间高效适配章节,总结了大语言模型相关的轻量化技术; 增加了对于规划(planning)的相关工作介绍; 增补了许多脉络梳理内容,以及大量最新工作介绍; 此外,我们综述的中文翻译版本也在持续更新(针对v1版本进行了翻译,并持续更新) 论文链接:https://arxiv.org/abs/2303.18223 GitHub项目链接:https://github.com/RUCAIBox/LLMSurvey 中文翻译版本链接:https://github.com/RUCAIBox/LLMSurvey/blob/main/assets/LLM_Survey__Chinese_V1.pdf1. 引言
大语言模型目前已经成为学界研究的热点。我们统计了arXiv论文库中自2018年6月以来包含关键词”语言模型”以及自2019年10月以来包含关键词”大语言模型”的论文数量趋势图。结果表明,在ChatGPT发布之后,相关论文的数量呈现出爆发式增长,这充分证明大语言模型在学术界的影响力日益凸显,吸引了越来越多的研究者投入到这一领域。2. 总览
相较于小模型,大模型扩展了模型大小、训练数据大小和总计算量,显著提升了语言模型的能力。在总览章节中,我们新增了扩展法则(scaling law)的讨论,其中重点介绍了KM扩展法则和Chinchilla扩展法则,这两个法则对于理解大语言模型的性能提升提供了重要参考。 KM 扩展法则Chinchilla扩展法则
此外,我们新增了一部分关于OpenAI GPT系列语言模型的技术演进阶段的介绍(并附图)。这一部分将帮助读者了解GPT系列模型如何从最初的GPT开始,逐步演变成例如ChatGPT和GPT-4等更先进的大语言模型。 针对GPT系列的核心“预测下一个词”,还进一步加入了一些Ilya Sutskever的采访记录:3. 大语言模型相关资源
我们对于最新符合条件的模型进行了补充,持续更新了现有的10B+的模型图: 2023年2月,Meta发布了LLaMA大语言模型。受益于其强大的基座能力,LLaMA的发布引起了开源社区的对其进行扩展的热潮,大量的研究人员基于LLaMA进行指令微调或者继续预训练,从而催生了大量高质量的开源大语言模型。为了帮助读者了解LLaMA家族模型的发展脉络,我们增加了LLaMA家族模型的发展介绍,并绘制了一个简要的LLaMA家族演化图来展示LLaMA家族模型的发展历程,以及各个衍生模型之间的关联。4. 大语言模型预训练技术
在预训练技术章节,我们大幅补充了大模型预训练各方面的技术细节。在模型架构部分,我们补充了三种主流模型架构的对比图,包括因果编码器、前缀解码器和编码器-解码器架构,从而直观的展示这三种架构的差异和联系。 此外,我们详细补充了模型架构的各组件细节,包括分词、归一化方法、归一化位置、位置编码、注意力与偏置等等,并提供了Transformer架构多种配置的详细公式表。在最后的讨论章节,我们针对研究者广泛关注的长文本编码与生成挑战进行了讨论。 针对预训练数据的词元化问题(tokenization),我们补充介绍了BPE、WordPiece和Unigram三种常用算法:5. 大语言模型适配技术
在适配技术章节,我们扩充了指令微调的技术细节,包括指令收集方法、指令微调的作用、指令微调的结果和对应分析。首先,我们按照任务指令、聊天指令、合成指令三类分别介绍了指令数据的收集方法,并收集了的指令集合。
并且更新了指令集合的创建方式示意图:
其次,为了探究不同指令数据对模型性能的影响,我们给出了不同数据混合策略下指令微调模型的实验结果供读者参考。为了让读者更好地上手指令微调,还给出了指令微调大模型的资源参考表,并给出了指令微调的实用建议。 随着大语言模型的关注度日渐上升,如何更轻量地微调和使用大语言模型也成为了业界关注的热点,为此,我们新增参数高效适配章节和空间高效适配章节。在参数高效适配章节,我们介绍了常见的参数高效适配技术,包括Adapter Tuning、Prefix Tuning、Prompt Tuning、LoRA等等,并列举了近期结合这些技术在大模型上的具体实践。 同时由于大语言模型参数量巨大,在推理时需要占用大量的内存(显存),导致它们在实际应用中部署成本较高。为此,我们介绍了空间高效适配技术,讨论了如何通过模型压缩方法(模型量化)来减少大语言模型的内存占用,从而使其可以在资源有限的情况下使用。下面总结了我们讨论的一些核心结论:6. 大语言模型使用技术
我们将大语言模型在推理阶段如何执行上下文学习的机制分析划分为两类,即任务识别和任务学习。在任务识别部分,介绍了大语言模型如何从示例中识别任务并使用预训练阶段习得的知识加以解决;在任务学习部分,介绍了大语言模型如何从示例中学习解决新任务。 除了上下文学习和思维链提示,我们还介绍了另一类使用大语言模型的重要范式,即基于提示对复杂任务进行规划。根据相关工作,我们总结出了基于规划的提示的总体框架。这类范式通常包含三个组件:任务规划者、规划执行者和环境。随后,我们从规划生成,反馈获取和规划完善三个方面介绍了这一范式的基本做法。7. 大语言模型能力评估
考虑到大语言模型的条件语言生成能力日益增长,我们介绍了已有工作对大语言模型时代语言生成自动评测可靠性问题的讨论。对于大语言模型的高级能力,我们增补了最新的相关工作,并总结了大语言模型高级能力评测的常用数据集供读者参考。此外,随着大语言模型通用能力的提升,一系列工作提出了更具挑战性的基于面向人类测试的综合评测基准来评测大语言模型,我们增加了这些代表性评测基准的介绍。 在大语言模型时代,开源和闭源的大语言模型不断涌现,我们对部分热门开源模型和闭源模型进行了细粒度的能力评测,涵盖了评测章节总结的8大基础和高级能力对应的27个代表性任务。进一步,我们对开源模型和闭源模型的评测结果进行了细致的分析。 为了更好地说明大模型的现有问题,我们对于关键问题都进行了note形式的总结:8. 大语言模型提示设计使用指南
在大语言模型时代,提示成为了人与机器交互的重要形式。然而,如何编写好的提示是一门对技巧和经验要求很高的手艺。为了让读者能够快速上手大语言模型的提示设计,我们给出了一个实用的提示设计指南。我们详细介绍了提示的关键组件,并讨论了一些关键的提示设计原则。 一个完整的提示通常包含四个关键组成因素,即任务描述、输入数据、上下文信息和提示风格。为了更好的展示这些组成因素,我们给出了直观的提示样例表。增加了相关提示的示意图:
除此之外,我们还总结了一些关键的提示设计原则,包括清晰表述任务目标、将复杂任务进行分解以及使用模型友好的格式。进一步我们基于这些设计原则,展示了一系列有用的提示设计小贴士。 最后,我们结合多种常见任务,基于ChatGPT具体实验了不同提示对模型性能的影响,供读者在使用提示执行具体任务时参考。