深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

jopen 9年前發布 | 99K 次閱讀 神經網絡

本文聚焦于騰訊深度學習平臺(Tencent Deep Learning Platform)中深度卷積神經網絡Deep CNNs的多GPU模型并行和數據并行框架。

將深度卷積神經網絡(Convolutional Neural Networks, 簡稱CNNs)用于圖像識別在研究領域吸引著越來越多目光。由于卷積神經網絡結構非常適合模型并行的訓練,因此以模型并行+數據并行的方式來加速Deep CNNs訓練,可預期取得較大收獲。Deep CNNs的單機多GPU模型并行和數據并行框架是騰訊深度學習平臺的一部分,騰訊深度學習平臺技術團隊實現了模型并行和數據并行技術加速Deep CNNs訓練,證實模型拆分對減少單GPU上顯存占用有效,并且在加速比指標上得到顯著收益,同時可以以較快速度訓練更大的深度卷積神經網絡,提升模型準 確率。

1. CNNs模型并行導論

1.1. 典型應用分析:圖像識別

圖像識別是深度卷積神經網絡獲得成功的一個典型應用范例。

圖1揭示了一個具有5個卷積層和3個全連接層的深度卷積神經網絡,該模型可應用于圖像分類。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖1 ImageNet深度卷積神經網絡模型

使用GPU訓練深度卷積神經網絡可取得良好的效果[1][2],自2012年使用Deep CNNs模型在ImageNet圖像分類挑戰中取得突破性成績,2013年的最佳分類結果也是由Deep CNNs模型取得。基于此,騰訊深度學習平臺技術團隊期望引入Deep CNNs來解決或優化圖像分類問題和圖像特征提取問題,以提升在相應用例場景中的效果。

1.2. 現有系統的問題

在將CNN應用于圖像相關領域的算法研究以及CNN訓練平臺搭建的實踐過程中,受限于單個GPU上的顯存大小(例如:服務器采購的顯卡Tesla K20c可用顯存為4.8GB,ImageNet 2012論文[1]中用到的網絡占用顯存大約3.9GB),在嘗試調整參數和網絡規模的實驗中,往往難以存儲下更大規模的深度卷積神經網絡模型,使得包含 較多參數的網絡不能在單GPU上訓練,需要通過多GPU模型并行技術,拆分模型到多個GPU上存儲和訓練來解決。

隨著訓練數據集擴充、模型復雜度增加,即使采用GPU加速,在實驗過程中也存在著嚴重的性能不足,往往需要十余天時間才能達到模型的收斂,不能滿足對于訓練大規模網絡、開展更多試驗的需求。

考慮到上述問題,在騰訊深度學習平臺的Deep CNNs多GPU并行訓練框架中,通過設計模型拆分方法、模型并行執行引擎和優化訪存性能的Transfer Layer,并吸收在數據并行方面設計經驗,實現了多GPU加速的模型并行和數據并行版本。

本文描述多GPU加速深度卷積神經網絡訓練系統的模型并行和數據并行實現方法及其性能優化,依托多GPU的強大協同并行計算能力,結合目標Deep CNNs模型在訓練中的并行特點,實現快速高效的深度卷積神經網絡訓練。

1.3. 框架設計目標

多GPU模型并行+數據并行期望達到下述目標:充分利用Deep CNNs模型的可并行特點,結合SGD(Stochastic Gradient Descent,隨機梯度下降)訓練的數據并行特性,加速模型訓練過程;突破顯存大小限制,使得訓練超過單GPU顯存的模型成為可能,并預期通過訓練更復 雜的網絡來獲得更好的模型效果。

上述目標完成后,系統可以更快地訓練圖1中目標Deep CNNs模型。模型拆分到不同GPU上可減少對單GPU顯存占用,適用于訓練更深層次、更多參數的卷積神經網絡。

1.4. 挑戰

在圖像識別應用中,深度卷積神經網絡模型的卷積層計算量大,全連接層參數多。因此,如何劃分計算資源,通過模型并行和數據并行兩個數據/計算組織層次上來加速訓練是框架設計首要解決的問題。

圖像作為輸入數據,其數據量龐大,且需要預處理過程,因此在Batch訓練時磁盤I/O、數據預處理工作也要消耗一定時間。經典的用計算時間掩蓋I /O時間的方法是引入流水線,因此如何設計一套有效的流水線方法來掩蓋I/O時間和CPU處理時間,以使得整體耗時只取決于實際GPU訓練時間,是一個重 要問題。

模型并行是將一個完整Deep CNNs網絡的計算拆分到多個GPU上來執行而采取的并行手段,結合并行資源對模型各并行部分進行合理調度以達到模型并行加速效果是實現模型并行的關鍵步驟。

多GPU系統通過UVA(Unified Virtual Address,統一虛擬地址)技術,允許一顆GPU在kernel計算時訪問其他GPU的設備內存(即顯存),但由于遠程設備存儲訪問速度遠遠低于本地 存儲訪問速度,實際性能不佳。因此在跨GPU的鄰接層數據訪問時,需要關注如何高效利用設備間數據拷貝,使所有計算數據本地化。

2. 系統概述

如何模型并行?

模型并行是:適當拆分模型到不同的計算單元上利用任務可并行性達到整個模型在計算過程中并行化效果。

如圖2所示,揭示了從單GPU訓練到多GPU模型并行訓練的相異之處,主要在于:在使用單GPU訓練的場景下,模型不進行拆分,GPU顯存上存儲整 個模型;模型并行的場景下,將模型拆分到多個GPU上存儲,因此在訓練過程中每個GPU上實際只負責訓練模型的一部分,通過執行引擎的調度在一個 WorkerGroup內完成對整個模型的訓練。

圖2從單GPU訓練到多GPU模型并行訓練的概要視圖

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

多GPU并行系統從功能上劃分為用于讀取和分發數據的Training Data Dispatcher和用于做模型并行訓練的GPU Worker,如圖3所示。訓練數據從磁盤文件讀取到CPU主存再拷貝到GPU顯存,故此設計在各Worker計算每batch數據時,由 Training Data Dispatcher從文件中讀取并分發下一batch數據,以達到用計算時間掩蓋I/O時間的設計目標。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖3 2 GPU模型并行系統框架示意

3. 訓練數據處理的并行加速

基于mini-batch的訓練,現有技術方案在訓練深度卷積神經網絡時,每次從數據文件中讀入和處理1個batch數據,在GPU計算某一batch時由CPU預讀取和預處理下一batch。

但是隨著訓練集圖片像素數增大,讀取和處理時間隨之增加,由于采用多GPU技術加速了單個batch計算時間,數據處理的性能問題隨之而來,需要減少數據處理的用時,以使最終加速效果取決于計算用時。

如圖4所示,總體看來,在深度卷積神經網絡訓練過程中始終是在執行一條三階段并行的流水線:計算本次batch數據——處理下次batch數據——讀入再下次batch數據。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖4數據處理和計算流水線

4. GPU Worker: 模型并行的承載體

數據并行以劃分Worker Group為基本組織形式,模型并行以在Worker Group內劃分Worker為基本組織形式,并行訓練的調度資源來源于CPU線程,計算資源來源于GPU卡。由于GPU卡通常意義上被看成是一種加速卡 或協處理器卡,必須在基于CPU的主機上下文中被調用來做計算,因此遵循1個CPU線程綁定1張GPU卡能夠發揮多GPU共同參與計算時的并行性效能。

表1 4 GPU模型并行+數據并行CPU線程、GPU與Worker Group、Worker綁定關系


Worker Group 0 Worker Group 1 Worker Group 2 Worker Group 3
Worker 0 CPU線程 0 CPU線程 2 CPU線程 4 CPU線程 6
GPU 0 GPU 2 GPU 4 GPU 6
Worker 1 CPU線程 1 CPU線程 3 CPU 線程 5 CPU線程 7
GPU 1 GPU 3 GPU 5 GPU 7

在實際生產環境中,安裝多GPU服務器的硬件體系結構如圖5所示,示例中揭示了一個8 GPU節點服務器的硬件配置,每兩個GPU Slot連接在一個GPU專用PCI槽位上再通過PCIe Switch將GPU Slot 0,1,2,3連接在一顆CPU上,GPU Slot 4,5,6,7連接在另一顆CPU上,兩顆CPU通過IOH(Input Output Hub)連接。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖5硬件體系結構

5. CNNs網絡的模型劃分

5.1. 基本模型劃分方法

模型并行的來源是Deep CNNs網絡只在特定層(如輸入層、全連接層)與其他層有全面的連接,而其他較為獨立的直線連接關系即可作為模型的可并行部分。將模型的可并行部分拆分到 多個GPU上,同時利用多個GPU的計算能力各執行子模型的計算,可以大大加快模型的單次前向-后向訓練時間。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖6模型并行中的模型劃分方案示意

Deep CNNs網絡的層次模型實際上是一張有向無環圖(DAG圖),分配到每個模型并行Worker上的層集合,是有向無環圖的拓撲排序子集,所有子集組成整個網絡的1組模型。

5.2. “十字形”模型劃分方法

考慮極端情景:需要訓練超大規模Deep CNNs模型,或者使用計算能力相對較強、顯存較小(一般在1GB~3GB)的桌面級GeForce系列GPU,則利用模型本身的并行性這種基本的模型劃 分方法將不再適用。需要將模型再做拆分以保證單個GPU都能存儲下對應的子模型。

如圖7所示,描述了將模型按“十字形”劃分到4 Worker上訓練的情景,不僅拆分了模型的可并行部分,也雖然這樣的劃分在Worker 0和Worker2之間,Worker 1和Worker 3之間達到并行加速效果,卻能使得整個模型得以存儲在4 GPU上。這種模型劃分方法能夠適用于訓練超大規模網絡等特殊模型的需求。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖7 “十字形”模型劃分方案示意

6. CNNs網絡的模型并行工作引擎

每個模型并行Worker上以一個模型并行執行引擎負責調度本Worker上子模型的執行過程。執行引擎控制所有Worker上的子模型完成前向和后向計算,各自對子模型完成參數更新后,到達主線程同步點,開始下一mini-batch訓練。

多GPU模型并行和數據并行的Deep CNNs模型replicas及劃分結構如圖8所示,在使用4 GPU的場景下,劃分了2組Worker Group用于數據并行;每個Worker Group內劃分2個Worker用于模型并行。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖8對ImageNet網絡的模型并行和數據并行劃分

7. 在圖像識別上的應用

7.1. 模型訓練實驗性能

實驗環境為一臺搭載8核心Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz的服務器,內存為48GB,服務器安裝了4塊NVIDIA Tesla K20c GPU,單GPU顯存大小為4.8GB。

訓練同樣的Deep CNNs模型,相比于單GPU,使用多GPU結合不同并行模式的加速效果如下表所示:

表2不同并行配置的加速比

配置 對單GPU的加速比

配置 對單GPU的加速比
2 GPUs 模型并行 1.71
2 GPUs 數據并行 1.85
4 GPUs 模型并行+數據并行 2.52
4 GPUs 數據并行 2.67

7.2. 模型收斂性

對于目標Deep CNNs模型,在單GPU訓練時(對照實驗)顯存占用量為3.99GB;使用2 GPU模型并行訓練時單個GPU上顯存占用量為2.15GB,并且在訓練相同迭代時訓練集、測試集錯誤率效果都與對照實驗完全相同;抽樣比照參數一致性, 被抽樣的參數(同對照實驗相比)也都是一樣。

嘗試更改Deep CNNs模型,訓練一個更大的網絡,增加濾波器數目,減小步長,增加中間卷積層feature map數目,訓練時所需顯存將達到9GB以上,使用單個Tesla K20c GPU(4.8GB顯存)無法開展訓練實驗;而多GPU模型并行訓練實驗中該模型的錯誤率對比圖1模型降低2%。

7.3. 效果展示

圖9為圖像標簽識別的示例,通過對兩千多類物體的圖像進行訓練,可實現對常見物體的自動識別。

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

深度卷積神經網絡CNNs的多GPU并行框架 及其在圖像識別的應用

圖9應用效果展示

8. 結論與展望

本文描述了深度卷積神經網絡Deep CNNs的多GPU模型并行和數據并行框架,通過多個Worker Group實現了數據并行,同一Worker Group內多個Worker實現模型并行。框架中實現了三階段并行流水線掩蓋I/O、CPU處理時間;設計并實現了模型并行引擎,提升了模型并行計算執 行效率;通過Transfer Layer解決了數據存儲訪問效率問題。此框架顯著提升了深度卷積神經網絡訓練速度,解決了當前硬件條件下訓練大模型的難題。

深度卷積神經網絡有著廣泛的應用場景:在圖像應用方面,Deep CNNs可應用于相似圖片檢索、圖片的自動標注和人臉識別等。在廣告圖片特征提取方面,考慮Deep CNNs能夠很好地學習到圖像特征,我們嘗試將其用于廣告點擊率預估(Click-Through Rate Prediction, pCTR)模型中。

參考文獻

[1] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E. Hinton. (2012) ImageNet Classification with Deep Convolutional Neural Networks. In Advances in Neural Information Processing 25 (NIPS 2012), MIT Press, Cambridge, MA.

[2] Ossama Abdel-Hamid, Abdel-rahman Mohamed, Hui Jiang, Gerald Penn. (2012) Applying Convolutional Neural Networks Concepts to Hybrid NN-HMM Model for Speech Recognition. ICASSP’12, 2012.

[3] Jeffrey Dean, Greg S. Corrado, Rajat Monga, et al, and Andrew Y. Ng. (2012) Large Scale Distributed Deep Networks. In Advances in Neural Information Processing 25 (NIPS 2012), MIT Press, Cambridge, MA.

[4] Omry Yadan, Keith Adams, Yaniv Taigman, Marc’Aurelio Ranzato. (2014) Multi-GPU Training of ConvNets. arXiv: 1312.5853v4 [cs.LG], Feb. 18th, 2014.


文章出處:騰訊大數據

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!