CRAMMING: TRAINING A LANGUAGE MODEL ON A SINGLE GPU IN ONE DAY阅读笔记

初始数据设置

使用2^15 = 32768 的wordpiece。使用BPE或n-gram没有明显变化,2^12、13、14会导致性能下降,2^16不见得更好。

将标记化的数据打包成长度为128的随机序列,删除<sep>影响很小,加入<cls>没有明显变化

注意力头

我们禁用所有QKV偏置。这通过删除一层计算来利用缩放定律,使向前和向后的过程稍微更快,同时保持模型大小几乎不变。可以通过减少注意力头部的数量来降低梯度成本,因为这可以在GPU上更好地并行化,并略微提高性能。然而,减少注意力头数量也会降低微调性能,因此我们最终保留了所有12个注意力头。我们发现,更换softmax操作没有好处.我们进一步保持了最初的多头自我注意机制。大量工作集中于有效注意力和有效注意力研究.

但是,因为我们将最大序列长度设置为128,所以注意力复杂性在我们的设置中不太重要。为了验证这一点,我们实施了最近提出的FLASH机制,但没有发现任何好处.我们进一步实验了Lee-Thorp等人提出的Fourier注意,但没有发现任何改进.我们发现旋转嵌入带来的好处很小,但由于速度下降,这些都被抵消了,所以我们最终决定不这样做。

前馈模块

我们发现禁用所有线性层偏差的经验收益(Dayma等人,2021)。与关注层一样,这通过加速梯度计算而利用了缩放定律,而不会对模型大小产生明显影响。因此,我们在不影响模型改进速度的情况下获得了更高的吞吐量。我们在很大程度上保持了原始前馈块的不变,发现换成另一种激活方式比GELU没有好处。

我们确实看到了将块重新排序为门控线性单元的微小改进(Dauphin等人,2017,Language Modeling with Gated Convolutional Networks)。与其他工作相比,例如(Black等人,2022),我们没有增加FFN块中的参数数量,以补偿由于选通导致的隐藏维度减半。

嵌入

我们实现了Hua等人(2022)中描述的缩放正弦位置嵌入,发现了比学习或未缩放正弦嵌入更大的好处。

我们没有看到解耦输入和输出嵌入的改进(Chung等人,2020)。Lan等人(2019)提出的对输入嵌入进行因子分解的建议在我们的设置中没有任何好处。我们在嵌入块的末尾包括一个层规范化。

层结构

正如在许多研究中观察到的,我们发现,使用层规范的预规范化(pre-normalization with Layer Norms)优于后层规范(post Layer Norms)。

我们看不到这种修改的其他变体带来的额外好处,例如(Liu等人,2020b;Shleifer等人,2021)。此外,用RMS归一化代替层归一化不会带来任何收益(Zhang&Sennrich,2019)。我们注意到,预正常化的关键作用是稳定训练,提高学习率并减少热身,我们认为单独使用它的好处有限。我们没有看到如(Zhang&He,2020)中所述的整个层的随机下降带来的好处。

Head Block

我们发现我们可以去除非线性头部而不会产生不良影响。我们可以进一步降低解码器偏差(Radford等人,2019年),并使用稀疏令牌预测获得内存(Liu等人,201九年;Izsak等人,2021)。我们添加了一个最终的层规范,以进一步稳定训练。

超参

Masked

我们只在完全填鸭的令牌块上使用掩码语言建模进行训练,掩码率为15%,Devlin等人(2019)的原始设置中,所有掩码的10%填鸭了随机单词,10%保持不变。

我们发现,在更大的速率下,如(Wettig等人,2022)中所建议的40%,掩蔽没有改善,见附录。我们认为启用或禁用上述20%规则没有区别。我们评估了掩盖语言目标的其他功能,如均方误差(Hui&Belkin,2021)或L1损失,但没有发现任何益处。

优化器

我们选择Adam(Kingma&Ba,2015)作为优化器,权重衰减为0.01,如(Loshchilov&Hutter,2017)所述,β1=0.9,β2=0.98,ε=10−12。为了在不增加额外成本的情况下稳定训练,我们在截断值为0.5的情况下包括梯度截断。

我们发现,以合理的数量改变这些参数没有明显的变化,例如ε=10−6,β1=0.9,β2=0.999。我们测试了其他一阶自适应优化器(Shazeer&Stern,2018;Liu等人,2020a),但在我们的设置中没有发现任何优势。我们进一步发现使用高阶优化器没有任何优势(Yadav,2020;Anil等人,2021),但注意到,特别是对于高阶优化器,在实现中存在较大的可变性。

学习率

根据Izsak等人(2021)的建议,我们重新调整了学习率计划,使其与我们的预算挂钩,并且随着预算降至零,学习率会下降。有趣的是,我们在图2中观察到,虽然在全球范围内,大量的学习率形状会导致类似的损失减少,但我们发现,通过选择时间表,我们可以获得一些收益。我们发现,峰值学习率为10−3的简单单周期学习率(Smith&Topin,2018)在我们的预算范围内导致最小的预训练损失。

BatchSize

我们的设置的一个特殊性是,由于限于单个GPU,找到该GPU的微批处理大小(大多数实验为96)比最佳批处理大小小几倍。我们发现,对于最小的预训练损失,此设置中的最佳批处理大小约为1536,而对于2080ti的最大下游性能,则为4032,即我们累积梯度,并且仅分别每16次和42次向前/向后通过一次更新。对于较大的A4000和A6000卡,这对应于128/256的微批量大小和4096的最终批量大小,我们再次累加。

幸运的是,我们可以通过使用积极的批量计划找到小的加速;我们在训练过程中线性增加平均微批量的数量。这会在训练的早期取得更大的进步,并对绩效带来一点好处。我们还试验了自动和自适应批处理规则(De等人,2017;Bollapragada等人,2018a;b),但发现这些自适应调度的最佳结果类似于固定的线性调度。为了简单起见,我们只使用更简单的线性计划。

正在删除Dropout

Devlin等人(2019)的原始BERT模型包括Vaswani等人(2017)中的Dropout,这防止了训练数据相对于总计算预算较小时的过度拟合。虽然它作为正则化器很有用,但丢弃有效地减少了每个参数看到的渐变更新的数量,因为在丢弃相关特征时不会发生更新。同时,更新运行时不会受到丢失的强烈影响,因此丢失会导致每秒更新的净减少。

在填鸭式设置中,与计算相比,训练数据很大。由于单epoch计划,过度拟合是不可能的,我们在预训练期间禁用了DP(Brown等人,2020),以最大化参数更新的数量。我们在下游微调期间重新启用DP,DP值为0.1。

此外,我们实验了长度课程(Li等人,2022)(见附录)和令牌丢弃(Hou等人,2022年),但在我们的设置中没有发现任何收获。

优化数据集

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]和\[2\]中提到了一个问题,即在使用Anaconda时,出现了无法找到依赖库的错误。具体来说,无法找到Qt5Widgetsd.dll文件。这可能是由于文件路径错误或文件缺失导致的。解决这个问题的方法是确保文件路径正确,并检查文件是否存在。如果文件确实缺失,可以尝试重新安装或更新相关的依赖库。 引用\[3\]中提到了另一个问题,即在运行QT程序时找不到msvcp140.dll / msvcp140d.dll,vcruntime140.dll / vcruntime140d.dll ,ucrtbased.dll等文件。这些文件是Microsoft Visual C++ Redistributable的一部分,缺失这些文件可能是由于未正确安装或缺少更新导致的。解决这个问题的方法是安装或更新Microsoft Visual C++ Redistributable。 综上所述,解决QT无法找到依赖的问题需要确保文件路径正确,并检查文件是否存在。如果文件确实缺失,可以尝试重新安装或更新相关的依赖库。另外,还需要安装或更新Microsoft Visual C++ Redistributable以解决缺失相关文件的问题。 #### 引用[.reference_title] - *1* [Qt windeploy.exe打包程序报错无法找到Anaconda3中的依赖](https://blog.csdn.net/cramming/article/details/129672845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [三维重建 - Clion打包C++代码(包含qt库,opencv以及dcmtk)](https://blog.csdn.net/weixin_42089190/article/details/124141056)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值