从零构建大模型
上QQ阅读APP看书,第一时间看更新

主流的 GPT、BERT 等模型所使用的训练数据集涵盖了多样而全面的文本语料库。这些语料库包含数十亿词汇,涉及广泛的主题,囊括自然语言与计算机语言。表 1-1 通过一个具体的例子总结了用于预训练 GPT-3 的数据集。GPT-3 被视作第一代 ChatGPT 的基础模型。

表 1-1 GPT-3 大语言模型的预训练数据集

表 1-1 展示了各种数据集的词元数量。词元(token)是模型读取文本的基本单位。数据集中的词元数量大致等同于文本中的单词和标点符号的数量。我们将在第2章中更详细地介绍分词,即将文本转换为词元的过程。

我们能得到的主要启示是,训练数据集的庞大规模和丰富多样性使得这些模型在包括语言语法、语义、上下文,甚至一些需要通用知识的任务上都拥有了良好表现。

GPT-3 数据集的细节

表 1-1 显示了用于训练 GPT-3 的数据集。表中的“训练数据中的比例”一列总计为 100%,根据舍入误差进行调整。尽管“词元数量”一列总计为 4990 亿,但该模型仅在 3000 亿个词元上进行了训练。GPT-3 论文的作者并没有具体说明为什么该模型没有对所有 4990 亿个词元进行训练。

为了更好地理解,以 CommonCrawl 数据集为例,它包含 4100 亿个词元,需要约 570 GB 的存储空间。相比之下,GPT-3 等模型的后续版本(如 Meta 的 Llama),已经扩展了它们的训练范围,涵盖了包括 Arxiv 研究论文(92 GB)和 StackExchange 上的代码问答(78 GB)在内的更多数据源。

GPT-3 论文的作者并未公开其训练数据集,但我们可以参考一个公开可用的类似数据集——Dolma:这是一个用于大语言模型预训练的 3 万亿兆词元大小的开放语料库。然而,该数据集可能包含受版权保护的内容,具体使用条款可能取决于预期的使用情境和国家。

这些模型的预训练特性使它们在针对下游任务进行微调时表现出了极高的灵活性,因此它们也被称为“基础模型”。预训练大语言模型需要大量资源,成本极其高昂。例如,预训练 GPT-3 的云计算费用成本估计高达 460 万美元。

好消息是,许多预训练的大语言模型是开源模型,可以作为通用工具,用于写作、摘要和编辑那些未包含在训练数据中的文本。同时,这些大语言模型可以使用相对较小的数据集对特定任务进行微调,这不仅减少了模型所需的计算资源,还提升了它们在特定任务上的性能。

在本书中,我们将实现预训练代码,并将其应用于预训练一个用于教育目的的大语言模型,其中的所有计算都可以在消费级硬件上执行。在实现预训练代码之后,我们将学习如何复用公开可用的模型权重,并将它们加载到要实现的架构中。这样后续在微调大语言模型时,我们就可以跳过昂贵的预训练阶段。