2.混合精确训练和XLA编译优化——提高BERT单机性能的内功

混合精度

深度学习中,混合精度训练指的是浮32、浮16的训练模式。一般混合精度模式如图6所示

混合精度训练示例。在向前+向后计算过程中,使用float16进行计算,并将其转换为float32进行梯度更新。

混合梯度给伯特训练带来了以下好处,

在训练过程中增加批量和序列大小,以保证模型训练的准确性。

目前阿里巴巴云提供的主流英伟达显卡最大内存为16GB,一款BERT-Base型号在float32模式下的最大内存只能设置为sequence_size=256,batch_size=26。BERT的随机预测模型设计对序列大小和批量大小有一定的要求。为了保证匹配BERT的原生训练精度,需要保证sequece _ size = 512时,batch_size不小于16。浮子16的混合精度可以保证上述要求。

混合精度可以充分利用硬件加速资源。

英伟达增加了Volta架构的Tensor Core资源,Volta架构是fp16/fp32混合精度的ASIC加速器,专门用于4x4矩阵乘法。A V100可以提供125T张量核心计算能力,这种强大的计算能力只有在混合精度计算时才能利用。

受float16表示精度的限制,混合精度训练的代码需要额外编写。英伟达在Tensorflow下提供混合精度训练教程。主要思想是通过tf.variable_scope的custom_getter参数保证存储的参数是float32,使用float16进行计算。

在BERT预训练模型中,为了保证训练精度,Perseus-BERT并不是简单地使用custom_getter参数,而是明确指定哪些训练参数可以使用float16而不影响精度,哪些必须使用float32来保证精度。我们的经验如下:

埋设部分应保证浮子32的精度;

飞蚊症16可以加速衰老;

梯度相关的更新和验证需要确保float32的准确性;

非线性激活等模块需要保证float32的准确性。

XLA编译器优化

XLA是张量流提出的一种新的模型编译器,它可以将图形编译成红外表示,融合冗余运算,优化运算性能和适配硬件资源。但是,Tensorflow官方发布不支持xla分布式培训。为了保证正常准确的分布式训练,我们编制了附加补丁的张量流来支持分布式训练。珀尔修斯-伯特加速了训练过程,并通过启用XLA编译优化来增加补丁大小。

3.加速数据集预处理

Perseus BERT还优化了文本预处理中单词嵌入和语句分割的并行化。这里不展开解释。

第四,性能-计算时间单位从几个月减少到几天

图7显示了珀尔修斯伯特在P100实例上的性能。与主流开源的horovod相比,Pesus-BERT双机16卡的分布式性能是前者的5倍之多。

目前,一个大客户已经在阿里巴巴云P100集群上大规模推出了英仙座BERT。用10个4卡P100训练和完成商业模式只需要2.5天,使用开源horovod大约需要一个月。

对比7】伯特·P100关于阿里巴巴云的例子

为了与谷歌TPU进行比较,我们量化了TPU的绩效,绩效基础如图8所示。云TPU可以计算出256 * = 185倍/秒的BERT-Base性能..另一方面,在相同的sequence_size=512下,通过珀尔修斯-伯特优化的基本模型训练,阿里巴巴云上的V100单机八卡实例可以达到680个实例/秒,接近云TPU的4倍性能。对于一个需要16天训练的BERT模型,一个阿里巴巴云V100 8卡的例子不到4天就可以训练出来。

8的性能基础]在谷歌云TPU上的BERT Pretain

动词 (verb的缩写)总结——基于阿里巴巴云基础设施的AI极致性能优化

弹性人工智能团队一直致力于基于阿里巴巴云基础设施的AI极致性能优化创新解决方案。Perseus-BERT就是一个很典型的例子。我们在框架层面做基于阿里巴巴云基础设施的深度优化,在阿里巴巴云上充分释放基础资源的计算能力,让阿里巴巴云的客户充分享受云上AI计算的优势,让天下没有难事AI。

捐书,2月份值得看的10本技术书!

1.《Perseus Perseus-BERT——业内性能极致优化的BERT训练方案》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《Perseus Perseus-BERT——业内性能极致优化的BERT训练方案》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/1683684.html