爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x

新智元报道 编辑:编辑部 【新智元导读】GPT-4又出业内爆料了!参数、架构、训练数据集、token、训练和推理成本……一次爆了个全。而鉴于作者此前的战绩,这份爆料确实具有一定的参考价值。 就在刚刚,OpenAI的GPT-4又被业内人士「开源」了!
其中包括GPT-4的架构、训练和推理的基础设施、参数量、训练数据集、token数、成本、混合专家模型(Mixture of Experts,MoE)等非常具体的参数和信息。 
尤其是,在不同工程背后,OpenAI究竟是怎样权衡的。以及在巨型模型推理时,如何跨越其中最大的瓶颈。 如此重磅的爆料,出自何许人也? 
文章作者,是SemiAnalysis的两位名叫Dylan Patel和Gerald Wong的撰稿人。 值得一提的是,此前曾在业内引起轩然大波的谷歌内部文件泄漏事件(「我们没有护城河,OpenAI也没有」),作者之一同样是Dylan Patel。 
而DeepMind CEO Hassabis近日在外媒The Verge的采访中,确认了这份谷歌工程师泄漏文件的真实性。 可见,Dylan Patel的确有一些特殊渠道,这就让今日这份爆料的真实性又提高了几分。 
出门问问CEO李志飞对此也发表了感言 很多企业都能做出GPT-4 在爆料文章作者看来,OpenAI之所以不open,不是为了确保人类不被AI毁灭,而是因为他们构建的东西是可复制的。 他甚至预计,未来所有中国和美国的互联网大厂或者AI头部初创企业,都会有能力构建出和GPT-4一样,甚至是超过GPT-4的模型。 但他同时也承认,GPT-4是OpenAI的伟大杰作。它凝结了工程师的匠心设计,复杂的构架和各种巧妙的工程上的取舍。 
而OpenAI最持久的护城河,是他们拥有真实用户的使用反馈,业内最顶尖的工程人才,以及先发优势带来的持续领先地位。 模型框架 首先爆料作者认为,GPT-4在120层中总共包含了1.8万亿参数,而GPT-3只有约1750亿个参数。 也就是说,GPT-4的规模是GPT-3的10倍以上。 
此前网上流传的说法是,GPT-4的参数是1万亿,看来离实际情况还是低估了 为了保持合理的成本,OpenAI采用了MoE模型来进行构建。 具体而言,GPT-4拥有16个专家模型,每个MLP专家大约有1110亿个参数。其中,有两个专家模型被用于前向传播。 虽然文献中大量讨论了选择每个token指向哪些专家的高级算法,但是据说,OpenAI用于GPT-4的算法,其实非常简单。 此外,模型中还有大约550亿个参数,被用做注意力机制的共享。 在每次的前向传播推理(生成一个token)中,GPT-4只需要使用大约2800亿参数和560TFLOPs。 这与很多纯密集模型每次前向传播需要大约1.8万亿参数和3700TFLOPs形成了鲜明的对比。 数据集的构成 OpenAI用13万亿的token训出了GPT-4。 这个数据集不单单是包含了13万亿的token,而且因为没有高质量的token,这个数据集还包含了许多个epoch。 在Scale AI和数据集内部,还包含了数百万行的指令微调数据。 不过爆料作者说,在这些RLHF数据上,他们并没有找到太多信息。 在预训练阶段的上下文长度达到了8K(seqlen),而32k的版本是基于预训练后的8K版本微调而来的。 批大小在集群中是几天之内逐渐增加的,最终OpenAI使用的批大小为6000万。 当然,这「只是」每个750万token的专家模型的大小,因为不是每个专家模型都会看到全部的token。 并行策略 并行策略对于A100GPU是相当重要的。 OpenAI采用了8路张量并行,因为NVLink最高只支持这么多。 但除此之外,爆料作者听说OpenAI采用15路并行管线。 理论上,考虑到数据通信和计算时间,15个管线就有些多了。 但是因为受到内存容量的限制,这么多的管线就是有意义的了。 当纯管线和张量并行时,每个GPU的FP16参数大约是30GB。 但是一旦加上了KV缓存和成本,如果OpenAI使用的GPU大部分是40GB的A100,那这样的构架在理论上就是有意义的。 可能OpenAI使用的是ZeRo Stage 1,并且可能使用的是块级FSDP或者是混合共享数据并行。 为什么他们没有使用FSDP的全模型呢?可能是因为过高的通信成本。 虽然OpenAI大多数节点之间都有高速网络,但是没有覆盖所有的节点。 其中,至少有一些集群的连接带宽会比其他的集群低很多。 但是作者表示,他并不是太明白OpenAI在如此高的管线并行度下,如何避免在每批中产生如下图这样的「泡泡」(huge bubbles),很有可能OpenAI就是生生地抗下了这些成本。 
训练成本 OpenAI训练GPT-4的FLOPS约为2.15e25,在大约25000个A100上训练了90到100天,利用率在32%到36%之间。 这种极低的利用率,部分原因是故障数量过多,这就会导致需要重新从之前的检查点开始训练。比如上面提到的气泡成本。 这种情况浪费的训练成本极高。 另一个原因是这么多GPU之间的all-reduce非常昂贵。 
此图表假设,无法融合每个操作、注意力机制所需的内存带宽、硬件开销相当于参数读取,都会导致效率低下。实际上,即使使用优化的库,比如英伟达的FasterTransformrmer库,总开销甚至还会更大 爆料作者怀疑,如果这种集群实际上是一群具有较弱网络连接的较小集群构成的,那么集群不同部分之间的非阻断(non-block)连接速度为800G/1.6T,但这些部分之间的连接速度仅为200G/400G。 如果OpenAI云计算的成本是差不多1美元/每A100小时的话,那么在这样的条件下,训练成本大约是6300万美元。 这还不包括所有的实验、失败的训练和其他成本,比如数据收集、RLHF、人力成本等。 如果考虑到刚刚说的这些因素,真实成本要高得多的多。 此外,这还得是在能别人买得到芯片/网络/数据中心,承担资本支出组建了这些系统,并将它们租给OpenAI的前提下。 但是放到今天,在2美元/每H100小时的条件下,预训练可以在大约8,192个H100上进行,只需要55天,费用为2150万美元。 
上图显示了一些已公开的先进模型各自的参数数量和token。图中的线是谷歌DeepMind的Chinchilla缩放观测值(平滑了较大的误差条),线上的每一点都显示了使用该参数和token数训练模型所需的理论FLOPS 不过,爆料作者称到今年年底,至少将会有9个公司拥有超过上述大小的H100集群。 虽然并非所有这些公司都会将它们全部用于单个模型训练,但如果有公司这样做的话,他们将拥有比GPT-4更大的模型。 比如Meta到今年年底将拥有超过100,000个H100,但其中相当一部分将分布在自己的数据中心进行推理。 但是它最大的单个集群仍将超过25,000个H100。 总之,到今年年底,许多公司都会拥有足够的算力资源,来训练GPT-4大小的模型。 
本表是在英伟达A100上训练模型的理论最佳成本,没有考虑所需的人力、ML Ops工具、数据收集/预处理、故障恢复、one-shot/few-shot学习示例、推理等,许多部分的成本高得惊人 混合专家模型方面的权衡 MoE(混合专家模型)是一种在推理过程中减少参数量的很好方法,虽然同时会增加参数量。 但是这对于每个训练标记来编码更多信息是必要的,因为获取足够高质量的标记非常困难。 如果OpenAI真的想追求最佳性能,他们需要训练两倍的token才能达到。 话虽如此,OpenAI还是做出了不少的取舍。 例如,在推理过程中处理MoE非常困难,因为模型的每个部分并不在每个token生成时都被使用。 这意味着有些部分可能处于休眠状态,而其他部分在工作。 当为用户提供服务时,这种情况会大大降低利用率。 研究人员已经证明,使用64-128个专家模型比使用16个专家模型能够获得更好的损失情况,但这仅仅是研究结果。 采用相对比较少的专家模型的原因很多,OpenAI选择16个专家的原因之一是因为在许多任务上更多的专家模型很难泛化。 使用更多的专家模型也更难实现收敛。 在如此庞大的训练过程中,OpenAI选择在专家模型数量上反而更为保守。 此外,使用较少的专家模型还有助于他们的推理基础架构。在切换到混合专家模型推理架构时,存在各种困难的取舍和权衡。 爆料作者从对LLM推理的基本取舍开始讨论,然后再讨论OpenAI面临的问题和他们所做的选择。 推理权衡 在介绍推理权衡之前,顺带提一下,爆料者与所有的LLM公司交谈过后,发现英伟达的FasterTransformer推理库非常糟糕,TensorRT更是如此。 这意味着,如果英伟达不修改,人们还需要从头开始创建自己的解决方案。 推理大型语言模型有三个主要的权衡,即批大小(同时处理用户数)维度和使用的芯片数量,具体如下:
|