写点什么

Amazon Web Services 为 BERT 和 Mask R-CNN 实现了最快的训练速度

  • 2020-04-05
  • 本文字数:2393 字

    阅读完需:约 8 分钟

Amazon Web Services 为 BERT 和 Mask R-CNN 实现了最快的训练速度

BERT 和 Mask R-CNN 都是如今最流行的机器学习模型,前者用于自然语言处理 (NLP),后者用于图像识别。过去几个月来,AWS 大幅改进了底层基础设施、网络和机器学习 (ML) 框架和模型代码,从而实现了这两个模型训练速度的提高。现在我们可以宣布在云中实现了迄今最快的 TensorFlow、MXNet 和 PyTorch 框架的训练速度。借助这些硬件和软件优化,您现在可以以同样的速度和效率训练您的模型。


模型训练时间的长短会直接影响到模型的迭代能力,以及快速提高模型的准确度。减少训练时间的主要是通过大型 GPU 实例集群来做分布式训练,但这必须以高效的方式进行。如果把训练任务分布到太多实例上,由于实例之间的通信反而会消耗集群的 GPU 计算资源,分布式集群带来的好处往往不太明显。

BERT

BERT (Bidirectional Encoder Representations from Transformers)作为流行的 NLP 模型,发布时就在 NLP 领域的多个方向刷新了精度。


Amazon EC2 P3dn.24xlarge 实例拥有 8 个 NVIDIA V100 GPU,在单个实例上使用 TensorFlow 和 PyTorch 从头开始训练 BERT 模型需要数天时间。借助 Elastic Fabric Adapter (EFA) 可以将单台实例高效扩展至更多 P3dn.24xlarge 实例,并优化该模型在大型集群上的收敛方式,我们成功将训练时间从数天缩短到 60 分钟左右。在编写本文之时,这是在云上训练 BERT 模型最快的速度,并且达到了极佳的目标准确度(基于 BooksCorpus 和英文版维基百科训练后,在 Squad v1.1 任务上的 F1 得分为 90.5 或更高)。


对于 TensorFlow,我们尝试了前所未有的扩展,在 256 个 P3dn.24xlarge 实例上使用了 2048 个 GPU,在 62 分钟内就完成了 BERT 的训练。对于 PyTorch,我们扩展到 192 个 P3dn.24xlarge 实例、1536 个 GPU,将训练时间缩短到 69 分钟。通过优化用于训练 BERT 的全部硬件和软件,我们达到了 85% 的扩展效率,确保了在扩展到更多 P3dn.24xlarge 节点时,框架可以最大限度利用来自 GPU 的额外计算能力。下表总结了这些改进。

Mask R-CNN

Mask R-CNN 是一个使用十分广泛的图像分割模型,用于自动驾驶、动作捕获以及其他需要复杂对象检测和区分能力的场景。


对于 MXNet、PyTorch 和 TensorFlow,在单个 P3dn.24xlarge 实例(8 个 NVIDIA V100 GPU)上训练 Mask R-CNN 模型需要大约 6 个小时。我们将 MXNet、PyTorch 和 TensorFlow 的训练时间从 6 个小时缩短至大约 25 分钟。我们将所有三个 ML 框架上的 Mask R-CNN 训练扩展到 24 个 P3dn.24xlarge 实例(共 192 个 GPU)。您现在可以快速进行迭代并每天运行多个试验,无需等待数天才能获得结果。在写本文的时候,这是云中最快的 Mask R-CNN 训练速度,目标准确度也极高(利用 COCO2017 数据集训练时为 0.377 Box min AP、0.339 Mask min AP)。下表总结了这些改进。

技术堆栈

实现这些结果需要优化底层硬件、网络和软件堆栈。在训练 BERT 这样的大型模型时,所使用的众多 GPU 之间的通信会成为一个性能瓶颈。


在分布式计算(例如大规模训练)中,AllReduce 运算会规约来自不同工作线程(GPU)的阵列(在此例中为神经网络的参数)并向所有工作线程(GPU)返回结果阵列。GPU 在每次迭代后集体执行一次 AllReduce 运算。每次迭代都由通过网络的一次正推和一次逆推组成。


在 GPU 上执行 AllReduce 的最常用方法是使用 NVIDIA 集合通信库 (NCCL) 或 OpenMPI or Intel MPI 库等 MPI 库。这些库专为异构集群设计。AllReduce 会在训练网络的相同实例上发生。在异构集群上执行 AllReduce 算法,对于每个 AllReduce 运算,每个工作线程需要分别发送和接收两次大约等于模型大小的数据。例如,BERT 的 AllReduce 运算(拥有 3.4 亿个参数)涉及两次发送大约 650MB 的半精度数据,然后两次接收同样数量的数据。这种通信需要在每次迭代完成后进行,将很快成为大多数模型训练的瓶颈。


AllReduce 算法的选择通常取决于网络架构。例如,Ring-AllReduce 非常适合每个节点都连接到两个相邻节点,从而形成一个环的网络。Torus AllReduce 则适合每个节点都连接到四个相邻节点,从而形成一个二维矩形晶格的网络。AWS 使用更为灵活的互联架构,任何节点都能够以全带宽与任何其他节点通信。例如,在一个具有 128 个 P3dn 实例的集群中,任何实例都能够以 100Gbps 的带宽与任何其他实例通信。


此外,100Gbps 的互联带宽也不局限于 P3dn 实例。您可以向集群添加 CPU 优化型 C5n 实例,并仍然保持任何节点对之间 100Gbps 的互联带宽。


AWS 互联架构的这种高度灵活性,需要一种能够完全利用 AWS 互联架构的独特优势的 AllReduce 算法。为此我们开发了自定义的 AllReduce 算法,该算法专为 AWS 网络优化。这种自定义的 AllReduce 算法可以利用异构集群中任何节点对之间高达 100Gbps 的互联带宽优势,并且将每个工作线程收发的数据量减少了一半。AllReduce 算法的计算阶段交由计算优化型 C5 实例执行,从而得以将 GPU 释放出来,以更快地计算梯度。由于 GPU 不再执行规约运算,梯度的发送和 AllReduce 后梯度的接收可以并行进行。AllReduce 梯度需要的跃点数量减少至两个,而在同构 AllReduce 算法中,跃点数量会随着节点数量的增加而增加。由于与仅使用 P3dn 节点的训练相比,训练速度大大提升,总成本也得以降低。

小结

在使用 BERT 和 Mask R-CNN 进行测试时,结果相比单节点执行方案的改进十分明显。随着 P3dn 节点的数量从 1 个实例增加到 16、32、64、128、192 和 256 个实例,吞吐量基本达到线性同步扩展,并最终通过扩展到更多的 P3dn.24xlarge 实例,帮助减少了模型训练时间,而成本并未增加。通过这些优化,AWS 现在可以在云中为先进的计算机视觉和 NLP 模型提供更快的模型训练速度。


立即开始在 Amazon SageMaker 上使用 TensorFlow、MXNet 和 PyTorch 吧。


本文转载自 AWS 技术博客。


原文链接https://amazonaws-china.com/cn/blogs/china/amazon-web-services-achieves-fastest-training-times-for-bert-and-mask-r-cnn/


2020-04-05 08:00649

评论

发布
暂无评论
发现更多内容

消息队列Kafka「检索组件」重磅上线!

阿里巴巴云原生

阿里云 云原生 消息队列Kafka

福昕软件:用PDF辅助技术弥合阅读障碍者的数字鸿沟

联营汇聚

MathType2022永久无限试用脚本程序

茶色酒

MathType

【愚公系列】2022年05月 二十三种设计模式(六)-适配器模式(Adapter Pattern)

愚公搬代码

5月月更

nginx配置系列(九)nginx中的防盗链

乌龟哥哥

5月月更

2022 开源之夏 | Serverless Devs 陪你“变得更强”

阿里巴巴云原生

阿里云 云原生 Serverless Devs 开源之夏

SAP 电商云启用 Enterprise Product Development Visualization Integration 的配置步骤

汪子熙

angular 电商 SAP commerce 5月月更

五年谷歌ML Infra生涯,我学到最重要的3个教训

OneFlow

机器学习 深度学习 深度学习框架 MLOps Data Infra

六、高可用之流控降级

穿过生命散发芬芳

5月月更 高可用设计

[Day37]-[二叉树]- 找树左下角的值

方勇(gopher)

LeetCode 二叉树 数据结构算法

LabVIEW串口调试助手

不脱发的程序猿

LabVIEW 串口通信 数据通信 串口调试助手 VISA

LabVIEW十六进制和字符类型转换

不脱发的程序猿

LabVIEW 进制转换

面试突击45:为什么要用读写锁?它有什么优点?

王磊

Java 面试

STM32+华为云IOT设计的动态密码锁

DS小龙哥

5月月更

CleanMyMac有没有需要安装电脑?

茶色酒

CleanMyMacX

【Python】新华字典(bushi

謓泽

5月月更

BI系统打包Docker镜像及容器化部署的具体实现

葡萄城技术团队

Docker 数据分析 BI BI 分析工具

ChunJun支持异构数据源DDL转换与自动执行 丨DTMO 02期回顾(内含课程回放+课件)

袋鼠云数栈

大数据

PyTorch 开发环境搭建

Emperor_LawD

PyTorch 5月月更

跟着动画学 Go 数据结构之二叉树

宇宙之一粟

数据结构 二叉树 Go 语言 5月月更

Nginx 和 Nginx Plus 的区别

HoneyMoose

【高并发】ThreadLocal学会了这些,你也能和面试官扯皮了!

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

LabVIEW串口通信

不脱发的程序猿

LabVIEW 串口通信 数据通信

《对线面试官》Java泛型

Java3y

Java 程序员 编程语言 java 5月月更

轻量迅捷时代,Vite 与Webpack 谁赢谁输

葡萄城技术团队

前端 vite webpack 轮子

LabVIEW应用程序后台运行

不脱发的程序猿

LabVIEW

Django 如何获取 Model 字段列表?

AlwaysBeta

django

python处理excel文件,python xlsxwriter 一文初掌握

梦想橡皮擦

5月月更

MathType全新免费版数学公式编辑器

茶色酒

MathType

CentOS 8及以上版本配置IP的方法,你 get 了吗

伍工

Linux 网络

数据大屏,仅仅是数据展示吗?

葡萄城技术团队

数据分析 BI 数据可视化 数据大屏 BI分析

Amazon Web Services 为 BERT 和 Mask R-CNN 实现了最快的训练速度_文化 & 方法_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章