介紹HorovoDrunner進行分發深度學習培訓

今天,我們很高興在我們的Databricks運行時5.0 ml

Horovodrunner提供了一種簡單的方法,可以將您的深度學習培訓工作量從單台機器到大型群集擴展,從而減少了整體培訓時間。

HorovoDrunner受到許多用戶的需求,這些用戶想在數據集中訓練深度學習模型並減少整體培訓時間,HorovoDrunner通過在群集上分發培訓來解決這一要求,因此每秒處理更多數據將訓練時間從小時減少到幾分鍾。

作為將分布式深度學習與Apache Spark集成的一部分,利用項目氫,HorovoDrunner利用引入的障礙執行模式Apache Spark 2.4。這種新的執行模型與通用的SPARK執行模型不同,並且可以滿足其故障耐受需求的分布培訓,以及群集中每個工作人員節點上任務之間的通信模式。

在此博客中,我們描述了HorovoDrunner以及如何使用HorovoDrunner的簡單API以分布式的方式訓練您的深度學習模型,讓Apache Spark處理群集中每個工作人員節點上的任務之間的所有協調和溝通。

Horovodrunner的簡單API

Horovod,Uber的開源分布式培訓框架,支持TensorFlow,,,,凱拉斯, 和Pytorch。Horovodrunner建立在Horovod之上,繼承了這些深度學習框架的支持,並使運行變得更加容易。

在引擎蓋下,HorovoDrunner在機器上共享代碼和庫,配置SSH,並執行分布式培訓所需的複雜MPI命令。

結果,數據科學家擺脫了運營要求的負擔,現在可以專注於手頭的任務 - 建立模型,實驗並將其部署到生產中。

另外,HorovoDrunner提供了一個簡單的接口,使您可以輕鬆地在集群上分發工作負載。例如,下麵的摘要在4台工作機上運行火車功能。這可以幫助您實現良好的工作量擴展,加速模型實驗並縮短生產時間。

來自SparkDL導入HorovoDrunner HR = HorovodRunner(np = 4)hr.run(火車,batch_size = 512,epochs = 5)

下麵的火車方法包含Horovod培訓代碼。示例代碼概述了單個節點工作負載的小更改以使用HOROVOD。通過幾行代碼更改並使用HorovoDrunner,您可以在幾分鍾內開始利用群集的功率。

導入horovod.keras作為hvd導入keras def train(batch_size = 512,epochs = 12):#初始化horovod here hvd.init()model = get_model()#基於#horovod等級和大小(x_train size straper your訓練和測試數據),y_train),(x_test,y_test)= get_data(hvd.rank(),hvd.size())opt = keras.optimizers.adadelta()#覆蓋您的優化器與Horovod分布式OPT = HVD.DistribedOptimizer(opt)compile your model model.compile(loss=keras.losses.categorical_crossentropy,optimizer=opt, metrics[‘accuracy’]) # fit the model model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=2, validation_data=(x_test, y_test))

Databricks上的集成工作流程

Horovodrunner推出了Horovod培訓工作作為Spark Jobs。因此,您的開發工作流與Databricks上的其他Spark作業完全相同。例如,您可以從Spark UI中檢查訓練日誌,如下圖1所示。

或者,您可以輕鬆地將錯誤追溯到筆記本單元和代碼,如動畫圖2所示。

類似的工具張板Horovod時間軸在Databricks中也支持。

開始!

要開始,請結帳示例筆記本使用TensorFlow,Keras或Pytorch在Databricks運行時5.0毫升中對MNIST數據集進行分類!要將單個節點的工作負載遷移到分布式設置,您隻需按照本文檔中概述的步驟進行操作即可。

嚐試今天的數據映使用Apache Spark 2.4和Databricks運行時5.0。

閱讀更多

獲取更多信息HorovodHorovoDestimator

免費嚐試Databricks 開始

注冊

Baidu
map