AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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:00636

评论

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

3分钟创建Serverless Job 定时获取新闻热搜

云端explorer

Serverless Job 新闻热搜 场景搭建

客户案例 | 聚焦流程体验,助银行企业APP迭代

易观分析

银行 客户 银行app

kudu设计-tablet

矛始

kudu tablet

就这一次!详细聊聊分布式系统的那些技术方案

Java全栈架构师

程序员 面试 分布式 系统设计 架构师

一文讲清楚SpringBoot六种读取配置方式

王小凡

Java 程序员 Sprint Boot

如何组装一个注册中心

捉虫大师

注册中心 7月月更 后端启示录

基础+框架+数据库+系统设计+算法,2022阿里最新Java面试突击手册我粉了

Java永远的神

Java 数据库 spring 面试 JVM

模块八作业 - 消息数据 MySQL 表设计

Elvis FAN

机器视觉在服务机器人中的应用

优必选科技

机器人

Spark数据格式UnsafeRow

矛始

spark 内存 UnsafeRow

知识管理系统是什么?你需要知道这些

Geek_da0866

RocketMQ—(总结)一篇就搞懂RocketMQ

IT巅峰技术

洋葱集团携手OceanBase实现分布式升级,全球数据首次实现跨云融合

OceanBase 数据库

聊聊css中文字的换行问题

南极一块修炼千年的大冰块

7月月更

有一说一,阿里P7的薪资待遇是真的香

程序员小毕

Java 程序员 程序人生 后端 架构师

B站713事故后的多活容灾建设|TakinTalks大咖分享

TakinTalks稳定性社区

故障 稳定性保障

工赋开发者社区 | 定了!就在7月30日!

工赋开发者社区

技术分享 工业 峰会

如何在github的pages部署hexo实现代码提交到仓库自动部署

娃娃菜

GitHub Pages 签约计划第三季

深度解析Java静态代理与动态代理模式的实现

了不起的程序猿

Java java程序员 java编程

图的遍历的定义以及深度优先搜索和广度优先搜索(一)

乔乔

7月月更

融云直播 SDK 玩法翻新,入围信通院「实时互动创新应用优秀案例」

融云 RongCloud

直播 sdk

兆骑科创海外高层次人才引进平台,创业赛事活动路演

兆骑科创凤阁

高层次人才引进平台

2022最新最全Java面试八股文(整整1685页,14个技术栈,20余万字)

Java全栈架构师

Java spring 面试 JVM 消息中间件

菜鸟 CPaaS 平台微服务治理实践

阿里巴巴云原生

阿里云 微服务 云原生 CPaaS 菜鸟

Spark统一内存划分

矛始

spark 统一内存

如何通过学会提问,成为更加优秀的数据科学家

Baihai IDP

AI 数据科学 职业发展

基础到高级涵盖11个技术,Alibaba最新出品711页Java面试神册真香

程序员小毕

Java 面试 程序人生 JVM 中间件

MySQL精品学习资源合集 | 含学习教程笔记、运维技巧、图书推荐

墨天轮

MySQL 数据库 学习笔记 运维技术

面试OPPO,16道题甩过来,我人傻了

Java永远的神

Java 程序员 面试 分布式 项目

浅谈云原生边缘计算框架演进

谐云

7月月更

深圳云管平台厂商哪家好?有哪些功能?咨询电话多少?

行云管家

云计算 云管平台

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