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

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

3天内不再提示

Uber一个跨多台机器的分布式深度学习训练框架引入开源项目LF深度学习基金会

高工智能汽车 来源:lq 2018-12-19 15:50 次阅读

世界顶尖科技公司工程师常常发现,为了满足公司的独特需求,他们不得不为现有软件基础上开发定制替代方案。

近日,Uber将自己的Horovod(一个跨多台机器的分布式深度学习训练框架)引入开源项目LF深度学习基金会。Uber利用Horovod支持自动驾驶汽车、欺诈检测和出行预测,该项目的贡献者包括Amazon、IBM、Intel和Nvidia。

Horovod是一个分布式的TensorFlow训练框架,目标是使分布式深度学习快速且易于使用。在Uber内部,他们发现MPI模型比带参数服务器的分布式TensorFlow简单得多,所需的代码更改也少得多。

除了Uber,阿里巴巴、亚马逊和Nvidia也在使用Horovod。Horovod项目可以与TensorFlow、Keras和PyTorch等流行框架一起使用。

Uber上个月加入了Linux基金会,并加入了AT&T和诺基亚等其他科技公司的行列,支持LF深度学习基金会的开源项目。LF深度学习基金会成立于3月,旨在支持针对深度学习和机器学习的开源项目,是Linux基金会的一部分。

自该基金会成立以来,其他项目还包括机器学习平台Angel和弹性深度学习(Elastic Deep learning),这是一个帮助云服务提供商利用TensorFlow等框架制作云集群服务的项目。

根据Uber的说法,Horovod让开发人员只需几行代码就可以完成任务。这不仅加快了初始修改过程,而且进一步简化了调试。考虑到深度学习项目的高度迭代性,这同样可以节省大量时间。

在过去的几年里,深度学习的进步推动了图像处理、语音识别和预测的巨大进步。在Uber,深度学习应用于整个业务,从自动驾驶研究到出行预测和欺诈预防,并为用户创造更好的体验。

由于种种原因,TensorFlow已经成为Uber首选的深度学习库。首先,该框架是用于深度学习的最广泛使用的开源框架之一,这使得新用户很容易上手。

它还结合了高性能和修补低级模型细节的能力——例如,可以同时使用高级api,如Keras,并使用NVIDIA的CUDA工具包实现自己的自定义操作符。

此外,TensorFlow还支持各种深度学习用例的端到端支持,从进行探索性研究到将模型部署到云服务器、移动应用程序甚至自动驾驶汽车上。

去年,Uber Engineering推出了米开朗基罗(Michelangelo),这是一个内部的“mvc即服务”(mvc -as-a-service)平台,它让机器学习自主化,让大规模构建和部署这些系统变得容易。

Horovod正是这个米开朗基罗复杂平台的组成部分,Uber开发这个平台是为了为其内部的深度学习努力奠定基础。该公司将该软件描述为管理AI开发生命周期各个方面的端到端系统。

鉴于Uber此次宣布开放Horovod,它可能还会随着时间的推移发布米开朗基罗其他组件的代码。

Horovod的出现,也反应不同企业在纵深涉及深度学习时遇到了不少问题。

随着Uber使用越来越多的机器学习模型,它们的规模和数据消耗显著增长。在大多数情况下,模型仍然足够小,可以容纳一个服务器中的一个或多个GPU,但是随着数据集的增长,训练时间也在增加,有时需要一周甚至更长时间。

此后,Uber转向了分布式深度学习训练。标准的分布式TensorFlow包引入了许多新概念:workers、参数服务器、tf.Server()、tf.ClusterSpec()、tf.train. syncreasoptimizer()和tf.train.replicas_device_setter()等等。虽然对某些场景有益,但这也引入了难以诊断的bug,从而减慢了训练速度。

第二个问题是关于Uber规模计算的挑战。在运行了一些基准测试之后,他们发现不能使标准的分布式TensorFlow按比例扩展,以及需要的服务。例如,在128个GPU上进行训练时,由于效率低下,损失了大约一半的资源。

当Uber在128个NVIDIA Pascal GPU上运行标准的TensorFlow基准测试套件时,他们发现Inception V3和ResNet-101模型都无法利用将近一半的GPU资源。

标准的分布式TensorFlow包使用参数服务器方法来平均梯度。在这种方法中,每个流程都有两个潜在角色之一:Worker或参数服务器。Worker用于处理训练数据,计算梯度,并将它们发送到参数服务器进行平均。

Uber认为,虽然这种方法提高了性能,但遇到了两个挑战:确定Worker与参数服务器的正确比例。

如果使用一个参数服务器,它可能会成为网络或计算瓶颈。如果使用多个参数服务器,通信模式将变成“all-to-all”,这可能会使网络互连饱和。

处理增加TensorFlow程序复杂性:在测试中,每个用户的分布式TensorFlow必须显式启动每个Worker和参数服务器,通过服务发现周围信息,如所有的Worker和参数服务器的主机和端口,并修改培训计划构建tf.Server()和一个适当的tf.ClusterSpec()。

此外,用户必须确保使用tf.train.device_replica_setter()适当地放置所有操作,并修改代码以使用towers来利用服务器中的多个GPU。这通常会导致陡峭的学习曲线和大量的代码重构,从而占用实际建模的时间。

2017年初,百度发表了一篇文章《将HPC技术深度学习》,涉及到不同的算法平均梯度和沟通这些梯度(上面的第2步和第3步),该算法基于Patarasuk和Yuan在2009年的论文《工作站集群带宽最优全约算法》中引入的方法。

在环约简算法中,每个N个节点与两个节点通信2*(N-1)次。在此通信过程中,节点发送和接收数据缓冲区的块。在前N-1次迭代中,接收到的值被添加到节点缓冲区的值中。在第二次N-1迭代中,接收到的值替换节点缓冲区中保存的值。

百度的论文认为,该算法是带宽最优的,这意味着如果缓冲区足够大,它将最优地利用可用网络。

Uber也意识到,采用环减少(ring-allreduce)方法可以提高可用性和性能,这促使我们自己开发实现,以满足Uber的TensorFlow需求。随后,Uber采用了百度的TensorFlow ring-allreduce算法,并在此基础上进行了构建。

Uber将代码转换为一个名为Horovod的独立Python包,这个包是以俄罗斯传统的民间舞蹈命名的,在这种舞蹈中,表演者挽着手臂绕圈跳舞,就像分布式TensorFlow进程使用Horovod彼此通信一样。

Uber目前的不同团队都可能使用不同版本的TensorFlow,但他们希望所有团队都能够利用ring-allreduce算法,而不需要升级到TensorFlow的最新版本,对自己的版本应用补丁,甚至不需要花时间构建框架。

有了一个独立的包,Uber表示就可以根据硬件的不同,将安装Horovod所需的时间从大约1小时缩短到几分钟。Horovod在Inception V3和ResNet-101中都达到了90%的缩放效率,在VGG-16中达到了79%的缩放效率。

此外,Uber用NCCL替换了百度ring-allreduce实现,NCCL是NVIDIA的集合通信库,它提供了高度优化的ring-allreduce版本。NCCL 2引入了跨多台机器运行ring-allreduce的能力,能够利用它的许多性能提升优化。

Uber还在此基础上增加了对适合单个服务器模型的支持,可能是在多个GPU上,而原来的版本只支持适合单个GPU的模型。

Horovod项目负责人亚历克斯•瑟盖夫(Alex Sergeev)表示,Horovod是为了让各行各业的人工智能研究人员能够更快、更直观地进行深度学习模型训练。后续随着Horovod在功能和应用方面的不断成熟,加入LF将使我们能够进一步扩大它在开源生态系统中的影响。

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

    关注

    27

    文章

    1289

    浏览量

    56723
  • 自动驾驶
    +关注

    关注

    784

    文章

    13784

    浏览量

    166397
  • 深度学习
    +关注

    关注

    73

    文章

    5500

    浏览量

    121113

原文标题:Horovod ? Tensor flow ? Uber开源分布式深度学习模型 | GGAI海外

文章出处:【微信号:ilove-ev,微信公众号:高工智能汽车】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Pytorch深度学习训练的方法

    掌握这 17 种方法,用最省力的方式,加速你的 Pytorch 深度学习训练
    的头像 发表于 10-28 14:05 195次阅读
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>训练</b>的方法

    GPU深度学习应用案例

    能力,可以显著提高图像识别模型的训练速度和准确性。例如,在人脸识别、自动驾驶等领域,GPU被广泛应用于加速深度学习模型的训练和推理过程。 二、自然语言处理 自然语言处理(NLP)是
    的头像 发表于 10-27 11:13 382次阅读

    FPGA加速深度学习模型的案例

    FPGA(现场可编程门阵列)加速深度学习模型是当前硬件加速领域的热门研究方向。以下是些FPGA加速
    的头像 发表于 10-25 09:22 215次阅读

    AI大模型与深度学习的关系

    AI大模型与深度学习之间存在着密不可分的关系,它们互为促进,相辅相成。以下是对两者关系的介绍: 深度学习是AI大模型的基础 技术支撑 :
    的头像 发表于 10-23 15:25 651次阅读

    迅龙软件OrangePi 5 Plus顺利通过开放原子开源基金会XTS认证

    公益事业的非营利性独立法人机构,是我国在开源领域的首个基金会。OpenHarmony是由开放原子开源基金会孵化及运营的开源
    的头像 发表于 09-09 15:36 520次阅读
    迅龙软件OrangePi 5 Plus顺利通过开放原子<b class='flag-5'>开源</b><b class='flag-5'>基金会</b>XTS认证

    NVIDIA推出全新深度学习框架fVDB

    在 SIGGRAPH 上推出的全新深度学习框架可用于打造自动驾驶汽车、气候科学和智慧城市的 AI 就绪型虚拟表示。
    的头像 发表于 08-01 14:31 591次阅读

    深度学习算法在嵌入平台上的部署

    随着人工智能技术的飞速发展,深度学习算法在各个领域的应用日益广泛。然而,将深度学习算法部署到资源受限的嵌入平台上,仍然是
    的头像 发表于 07-15 10:03 1331次阅读

    深度学习中的无监督学习方法综述

    深度学习作为机器学习领域的重要分支,近年来在多个领域取得了显著的成果,特别是在图像识别、语音
    的头像 发表于 07-09 10:50 683次阅读

    深度学习与nlp的区别在哪

    深度学习和自然语言处理(NLP)是计算机科学领域中两非常重要的研究方向。它们之间既有联系,也有区别。本文将介绍深度学习与NLP的区别。
    的头像 发表于 07-05 09:47 909次阅读

    TensorFlow与PyTorch深度学习框架的比较与选择

    深度学习作为人工智能领域的重要分支,在过去十年中取得了显著的进展。在构建和训练深度
    的头像 发表于 07-02 14:04 953次阅读

    深度学习模型训练过程详解

    深度学习模型训练复杂且关键的过程,它涉及大量的数据、计算资源和精心设计的算法。训练
    的头像 发表于 07-01 16:13 1236次阅读

    深度学习与传统机器学习的对比

    在人工智能的浪潮中,机器学习深度学习无疑是两大核心驱动力。它们各自以其独特的方式推动着技术的进步,为众多领域带来了革命性的变化。然而,尽管它们都属于
    的头像 发表于 07-01 11:40 1326次阅读

    迅龙软件加入开放原子开源基金会和OpenHarmony 项目,共建开源新生态

    近日,迅龙软件与“开放原子开源基金会”签署协议,加入“开放原子开源基金会”(以下简称“开源基金会
    的头像 发表于 04-30 17:50 1034次阅读
    迅龙软件加入开放原子<b class='flag-5'>开源</b><b class='flag-5'>基金会</b>和OpenHarmony <b class='flag-5'>项目</b>,共建<b class='flag-5'>开源</b>新生态

    FPGA在深度学习应用中或将取代GPU

    上涨,因为事实表明,它们的 GPU 在训练和运行 深度学习模型 方面效果明显。实际上,英伟达也已经对自己的业务进行了转型,之前它是家纯粹做 GPU 和游戏的公司,现在除了作为
    发表于 03-21 15:19

    为什么深度学习的效果更好?

    导读深度学习机器学习子集,已成为人工智能领域的
    的头像 发表于 03-09 08:26 619次阅读
    为什么<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的效果更好?