利用高性能計算加速深度學習算法

1.       深度學習

        深度學習是機器學習研究中的一個新的領域,其動機在於建立、模擬人腦進行分析學習的神經網絡,它模仿人腦的機制來解釋數據,例如圖像,聲音和文本。深度學習典型應用爲圖像識別和語音識別。(由於本人不是深度學習專業人士,對深度學習理論知識不多介紹,說多了就班門弄斧了,後面主要介紹下這些深度學習算法如何進行並行化設計和優化)

2.       CPU+GPU異構協同計算簡介

         近年來,計算機圖形處理器(GPU,GraphicsProcess Unit)正在以大大超過摩爾定律的速度高速發展(大約每隔半年 GPU 的性能增加一倍),遠遠超過了CPU 的發展速度。

         CPU+GPU異構協同計算模式(圖1),利用CPU進行復雜邏輯和事務處理等串行計算,利用 GPU 完成大規模並行計算,即可以各盡其能,充分發揮計算系統的處理能力。

圖1 CPU+GPU異構體系結構

        目前,主流的GPU具有強大的計算能力和內存帶寬,如圖2所示,無論性能還是內存帶寬,均遠大於同代的CPU。對於GPU, Gflop/$和Gflops/w均高於CPU。

圖2 GPU計算能力

3.       深度學習中的CPU+GPU集羣架構

        CPU+GPU集羣工作模式(圖3),每個節點內採用CPU+GPU異構模式,並且每個節點可以配置多塊GPU卡。節點間採用高速InfiniBand網絡互連,速度可以達到雙向56Gb/s,實測雙向5GB/s。後端採用並行文件系統。採用數據劃分、任務劃分的方式對應用進行並行化,適用於大規模數據並行計算。

圖3 CPU+GPU集羣架構

4.       利用GPU加速深度學習算法


4.1.       單GPU並行

圖4 單GPU計算流程

        針對每次訓練數據,模型內計算通過多次GPU 內核的調用完成計算。權重W值一直存在GPU內存中,直到所有訓練數據計算完畢之後回傳到系統內存中。Data爲圖像或語音數據。

4.2.       多GPU卡並行

       多GPU並行計算時,各GPU有自己獨立的內存,卡之間的並行屬於分佈式計算模式。針對深度學習算法,採用多GPU卡計算可以採用兩種並行方法:數據並行和模型並行。

4.2.1.       數據並行

       數據並行是指不同的GPU計算不同的訓練數據,即把訓練數據劃分給不同的GPU進行分別計算,由於訓練是逐步訓練的,後一個訓練數據的計算需要前一個訓練數據更新的W,數據並行改變了這個計算順序,多GPU計算需要進行W的互相通信,滿足訓練的特點,使訓練可以收斂。

       數據並行如圖5所示,多GPU訓練不同的數據,每訓練一次需要同步W,使得後面的訓練始終爲最新的W。

圖5 數據並行

數據並行的特點:

1)        優點

            a)        實現比較容易,也比較容易擴展

            b)        只需要進行W的通信,模型內的數據不需要通信

2)        缺點

           a)        當模型較大時,GPU內存無法滿足存儲要求,無法完成計算

        根據多GPU卡之間的W通信,下面介紹兩種通信方法:主從模式和令牌環模式。

1)        主從模式

       主從模式:選擇一個進程或線程作爲主進程或線程,各個GPU把每次訓練得到的ΔW發給主進程或線程,主進程或線程進行W更新,然後再發送給GPU,GPU再進行下一個數據的訓練。如圖6所示。

圖6 主從模式

2)        令牌環模式

       令牌環模式:每個GPU把自己訓練得到的ΔW更新到W上,並且發送到下一個GPU,保證令牌環上的W始終爲最新的W。如圖7所示。

圖7 令牌環模式

兩種模式對比如表1

表1 主從模式和令牌環模式對比

模式

優點

缺點

主從模式

收斂速度更快

GPU計算需要等待,影響GPU計算;主進程或線程壓力較大

令牌環模式

GPU計算不需要等待通信,性能更好

通信速度影響收斂的速度

4.2.2.       模型並行

        模型並行是指多個GPU同時計算同一個訓練數據,多個GPU對模型內的數據進行劃分,如圖8所示。Kernel計算和通信流程如圖9所示,在一次訓練數據多層計算過程中,每個GPU內核計算之後需要互相交換數據才能進行下一次的計算。

圖8 模型並行

圖9 模型並行:多GPU計算內核和通信示意圖

模型並行特點:

1)        優點

           a)        可以處理大模型的情況

2)        缺點

           a)        需要更頻繁的通信,增加通信壓力

           b)        實現難度較大

4.3.       GPU集羣並行

          GPU集羣並行模式即爲多GPU並行中各種並行模式的擴展,如表2所示。節點間採用InfiniBand通信,節點間的GPU通過RMDA通信,節點內多GPU之間採用P2P通信。

表2 GPU集羣並行模式

模式

節點間

節點內

特點

模式1

令牌環

單一模式的缺點放大

模式2

主從

模式3

模型並行

模式4

令牌環

主從

結合各種模式的有點,避免某一模式的缺點放大

模式5

主從

令牌環

模式6

令牌環

模型並行

模式7

主從

模型並行

4.4.       性能分享

4.4.1.       基於GPU集羣的Caffe並行加速

圖10 Caffe性能

8節點GPU服務器,2 K20mGPU/節點,56Gb/s InfiniBand網絡,Lustre並行文件系統

4.4.2.       基於GPU集羣的DNN並行加速

圖11 DNN測試性能

4節點GPU服務器,4 K20mGPU/節點,56Gb/s InfiniBand網絡

5.       CPU+FPGA協同計算加速線上計算

        相對於訓練計算,線上識別的計算是小而衆多的任務計算,每次請求的計算比較小,但請求的任務數十分龐大,GPU計算雖然獲得很好的性能,但功耗仍然是個嚴峻的問題。

        目前主流的FPGA卡功耗只有主流GPU的十分之一,性能相差2-3倍,FPGA相對於GPU具有更高的GFlops/W。

利用FPGA解決線上識別計算可以採用分佈式+FPGA計算的模式,如圖12所示,上層可以採用Hadoop或Spark調度,底層利用FPGA進行計算。

圖12 分佈式計算+FPGA計算

        目前,FPGA已開始支持高級語言,如AlteraFPGA支持OpenCL,Xilinx FPGA支持HLS,這對程序員利用FPGA開發減低了難度。這些新平臺的支持還有很多問題,也許後面會支持的越來越好。

 

備註:由於對深度學習算法瞭解比較膚淺,以上內容難免無誤,請大家理解並提出修改意見。

 QQ:331526010

Email:[email protected]

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章