LLM | GPT-NEOX论文详解

GPT-NEOX使用旋转位置编码。模型权重使用float16表示。最大序列长度为2048。

论文题目:2022.04.14_GPT-NeoX-20B: An Open-Source Autoregressive Language Model

论文地址:2204.06745.pdf (arxiv.org)

论文代码:EleutherAI/gpt-neox: An implementation of model parallel autoregressive transformers on GPUs, based on the DeepSpeed library. (github.com)

Demo:GPT-NeoX (huggingface.co)

论文详解

 概述

介绍了 GPT-NeoX-20B,这是一个在 Pile【1】 数据集上训练的 200 亿参数自回归语言模型,其权重是开源的。在这项工作中,描述了 GPT-NeoX-20B 的架构和训练,并评估了其在一系列语言理解方面的性能, 数学和基于知识的任务。GPT-NeoX-20B 是一个特别强大的小样本推理器,并且 在评估时,性能比类似大小的 GPT-3 和 FairSeq 模型高得多。是开源训练和评估代码以及模型权重。

1.模型架构

  • GPT-NeoX-20B 是一种自回归 transformer 解码器模型,它在很大程度上遵循了 GPT-3 的模型,但有一些明显的偏差
  • 该模型有 200 亿个参数、44 层、隐藏维度大小为 6144 和 64 个头。

旋转位置嵌入

  • 与 RoFormer 一样,使用旋转嵌入代替 GPT 模型中使用的学习位置嵌入。

在基础的位置嵌入上,关于m位置的token,注意力在m-n上,做线性依赖的嵌入空间进行提取

也就是Xm和Xn是各位置出现的,已经处理之后的m和n的token嵌入,Wtq和Wk是下面公式的查询(query)和key的权重

 换句话说,如下图,

如果Enhanced的位置编码是1,经过编码后如虚线部分位置,通过公式进行变换(回传)编码部分。

 在GPT-NeoX-20B中旋转嵌入适作用于编码向量的前25%,早期实验结果中证明性能和计算的有效性相对来说比较好。 

更加高效的训练

并行注意力和全连接层

为了提高计算效率,需要并行计算和添加注意力层和前馈层。

初始化

在前馈输出层中,使用了可定义为 2/L√d 的初始化架构。(为防止激活随着深度和宽度的增加而变大。

密集层

GPT3 在密集层和稀疏层之间交替,而 GPT-NeoX-20B 仅使用密集层来降低实现复杂性。

2.训练

基于数据集Pile训练

Tokenization: BPE

3.结果

3.1.自然语言任务

GPT-NeoX-20B在某些任务(如ARC、LAMBADA、PIQA、PROST)上的表现优于FairSeq 13B,而在其他任务上表现较差。(例如 HellaSwag、LogiQA Zero-Shot)。在 32 项任务中,22 项表现良好,4 项表现不佳,6 项在误差范围内。

GPT-NeoX-20B在HellaSwag上的性能最低,在Zero-Shot和Five-Shot设置下的得分比FairSeq 13B低四倍。

3.2.数学任务

对于数学问题,GPT-3 和 FairSeq 模型的表现相似,而 GPT-J 和 GPT-NeoX 模型的表现始终更好。鉴于 GPT-J 与 Pile 数据集中许多方程的相关性,可以假设这是由于数据造成的,由于训练数据不公开,因此很难验证它们。

3.3.高级任务

在基于知识的高级任务中,MMMLU(多学科多项选择题)GPT-NeoX 和 FairSeq 模型优于 GPT-3,在五轮学习中尤为突出。

在之前的研究中,Zero-Shot 和 Few-Shot 之间的性能差异并不显著,但在 GPT-NeoX 和 FairSeq 模型的情况下,发现 Zero-Shot 之间的差异可以忽略不计,而当增加到 Five-Shot 时,性能提升明显更大。

强大的小样本学习

实验结果表明,与FairSeq模型相比,GPT-J和GPT-NeoX在Few-Shot设置中具有明显更大的优势。

与Zero-Shot相比,GPT-J-6B和GPT-NeoX-20B分别提高了0.0526和0.0598,而FairSeq 6.7B和13B型号分别提高了0.0051和0.0183。

 

扩展

大模型训练流程

  • 数据并行:模型的参数被复制到每个GPU上。每个GPU负责处理一部分独立的训练数据,并计算梯度。然后,这些梯度被汇总并应用于更新模型参数。这样,每个GPU都在处理整个模型的一部分数据,从而加速训练。
  • Batch Size:批量大小通常被等分到每个GPU上。例如,如果你有4个GPU,每个GPU可能处理总批量大小的1/4。
  • 模型参数同步:在训练过程中,模型参数需要在不同的GPU之间同步,以确保它们保持一致。这可以通过梯度汇总和模型参数更新来实现。在深度学习框架中,通常会使用反向传播算法来计算每个GPU上的梯度,然后将这些梯度汇总起来,最后应用于更新模型参数。
  • 数据分发:训练数据需要被分发到不同的GPU上。这可以通过数据切片或数据分区的方式实现。确保每个GPU都有足够的训练数据以进行有效的学习。
  • 模型架构:在训练大型语言模型时,通常会使用分层的模型结构,以便更好地适应多GPU的训练。例如,可以使用分布式的Transformer架构。
  • 内存管理:确保每个GPU的显存都足够容纳模型参数、梯度和训练数据。对于大型语言模型,可能需要特别注意内存的管理,以避免显存不足的问题。

参考文献

【1】Datasheet for the Pile – arXiv Vanity (arxiv-vanity.com)

【2】Review — GPT-NeoX-20B: An Open-Source Autoregressive Language Model | by Sik-Ho Tsang | Medium【3】Relative Positional Encoding - Jake Tae

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天|여름이다

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值