Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.5和1.6翻译 #25

Merged
merged 6 commits into from
May 5, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add files via upload
翻译1.5和1.6
  • Loading branch information
WangHaoyuuu committed May 4, 2024
commit 96082577c529a3b0151dc78560d901fc82cb5b8a
115 changes: 115 additions & 0 deletions Translated_Book/ch01/1.5利用大型数据集.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1.5 利用大型数据集"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"流行的GPT和BERT类模型的大型训练数据集代表了包含数十亿单词的多样化和全面的文本语料库,其中包括了广泛的主题以及自然语言和计算机语言。为了提供一个具体的例子,表1.1总结了用于预训练GPT-3的数据集,该数据集作为ChatGPT第一版的基础模型。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**表1.1 流行的GPT-3大型语言模型的预训练数据集**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"| Dataset name | Dataset description | Number of tokens | Proportion in training data |\n",
"|----------------|-----------------------|------------------|-----------------------------|\n",
"| CommonCrawl (filtered) | Web crawl data | 410 billion | 60% |\n",
"| WebText2 | Web crawl data | 19 billion | 22% |\n",
"| Books1 | Internet-based book corpus | 12 billion | 8% |\n",
"| Books2 | Internet-based book corpus | 55 billion | 8% |\n",
"| Wikipedia | High-quality text | 3 billion | 3% |\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"表1.1报告了词符的数量,词符是模型读取的文本单位,数据集中的词符数量大致相当于文本中的单词和标点符号的数量。我们将在下一章更详细地介绍词符化,即将文本转换为词符的过程。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"主要的结论是,这种训练数据集的规模和多样性使得这些模型能够在包括语言语法、语义和上下文在内的多种任务上表现良好,甚至一些需要通用知识的任务也能够胜任。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**GPT-3数据集详情**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在表1.1中,需要注意的是,从每个数据集中,只有一部分数据(总共3000亿个标记)被用于训练过程。这种抽样方法意味着训练并没有包括每个数据集中可用的每一条数据。相反,从所有数据集中抽取的选定的3000亿个标记的子集被利用。此外,虽然有些数据集在这个子集中没有被完全涵盖,但其他数据集可能被多次包括,以达到3000亿个标记的总数。表中指示比例的列,如果不考虑四舍五入的误差,加起来占了这个抽样数据的100%。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"为了提供背景,考虑一下CommonCrawl数据集的大小,它单独就包含了4100亿个标记,需要大约570GB的存储空间。相比之下,像GPT-3这样的模型的后续版本,比如Meta的LLaMA,已经扩大了它们的训练范围,包括了额外的数据来源,如Arxiv研究论文(92GB)和StackExchange的代码相关问答(78GB)。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wikipedia语料库由英语维基百科组成。虽然GPT-3论文的作者没有进一步指定细节,但Books1很可能是来自Project Gutenberg(https://www.gutenberg.org/)的样本,Books2很可能来自Libgen(https://en.wikipedia.org/wiki/Library_Genesis)。CommonCrawl是CommonCrawl数据库(https://commoncrawl.org/)的一个过滤子集,而WebText2是来自所有Reddit帖子中获得3个以上赞的外链网页的文本。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"GPT-3论文的作者没有分享训练数据集,但一个公开可用的类似数据集是The Pile(https://pile.eleuther.ai/)。然而,这个集合可能包含受版权保护的作品,确切的使用条款可能取决于预期的用例和国家。更多信息,请参见HackerNews上的讨论,网址为 https://news.ycombinator.com/item?id=25607809。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"这些模型的预训练特性使它们在进一步微调下游任务时具有极高的灵活性,这也是它们被称为基础或底层模型的原因。预训练大型语言模型(LLMs)需要访问大量资源,并且成本非常高昂。例如,GPT-3的预训练成本估计为460万美元的云计算积分[2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"好消息是,许多预训练的大型语言模型(LLMs),作为开源模型提供,可以作为通用工具来编写、提取和编辑不是训练数据一部分的文本。此外,LLMs可以在相对较小的数据集上针对特定任务进行微调,从而减少所需的计算资源并提高在特定任务上的表现。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在这本书中,我们将实现预训练的代码,并使用它来出于教育目的预训练一个大型语言模型(LLM)。所有的计算都可以在消费者硬件上执行。在实现了预训练代码之后,我们将学习如何重用公开可用的模型权重,并将它们加载到我们将要实现的架构中,这允许我们在本书后面对LLMs进行微调时跳过昂贵的预训练阶段。"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
109 changes: 109 additions & 0 deletions Translated_Book/ch01/1.6深入剖析GPT架构.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 1.6 深入剖析GPT架构"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在本章的前文中,我们提及了GPT类模型、GPT-3和ChatGPT等术语。现在,让我们更详细地探讨一下GPT的一般架构。首先,GPT代表生成式预训练变换器,最初在以下论文中被介绍:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"+ 通过生成式预训练改善语言理解(2018年),作者Radford等人,来自OpenAI, http://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"GPT-3是这个模型的扩展版本,它拥有更多的参数,并且在更大的数据集上进行了训练。而最初提供在ChatGPT中的模型是通过使用OpenAI的InstructGPT论文中的方法,在大型指令数据集上对GPT-3进行微调创建的,我们将在第7章“通过人类反馈进行微调以遵循指令”中更详细地介绍这一点。正如我们在图1.6中早些时候看到的,这些模型是能胜任文本完成任务的,并且还可以执行其他任务,如拼写纠正、分类或语言翻译。这实际上是非常了不起的,因为GPT模型是在相对简单的下一个词预测任务上进行预训练的,如图1.7所示。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**图1.7 在GPT模型的下一个词预训练任务中,系统通过观察前面的词来学习预测句子中即将出现的词。这种方法帮助模型理解词语和短语在语言中通常是如何组合在一起的,形成了一个可以应用于各种其他任务的基础。**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![fig-1.7](../img/fig-1.7.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"下一个词预测任务是一种自监督学习形式,属于自我标记的一种。这意味着我们不需要为训练数据显式地收集标签,而是可以利用数据本身的结构:我们可以使用句子或文档中的下一个词作为模型应该预测的标签。由于这个下一个词预测任务允许我们“即时”创建标签,就有可能利用大量未标记的文本数据集来训练大型语言模型,正如之前在1.5节“利用大数据集”中所讨论的。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"与我们在1.4节中介绍的原始变换器架构相比,使用大型语言模型(LLMs)执行不同任务,通用的GPT架构相对简单。本质上,它只是解码器部分而没有编码器,如图1.8所示。由于像GPT这样的解码器风格模型通过一次预测一个词来生成文本,它们被认为是一种自回归模型。自回归模型将其之前的输出作为未来预测的输入。因此,在GPT中,每一个新词都是基于它之前的序列来选择的,这提高了生成文本的连贯性。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"像GPT-3这样的架构也比原始的变换器模型要大得多。例如,原始的变换器模型重复了编码器和解码器块六次。GPT-3有96个变换器层,总共有1750亿个参数。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**图1.8 GPT架构仅采用了原始变换器的解码器部分。它被设计为单向的、从左到右的处理方式,这使得它非常适合于文本生成和下一个词预测任务,可以迭代地一次生成一个词。**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![fig-1.8](../img/fig-1.8.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"GPT-3是在2020年推出的,按照深度学习和大型语言模型(LLM)发展的标准,这已经被认为是很久以前的事情了。然而,最近的一些架构,比如Meta的Llama模型,仍然基于相同的基础概念,只是引入了一些小的修改。因此,理解GPT仍然非常重要,本书专注于实现GPT背后的主要架构,同时提供了一些由其他LLM采用的特定调整的指引。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"最后,有趣的是,虽然原始的变换器模型是明确为语言翻译设计的,但GPT模型——尽管它们有更大而且更简单的架构,主要目标是下一个词的预测——也能够执行翻译任务。这一能力最初让研究人员感到意外,因为它出现在一个主要针对下一个词预测任务训练的模型中,而这个任务并没有特别指向翻译。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"模型能够执行它没有被明确训练去执行的任务的能力被称为“涌现现象”。这种能力并不是在训练过程中明确教授的,而是作为模型接触到大量多语言数据和多样化语境的自然结果而出现的。GPT模型能够“学习”语言之间的翻译模式并执行翻译任务,尽管它们并没有特别为此进行训练,这展示了这些大规模生成性语言模型的好处和能力。我们可以不使用不同的模型就执行多样化的任务。"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 2
}