介紹分布式深度學習訓練的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的開源分布式培訓框架,支持TensorFlow,Keras,PyTorch.HorovodRunner構建在Horovod之上,繼承了這些深度學習框架的支持,使其更容易運行。
在底層,HorovodRunner跨機器共享代碼和庫,配置SSH,並執行分布式訓練所需的複雜MPI命令。
因此,數據科學家從操作需求的負擔中解脫出來,現在可以專注於手工任務——構建模型、進行實驗,並將其快速部署到生產環境中。
另外,HorovodRunner提供了一個簡單的接口,允許您輕鬆地在集群上分配工作負載。例如,下麵的代碼段在4台工作機器上運行train函數。這可以幫助您實現工作負載的良好伸縮,加速模型實驗,並縮短生產時間。
從sparkdl進口HorovodRunnerhr = HorovodRunner(np=4)hr.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 =2,validation_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。
閱讀更多
- 了解Apache Spark 2.4中的Barrier執行
- 讀到HorovodRunner文檔
- 聽Project Hydrogen: Apache Spark上深度學習的最新進展網絡研討會
- 了解更多Databricks運行時5.0 ML
獲取更多信息Horovod而且HorovodEstimator