[中译] How GPT3 Works - Visualizations and Animations

原文地址:https://jalammar.github.io/how-gpt3-works-visualizations-animations/,原文作者已添加本文链接:)

(本文将在未来几天持续更新可视化)

一个经过训练的语言模型会生成文本。

我们可以选择一些文本作为输入传递给它,从而影响它的输出。

输出是由模型在扫描大量文本的训练期间 "学到 "的东西生成的。

训练是将模型暴露在大量文本中的过程。它已经做了一次并完成了。你现在看到的所有实验都是来自那个训练过的模型。据估计,它耗费了355个GPU年,花费了460万美元。

一个有3000亿个字符的数据集被用来生成模型的训练样本。例如,这是由上面那句话生成的三个训练样本。

你可以看到你如何在所有文本上滑动一个窗口,并生成很多例子。

当我们只给模型一个样本时:我们只给看特征,并让它预测下一个单词。

该模型的预测将是错误的。我们计算其预测中的错误,并更新模型,以便下次它做出更好的预测。

重复这个过程数百万次


现在让我们更详细地看看这些相同的步骤。

GPT3实际上一次只生成一个token的输出(现在我们假设一个token是一个词)。


请注意:这是对GPT-3工作原理的描述,而不是对它的新颖之处的讨论(主要是规模大得可笑)。其架构是基于的 transformer 解码器模型, 参见这篇论文

GPT3 极其巨大。它将从训练中学习到的内容编码成1750亿个参数。这些参数用于计算每次运行时生成的 token。

未经训练的模型以随机参数开始。训练以期找到更好的预测值。


这些数字是模型里面数百个矩阵的一部分。预测主要就是大量的矩阵乘法。

在我的YouTube 上的人工智能介绍中,我展示了一个简单的机器学习模型,它只有一个参数。为解读这个1750亿个参数的怪兽开了个好头。

为了理解这些参数是如何分布和使用的,我们需要打开模型看看里面的情况。

GPT3 的宽度是2048个 token。这是它的 "上下文窗口"。这意味着它沿着这2048条轨道处理 token。


让我们跟随紫轨,看看系统是如何处理"机器人"这个词并产生"A"的?

抽象的步骤:

  1. 将单词转换为代表单词的向量(数字列表)
  2. 计算预测值
  3. 将所得向量转换为单词

GPT3的重要计算发生在其96个 transformer 解码层的堆栈中。

看到这些层了吗?这就是 "深度学习 "中的 "深度"。

这些层中的每一层都有1.8亿个参数来进行计算。


你可以在我的博文图解GPT2中看到解码器内部一切的详细解释。

与GPT3的不同之处在于密集自注意层和稀疏自注意层的交替。

这是GPT3内输入和响应("Okay human")的X光片。注意,每一个token是如何通过整个层堆栈的。我们不关心第一个词的输出。当输入完成后,我们开始关心输出。我们把每个词都反馈到模型中。

在React代码生成的例子中,描述会是输入提示(绿色),此外还有几个对代码描述的例子吧。而 React 代码会像这里的粉色 token 一样一个个地生成。

我的假设是,将引例和描述作为输入,用特定的 token 将例子和结果分开,然后输入到模型中。


这种方式让人印象深刻。因为我们只要等到GPT3的微调推出。它的性能将更加惊人。

微调实际上是更新模型的权重,让模型在某项任务中表现得更好。


如果你也想成为更高效的人,欢迎加入我们的 TG 群

也欢迎订阅我们的 TG 频道