Horovod增加了对PySpark和Apache MXNet的支持,以及用于更快训练的其他功能

0
Horovod增加了对PySpark和Apache MXNet的支持,以及用于更快训练的其他功能

本文最初发表于LF深度学习基金会博客雷竞技到底好不好用

Horovod一个由Uber创建的分布式深度学习框架,使得分布式深度学习快速易用。Horovod通过TensorFlow、Keras、PyTorch和Apache MXNet提高了训练机器学习(ML)模型的速度、规模和资源分配。LF深度学习,aLinux基金会该项目支持和维持人工智能和机器学习领域的开源创新,接受Horovod作为其托管项目之一2018年12月。由于该项目被接受为托管项目,由于LF深度学习的中立环境、开放治理和基金会为项目提供的一系列推动因素,Uber之外的其他贡献和合作立即出现。

这个最新版本中的更新从三个关键方面改进了Horovod:增加对更多框架的支持和集成,改进现有功能,以及为TensorFlow 2.0带来的变化准备框架。结合这些新的功能和能力,使Horovod更容易,更快,更通用,为其不断增长的用户群,包括NVIDIA和橡树岭国家实验室。Horovod还与各种深度学习生态系统集成,包括AWS、谷歌、Azure和IBM Watson。

在这个版本中,添加了一些新的Horovod用例,目的是使该框架成为训练深度学习模型的更通用的工具。随着集成和受支持框架列表的增长,用户可以利用Horovod来加速大量的开源模型,并在多个框架中使用相同的技术。

PySpark和Petastorm支持

Apache Spark能够处理大量的数据,可以在许多机器学习环境中使用。易用、内存处理能力、接近实时的分析和丰富的集成选项集,如Spark MLlib和Spark SQL,使Spark成为一个受欢迎的选择。

由于其可伸缩性和易用性,Horovod受到了更广泛的基于python的机器学习社区的关注,包括Apache Spark。随着PySpark支持和集成的发布,Horovod将对更广泛的用户有用。

在Horovod之前,PySpark的典型工作流程是在PySpark中进行数据准备,将结果保存在中间存储中,使用不同的集群解决方案运行不同的深度学习训练作业,导出训练过的模型,并在PySpark中运行评估。Horovod与PySpark的集成允许在相同的环境中执行所有这些步骤。

为了使Spark集群中PySpark和Horovod之间的数据传输更加顺畅,Horovod依赖于Petastorm一个由优步先进技术集团(ATG)开发的用于深度学习的开源数据访问库。Petastorm,于2018年9月开源,可直接从多tb数据集中对深度学习模型进行单机或分布式训练和评估。

典型的Petastorm用例需要在PySpark中预处理数据,将其写入Apache Parquet(一种高效的柱状存储格式)的存储中,并使用Petastorm在TensorFlow或PyTorch中读取数据。

Apache Spark和Petastorm也在Uber内部的一些应用程序中使用,因此扩展Horovod的支持以包括PySpark和Petastorm是使Horovod成为更多功能工具的自然步骤。

Apache MXNet支持

Apache MXNet(孵化)是一个开源的深度学习框架,可以促进更灵活有效的神经网络训练。Amazon是Horovod和MXNet的主要贡献者,并且原生支持这两个框架Amazon EC2 P3实例而且亚马逊SageMaker

就像它最近对PySpark的支持一样,Horovod与MXNet的集成是一项更大的努力的一部分,目的是让更广泛的社区可以使用Horovod,进一步扩大对更快、更简单的模型训练的访问。

自动调谐

这个最新版本的第三个更新是Horovod引入了自动调优的alpha版本。在这个版本中,自动调优是可选的,但在将来的版本中,它将作为默认选项打开。

Horovod支持许多内部参数,这些参数可以根据硬件和模型架构的变化进行调整,以提高性能。这些参数包括融合缓冲区阈值,用于确定有多少张量可以批处理成单个allreduce,循环时间,用于控制批量allreduce的频率,以及当主机数量非常多时,分层allreduce作为单环allreduce的替代方案。

为这些参数找到正确的值可以提高30%的性能。然而,手工尝试不同的参数是一种费时的反复试验。

Horovod的自动调优系统通过使用贝叶斯优化动态探索和选择最佳内部参数值来消除猜测。

自动调优使尝试不同选项和参数值以确定最佳配置的手动过程自动化,如果硬件、规模或模型发生更改,则必须重复此过程。由于自动化,自动调优使参数优化更有效,更快的模型训练。

嵌入的改进

嵌入通常用于涉及自然语言处理(NLP)和从表格数据中学习的机器学习用例。在Uber的数据存储中,Uber的行程数据存储为具有一定分类界限的表格数据。在像Uber这样的用例中,嵌入的数量和大小将会扩展。通过这个最新的版本,Horovod增强了其扩展深度学习模型的能力,这些模型大量使用嵌入,如Transformer和伯特

此外,这些嵌入改进可以更快地促进大嵌入梯度以及小嵌入梯度的融合,从而允许更多的嵌入来更快地处理操作。

TensorFlow中的热切执行支持

提前执行将是TensorFlow 2.0的默认模式。快速执行允许开发人员在命令式编程环境中创建模型,在这种环境中,操作立即得到评估,结果作为真实值返回。即时执行消除了创建会话和处理图的需要。

有了动态模型的动态执行支持,模型评估和调试变得更加容易和快速。热切的执行也使缺乏经验的开发人员更直观地使用TensorFlow。

在过去,以急切执行的方式运行Horovod意味着在所有worker上按顺序计算每个张量梯度,没有任何张量批处理或并行。在最新版本中,完全支持即时执行。在我们的实验中,带有急切执行的张量批处理将性能提高了6倍以上。此外,用户现在可以使用TensorFlow的分布式实现GradientTape记录操作自动分化。

混合精准训练

混合精度是一种计算方法中不同数值精度的组合使用。使用低于FP32的精度,通过使用更小的张量来减少内存需求,允许部署更大的网络。此外,数据传输花费的时间更少,计算性能显著提高。带有Tensor Cores的gpu支持混合精度,使用户能够利用更低的内存使用和更快的数据传输的好处。

深度神经网络的混合精确训练实现了两个主要目标:

  1. 减少所需的内存数量,支持训练更大的模型或使用更大的迷你批进行训练
  2. 通过使用低精度算法来减少所需的资源,从而缩短训练或推理时间。

在过去,混合精度训练用于打破Horovod的融合逻辑,因为FP16张量的序列经常会被FP32张量打破,不同精度的张量无法参与单一的融合事务。

最新发布的NVIDIA贡献了一个改进到允许FP16和FP32张量序列通过前馈机制独立处理的张量融合逻辑。通过这种改变,我们已经看到高达26%的性能改进。

好奇Horovod如何让你的模型训练更快、更可扩展?看看这些新的更新和试试这个框架为了你自己,一定要加入深度学习基金会的Horovod公告而且技术讨论邮件列表。

评论

没有帖子显示