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将使我们能够进一步扩大它在开源生态系统中的影响。

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

    关注

    26

    文章

    1224

    浏览量

    55814
  • 自动驾驶
    +关注

    关注

    773

    文章

    13027

    浏览量

    163201
  • 深度学习
    +关注

    关注

    73

    文章

    5236

    浏览量

    119900

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

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

收藏 人收藏

    评论

    相关推荐

    视觉深度学习迁移学习训练框架Torchvision介绍

    Torchvision是基于Pytorch的视觉深度学习迁移学习训练框架,当前支持的图像分类、对象检测、实例分割、语义分割、姿态评估模型的迁
    的头像 发表于 09-22 09:49 450次阅读
    视觉<b class='flag-5'>深度</b><b class='flag-5'>学习</b>迁移<b class='flag-5'>学习</b><b class='flag-5'>训练</b><b class='flag-5'>框架</b>Torchvision介绍

    一文详解机器学习深度学习的区别

    深度学习这几年特别火,就像5年前的大数据一样,不过深度学习其主要还是属于机器学习的范畴领域内,所
    发表于 09-06 12:48 1337次阅读
    一文详解<b class='flag-5'>机器</b><b class='flag-5'>学习</b>和<b class='flag-5'>深度</b><b class='flag-5'>学习</b>的区别

    机器学习深度学习的区别

    机器学习深度学习的区别 随着人工智能技术的不断发展,机器学习
    的头像 发表于 08-17 16:11 3377次阅读

    深度学习框架深度学习算法教程

    深度学习框架深度学习算法教程 深度学习
    的头像 发表于 08-17 16:11 714次阅读

    深度学习cntk框架介绍

    深度学习cntk框架介绍  深度学习是最近几年来非常热门的话题,它正在彻底改变我们生活和工作的方式。随着越来越多的创新和发展,人工智能和
    的头像 发表于 08-17 16:11 963次阅读

    深度学习框架连接技术

    深度学习框架连接技术 深度学习框架是一个能够帮助机器
    的头像 发表于 08-17 16:11 476次阅读

    深度学习框架对照表

    深度学习框架对照表  随着人工智能技术的发展,深度学习正在成为当今最热门的研究领域之一。而深度
    的头像 发表于 08-17 16:11 489次阅读

    深度学习算法库框架学习

    深度学习算法库框架学习 深度学习是一种非常强大的机器
    的头像 发表于 08-17 16:11 435次阅读

    深度学习框架tensorflow介绍

    深度学习框架tensorflow介绍 深度学习框架TensorFlow简介
    的头像 发表于 08-17 16:11 1426次阅读

    深度学习框架pytorch介绍

    。PyTorch具有易于使用的API和文档,并强制执行Python编码标准。这使得它成为机器学习从业者的首选框架之一。PyTorch支持CPU和GPU计算以及分布式
    的头像 发表于 08-17 16:10 1128次阅读

    深度学习框架的作用是什么

    深度学习框架的作用是什么 深度学习是一种计算机技术,它利用人工神经网络来模拟人类的学习过程。由于
    的头像 发表于 08-17 16:10 1160次阅读

    深度学习框架区分训练还是推理吗

    深度学习框架区分训练还是推理吗 深度学习框架是一个非
    的头像 发表于 08-17 16:03 1027次阅读

    深度学习框架是什么?深度学习框架有哪些?

    深度学习框架是什么?深度学习框架有哪些?  深度
    的头像 发表于 08-17 16:03 1753次阅读

    深度学习框架pytorch入门与实践

    的。PyTorch是一个开源深度学习框架,在深度学习领域得到了广泛应用。本文将介绍PyTorc
    的头像 发表于 08-17 16:03 1195次阅读

    ​计算机视觉深度学习训练推理框架

    PyTorch是由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库,也是目前使用范围和体验感最好的一款深度学习
    的头像 发表于 05-08 14:20 823次阅读
    ​计算机视觉<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>训练</b>推理<b class='flag-5'>框架</b>