0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

谷歌新研究使用1024块TPU,将BERT的训练时间从3天成功缩短到76分钟

DPVg_AI_era 来源:lp 2019-04-08 09:34 次阅读

BERT是目前最强大的NLP预训练模型,也是工业界目前最耗时的应用,计算量远高于ImageNet。谷歌的研究人员提出新的优化器,使用1024块TPU,将BERT的训练时间从3天成功缩短到76分钟,提速 65.2 倍!

去年,谷歌发布了最强预训练模型 BERT,宣告了NLP领域的一项重大突破。

BERT 在 33 亿文本的语料上训练语言模型,再分别在不同的下游任务上微调,在11个不同的 NLP 任务均得到了目前为止最好的结果。

不过,在 33 亿文本的语料上预训练一个 BERT 模型的成本是非常大的,谷歌用了 16 个自己的 TPU 集群(一共 64 块 TPU)来训练大号版本的 BERT,一共花了约4天的时间。

如此巨大的训练成本,让普通研究者难以尝试自己去训练一个BERT。

有没有办法加快BERT的训练呢?近日,来自Google、UC Berkeley、UCLA的几位研究人员提出新的优化器——LAMB优化器,将训练的batch size推到硬件的极限,使用 TPU Pod ( 1024块 TPUv3 芯片),将BERT的训练时间从3天缩短到了76分钟!

论文地址:

https://arxiv.org/pdf/1904.00962.pdf

其中一作尤洋(Yang You)来自UC Berkeley,这项工作于他在Google Brain实习期间完成。

接下来,新智元带来对这篇论文的译介:

加快深度神经网络最有效的方法

大批量训练(large-batch training)是加快大型分布式系统中深度神经网络训练的关键。然而,large-batch训练是很困难的,因为它会产生一种泛化差距(generalization gap)。直接优化通常会导致测试集的准确性下降。

BERT是一种最先进的深度学习模型,建立在用于语言理解的深度双向transformers之上。对BERT来说,当扩大批大小(例如超过8192)时,以前的large-batch训练技术效果并不好。BERT的预训练也需要很长时间才能完成(使用16个TPUv3芯片大约需要3天)。

为了解决这个问题,我们提出了LAMB优化器,它帮助我们将批大小扩大到65536,而不会丢失准确性。

LAMB是一个通用的优化器,适用于小批量和大批量,并且除了学习率外不需要超参数调优。基线BERT-Large模型需要100万次迭代才能完成预训练,而batch size为65536/32768的LAMB只需要8599次迭代。我们将batch size推到TPUv3 pod的内存上限,可以在76分钟内完成BERT训练(表1)。

表1:我们使用SQuAD-v1的F1 score作为精度指标。F1的基线成绩是由BERT的公共github提供的预训练模型(BERT- large)实现的(截止到2019年2月1日)。我们在实验中使用tpuv3。我们使用了与基线相同的设置:总epochs的前9/10使用序列长度128,最后1/10使用序列长度512。所有的实验运行相同数量的epochs。

深度神经网络的训练是十分耗时的。目前,减少训练时间最有效的方法是使用多个芯片(如CPUGPU和TPU)来并行化SGD变体的优化过程。由于前向传播和反向传播中不同层之间的数据依赖关系,使得跨层的并行化效率并不高。相反,研究人员在每次迭代中并行化小批量中的数据点。如果确定了训练的epochs的数量,那么线性地增大batch size意味着会线性地减少迭代次数(即更新权重的次数)。为了最小化训练时间,最大化batch size将是理想的。

然而,大批量的训练是困难的。例如,使用大小为512的batch size训练在ImageNet上训练AlexNet,能实现80%以上的top-5测试精度。但将batch size扩大到4096之后,直接训练可能只能获得50% ~ 60%的top 5精度。

Keskar等人(10)认为在大批量训练中存在一个泛化差距(generalization gap)。Hoffer等人(6)认为,训练时间越长,泛化差距越小。然而,训练时间过长意味着进行大批量训练就没有好处了。

因此,大批量训练的目标是在一定数量的epochs内达到可观的精度。通过设计一系列的学习率计划表,研究者已经可以将ImageNet训练的batch size扩大到32K,并且精度损失较小。据我们所知,Ying et al.实现了目前最快的ImageNet训练速度,并且达到了76+%的top-1精度。通过使用LARS优化器,将batch size扩展到32K,,Ying等人使用TPUv3 Pod,在2.2分钟内完成了ResNet-50的ImageNet训练。(最新富士通研究院刷新了这一速度,将ImageNet训练时间降到74.7秒)

BERT是目前最先进的深度学习语言模型。BERT建立在用于语言理解的深度双向transformers之上。对BERT来说,当将batch size扩大到非常大时(例如超过8192),以前的large-batch训练技术效果并不好。BERT的预训练也需要很长时间才能完成(使用16个TPUv3芯片大约需要3天)。

为了扩大BERT的batch size,本文提出LAMB优化器。LAMB支持自适应element-wise updating和精确的逐层修正(layer-wise correction)。

LAMB是一个适用于小批量和大批量的通用优化器。用户只需要调整学习率,不需要调其他超参数。使用LAMB,我们可以将BERT预训练的批大小扩大到64K,而不会丢失准确性。

BERT预训练包括两个阶段:

(1)前9/10的epochs使用128的序列长度;

(2)后1/10 epochs使用512的序列长度。

baseline需要100万次迭代来完成BERT预训练,但我们只需要8599次迭代,这使我们能够将BERT训练时间从3天减少到76分钟。

我们将批大小推到了TPU Pod的硬件极限。批大小大于32768(序列长度为512)的话将耗尽内存。批大小大于65536(序列长度为128)则不会带来任何加速。我们的优化器可以将批大小扩大到128k,甚至更大。由于硬件限制,序列长度为512的设置下,我们在批大小达到32768时停下,在序列长度为128的设置下,批大小达到65536时停止。

本文中所有的BERT模型都指BERT-Large模型。为了进行公平的比较,本文所有的实验都运行相同数量的epochs(即固定数量的浮点运算)。我们的结果如表1所示。

LAMB优化器

LAMB的全称是Layer-wise Adaptive Moments optimizer for Batch training。

BERT训练的基线使用权重衰减的Adam作为优化器,这是Adam优化器的一个变体。另一个成功应用于大批量卷积神经网络训练的自适应优化器是LARS。

这些优化器启发我们提出了新的优化器,用于大批量BERT训练。我们提出的LAMB优化器的概述如算法1所示。

实验和结果

常规训练

TPU是浮点运算的强大计算硬件。我们在所有的实验中都使用了TPUv3。TPUv3 Pod有1024个芯片,可以为混合精度计算提供超过100 petaflops的性能。我们的结果如表1所示。基线模型在预训练时使用Wikipedia和BooksCorpus数据集。

我们使用了与原始BERT模型相同的数据集,即Wikipedia和BooksCorpus,分别有2.5B和8亿单词。原始BERT模型的作者首先以128的序列长度进行了900k次迭代训练,然后以512的序列长度进行了100k迭代训练。

16个TPUv3芯片的总训练时间约为3天。我们使用SQuAD-v1的F1分数作为精度指标。F1得分越高,准确度越高。斯坦福问答数据集(SQuAD)是一个阅读理解数据集,包含众包工作者从维基百科的文章中提出的问题,每一个问题的答案都是对应阅读文章的一段文字,或者该问题无法回答。我们从BERT的公开GitHub库上下载了预训练好的模型。

使用作者提供的脚本,baseline的F1得分为90.395。在我们的代码中,我们使用了BERT的作者提供的数据集和基线模型,只修改了优化器。通过使用LAMB优化器,我们能够在批大小为32768的15625次迭代中获得91.460的F1分数(序列长度为128的14063次迭代和序列长度为512的1562次迭代)。

我们把训练时间从3天减少到100分钟左右。我们将批大小推到了TPU Pod的硬件极限。批大小大于32768时(序列长度为512)将导致TPU Pod耗尽内存。

我们实现了76.7%的弱扩展效率(49.1倍的加速,64倍的计算资源)。由于我们在TPU Pod上使用同步数据并行来进行分布式训练,因此在互连上传输梯度会带来通信开销。梯度的大小与训练后的模型相同。

Mixed-Batch训练

如前所述,BERT预训练包括两个阶段:

(1)前9/10的epoch使用128的序列长度,

(2)最后1/10的epoch使用512的序列长度。

对于第二阶段,由于内存限制,TPUv3 Pod上的最大批大小为32768,因此我们将第二阶段在批大小达到32768时停止。

对于第一阶段,由于内存限制,TPUv3 Pod上的最大批大小是131072。但是,当我们将批大小从65536增加到131072时,并没有看到加速,因此我们在第一阶段批大小达到65536时停止。

此前,Smith等人也研究了混合批训练。但是,他们在训练中增大了批大小,而我们减小了批大小。

我们能够从头到尾充分利用硬件资源。Smith等人的研究只在最后阶段充分利用了硬件资源。增加批大小可以warm-up和稳定优化过程,但是减小批大小会给优化过程带来混乱,导致训练不收敛。

在实验中,我们发现了一种有助于稳定第二阶段优化的方法。由于我们切换到一个不同的优化问题,有必要重新warm-up优化过程。在第二阶段,我们没有降低学习率,而是将学习率从零开始增加(re-warm-up)。

通过这些改变,我们只需要8599次迭代,可以在76分钟左右完成BERT训练,实现了101.8%的弱缩放效率(weak scaling efficiency),提速65.2倍,利用了64倍的计算资源。

结论

Large batch技术是加快神经网络深度训练的关键。在本文中,我们提出了支持adaptive element-wise updating和layer-wise correction的LAMB优化器。LAMB是一个通用的优化器,适用于小批量和大批量。通过使用LAMB,我们可以将BERT预训练的batch size扩展到64K,而不会丢失准确性。我们将BERT的训练时间从3天减少到76分钟左右,并将批大小推到了TPU Pod的硬件极限。我们正在研究LAMB优化器的理论分析。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    6168

    浏览量

    105394
  • 神经网络
    +关注

    关注

    42

    文章

    4771

    浏览量

    100773
  • 训练模型
    +关注

    关注

    1

    文章

    36

    浏览量

    3826

原文标题:BERT训练猛提速!谷歌新研究将BERT预训练时间从3天缩短到76分钟

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    想使ADCEXT1和ADCEXT2的采样时间间隔缩短到最小,应该怎么做?

    开始后,中间给出转换停止信号,转换周期是在4个通道都完成后停止,还是在当前通道完成后停止? 2.图47中,第一个LT是在2ms内做一次转换,还是每个step都要做转换? 3.如果我想使ADCEXT1和ADCEXT2的采样时间间隔缩短到
    发表于 12-25 06:15

    PLL锁定时间4.5ms缩短到360μs的手动方法

    频率和相关寄存器值的表格(参见表2)。4、为缩短LD时间 ADRF6820 置于手动频段选择模式,并用第 3 步收集的数据手动编程。手
    发表于 11-01 10:42

    好奇~!谷歌的 Edge TPU 专用 ASIC 旨在机器学习推理能力引入边缘设备

    单片的 MIPI-CSI 连接器中。摄像头的焦距为 2.5 毫米,定焦范围 10 厘米无限远,视野为 84 度。相关软件开发单片与 USB 加速棒皆以谷歌 TPU 软件堆栈为基础。
    发表于 03-05 21:20

    请问如何光纤断点定位偏差缩短到最小?

    如何光纤断点定位偏差缩短到最小?
    发表于 05-24 06:17

    使用JN5189和Micro MAC库进行开发,如何时间缩短到1.5毫秒以下吗?

    () 和 vMMAC_StartPhyReceive())发送和接收数据包时,TX/RX 切换时间超过 3.5(ms)。这就造成了收不到ACK包的问题。大约 3.5(ms) 的 TX/RX 切换时间是 Micro MAC 的最大性能?我可以
    发表于 03-28 06:23

    UID缩短到32bit解决方法

    UID(AT32 唯一编码)共有 96bit,如何将其缩短到 32bit 做为唯一识别码?
    发表于 10-20 07:49

    锂电池充电时间急速缩短 只需10分钟

    美国普林斯顿大学(Princeton University)的研究人员指出,若是采用石墨烯(graphene)电极,锂电池的充电时间将能从2小时缩短到只要10分钟。 这种新开发
    发表于 07-20 10:35 1910次阅读

    Tesla 超级充电站大幅升级,充电时间缩短到5-10分钟

    【Te为提升 Model 电动车的的竞争力,Tesla 将在 2017 年升级超级充电站,充电设备的功率远超350kW,电动车的充电时间大幅缩短
    发表于 01-04 10:58 1396次阅读

    FPGA在实时基因组测序计算大显身手,把测序时间30小时缩短到26分钟

    ,Edico Genome推出的“龙”硬件加速卡测序计算时间由30小时缩短到26分钟,很快就可能优化实现实时计算的目标。 IBM Power Systems最近在《华盛顿邮报》官网上
    发表于 02-08 09:12 297次阅读

    FPGA能在实时基因组测序计算中大显身手,大大缩短时间

    目前,FPGA在实时基因组测序计算大显身手,把测序时间30小时缩短到26分钟,之后基因组测序计算时间将会
    发表于 10-09 16:51 2020次阅读

    1024TPU在燃烧!BERT训练模型的训练时长3缩减到了76分钟

    BERT是一种先进的深度学习模型,它建立在语义理解的深度双向转换器上。当我们增加batch size的大小(如超过8192)时,此前的模型训练技巧在BERT上表现得并不好。BERT
    的头像 发表于 04-04 16:27 1.2w次阅读

    AI协助8年药物研发时间缩短到46

    据《麻省理工科技评论》杂志9月3日报道,在一次引入AI技术的新药研发中,人工智能制药初创公司Insilicon Medicine的一个团队与多伦多大学的科学家合作,开始研发新的靶向药,完成初步的生物学验证,仅仅花了46
    的头像 发表于 09-06 11:43 3063次阅读

    如何PLL锁定时间4.5毫秒缩短到360微秒

    你知道吗?利用手动频段选择,锁定时间可从典型值4.5 ms 缩短到典型值360 µs。本文以高度集成的解调器和频率合成器ADRF6820 为例,告诉大家如何手动选择频段以缩短PLL锁定时间
    发表于 10-16 10:43 0次下载
    如何<b class='flag-5'>将</b>PLL锁定<b class='flag-5'>时间</b><b class='flag-5'>从</b>4.5毫秒<b class='flag-5'>缩短到</b>360微秒

    微软一直在努力缩短更新Win10系统所需时间

    报道称,Windows Insider负责人唐娜姐日前在推特上表示,在听取了用户的反馈后,Windows团队做出了努力,现已成功系统更新的平均离线安装时间由82分钟
    的头像 发表于 02-24 09:26 1554次阅读

    嵌入式AI简报 |特斯拉发布AI训练芯片Dojo D1

    导读:【新闻】特斯拉发布自研了AI训练芯片Dojo D1,初创公司ThirdAI发力CPU软硬件联合优化,BERT训练3
    发表于 01-25 16:01 0次下载
    嵌入式AI简报 |特斯拉发布AI<b class='flag-5'>训练</b>芯片Dojo D1