Pre-training of large language models — 预训练
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% 对话数据。
这些分布表明,数据选择是一项战略性决策,具体取决于模型的目标。
常用语料库
| 语料库 | 大小 | 来源 | 最后更新 |
|---|---|---|---|
| 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