2023 年 6 月,人大和蒙特利尔大学发表了论文《A Survey of Large Language Models》。本文继续介绍 LLM 的预训练和自适配技术。
预训练
数据收集
相较于小规模语言模型,LLM 对模型预训练的高质量数据要求更高,其模型能力很大程度上依赖于预训练语料及其预处理方式。
要开发一个功能强大的 LLM,关键是要从各种数据源收集大量自然语言语料库。现有的 LLM 主要利用各种公共文本数据集作为预训练语料库。许多代表性 LLM 的预训练数据源分布广泛。
收集大量文本数据后,对数据进行预处理对于构建预训练语料库至关重要,尤其是删除噪声、冗余、不相关和潜在有害数据,这些数据可能会极大地影响 LLM 的容量和性能。
LLM 预训练数据的典型预处理流程包括质量滤波、去重、隐私减弱、tokenization 和准备预处理等。与小规模的 PLM 不同,由于对计算资源的需求巨大,通常无法多次迭代 LLM 的预训练。因此,在训练 LLM 之前构建一个准备充分的预训练语料库尤为重要。
架构
下表显示公开资料中几个 LLM 的架构信息(模型卡)。
由于出色的可并行性和能力,Transformer 架构已成为开发各种 LLM 的事实上的支柱,使语言模型能够扩展到数百或数千亿个参数。总体而言,现有 LLM 的主流架构大致可分为三大类,即编码器 - 解码器、因果解码器和前缀解码器。
自 Transformer 发布以来,人们提出了各种改进来提高其训练稳定性、性能和计算效率。Transformer 四个主要部分的相应配置,包括规范化、位置嵌入、激活函数以及注意机制和偏差。
注意机制是 Transformer 的一个重要组成部分,它使得序列中的 token 能够相互交互,并计算输入和输出序列的表示。
- 全注意。在原始 Transformer 中,注意机制以成对的方式进行,考虑序列中所有 token 对之间的关系。它采用尺度点积注意,其中隐藏状态被映射到 Q、K 和 V。此外,Transformer 使用多头注意而不是单头注意,将 Q、K、V 以不同的变换投影到不同的头中。每个头输出的拼接作为最终输出。
- 稀疏注意。全注意的一个关键挑战是二次计算复杂度,这在处理长序列时会成为负担。因此,提出了各种有效的 Transformer 变体来降低注意机制的计算复杂度。例如,GPT-3 采用了局部带状稀疏注意。每个查询只能根据位置关注一组 tokens 的子集,而不是整个序列。
- 多查询注意。多查询注意是指注意机制的一种变体,其中不同的头在 K 和 V 上共享相同的线性变换矩阵。它可以显著节省计算成本,而模型质量只会受到轻微影响。具有多查询注意机制的代表性模型包括 PaLM 和 StarCoder。
- Flash Attention。与大多数现有的近似注意方法以牺牲模型质量来提高计算效率不同,Flash Attention 提出从 IO 觉察的角度优化 GPU 上注意模块的速度和内存消耗。现代 GPU 上有不同级别的内存,例如具有快速 IO 的 SRAM 和具有相对较慢 IO 的 HBM。Flash Attention 将输入组织成块并引入必要的重计算,以便更好地利用快速内存 SRAM。Flash Attention 作为 CUDA 中的融合核实现,已集成到 PyTorch、DeepSpeed 和 Megatron-LM 中。
为了获得更强的泛化和训练稳定性,建议选择预先 RMSNorm 进行层归一化,并选择 SwiGLU 或 GeGLU 作为激活函数。此外,在嵌入层之后可能不会立即使用 LN,这可能会导致性能下降。至于位置嵌入,RoPE 或 ALiBi 是更好的选择,因为它在长序列上表现更好。
预训练的关键作用,在于将来自大规模语料库的常识编码到海量模型参数中。对于训练 LLM,有两个常用的预训练任务,即语言建模(LM)和去噪自编码(DAE)。
由于大多数语言任务都可以归结为基于输入的预测问题,这些仅使用解码器的 LLM 可能有利于隐式地学习如何以统一的 LM 方式完成这些任务。一些研究还表明,仅使用解码器的 LLM 可以通过自回归预测下一个 token 自然地迁移到某些任务,而无需微调。LM 的一个重要变体是前缀语言建模任务,它是为具有前缀解码器架构的预训练模型设计的。随机选择前缀中的 tokens 不会用于计算前缀语言建模的损失。在预训练期间看到 tokens 数相同的情况下,前缀语言建模的表现略差于语言建模,因为模型预训练涉及的序列中 tokens 较少。
DAE 任务在实现上似乎比 LM 任务更复杂。因此,它尚未被广泛用于预训练大语言模型。现有的以 DAE 为预训练目标的 LLM 包括 T5 和 GLM-130B。这些模型主要通过自回归的方式训练恢复替换 tokens。
混合去噪(MoD)将 LM 和 DAE 目标视为不同类型的去噪任务,即 S-denoiser(LM)、R-denoiser(DAE,短替换范围和低损坏)和 X-denoiser(DAE,长替换范围或高损坏)。
长上下文。基于 Transformer 的语言模型的主要缺点之一是上下文长度有限,因为涉及时间和内存的二次计算成本。同时,对具有长上下文窗口的 LLM 应用程序的需求日益增加,例如在 PDF 处理和故事写作中。ChatGPT 最近发布了一个更新版本,其上下文窗口大小高达 16K 个 token,这比最初的 4K 个 token 长得多。此外,GPT-4 推出了上下文窗口为 32K 个 token 的变体。


