工程的博客

介绍分布式深度学习训练的HorovodRunner

分享这篇文章

今天,我们很高兴向大家介绍HorovodRunnerDatabricks运行时5.0 ML

HorovodRunner提供了一种简单的方法,可以将深度学习训练工作量从一台机器扩展到大型集群,从而减少整体训练时间。

我们的许多用户都希望在不适合单个机器的数据集上训练深度学习模型,并减少整体训练时间,HorovodRunner通过在集群上分布训练来解决这一需求,因此每秒处理更多数据,并将训练时间从几小时减少到几分钟。

作为将分布式深度学习与Apache Spark集成的一部分,利用项目氢,HorovodRunner利用了中引入的barrier执行模式Apache Spark 2.4。这种新的执行模型不同于通用的Spark执行模型,它在容错需求和集群中每个工作节点上任务之间的通信模式方面迎合了分布式训练。

在这篇博客中,我们将介绍HorovodRunner,以及如何使用HorovodRunner的简单API以分布式方式训练深度学习模型,让Apache Spark处理集群中每个工作节点上任务之间的所有协调和通信。

HorovodRunner的简单API

Horovod, Uber的开源bob下载地址分布式培训框架,支持TensorFlowKeras,PyTorch.HorovodRunner构建在Horovod之上,继承了这些深度学习框架的支持,使其更容易运行。

在底层,HorovodRunner跨机器共享代码和库,配置SSH,并执行分布式训练所需的复杂MPI命令。

因此,数据科学家从操作需求的负担中解脱出来,现在可以专注于手工任务——构建模型、进行实验,并将其快速部署到生产环境中。

另外,HorovodRunner提供了一个简单的接口,允许您轻松地在集群上分配工作负载。例如,下面的代码段在4台工作机器上运行train函数。这可以帮助您实现工作负载的良好伸缩,加速模型实验,并缩短生产时间。

sparkdl进口HorovodRunnerhr = HorovodRunner(np=4hr.run(火车,batch_size =512时代=5

下面的训练方法包含Horovod训练代码。示例代码概述了为使用Horovod而对单节点工作负载进行的小更改。只需更改几行代码并使用HorovodRunner,您就可以在几分钟内开始利用集群的强大功能。

进口horovod.keras作为hvd进口kerasdef火车batch_size =512时代=12):#初始化horovodhvd.init ()
              模型= get_model()#拆分您的训练和测试数据基于# Horovod等级和大小(x_train y_train) (x_test y_test) = get_data (hvd.rank (), hvd.size ())opt = keras.optimizer . adadelta ()#覆盖你的优化器与Horovod分布式优化器opt = hvd.DistributedOptimizer(opt)#编译你的模型模型。编译(损失= keras.losses。categorical_crossentropy,优化器=选择、指标(“准确性”))#适合模型模型。fit (x_train y_train,batch_size = batch_size,时代=时代,verbose =2validation_data = (x_test y_test))

集成工作流的数据

HorovodRunner将Horovod培训作业作为Spark作业启动。因此,您的开发工作流与Databricks上的其他Spark作业完全相同。例如,您可以从Spark UI检查训练日志,如图1所示。在下面。

https://www.youtube.com/watch?v=tlbK4ODANZU

或者,您也可以像动画图2所示的那样,轻松地将错误追溯到笔记本单元格和代码。在这里。

https://www.youtube.com/watch?v=3uQPrfMKEog

这样的工具TensorBoard而且Horovod时间表也在Databricks中得到支持。

开始吧!

要开始,请查看例如笔记本电脑使用TensorFlow, Keras或PyTorch在Databricks Runtime 5.0 ML中分类MNIST数据集!要将单节点工作负载迁移到分布式设置,只需遵循本文档中概述的步骤。

试一试今天的砖使用Apache Spark 2.4和Databricks Runtime 5.0。

阅读更多

获取更多信息Horovod而且HorovodEstimator

免费试用Databricks
看到所有工程的博客的帖子