(沈陽理工大學信息科學與工程學院 遼寧 沈陽 110159)
Caffe并行實現(xiàn)算法研究
孟思彤辜陽
(沈陽理工大學信息科學與工程學院 遼寧 沈陽 110159)
本文首先分析了單機版本Caffe的缺點和實現(xiàn)分布式的原因,再分別介紹了Caffe的基于同步式SGD、異步式SGD和改進的異步SGD三種不同的并行實現(xiàn)方式,最后通過分析了三種方式的優(yōu)缺點,得出改進的異步式SGD效果最好結論。
Caffe;同步式SGD;異步并行;改進異步式SGD
隨著對深度學習領域研究的深入,有證據(jù)表明增大模型參數(shù)規(guī)模和訓練數(shù)據(jù)集,能有效的提高模型準確率。152層殘差網(wǎng)絡(ResNet)結構[1]的提出和大數(shù)據(jù)時代超過TB的訓練數(shù)據(jù),帶來了精度上的提升,同時也帶來了巨大的訓練時間成本,僅僅使用目前的單機版本深度學習工具加GPU計算的方式,已經(jīng)不能滿足其要求的計算能力和存儲空間。當前熱門的深度學習工具,如TensorFlow、MXNet、Torch、CNTK等都在設計初期,基于參數(shù)服務器結構實現(xiàn)了自己的分布式版本,支持并行訓練。
Caffe作為一個高效、實用的老牌開源深度學習框架[2],已經(jīng)在計算機視覺,文本處理,自然語言識別等領域取得卓越成就,得到了學術界和工業(yè)界廣泛的認可。然而Caffe在設計初期聲稱的高速運算,只是簡單的采用GPU加速計算,并沒有實現(xiàn)并行訓練的方式,這顯然與當前深度學習的發(fā)展趨勢不符。
分布式深度學習框架包含模型并行和數(shù)據(jù)并行兩種,由于數(shù)據(jù)并行化在實現(xiàn)難度、容錯率和集群利用率方面都優(yōu)于模型并行化,所以現(xiàn)有的分布式深度學習框架大多采用數(shù)據(jù)并行方式,本文所討論的SGD并行算法也是基于數(shù)據(jù)并行。
前不久,雅虎開源了基于Spark平臺的Caffe并行版本CaffeOnSpark,與其他專門搭建的深度學習集群不同,支持直接在Spark集群上進行深度學習,避免了訓練數(shù)據(jù)的傳輸,同時支持yarn的管理調度,能同時進行多個訓練任務。CaffeOnSpark在參數(shù)同步時采用的是同步式SGD結構,標準的同步SGD算法,每次迭代都分為三個步驟,首先,從參數(shù)服務器(Parameter Server,PS)中把模型參數(shù)w拉取(pull)到本地,接著用新的模型參數(shù)w計算本地mini-batch的梯度Δw,最后將計算出的梯度Δw推送(push)到PS。PS需要收集所有worker的梯度,再統(tǒng)一進行平均處理更新模型參數(shù),同步式算法如圖1所示。

圖1 同步式SGD算法圖
當集群中各個機器之間性能有差異時(即計算一個mini-batch花費時間不同),將會導致所有的worker都要等待計算最慢的一個執(zhí)行完,產(chǎn)生等待時間開銷,我們稱為木桶效應問題。當忽略機器之間的性能差異,所有worker同時完成一個mini-batch計算,則會一起向參數(shù)服務器發(fā)送梯度值,而沒有搶占到資源的worker會被放入等待隊列排隊,參數(shù)服務器向worker發(fā)送更新后的參數(shù)時,同樣是依次發(fā)送,worker需要排隊等待,浪費計算時間,我們稱為通信沖突。
當前熱門的分布式深度學習框架大多采用異步隨機梯度下降算法(ASGD),參數(shù)服務器只要接收到worker的梯度值就進行更新,把更多的時間用于計算,而不是等待參數(shù)服務器的平均操作,消除了木桶效應問題,并且利用梯度的延遲更新,減少了網(wǎng)絡通信量,降低網(wǎng)絡通訊造成的時間開銷,獲得明顯加速。文獻[3]證明算法是收斂的,但是通信沖突問題仍然存在,而且還會導致梯度值過時問題,計算梯度需要消耗時間,當某個節(jié)點算完了梯度值并且將其與參數(shù)服務器的全局參數(shù)合并時,全局參數(shù)可能已經(jīng)被更新了多次,梯度值過時會降低算法的收斂速率,同時導致模型準確率下降。
在上述問題的研究基礎上,我們發(fā)現(xiàn)機器性能差異越大,即完成一個或多個mini-batch的時間差越大,通信等待時間越小。文獻[4]提出一種改進的異步式隨機梯度算法,采用隨機數(shù)據(jù)分片方式,進一步加大完成時間差,使其盡可能小,達到進一步減少訓練時間目的。針對ASGD算法的梯度值過時問題,改進的異步式算法使用了一種弱同步策略,在系統(tǒng)性能跟算法收斂速率之間進行權衡,引入?yún)?shù)s來控制模型更新,只有在接收到n個Caffe進程的s次梯度更新,模型參數(shù)才進行更新。
同步式SGD算法實現(xiàn)了Caffe的并行,ASGD算法實現(xiàn)了Caffe的異步并行,改進的異步算法通過分析ASGD算法的通信沖突,發(fā)現(xiàn)可以通過加大各個worker完成mini-batch的時間差,能緩解通信沖突,并采用一種弱同步策略,減弱梯度過時的影響。通過實驗驗證,改進的ASGD算法確實能帶來訓練速率和模型準確率的提升,但同時也帶來了一些額外的超參數(shù),如npush和npull間隔的輪數(shù),參數(shù)服務器進行更新的次數(shù)s,比起同步式SGD調參更為困難。
[1]Kaiming He,Xiangyu Zhang,Shaoqing Ren,et al. Deep Residual Learning for Image Recognition[J]. In CVPR,2016.
[2]Yangqing Jia. Caffe: A fast open framework for deep learning [EB/OL]. http://caffe.berkeleyvision.org.
[3]Zinkevich M,Langford J,Smola A. Slow learners are fast [C]. Advances in Neural Information Processing Systems 22 (NIPS 2009),2009:2331-2339.
[4]Dean J, Corrado GS, Monga R, et al. Large scale distributed de-ep networks [C]. International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1223-1231.
孟思彤(1993-),女,漢族,遼寧本溪人,碩士,研究方向網(wǎng)絡管理與系統(tǒng)監(jiān)控,深度學習;辜陽(1993-),男,漢族,湖北漢川人,碩士,研究方向圖像處理與分析技術,深度學習。