Code前端首页关于Code前端联系我们

微软Build 2023开发者大会:OpenAI创始人AndrejKarpthy揭秘GPT训练细节

terry 2年前 (2023-09-23) 阅读数 67 #AI人工智能

OpenAI创始人之一大神AndrejKarpthy刚刚在微软Build 2023开发者大会上发表专题演讲:State of GPT(GPT)现在的情况)。

话题很常见,内容很精彩。

大家都知道,OpenAI ChatGPT 训练细节并不公开。

这是OpenAI官方第一次

解释他的大模型的内在原理以及RLHF训练的细节

另外,Andrej真的有成为导师的潜质,可以非常有技术性地讲解。内容非常好。他把深奥的东西讲得简单,却又非常透彻。这段讲话非专业人士人也完全可以理解。如果你仔细读一下这篇演讲,你就会有所启发。

演讲链接可以直接在下面找到:

https://www.bilibili.com/video/BV1ts4y1T7UH

节目卡带还只整理了演讲的PPT如果你需要的话。你能回答一下后台的文章吗

文章很长,整个对话分为两部分

第一部分我想告诉你我们是如何训练GPT的;

在第二部分中,我们将学习如何在您的应用程序中有效地使用 GPT。

这里我主要介绍第一部分,OpenAI是如何教授GPT的,以及细节。

修改后的翻译如下:

大家好。我很高兴向您介绍 GPT 的最新状况,以及更广泛地说,快速发展的大型语言模型生态系统的最新情况。

我想把讲座分为两部分:

第一部分我想告诉大家我们是如何训练GPT的;

在第二部分中,我们将了解如何在应用程序中有效地使用GPT。

首先,让我们看一下 GPT 训练的新兴秘密,请记住,这一切都是非常新的,并且仍在快速发展。

这是一张有点复杂的幻灯片,所以我将逐步引导您完成它。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

我们大致有四个主要阶段:预训练、监督微调、奖励建模、强化学习等。

我们现在每个阶段都有一个数据集来支持这一点。我们有一个针对不同部分的算法,这些部分将成为神经网络训练的目标。然后我们有一个模型,然后在上图底部有一些评论。

预训练

我们要开始的第一个阶段是预训练阶段。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

这部分在该图上有点特殊,因为该图未按比例绘制。

其实,前期训练所花的时间占了整个训练过程的99%。

因此,在现阶段,我们在超级计算机中使用数千个 GPU,并进行数月的训练来处理互联网大小的数据集。

其他三个阶段是微调阶段,更像是几个 GPU 和几个小时或几天。

那么我们来考虑一下基本模型实施的准备阶段。

首先,我们需要收集大量的数据。这是我们所说的数据混合的一个例子,它取自 Meta 发表的文章,他们在其中发布了这个 Llama 基础模型。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

如上图所示,约1T数据作为基础llama模型的训练集。那么既然我们有了数据,我们如何将其转换为机器可以理解的语言呢?

因此,在我们实际训练这些数据之前,我们需要进行另一个预处理步骤,即标记化微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

标记化是文本片段和整数之间的无损转换。现阶段有很多算法。一般来说,您可以使用字节编码将所有文本转换为一长串整数。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

下面我以 LLama 为例,这是 Meta 推出的一个相当新的模型。

如您所见,LLama 参数数量约为 650 亿个。尽管与 GPT3 的 1750 亿个参数相比,Llama 只有 65 个 B 参数,但 LLama 是一个更强大的模型。直观上,这是因为该模型的训练时间明显更长,训练了 140,000 亿而不是 3000 亿。因此,模型的能力不应仅根据模型中参数的数量来判断。

这里我展示了一些常用于定义 Transformer 神经网络的超参数的粗略表格。例如头数、大小、层数等。下面我介绍一些训练超参数。例如,使用 Meta 2000 GPU 训练 65 B 模型大约需要 21 天,成本约为数百万美元。这是在锻炼前阶段需要记住的一个粗略的数量级。现在,当我们实际进行预训练时会发生什么?一般来说,我们将标签放入数据包中。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

我们将标记化数组导入到 Transformer 中。不可能同时拿进去。必须使用批量的思路批量导入。

这里,批量大小为 B,T 是最大上下文长度。

在我的图片中,T长度只有10。实际上,它是2000、4000等。这些都是很长的线。

服药后,我们就要开始训练了。微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

我们只关注特定的单元格,但图表的所有单元格都会发生同样的事情。

让我们看看绿色的单元格。绿色单元查看它之前的所有标记,所有标记都是黄色的,我们将整个上下文提供给 Transformer 的神经网络,该网络尝试预测序列中的下一个标记,在本例中为红色。

不幸的是,我现在没有太多时间来详细介绍 Transformer 的神经网络架构。

对我们来说,Transformer 只是一堆神经网络的东西,通常有数百亿个参数或类似的东西。当然,如果更改这些参数,每个像元的预测分布都会略有不同。

例如,如果我们的词汇表由 50,257 个标记组成,我们就会得到这个数字,因为我们必须指定以下事件的概率分布。基本上,任何事情都可能发生在我们身上。

现在,在这个特定的示例中,该单元格的下一个标签将是 513,因此我们可以使用它作为监控源来更新 Transformer 权重。对每个单元并行应用相同的方法并不断交换堆栈,尝试让 Transformer 正确预测序列中的下一个令牌。

如上图所示,预训练的目的其实很简单。

每个单元格仅“看到”其行中的单元格以及其前面的单元格(从左开始),以便预测下一个单元格(右)

预测下一个单词。对于softmax概率分布,将对应的单词作为输出。

让我更具体地向您展示训练这样的模型时会发生什么。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

这个其实是纽约时报的,他们对莎士比亚训练了一点GPT,这是莎士比亚的一小部分,他们在上面训练了一个GPT。

最初,在初始化时,GPT 以完全随机的权重开始,因此它也获得完全随机的输出。然而,随着时间的推移,随着我们训练 GPT 的时间越来越长,我们从模型中得到越来越连贯和一致的模式。当然,采样的方法是预测接下来会发生什么,从该分布中抽取样本,然后不断地将其反馈到过程中,基本上是对一个大序列进行采样。最后,您将看到 Transformer 已经学会了该单词以及需要空格、逗号等的位置。

随着时间的推移,模​​型会给出越来越一致的预测。

下面是您在模型预训练期间将看到的图形类型。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

我们实际上在训练期间查看损失函数,低损失意味着我们的 Transformer 预测正确 - 让我们更有可能获得序列中下一个正确的整数。

经过一个月的训练,我们用这个模型做什么?

我们在这个领域注意到的第一件事是,这些模型基本上在语言建模过程中学习非常有效的通用表示,并且可以针对您可能关心的任何内容进行非常有效的微调。下游任务。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

例如,如果你对情感分类感兴趣,过去的方法是收集一堆正面和负面的信息,然后在上面训练某种 NLP 模型,但新的方法是忽略情感分类并直走。到它。训练一个大型语言模型、一个大型 Transformer,您可能只有几个示例,可以非常有效地针对手头的任务微调模型。

这在实践中非常有效。

这基本上是因为 Transformer 在语言建模任务中被迫同时处理许多事情,因为在文本预测方面它被迫了解文本的结构以及其中的所有不同概念。下一个令牌。这是 GPT-1。

在 GPT-2 左右,人们注意到这些模型的鼓励比微调更有效。

这些是语言模型,他们想要完成文档,所以通过组织这些假文档,你可以让他们完成任务。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

在这个例子中,比如我们有几个段落,然后我们做QA(Q&A),QA,QA,一些提示,然后我们做Q,然后当Transformer试图完成文档时,它实际上回答了我们的问题。

这是一个基于工程的即时模型的示例,它使您相信该模型模仿了文档并允许您执行特定任务。

由此开始了微调时代。我们看到,即使不进行微调,神经网络也可以非常有效地解决许多问题。

从那时起,我们就看到了众所周知的基本模型的完整进化树:微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

并非所有模型变体都可用。

例如,基本型号 GPT-4 从未发布。通过API获得的GPT-4模型不是基础模型,而是附加模型,稍后我们将解释如何获取这些模型;

GPT-3 基本模型可通过名为 DaVinci 的 API 获得;

GPT-2 基本模型在我们的 GitHub 存储库中以哑铃形式提供;目前最好的(公开可用的)基础模型是 Meta 的 Llama 系列,尽管它没有商业许可。

需要强调的是,基础模特不是助手,他们不想回答你的问题,他们只想完成文档。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

因此,如果您告诉基本模型“写一首关于面包和奶酪的诗”,它会回答这个问题以及其他问题。它只是添加到它认为的文档中。

但是,您可以请求基本模型中定义的结果,以使结果更有可能。例如:“这是一首关于面包和奶酪的诗。”在这种情况下,自动完成是正确完成的。

您甚至可以通过创建一个特定的小提示来将基本模型欺骗为助手,该提示看起来就像人类和助手之间有一个文件并且他们正在交换信息。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

然后你将查询放在底部,底层模型就成为有用的助手和某种答案(这是文档形式)。

虽然可以做到,但不太可靠,在实践中效果也不是很好。

监督微调

相反,我们采用不同的方法来创建实际的 GPT 助手,而不仅仅是基本的模型文档插件。这给我们带来了监督微调。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

在监督微调阶段,我们收集了一个小但高质量的数据集。在这种情况下,我们要求人类企业家及时并以理想答案的形式收集数据。

我们收集了很多这样的东西,通常有数万个。然后我们仍然会对这些数据进行语言建模,因此算法上不会发生任何变化。我们只交换一套训练套件。过去,它们是包含大量数据但质量较差的网络文档。我们已将其替换为使用质量保证立即响应的数据。它数量少但质量好。

我们继续做语言建模,训练后我们得到一个SFT(监督微调)模型。

你可以实际安装这些模型,它们是实际的助手,它们在某种程度上起作用。

让我向您展示示例演示是什么样的。这是人类企业家可以想出的东西,这是一个随机演示:微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

你写了一个关于垄断一词或类似内容的相关性的简短介绍,然后企业家也写了一个理想的答案。在撰写这些回复时,他们遵循了广泛的标签文档,并被要求创建有用、真实且无害的回复。

此标签的描述见此处。

你可能听不懂,我也听不懂,它们很长,人们遵循说明并尝试完成说明。

这就是数据集的样子,您可以训练这些模型,这在一定程度上有效。

奖励建模

现在我们可以从这里继续该过程并继续进行 RLHF,即“人类反馈强化学习”,其中包括奖励建模和强化学习。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

让我介绍一下,然后我会回过头来谈谈为什么值得采取额外的步骤,以及它与仅 SFT 模型的比较。

在奖励建模步骤中,我们现在希望将数据收集转换为比较形式。

下面是我们的数据集的示例。

顶部是相同的提示,要求助手编写一个程序或函数来检查给定的字符串是否是回文。

然后我们采用已经训练好的 SFT 模型并创建几个附加项。在本例中,我们需要三个完成来创建模型。然后我们要求人们对这些结局进行排名。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

如果您盯着看一会儿 - 顺便说一句,很难比较某些预测,并且可能需要几个小时才能比较快速完成。但假设我们认为其中一个比其他更好,依此类推,并对它们进行排名。

然后,我们可以对这些结尾之间的所有可能对进行与二元分类(排序)非常相似的操作。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

接下来我们要做的就是将提示排成行,这里三行的提示都是一样的,但是填写方法不同,黄色标记来自SFT模型,我们添加一个特殊的奖励读标记在最后,基本上只是在这个绿色信号处监督 Transformer。 Transformer 根据提示的完成情况来预测某些奖励。

Transformer 猜测每个结局的质量,然后在我们猜测每个结局之后,我们就得到了模型如何对它们进行排名的基本事实,我们可以强制其中一些数字高于其他数字,作为损失函数我们制定并训练我们的模型,以做出与人类企业家的比较证据一致的奖励预测。

这就是我们训练奖励模型的方式。这使我们能够评估他们执行提示的情况。

强化学习强化学习

现在我们有了奖励模型,但还不能介绍它。

因为它本身作为助手用处不大,但是在接下来的强化学习阶段却非常有用。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

因为我们有奖励模型,所以我们可以评估任何给定提示的任何完成/完成的质量。

在强化学习的过程中,我们基本上都是收到大量的tips,然后根据奖励模型进行强化学习。

它看起来像这样:微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

接受提示,将其排队,现在使用我们想要训练的模型,将模型初始化为SFT模型,以创建一些黄色添加。

然后添加奖励代币,并根据固定奖励模型读取奖励分数。现在这个奖励模型的分数不会改变。奖励模型告诉我们这些指令的质量。

现在我们基本上可以使用相同的语言建模损失函数(和以前一样),但我们目前正在黄色标记上进行训练,并通过授予模型发出的奖励来权衡语言建模目标。

例如,在第一行中,奖励模型表示这是相当高的完成度,因此任何恰好在第一行中被采样的代币都会被强化,并被赋予更高的未来概率。相反,在第二行中,奖励模型非常不喜欢这种表现,为负1.2,因此我们在第二行中采样的每个令牌将来的概率都会较低。

我们对很多提示、很多批次一遍又一遍地这样做,基本上我们得到了创建黄色标记的策略,以便每个完成标记都根据前一阶段训练的奖励模型获得高奖励。 。

这就是我们的训练方式 - 这就是 RLHF 过程。

您终于有了一个可以安装的模型。例如,ChatGPT 就是一个 RLHF 模型。您可能会遇到其他型号,例如 Kuna 13B 等,它们都是 SFT 型号。

我们有基本模型、SFT 模型和 RLHF 模型,这基本上是可用模型列表的代表。

为什么要做RLHF?一个不太令人兴奋的答案是它效果更好。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

上图来自instructGPT论文。

这些 PPO 模型是 RLHF,根据这些实验,我们在几年前看到,当给予人类时,它们在许多比较中都受到青睐。与以提示为助手的基线模型相比,人们从根本上更喜欢 RLHF 模型的标记(输出文本)而不是 SFT 模型。

效果更好。

但你可能会问为什么?为什么更好?

我不认为社区有一个一致令人惊讶的答案,但我可以给你一个理由:这与可预测性和生成难易性之间的不对称有关。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

以俳句生成为例。假设我要求一位模特写一首关于回形针的俳句。

如果你是一位试图提供训练数据的企业家,想象一下,作为一名为 SFT 部分收集基础数据的企业家,你会如何为回形针创作一首漂亮的俳句?

你可能不擅长这个。

但是如果我给你一些俳句的例子,你可能会比其他的更欣赏其中的一些。

这使得更容易决定哪一个是好的。

基本上,这种不对称性使我们能够进行比较,以便我们可以利用您作为一个人以及您的判断来创建一个稍微更好的模型。

然而,在某些情况下,RLHF 模型并不代表基本模型的严格进一步发展。

我们特别注意到,例如,RLHF 模型丢失了一些熵,也就是说,它们给出了更多的峰值结果。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

与基本模型相比,它们可以产生更小的变化和偏差更小的样本。

基本模型具有更高的熵并给出多种输出。我仍然更喜欢使用基本模型的地方。 。 。例如,你有n个东西,想要生成更多类似的东西。 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

这是我刚刚想出的一个例子

我想生成很棒的神奇宝贝名称。我给了它七个 Pokemon 名称,并让基本模型完成了文档。他给了我几个神奇宝贝的名字。

这些都是虚构的,我试图查找它们以确保它们不是真正的口袋妖怪。

我认为这是基本模型擅长的任务,因为它仍然有很多熵,并且会给你很多不同的、很酷的、更多的东西,看起来就像你以前给过它的任何东西。

综上所述,这些是您现在可以使用的实用新型,并附有一些数字: 微软Build 2023开发者大会:OpenAI创始人Andrej Karpthy揭秘GPT训练细节

伯克利有一个团队对许多可用的实用新型进行排名,并基本上给予它们 ELO 评级。

目前最好的模型无疑是GPT-4,其次是Claude、GPT-3.5,然后是一些模型,其中一些可能可以作为权重,例如Kuna、Koala等。

这里的前三个是RLHF模型,据我所知,我认为所有其他模型都是SFT模型。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门