選自Uber
參與:李澤南、薛璐
Horovod是Uber開源的另一個深度學習工具。其開發(fā)吸收了Facebook的“一小時培訓ImageNet論文”和百度的Ring Allreduce的優(yōu)勢,可以幫助用戶實現(xiàn)分布式培訓。本文將簡要介紹這一框架的特點。
近年來,深度學習在圖像處理、語音識別和預測方面取得了很大進展。在優(yōu)步,我們已經(jīng)將深度學習應(yīng)用到公司的業(yè)務(wù)中,從自動駕駛路線搜索到欺詐預防。深度學習使我們的數(shù)據(jù)科學家和工程師能夠為用戶提供更好的體驗。
TensorFlow已經(jīng)成為優(yōu)步首選的深度學習庫。因為這個框架是使用最廣泛的開源深度學習框架,所以對新開發(fā)者非常友好。它結(jié)合了高性能和低級別的模型細節(jié)調(diào)試能力——比如我們可以使用Keras這種高級API,也可以使用我們自己定制的英偉達CUDA工具。此外,TensorFlow還為各種深度學習用例提供端到端支持,從實驗探索到生產(chǎn)級模型的部署,再到云服務(wù)器、移動應(yīng)用,甚至自動駕駛汽車。
上個月,優(yōu)步工程部推出了米開朗基羅,這是一個內(nèi)部機器學習服務(wù)平臺,可以輕松地將機器學習部署到大規(guī)模系統(tǒng)中。本文中,優(yōu)步介紹了米開朗基羅深度學習工具包(Michelangelo Deep Learning Toolkit)的重要開源組件Horovod,它可以使分布式TensorFlow深度學習項目更容易實現(xiàn)。
分布式的
隨著Uber在TensorFlow上訓練越來越多的機器學習模型,項目對數(shù)據(jù)和計算能力的需求也在快速增長。在大多數(shù)情況下,模型可以在單個或多個GPU服務(wù)器上運行,但隨著數(shù)據(jù)集和訓練時間的增加,訓練有時需要一周甚至更長時間。因此,優(yōu)步工程師不得不尋求分布式培訓方法。
優(yōu)步開始嘗試部署標準分布式TensorFlow技術(shù)。測試了一些方法后,開發(fā)人員意識到原來的方法需要調(diào)整。首先,在遵循文檔和代碼示例之后,我們并不總是清楚哪些函數(shù)對應(yīng)于哪些模型訓練代碼的分布式計算。標準分布式TensorFlow引入了許多新概念:工作線程、參數(shù)服務(wù)器、tf。服務(wù)器(),tf。ClusterSpec(),tf.train.SyncReplicasOptimizer(),TF . train . replicas _ device _ setter()等等。在某些情況下,它們可以優(yōu)化,但它們也使我們很難診斷出減慢訓練的bug。
第二個問題是關(guān)于Uber秤的計算性能。經(jīng)過一些基準測試,我們發(fā)現(xiàn)標準的分布式張量流機制不能滿足要求。例如,在使用128個GPU進行訓練時,由于效率低下,我們損失了一半的計算資源。
圖5: Horo VOD時間軸描述了Chrome的跟蹤事件剖析工具中分布式訓練過程中的高層時間軸。
張量融合
在分析了幾個模型的時間線后,我們發(fā)現(xiàn)有大量張量的模型,如ResNet-101,有許多小的allreduce運算。以前我們注意到,當有足夠多的張量時,環(huán)allreduce可以最大限度地利用網(wǎng)絡(luò),但它的效率和速度不如張量較少時。那么問題來了:如果在對張量進行環(huán)全導出之前,融合多個小數(shù)量會發(fā)生什么?
答案是:張量融合,一種在執(zhí)行Horovod的環(huán)所有之前融合張量的算法。利用該方法進行實驗,發(fā)現(xiàn)運行在非優(yōu)化傳輸控制協(xié)議(TCP)網(wǎng)絡(luò)上的多層模型的性能提高了65%。我們簡要介紹了如何使用張量融合:
1.確定要減少哪些向量。首先選擇幾個數(shù)據(jù)類型相同的張量,適用于緩沖區(qū)。
2.為未分配的張量分配融合緩沖區(qū)。默認融合緩沖區(qū)大小為64 MB。
3.將所選張量的數(shù)據(jù)復制到融合緩沖區(qū)。
4.對融合緩沖液執(zhí)行所有操作。
5.將融合緩沖區(qū)中的數(shù)據(jù)復制到輸出張量。
6.重復,直到循環(huán)中沒有張量需要減少。
我們使用Horovod、Tensor Fusion和其他建立在米開朗基羅平臺上的特性來提高機器學習系統(tǒng)中模型的效率、速度和易用性。在下一部分中,我們將分享真實世界的基準來展示Horovod的性能。
Horovod基準
圖6:在25GbE TCP上使用不同數(shù)量的NVIDIA Pascal GPU時,將標準分布式TensorFlow和Horovod運行分布式訓練工作處理的圖像數(shù)量與ResNet-101 TensorFlow模型進行比較。
經(jīng)過調(diào)整后,我們重新運行了適用于Horovod的官方張量流基準,并與傳統(tǒng)分布式張量流的性能進行了比較。如圖6所示,Horovod的能力得到了極大的提升,我們不再浪費一半的GPU資源。事實上,使用盜夢空間V3和ResNet-101模型進行縮放可以實現(xiàn)88%的計算效率。也就是說訓練速度是標準分布式TensorFlow的兩倍。
圖7:在25千兆以太網(wǎng)傳輸控制協(xié)議和25千兆以太網(wǎng)RDMA網(wǎng)絡(luò)上,7:Horovod每秒處理的圖像的比較。他們在不同的NVIDIA Pascal GPU上為盜夢空間V3、ResNet-101和VGG-16運行分布式培訓。
由于MPI和NCCL都支持遠程直接內(nèi)存訪問(RDMA)網(wǎng)絡(luò),我們使用RDMA網(wǎng)卡運行額外的基準測試,以確定它們是否可以提高TCP網(wǎng)絡(luò)的效率。
我們發(fā)現(xiàn),RDMA并沒有顯著提高盜夢空間V3和ResNet-101模型的性能,但與TCP網(wǎng)絡(luò)相比,僅提高了3或4個百分點。然而,RDMA幫助Horovod在這兩款機型上實現(xiàn)了90%以上的擴展效率。
同時,使用RDMA網(wǎng)絡(luò)時,VGG-16模型的速度提高了30%。這可以用VGG-16的大量模型參數(shù)來解釋,這些參數(shù)是由完全連接的層和少量層的組合引起的。這些特性改變了從GPU計算到通信的關(guān)鍵路徑,造成網(wǎng)絡(luò)瓶頸。
這些基準測試表明,Horovod在TCP和RDMA網(wǎng)絡(luò)上的擴展性很好,盡管使用RDMA網(wǎng)絡(luò)的用戶只有在使用具有大量模型參數(shù)的模型(如VGG-16)時才能獲得最佳性能和顯著的效率提升。
我們使用Horovod來探索深度學習中的性能優(yōu)化只是一個開始。未來,我們將繼續(xù)使用開源社區(qū)來使用我們的機器學習系統(tǒng)和框架來實現(xiàn)性能提升。
下一步
今年早些時候,Uber開放了Horovod,使這種可擴展的機器學習模型走向整個社區(qū)。目前,Horovod仍在發(fā)展,我們正朝著以下方向繼續(xù)前進:
1.讓MPI更容易安裝:雖然在工作站上安裝MPI更容易,但是在集群上安裝MPI還是需要一些努力;比如工作量管理器很多,我們需要根據(jù)硬件的不同進行調(diào)整。我們正在開發(fā)一個為集群運行Horovod的參考設(shè)計。為此,我們希望與MPI社區(qū)和網(wǎng)絡(luò)硬件供應(yīng)商合作,制定安裝MPI和相關(guān)驅(qū)動程序的說明。
2.收集和分享分布式深度學習模型參數(shù)調(diào)整的經(jīng)驗:Facebook的“一小時訓練ImageNet Paper”描述,與在單個GPU上訓練模型相比,分布式訓練任務(wù)需要超參數(shù)調(diào)整才能達到甚至超越前者的精度。Facebook證明了在256個GPU上訓練TensorFlow模型的可行性。
3.補充一個超大型號的例子:Horovod目前支持適合單GPU和多GPU服務(wù)器的型號。我們希望將更大的模型應(yīng)用于更多形式的硬件。
我們希望Horovod的簡單性能讓大家采用分布式訓練,更好的利用計算資源進行深度學習。
原地址:https://eng.uber.com/horovod/
這篇文章是為機器的核心編寫的。請聯(lián)系本微信官方賬號進行授權(quán)。
1.《HVD 業(yè)界 | 詳解Horovod:Uber開源的TensorFlow分布式深度學習框架》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《HVD 業(yè)界 | 詳解Horovod:Uber開源的TensorFlow分布式深度學習框架》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/junshi/805811.html