Pre-training of large language models — 预训练

From Systems analysis wiki
Jump to navigation Jump to search

大语言模型(LLM)的预训练是创建现代大语言模型的一个基础阶段,其核心在于在海量、多样的未标记文本数据集上进行训练。该过程使模型能够学习通用的语言规律、世界知识和语义关系,从而形成所谓的基础模型(foundation model),之后可以将其调整以解决特定任务。

什么是预训练?

预训练(pre-training)是训练的初始阶段,在此阶段,LLM 使用自监督学习(self-supervised learning)的方法在海量文本数据集上进行训练。这意味着训练信号(标签)是从数据本身生成的,无需人工手动标注。

此阶段的主要目标是预测文本中被隐藏或未来的部分。根据架构的不同,主要采用两种任务:

  • 因果语言建模(Causal Language Modeling, CLM):模型学习根据之前的所有词(token)来预测序列中的下一个词。这种方法是GPT等生成模型的基础。
  • 掩码语言建模(Masked Language Modeling, MLM):模型学习恢复文本中被随机“掩码”(隐藏)的词,并利用其双向上下文(左右两侧的词)进行预测。这种方法被用于BERT等模型中。

通过这些任务,模型被迫学习语法、语义和关于世界的事实知识,以便成功地进行预测。

预训练数据

预训练的有效性在很大程度上取决于训练数据的质量和多样性。主要使用以下来源:

  • 网页:像 Common Crawl 和 C4 这样的大型数据集提供了广泛的主题、风格和语言,可以说是互联网的一个“快照”。
  • 书籍:像 BookCorpus 和 The Pile 这样的语料库提供了结构化和连贯的文本,有助于理解长期依赖关系和叙事结构。
  • 对话数据:来自论坛(例如 Reddit)和社交媒体的数据,帮助模型学习非正式语言和对话模式。
  • 专业数据:科学论文(来自 arXiv)、代码(来自 GitHub 和 The Stack)或多语言文本,用于提升模型的特定能力。

数据分布示例

不同的模型使用不同来源的数据配比,这会影响其最终的能力:

  • GPT-3 (1750亿参数):** 16% 书籍, 84% 网页。
  • PaLM (5400亿参数):** 5% 书籍, 14% 网页, 50% 对话数据, 31% 其他。
  • LLaMA (650亿参数):** 5% 书籍, 2% 网页, 87% 对话数据。

这些分布表明,数据选择是一项战略性决策,具体取决于模型的目标。

常用语料库

常用于 LLM 预训练的数据集
语料库 大小 来源 最后更新
BookCorpus 5GB 书籍 2015年12月
Gutenberg - 书籍 2021年12月
C4 800GB Common Crawl 2019年4月
CC-Stories-R 31GB Common Crawl 2019年9月
CC-NEWS 78GB Common Crawl 2019年2月
REALNEWS 120GB Common Crawl 2019年4月
OpenWebText 38GB Reddit 链接 2023年3月
Pushshift.io 2TB Reddit 链接 2023年3月
Wikipedia 21GB 维基百科 2023年3月
The Pile 800GB 其他 2020年12月
ROOTS 1.6TB 其他 2022年6月

训练技术

LLM 的预训练需要大量的计算资源。为了管理这一过程,采用了以下技术:

  • 分布式训练:使用多个 GPU 或 TPU 进行并行处理。
  • 混合精度(Mixed Precision):使用较低精度的数值格式(例如,16位代替32位)来加速计算并减少内存使用。
  • 梯度检查点(Gradient Checkpointing):一种通过重新计算而非存储某些中间激活值来节省内存的技术。
  • 模型并行(Model Parallelism):将模型本身分布在多个设备上。

像 GPT-3 这样的模型训练可能需要数千个 GPU 运行数月之久。

缩放定律

研究(如 OpenAI 的 Kaplan 等人,2020)表明,随着三个因素的增加,语言模型的性能会可预测地提升:

  • 模型大小(参数数量)。
  • 数据量。
  • 计算资源。

这些经验关系被称为缩放定律(scaling laws),为开发人员设计和训练更大、更强大的模型提供了指导,使他们能够优化分配计算预算。

挑战与成就

  • 扩展性:预训练的主要成就是能够平衡模型大小、数据量和计算资源,以达到最佳性能。
  • 数据质量:确保训练数据的纯净性、多样性和无偏见性是一个关键挑战。
  • 效率:开发降低计算成本的方法,例如持续预训练或更高效的架构。
  • 多语言性:创建能够有效处理多种语言的模型,需要仔细选择和平衡数据。

另见

  • 大语言模型
  • BERT
  • GPT