我用24小时、8块GPU、400美元在云上完成训练BERT!

news/2024/7/1 2:42:04

点击上方“视学算法”,选择加"星标"或“置顶

重磅干货,第一时间送达

丰色 发自 凹非寺
量子位 报道 | 公众号 QbitAI

大型语言模型BERT,熟悉NLP领域的同学没人不知道它的名气吧?

只可惜它太太太贵了!

之前有做过统计,使用谷歌云TPU或英伟达GPU训练完整个模型需要虽然只需1个小时,但是上千块TPU/GPU均需耗价上万美元。

只有少数“富贵人家”的行业实验室才能够负担得起。

为了降低成本,来自以色列的科学家们结合已有的技术对BERT做了多方面优化,只需24小时、8个12GB内存的云GPU,一次几百美元就能在加快训练过程的同时,还能保证准确性几乎不损失。

终于,“普通家庭”也不怕“囊中羞涩”了。

24小时、8个云GPU(12GB内存)、$300-400

为了模拟一般初创公司和学术研究团队的预算,研究人员们首先就将训练时间限制为24小时,硬件限制为8个英伟达Titan-V GPU,每个内存为12GB。

参考云服务的市场价格,每次训练的费用大约在300到400美元之间。

此前很多人尝试用最新的算法(eg.clark-etal-2020-learning等)来减少训练BERT所需的计算过程。

而这批研究人员们选择回归BERT模型本身进行优化。

他们结合了各种最新的技术来优化掩码语言模型(masked language model)。虽然这些技术以前都被使用过,但这是它们首次作为一个统一的框架组合出现。

五点优化:将训练时间缩短了1/3

首先分别进行了以下五点优化:

  • 数据:由于研究人员的重点是句子分类,他们便将整个预训练过程的序列长度限制为128个标记。并使用单序列训练。为了减少在验证集上计算性能所花费的时间,只保留0.5%的数据(80MB),并且每30分钟计算一次验证损失(validation loss)。

  • 模型:训练了一个大模型,因为在相同的挂钟时间Li2020TrainLT下,较大的模型往往比较小的模型获得更好的性能。

  • 优化程序:研究人员借鉴了RoBERTa的优化,采用如下参数:β1 = 0.9, β2 = 0.98, ε = 1e-6, 权重衰减 = 0.01, dropout = 0.1, attention dropout = 0.1。

  • 软件:使用的是DeepSpeed软件包,修改了部分实现,将掩码语言模型的预测头替换为稀疏标记预测。

  • I/O:为了减少I/O瓶颈,研究人员采用devlin-etal-2019-bert的技术并将原始语料库的10个副本预屏蔽(pre-mask)。

将优化后的框架和官方发布实现比较后发现:

使用官方代码训练基本模型需要近6天的时间,训练大型模型需要多达26天。

相比之下,研究人员优化后显著加快了训练速度,将训练大型模型的时间缩短了2/3(8天)。如果扩大batch size,则只需不到3天

超参数调优:MLM损耗更低

超参数配置是提高深度学习模型和NLP的性能关键。

为了适应该项目的低配设置,研究人员参考的此前的一些技术实现对4个超参数进行了调优。

1、Batch Size (bsz):由于每个GPU上显存有限,分别设置为4096、8192和16384。
2、峰值学习率(lr):使用线性学习速率,从0开始,预热到最高学习速率后衰减到0。分别设置为5e-4、1e-3和2e-3。
3、预热学习率(wu):分别设置为0%、2%、4%和6%,成比例“预热”。
4、总天数(days):学习率调度器衰减回0所需的总天数。分别设置为1、3、9。

依据以上的超参数配置,最终筛选出的能够在24小时之内完成训练的配置参数。

下表是按MLM损耗计算的最佳配置。

MLM:masked language modeling掩码语言模型

可以发现,该团队的优化后的性能远远高于使用BERT默认超参数。

最后,选择性能最佳的优化模型“Search #1”将其命名为“24hBERT”,与BERT模型先前配置的学习曲线进行比较也能发现,24hBERT收敛明显提前, MLM损耗更低

最后,研究人员表示该优化方法可能需要一段时间来适应目前的硬件和时间限制。

他们也希望这次研究能让更多的人参与进来,让训练BERT模型这件“核弹级别”的操作变得更“接地气儿”。

GitHub传送门:https://github.com/peteriz/academic-budget-bert

参考链接:

[1]https://arxiv.org/abs/2104.07705

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

点个在看 paper不断!


http://lihuaxi.xjx100.cn/news/269969.html

相关文章

夺命雷公狗---linux NO:3 centos_mini版的安装和备份

废话不多说,和前面的其实是差不多的,如下图所示: 安装其实是和桌面版的差不多的,但是经典版的不能自定义分区(如详细区,如home之类的)。。。 因为我们使用的是命令行方式的所以直接选英文&#…

机器视觉-相机内参数和外参数

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达1、相机内参数是与相机自身特性相关的参数,比如相机的焦距、像素大小等;相机外参数是在世界坐标系中的参数,比如相机的位置、旋转方向等…

面试官扎心一问:知道 CopyOnWriteArrayList 吗?

点击上方蓝色“方志朋”,选择“设为星标”回复“666”获取独家整理的学习资料!写入时复制(CopyOnWrite)思想写入时复制(CopyOnWrite,简称COW)思想是计算机程序设计领域中的一种优化策略。其核心…

java同步与死锁_Java多线程 - 线程同步与死锁

一、线程同步1)模拟多个用户同时从银行账户里面取钱● Account 类:银行账户类,里面有一些账户的基本信息,以及操作账户信息的方法//模拟银行账户classAccount {private String accountNo;//账号private double balance;//余额publicAccount()…

和我一起打造个简单搜索之SpringDataElasticSearch入门

网上大多通过 java 操作 es 使用的都是 TransportClient,而介绍使用 SpringDataElasticSearch 的文章相对比较少,笔者也是摸索了许久,接下来本文介绍 SpringDataElasticSearch 的 api 使用,更加方便的进行查询。 系列文章 一、和我…

精选一套火爆B站的硬核资源,请笑纳!

最近经常有粉丝给我留言求人工智能方向的资源,想要尝试自学人工智能,将自己的一些想法和创意付诸现实,或是想通过自学进入AI领域。细聊之下,大部分人自觉苦于不知从何入手,找不到学习重点。或是止步于晦涩难懂的理论和…

汇总 | 深度学习中图像语义分割基准数据集详解

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达汇总图像语义分割那些质量最好的数据集与常用benchmark数据集前言图像语义分割是计算机视觉最经典的任务之一,早期的图像分割主要有以下几种实现方法。基于像素…

自从上线了 Prometheus 监控告警,真香!

点击上方蓝色“方志朋”,选择“设为星标”回复“666”获取独家整理的学习资料!对很多人来说,未知、不确定、不在掌控的东西,会有潜意识的逃避。当我第一次接触 Prometheus 的时候也有类似的感觉。对初学者来说, Promet…