- 从零构建大模型
- (美)塞巴斯蒂安·拉施卡
- 1329字
- 2025-05-07 11:44:02
1.3 构建和使用大语言模型的各个阶段
为什么要自己构建大语言模型?从零开始构建大语言模型不仅是一次深入了解模型机制和局限性的绝佳机会,还为我们提供了预训练和微调开源大语言模型,使其适应特定领域的数据集或任务的必要知识。
注意 如今大多数大语言模型是使用 PyTorch 深度学习库实现的,我们也将使用该库。你可以在附录 A 中找到关于 PyTorch 的全面介绍。
研究表明,针对特定领域或任务量身打造的大语言模型在性能上往往优于 ChatGPT 等为多种应用场景而设计的通用大语言模型。这样的例子包括专用于金融领域的模型 BloombergGPT 和专用于医学问答的大语言模型(更多详细信息请参阅附录 B)。
使用定制的大语言模型具有多个优势,尤其是在数据隐私方面。例如,出于机密性考虑,公司可能不愿将敏感数据共享给像 OpenAI 这样的第三方大语言模型提供商。此外,如果开发较小的定制的大语言模型,那么就可以将其直接部署到客户设备(笔记本电脑和智能手机)上。这也是苹果公司等企业正在探索的方向。本地部署可以显著减少延迟并降低与服务器相关的成本。此外,定制的大语言模型使开发者拥有完全的自主权,能够根据需要控制模型的更新和修改。
大语言模型的构建通常包括预训练(pre-training)和微调(fine-tuning)两个阶段。“预训练”中的“预”表明它是模型训练的初始阶段,此时模型会在大规模、多样化的数据集上进行训练,以形成全面的语言理解能力。以预训练模型为基础,微调阶段会在规模较小的特定任务或领域数据集上对模型进行针对性训练,以进一步提升其特定能力。图 1-3 展示了由预训练和微调组成的两阶段训练方法。

图 1-3 大语言模型的预训练目标是在大量无标注的文本语料库(原始文本)上进行下一单词预测。预训练完成后,可以使用较小的带标注的数据集对大语言模型进行微调
创建大语言模型的第一步是在大量文本数据上进行训练,这些数据也被称作原始文本(raw text)。“原始”指的是这些数据只是普通的文本,没有附加任何标注信息。(在这一步中,我们通常会进行数据过滤,比如删除格式字符或未知语言的文档。)
注意 如果你具有机器学习背景,那么可能会注意到,传统的机器学习模型和通过常规监督学习范式训练的深度神经网络通常需要标签信息。然而,这并不适用于大语言模型的预训练阶段。在此阶段,大语言模型使用自监督学习,模型从输入数据中生成自己的标签。
预训练是大语言模型的第一个训练阶段,预训练后的大语言模型通常称为基础模型(foundation model)。一个典型例子是 ChatGPT 的前身——GPT-3,这个模型能够完成文本补全任务,即根据用户的前半句话将句子补全。此外,它还展现了有限的少样本学习能力,这意味着它可以在没有大量训练数据的情况下,基于少量示例来学习并执行新任务。
通过在无标注数据集上训练获得预训练的大语言模型后,我们可以在带标注的数据集上进一步训练这个模型,这一步称为微调。
微调大语言模型最流行的两种方法是指令微调和分类任务微调。在指令微调(instruction fine-tuning)中,标注数据集由“指令−答案”对(比如翻译任务中的“原文−正确翻译文本”)组成。在分类任务微调(classification fine-tuning)中,标注数据集由文本及其类别标签(比如已被标记为“垃圾邮件”或“非垃圾邮件”的电子邮件文本)组成。
在本书中,我们将介绍预训练和微调大语言模型的代码实现,并且在预训练基础模型之后,我们将深入探讨指令微调和分类任务微调的具体技术细节。