0
雷鋒網(wǎng)AI研習社按:隨著深度學習神經(jīng)網(wǎng)絡規(guī)模越來越大,訓練一個深度神經(jīng)網(wǎng)絡(Deep Neural Networks, DNNs)往往需要幾天甚至幾周的時間。為了加快學習速度,經(jīng)常需要分布式的 CPU/GPU 集群來完成整個訓練。本文就就來為大家簡單簡單介紹一下如何進行分布式訓練深度學習模型。
在近期雷鋒網(wǎng) AI 研習社的線上公開課上,來自 IBM 系統(tǒng)部研發(fā)工程師武維博士為大家做了一期主題為「深度學習中的分布式訓練」的在線分享,錯過了直播的同學們?nèi)绻戳吮疚挠幸苫笾庍€可以到雷鋒網(wǎng) AI 慕課學院觀看視頻回放。
以下是雷鋒網(wǎng)對視頻直播內(nèi)容做的簡要回顧:
武維,IBM 系統(tǒng)部研發(fā)工程師,曾就職于華為大數(shù)據(jù)產(chǎn)品部及 IBM 中國研究院,擔任系統(tǒng)工程師/研究員;西安交通大學系統(tǒng)工程博士,目前主要研發(fā)方向為深度學習中的分布式訓練框架與模型。
分享提綱:
為什么要分布式訓練深度學習模型及分布式TensorFlow架構(gòu)。
TensorFlow圖內(nèi)復制和圖間復制。
深度學習模型異步訓練和同步訓練。
Case Study:如何把單機模型分布式化。
分布式模型訓練性能介紹。
分享內(nèi)容:
大家好,我是武維,今天分享的第一部分介紹一下為什么要采用分布式訓練以及分布式 TensorFlow 的架構(gòu),第二部分講 TensorFlow 圖內(nèi)復制和圖間復制,第三部分是關(guān)于分布式訓練中的同步訓練和異步訓練的簡要介紹。第四部分是關(guān)于如何把單機模型分布式化成分布式模型,第五部分是關(guān)于分布式訓練的性能介紹。
為什么要采用分布式訓練呢,分布式訓練主要處理什么問題,以及如何處理的?
下圖是關(guān)于TPU架構(gòu)數(shù)據(jù)中心的圖
第一個原因,是增加訓練的吞吐量;第二個原因是是針對大模型訓練,大模型通常在一個設備中放不下。
下面左圖中的橫坐標可以認為是 GPU 個數(shù),縱坐標為處理圖片的速度。
針對大模型怎么去訓練?現(xiàn)在的辦法是把模型拆解到不同的GPU卡里面,每個GPU卡里面訓練一部分,這樣就可以把一個大模型分布式訓練起來。
如何實現(xiàn)這個流程
左邊是TensorFlow的一個基本的運行流程。
TensorFlow 的發(fā)展過程
分布式TensorFlow架構(gòu),它的架構(gòu)是基于Master 和 Slaver的架構(gòu)。
以上是從master 和slaver 的角度講深度學習分布式架構(gòu),下面從worker 的角度來看:
深度學習首先要訓練參數(shù),在分布式里面會把參數(shù)存放在參數(shù)服務器,如果 worker 需要運算的話,首先從參數(shù)服務器讀取參數(shù)到到 CPU 上。目前來說,大多數(shù)的深度學習訓練都是在 GPU 設備上進行的,所以需要把讀取的數(shù)據(jù)復制到 GPU 上,GPU 就可以從左往右開始運算。最后通過求導找到變量所對應的梯度,然后在將梯度復制到機器上所對應的的 CPU 上,CPU 再通過網(wǎng)絡通信把他發(fā)送給參數(shù)服務器,這是從整個 worker 角度去看分布式架構(gòu)。
TensorFlow 在分布式訓練里面有兩個比較重要的概念分別是「圖內(nèi)復制」和「圖間復制」。分布式訓練意味著有一個集群,先定義一個分布式集群。下面是圖內(nèi)復制,這種情況適合單機多卡。
如果是多臺計算機的時候,分發(fā)數(shù)據(jù)帶來的數(shù)據(jù)瓶頸就會比較大,如果采用圖內(nèi)復制,數(shù)據(jù)傳輸會產(chǎn)生瓶頸。這個時候需要用圖間復制,兩個圖可以中間共享變量,解決了訓練數(shù)據(jù)分發(fā)的問題,這種方式適用于多機多卡訓練。圖間復制有多個客戶端,圖內(nèi)復制只有一個客戶端。
TensorFlow 封裝了高級 API,會自動把參數(shù)部署到參數(shù)服務器上,把運算操作設定到 worker 上,這些就實現(xiàn)了一份代碼可在多個 worker 上運行,簡化了客戶端程序的編寫。
如何分布式尋找最優(yōu)W?同步訓練和異步訓練有什么區(qū)別?
隨機梯度下降法:第一個式子數(shù)值求偏導,計算量太大,不實際。通常用微積分求導,解析解。
分布式隨機梯度下降法
異步訓練過程:異步訓練為TensorFlow上每個節(jié)點上的任務為獨立訓練方式,不需要和其他節(jié)點在參數(shù)服務器上同步梯度。
同步訓練過程:同步訓練需要和其他節(jié)點在參數(shù)服務器上Reduce梯度。
第四部分是如何編寫分布式訓練模型示例,大家可以觀看視頻回放。
下圖是單機版線性回歸模型示例
第五部分是分布式訓練的性能比較
評價指標通常分為模型方面和平臺方面。在模型方面常用指標是:準確率、召回率、AP等。平臺方面
主要看吞吐量、加速比。
異步訓練的吞吐量比同步訓練好,所以異步訓練要比同步訓練的快。
同步算法和異步算法的比較
以上就是本次分享的主要內(nèi)容,代碼實現(xiàn)部分建議同學們直接觀看回放視頻,也可關(guān)注嘉賓武維的GitHub地址。
微信公眾號:「AI 研習社」長期提供免費視頻直播課程,歡迎關(guān)注!
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。