通信人家园

标题: 细节对比:GPT系列模型的变化  [查看完整版帖子] [打印本页]

时间:  2023-9-26 09:06
作者: 溯溪而上     标题: 细节对比:GPT系列模型的变化

作者Tim在路上

随着生成式预训练模型的成功(GPT),似乎什么都可以采用生成式预训练模型来处理。通过“大力出奇迹”似乎什么问题都可以被解决,通用大模型的时代似乎已然到来。

今天我们就简单总结对比下GPT系列模型的差异,了解GPT系列模型的发展过程。

GPT-1
GPT的第一篇论文,只有四位作者,当时发表是也不是特别突出。而且它不遵循任何惯例,在论文中数据集以 GB 而不是token来描述,并且模型中的参数数量没有明确说明,甚至怀疑这不是一个特别被重视的项目。

不过,其创造性的提出以Transformer的解码器来训练生成式模型,后面Bert的作者估计是看到了这篇论文,据说两个月时间就发表了以Transformer编码器训练的Bert模型。

我们来总结下GPT-1模型:

参数数量上没有明确说明,但似乎约为 120M,足以轻松在单个标准 GPU 上运行。

粗略估计模型参数为 120M,优化器为 240M,参数为 360M;假设每个都是float32,那么这占用4字节* 360M = 1440MB/1.4GB。

他们使用BooksCorpus数据集(约 20M 个tokens),训练 100 个epochs,batch size大小为 64。按照现代标准,20M tokens是一个非常小的数据集。

与现在 GPT 相比,最令人惊讶的是它们训练了 100 个 epoch。现在GPT 很少会看到重复的数据,即使看到了,它们通常也只会看到某些数据点少量次数(2-4 倍),很难想象其重复了 100 次。

[1] https://openai.com/research/language-unsupervised

GPT-2

GPT-2 是GPT语言模型开始变大的地方,这是 OpenAI 第一次训练超过 1B 个参数的模型。

通过提升模型的规模,来凸显GPT的优势。在 GPT-1 中,作者训练了单个模型,但在这里,作者训练了一系列模型,其大小范围从 1x GPT-1 到 10x GPT-1(这是实际的 GPT-2 模型)。

与GPT-1相比,架构上有如下差异:

相比GPT-1数据集要大得多,从包含公开数据的大约 20M tokens (4GB) 数据到从互联网 ( WebText ) 抓取的 9B tokens 1 (40GB) 文本。

目前还不清楚他们是否像以前一样对模型进行了 100 epoch训练;他们说他们遵循了相同的训练程序,所以想必他们也遵循了同样的训练程序。同样,这与后来的工作有很大的不同。

从这里可以看出GPT-2与GPT-1 没有什么特别不同,最大的变化就是模型变大了。其他变化中比较重要的是是层规范的变化和权重缩放,但这似乎并没有产生很大的差异。

[2] https://openai.com/research/better-language-models

GPT-3

GPT-3是大语言模型开始受到关注的开始。在论文中,作者训练了 10 个模型,参数范围从 125M 个参数(“GPT-3 Small”)到 175B 个参数(“GPT-3”)。

640?wx_fmt=png

在GPT-3中,模型的架构与GPT-2完全相同。唯一的区别是它们在transformer的各层中使用了“交替的稠密和本地带状稀疏注意力模式”。简单来说,GPT-3在注意力机制上进行了优化,引入了稀疏注意力的概念。

传统的点积注意力在计算复杂度上较高,而稀疏注意力可以提供更高的扩展性,并且在处理长序列时具有更高的效率。这种改进使得GPT-3能够更好地处理长文本输入,并且在计算效率和模型表现方面有所提升。

GPT-3引入稀疏注意力的原因尚不清楚,也许是因为计算限制造成的,论文中并没详细的说明如何如何使用模型并行性训练模型,使得论文更难以复现。

[3] https://arxiv.org/abs/2005.14165

Megatron-Turing NLG

Megatron 是一篇极具影响力的论文,介绍了高效的模型并行架构。Megatron引入了张量并行(tensor parallelism),这是一种模型并行的变体,它将模型分割成多块,以实现层内模型并行,从而达到与单个GPU基准线76%效率相当的水平(尽管基准线只有峰值FLOPS的30%)。

在Megatron之前,模型并行ism的最新研究成果是使用模型流水线技术,例如GPipe。然而,这种方法很难实现,并且代码支持不够完善。也有一些尝试支持张量并行ism的工作,比如Mesh-Tensorflow,它引入了一种在TensorFlow中指定一类通用分布式计算的语言,但是并没有真正占据主导地位。

有趣的是,该论文的第一作者在发表前一年刚刚离开DeepMind进入Nvidia,这可能是他在Nvidia的第一个项目。

Megatron意识到如果,你有一个网络模型Y=f(XW),你沿着列拆分开了W=[W1, W2],然后Y=[f(XW1), f(XW2)],所以你不需要做任何操作来同步Y,transformer中唯一需要同步(all-reduce)的点是:


640?wx_fmt=png


通过在这两个关键点进行同步操作,可以保证Transformer模型在计算过程中的正确性和一致性。

我强烈怀疑这就是 GPT-3 所做的,但GPT-3没有详细说明它们使用的具体并行模型。

他的原话是这样的:

To train the larger models without running out of memory, we use a mixture of model parallelism within each matrix multiply and model parallelism across the layers of the network.
推测这种并行方式就是“每个矩阵乘法内的模型并行性”的含义。

PaLM
PaLM才是真正的“大”模型。它是迄今为止训练的最大的密集语言模型,参数为 540B,需要 6144 个 TPU 来训练(这是 3 个完整的 TPU pod,每个包含 2048 个 TPU)。这太贵了!可能只有谷歌拥有资源+基础设施来做到这一点。

与GPT-3相比的变化:

所以,有很多变化!同样,其中很多都是常见的,例如使用 GPT-3 的学习嵌入向量已经非常过时了,现在几乎没有人这样做。

LLaMa

LLaMa结合了PaLM和Chinchilla两个模型的最佳特点,并做出了一些改进:

在计算方面的变化有:

有趣的是,他们似乎在所有地方都使用了float32。但它没有像Chinchilla那样使用较低精度的计算。
作者唯一的抱怨是他希望他们能够将模型训练更长时间,因为学习曲线与收敛相差甚远!
[4] https://ai.facebook.com/blog/large-language-model-llama-meta-ai/

GPT-4

GPT-4是一种基于Transformer的模型,经过预训练来预测文档中的下一个标记(token),其中使用了公开可用的数据(如互联网数据)和从第三方提供商获得的数据进行训练。

接着,该模型使用强化学习从人类反馈中进行了优化。考虑到竞争环境和GPT-4等大规模模型的安全性影响,该技术报告没有提供有关架构(包括模型大小)、硬件、训练计算资源、数据集构建、训练方法等方面的进一步细节信息。

希望 OpenAI 未来发布一些有关其模型的信息。
[5] https://cdn.openai.com/papers/gpt-4.pdf

总结

我们简单总结下GPT模型的发展与变化:





附件: 640?wx_fmt=png (2023-9-26 09:05, 32.81 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=NTk4MDY2fGJkNDFlZWI1fDE3NDU3OTU3NjB8MHww

附件: 640?wx_fmt=png (2023-9-26 09:05, 150.57 KB) / 下载次数 0
https://www.txrjy.com/forum.php?mod=attachment&aid=NTk4MDY3fDkxMWEwNTNifDE3NDU3OTU3NjB8MHww
时间:  2023-9-26 09:27
作者: cnqq9999

循序渐进,逐步深入




通信人家园 (https://www.txrjy.com/) Powered by C114