一直以来,大家都对 GPT-4 的模型架构、基础设施、训练数据集、成本等信息非常好奇。


(资料图)

奈何 OpenAI 嘴太严,很长时间以来,大家也都只是猜测这些数据。

不久之前,乔治・霍兹(George Hotz)在接受一家名为 Latent Space 的 AI 技术播客采访时透露出一个小道消息,称 GPT-4 是由 8 个混合专家模型组成的集成系统,每个专家模型都有 2200 亿个参数(比 GPT-3 的 1750 亿参数量略多一些),并且这些模型经过了针对不同数据和任务分布的训练。

虽然此消息无法验证,但其流传度非常高,也被部分业内人士认为非常合理。

最近,更多的消息似乎被泄露了出来。

今日,SemiAnalysis 发布了一篇付费订阅的内容,「揭秘」了有关 GPT-4 的更多信息。

图片

文章称,他们从许多来源收集了大量有关 GPT-4 的信息,包括模型架构、训练基础设施、推理基础设施、参数量、训练数据集组成、token 量、层数、并行策略、多模态视觉适应、不同工程权衡背后的思维过程、独特的实现技术以及如何减轻与巨型模型推理有关的瓶颈等。

作者表示,GPT-4 最有趣的方面是理解 OpenAI 为什么做出某些架构决策。

此外,文章还介绍了 A100 上 GPT-4 的训练和推理成本,以及如何拓展到下一代模型架构 H100 。

我们根据 Deep Trading(一家算法交易公司)创始人 Yam Peleg 的推文(目前已删除),整理了以下关于 GPT-4 的数据信息。感兴趣的读者可以细致研究下。

图片

不过请注意,这并非官方确认的数据,大家自行判断其准确性。

图片

1、参数量:GPT-4 的大小是 GPT-3 的 10 倍以上。文章认为它 120 层网络中总共有 1.8 万亿个参数。

2、确实是混合专家模型。OpenAI 能够通过使用混合专家(MoE)模型来保持合理成本。他们在模型中使用了 16 个专家模型,每个专家模型大约有 111B 个参数。这些专家模型中的 2 个被路由到每个前向传递。

3、MoE 路由:尽管文献中对于选择将每个 token 路由到哪个专家模型的高级路由算法进行了大量讨论,但据称 OpenAI 在当前的 GPT-4 模型中采用了相当简单的路由方式。该模型大约使用了 550 亿个共享参数来进行注意力计算。

图片

4、推理:每次前向传递的推理(生成 1 个 token)仅利用约 2800 亿个参数和约 560 TFLOP 的计算量。相比之下,纯密集模型每次前向传递需要大约 1.8 万亿个参数和约 3700 TFLOP 的计算量。

5、数据集:GPT-4 的训练数据集包含约 13 万亿个 token。这些 token 是重复计算之后的结果,多个 epoch 中的 token 都计算在内。

Epoch 数量:针对基于文本的数据进行了 2 个 epoch 的训练,而针对基于代码的数据进行了 4 个 epoch 的训练。此外,还有来自 ScaleAI 和内部的数百万行的指令微调数据。

6、GPT-4 32K:在预训练阶段,GPT-4 使用了 8k 的上下文长度(seqlen)。而 32k 序列长度版本的 GPT-4 是在预训练后对 8k 版本进行微调而得到的。

图片

7、Batch Size:在计算集群上,几天时间里,batch size 逐渐增加,最后,OpenAI 使用 batch size 达到了 6000 万!当然,由于不是每个专家模型都能看到所有 token,因此这仅仅是每个专家模型处理 750 万个 token 的 batch size。

真实的 batch size:将这个数字除以序列长度(seq len)即可得到真实的 batch size。请不要再使用这种误导性的数字了。

8、并行策略:为了在所有 A100 GPU 上进行并行计算,他们采用了 8 路张量并行,因为这是 NVLink 的极限。除此之外,他们还采用了 15 路流水线并行。(很可能使用了 ZeRo Stage 1,也可能使用了块级的 FSDP)。

9、训练成本:OpenAI 在 GPT-4 的训练中使用了大约 2.15e25 的 FLOPS,使用了约 25,000 个 A100 GPU,训练了 90 到 100 天,利用率(MFU)约为 32% 至 36%。这种极低的利用率部分是由于大量的故障导致需要重新启动检查点。

如果他们在云端的每个 A100 GPU 的成本大约为每小时 1 美元,那么仅此次训练的成本将达到约 6300 万美元。(而如今,如果使用约 8192 个 H100 GPU 进行预训练,用时将降到 55 天左右,成本为 2150 万美元,每个 H100 GPU 的计费标准为每小时 2 美元。)

10、使用专家混合模型时的 tradeoff:在使用专家混合模型时存在多方面 tradeoff。

例如,在推理过程中处理 MoE 非常困难,因为并非模型的每个部分都在每个 token 生成时被利用。这意味着在某些部分被使用时,其他部分可能处于闲置状态。在为用户提供服务时,这会严重影响资源利用率。研究人员已经证明使用 64 到 128 个专家比使用 16 个专家能够实现更好的损失(loss),但这仅仅是研究的结果。

选择较少的专家模型有多个原因。OpenAI 选择 16 个专家模型的一大原因是:在许多任务中,更多的专家模型很难泛化,也可能更难收敛。

由于进行了如此大规模的训练,OpenAI 选择在专家模型数量上更加保守。

图片

11、推理成本:GPT-4 的推理成本是 1750 亿参数的 Davinci 模型的 3 倍。这主要是因为 GPT-4 需要更大规模的集群,并且达到的利用率要低得多。

据估计,在用 128 个 A100 GPU 进行推理的情况下,8k 版本 GPT-4 推理的成本为每 1,000 个 token 0.0049 美分。如果使用 128 个 H100 GPU 进行推理,同样的 8k 版本 GPT-4 推理成本为每 1,000 个 token 0.0021 美分。值得注意的是,这些估计假设了高利用率和保持较高的 batch size。

12、Multi-Query Attention:OpenAI 和其他机构一样,也在使用 Multi-Query Attention(MQA)。由于使用 MQA 只需要一个注意力头(head),并且可以显著减少用于 KV 缓存的内存容量。即便如此,32k 序列长度的 GPT-4 也绝对无法在 40GB 的 A100 GPU 上运行,而 8k 序列长度的模型则受到了最大 batch size 的限制。

图片

13、连续 batching:OpenAI 实现了可变 batch size 和连续 batching。这样做是为了允许一定程度的最大延迟,并优化推理成本。

14、视觉多模态:它是一个独立于文本编码器的视觉编码器,二者之间存在交叉注意力。该架构类似于 Flamingo。这在 GPT-4 的 1.8 万亿个参数之上增加了更多参数。在纯文本的预训练之后,它又经过了另外约 2 万亿个 token 的微调。

对于视觉模型,OpenAI 本来希望从零开始训练,但由于其尚未成熟,所以他们决定先从文本开始训练来降低风险。

这种视觉能力的主要目的之一是使自主智能体能够阅读网页并转录图像和视频中的内容。

他们训练的一部分数据是联合数据(包括渲染的 LaTeX / 文本)、网页的截屏、YouTube 视频(采样帧),并使用 Whisper 对其进行运行以获取转录文本。

图片

15、推测式解码(Speculative Decoding):OpenAI 可能在 GPT-4 的推理过程中使用了推测式解码技术(不确定是否 100%)。这种方法是使用一个更小更快的模型提前解码多个 token,并将它们作为单个 batch 输入到一个大型的预测模型(oracle model)中。

如果小型模型对其预测是正确的,大型模型将会同意,我们可以在单个 batch 中解码多个 token。

但是,如果大型模型拒绝了草稿模型预测的 token,那么 batch 中剩余的部分将被丢弃,然后我们将继续使用大型模型进行解码。

有些阴谋论指出,新的 GPT-4 质量已经下降,这可能只是因为他们让推测式解码模型(speculative decoding model)将概率较低的序列传递给预测模型,从而导致了这种误解。

图片

16、推理架构:推理运行在由 128 个 GPU 组成的集群上。在不同地点的多个数据中心存在多个这样的集群。推理过程采用 8 路张量并行(tensor parallelism)和 16 路流水线并行(pipeline parallelism)。每个由 8 个 GPU 组成的节点仅具有约 1300 亿个参数。

该模型有 120 层,因此适合于 15 个不同的节点。可能第一个节点的层数较少,因为它还需要计算嵌入。

根据这些数字,如果 OpenAI 试图按照 chinchilla 的最佳指标进行训练,他们应该使用的 token 数量是现在的两倍。这表明他们在获取高质量数据方面遇到了困难。

最后想说的是,这应该是迄今为止关于 GPT-4 最为详细的数据揭秘。目前还不能求证是否真实,但也值得大家研究下。正如原文作者所说,「有趣的方面是理解 OpenAI 为什么做出某些架构决策。

关于 GPT-4 的这些架构信息,你怎么看?

推荐内容