综述 | 大型语言模型全盘点!从T5到GPT-4( 三 )


在第三节中 , 研究者主要总结了开源的模型检查点或 API、可用的语料库以及对 LLM 有用的库 。下表 1 为近年来百亿参数以上大模型的统计数据 。
下表 2 列出了常用的数据源 。
预训练
预训练建立了 LLMs 的能力基础 。通过对大规模语料库的预训练 , LLMs 可以获得基本的语言理解和生成技能 。在这个过程中 , 预训练语料库的规模和质量是 LLMs 获得强大能力的关键 。此外 , 为了有效地预训练 LLMs , 模型架构、加速方法和优化技术都需要精心设计 。在第四节中 , 研究者首先在第 4.1 节讨论了数据的收集和处理 , 然后在第 4.2 节介绍了常用的模型架构 , 最后在第 4.3 节介绍了稳定和有效优化 LLMs 的训练技术 。
数据收集
要开发一个强大的 LLM , 从各种数据源中收集大量的自然语言语料至关重要 。现有 LLMs 主要利用各种公共文本数据集作为预训练语料库 。下图 2 列出了现有 LLMs 的预训练数据源分布 。
收集大量文本数据后 , 必须对它们进行预训练以构建预训练语料库 , 包括去噪、去冗余、去除不相关和潜在有毒的数据 。下图 3 展示了为 LLMs 预训练数据的预处理。

综述 | 大型语言模型全盘点!从T5到GPT-4

文章插图
架构
在本节中 , 研究者回顾了 LLMs 的架构设计 , 即主流架构 , 预训练目标和细节配置 。下表 3 列出了几个具有代表性的 LLMs 的模型卡片以及公开的详细信息 。
由于出色的并行化性和容量 ,  架构已成为开发各种 LLM 的  , 使得将语言模型扩展到数千亿个参数成为可能 。一般来说 , 现有 LLMs 的主流架构大致可以分为三大类 , 即编码器 - 解码器、临时解码器和前缀解码器 。
自出现以来 , 各种改进被相继提出以提高其训练稳定性 , 性能和计算效率 。在这一部分中 , 研究者讨论了四个主要部分的相应配置 , 包括归一化、位置编码、激活函数、注意力机制和偏置 。
预训练起着十分关键的作用 , 它将一般知识从大规模语料库编码到大规模模型参数中 。对于训练 LLMs , 有语言建模和去噪自编码两个常用的预训练任务 。
模型训练
在这一部分中 , 研究者回顾了训练 LLMs 的重要设置 , 技术和训练 LLMs 技巧 。
对于 LLMs 的参数优化 , 研究者提出了常用的批量训练、学习率、优化器和训练稳定性的设置 。
随着模型和数据规模的增加 , 在有限的计算资源下有效地训练 LLMs 模型已经变得困难 。特别是 , 需要解决两个主要技术问题 , 例如通过输入增加训练和将更大的模型加载到 GPU 内存中 。这一部分回顾了现有工作中几种广泛使用的方法 , 以解决上述两个挑战 , 即 3D 并行、ZeRO 和混合精度训练 , 并就如何利用它们进行训练给出了建议 。
LLMs 的适应性调优
经过预训练 , LLMs 可以获得解决各种任务的通用能力 。然而越来越多的研究表明 , LLMs 的能力可以根据具体目标进一步调整 。在第五节中 , 研究者详细介绍了调整预训练 LLMs 的两个主要方法 , 即指令调优( )和对齐调优( ) 。前一种方法主要是为了提高或解锁 LLMs 的能力 , 而后一种方法则是为了使 LLMs 的行为与人类的价值观或偏好一致 。
指令调优
本质上 , 指令调优是在自然语言形式的格式化实例集合上微调预训练 LLMs 的方法 , 这与监督微调和多任务提示训练高度相关 。为了执行指令调优 , 我们首先需要收集或构建指令格式的实例 。然后 , 我们通常使用这些格式化实例以监督学习方式微调 LLMs(例如 , 使用序列到序列损失进行训练) 。在指令调整后 , LLMs 可以展示出卓越的能力 , 泛化出能解决未见任务的能力 , 即使在多语言环境中也是如此 。