优步 Engineering发布Horovod v0.21:新功能包括针对TensorFlow v1和v2的局部渐变聚合

0
1022
资源: //eng.uber.com/horovod-v0-21/

霍罗沃德宣布了其v0.21,并为Horovod社区带来了许多强大的新功能,从而使培训深度学习模型比以往更快,更容易。

霍罗沃德 该公司于2017年开源,现已成长为将深度学习培训扩展到数百个GPU的标准解决方案。通过向现有的TensorFlow,PyTorch或Apache MXNet培训脚本中添加几行Python代码,Horovod可以将培训时间从数天或数周缩短至数小时或数分钟。

新功能:

广告
  • 添加了对名为的优化的支持 局部梯度聚集 对于TensorFlow v1和v2 确定的AI.
  • 分组减少 减少延迟并改善确定性 英伟达.
  • 支持轻松配置 弹性Horovod jobs on 射线 contributed by 任何规模
  • 支持 霍罗沃德 Spark估算器 在Databricks运行时中 数据块.

局部梯度聚合

本地梯度聚合是一种减少网络带宽受限设置中的通信开销的方法。它使GPU处理批处理的速度比网络可以传输梯度以跨工作人员聚合的速度快得多。该方法通过在GPU内存中本地累积对模型的梯度更新来工作,从而将最新更新与自上一轮通信以来的现有累积更新进行求和。配置了多个迷你批处理后,N,Horovod(独立的Python程序包)将执行 减少 在网络上跨工作人员平均梯度。然后,它将更新应用于模型。

局部梯度聚合类似于使用较大的有效批次大小。但是,它不会直接增加批量大小。它会有效地增加批量大小,不受可用GPU内存的限制。每个通讯单元的工作人员会增加计算量,从而通过局部梯度聚合将批处理大小增加并且通讯开销减少N倍。

分组减少

分组Allreduce是一种在超级计算规模的训练中优化Horovod性能的方法。在更新的版本中,Nvidia提供了一个通用API,以将Grouped Allreduce的改进引入开源Horovod社区。 

分组Allreduce使用户可以直接控制Horovod如何连接(或“组”)张量进行allreduce。当提供hvd.grouped_allreduce的张量列表时,它在逻辑上将其视为单个请求。然后,仅当列表中的所有张量都可用时,后端才会处理它。 

射线上的Elastic 霍罗沃德

In v0.20,Horovod介绍 弹性Horovod,这是TensorFlow和PyTorch的自动缩放和容错API。在 v0.21,您只需使用几行代码就可以在可抢占式云实例上启动此类作业  霍罗沃德在Ray的弹性执行器上。该API可为现有的Ray群集提供容错的,自动缩放的分布式培训。使用ElasticRayExecutor,现在可以安全地在群集中进行抢占式实例的训练,这些实例可以在整个训练过程中随时从群集中来回。

具有Databricks的Horovod Spark估算器

霍罗沃德 Spark估算器 使人们可以在任何PySpark管道中使用Horovod训练深度学习模型。在v0.21.0中, 数据块 添加了对在ML环境的Databricks Runtime中运行Horovod Spark估算器的支持(AWS | 蔚蓝)。

下一步?

霍罗沃德项目的下一个主要目标是v1.0。它将旨在巩固核心API和新引入的Elastic 霍罗沃德 API。主要优先事项是:

  • 更高级别的API可以简化弹性训练和数据加载。
  • 所有受支持的框架(TensorFlow,PyTorch和MXNet)之间的功能均等。
  • 改进的错误处理,可调试性和消息传递。
  • 弹性Horovod减缓(去除)工人的速度。

的GitHub: //github.com/horovod/horovod

V0.21.0: //github.com/horovod/horovod/releases/tag/v0.21.0

资源: //eng.uber.com/horovod-v0-21/

发表评论

请输入您的评论!
请在这里输入您的名字

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.