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

2020-12-05 CSDN技術社區

將深度卷積神經網絡(Convolutional Neural Networks, 簡稱CNNs)用於圖像識別在研究領域吸引著越來越多目光。由於卷積神經網絡結構非常適合模型並行的訓練,因此以模型並行+數據並行的方式來加速Deep CNNs訓練,可預期取得較大收穫。

Deep CNNs的單機多GPU模型並行和數據並行框架是騰訊深度學習平臺的一部分,騰訊深度學習平臺技術團隊實現了模型並行和數據並行技術加速Deep CNNs訓練,證實模型拆分對減少單GPU上顯存佔用有效,並且在加速比指標上得到顯著收益,同時可以以較快速度訓練更大的深度卷積神經網絡,提升模型準確率。

1.CNNs模型並行導論

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

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

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

使用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內完成對整個模型的訓練。

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

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

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

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

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

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

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

在實際生產環境中,安裝多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)連接。

5.CNNs網絡的模型劃分

5.1.基本模型劃分方法

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

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

5.2「十字形」模型劃分方法

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

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

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

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

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

7.在圖像識別上的應用

7.1.模型訓練實驗性能

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

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

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為圖像標籤識別的示例,通過對兩千多類物體的圖像進行訓練,可實現對常見物體的自動識別。

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, andGeoffrey E. Hinton. (2012) ImageNet Classification with Deep ConvolutionalNeural Networks. In Advances in NeuralInformation Processing 25 (NIPS 2012), MIT Press, Cambridge, MA.

[2]OssamaAbdel-Hamid, Abdel-rahman Mohamed, Hui Jiang, Gerald Penn. (2012) ApplyingConvolutional Neural Networks Concepts to Hybrid NN-HMM Model for SpeechRecognition. ICASSP』12, 2012.

[3]JeffreyDean, Greg S. Corrado, Rajat Monga, et al, and Andrew Y. Ng. (2012) Large ScaleDistributed Deep Networks. In Advances inNeural Information Processing 25 (NIPS 2012), MIT Press, Cambridge, MA.

[4]OmryYadan, Keith Adams, Yaniv Taigman, Marc』Aurelio Ranzato. (2014) Multi-GPUTraining of ConvNets. arXiv: 1312.5853v4[cs.LG], Feb. 18th, 2014.

相關焦點

  • 深度卷積神經網絡CNNs的多GPU並行框架及其應用
    7.3.效果展示圖9為圖像標籤識別的示例,通過對兩千多類物體的圖像進行訓練,可實現對常見物體的自動識別。 8.結論與展望本文描述了深度卷積神經網絡Deep CNNs的多GPU模型並行和數據並行框架,通過多個Worker Group實現了數據並行
  • 新技術:球面卷積神經網絡CNNs識別三維空間物體
    深度學習中的技術進展幫助機器能像人類一樣「看」世界,這是人工智慧研究中最具吸引力的部分之一。目前,一種突破性技術將讓機器能夠通過被稱為球面卷積神經網絡(spherical Convolutional Neural Networks,縮寫CNNs)的處理,去看到並識別三維空間中的物體。
  • 四大深度學習框架+四類GPU+七種神經網絡:交叉性能評測
    選自add-for作者:Pedro Gusmo機器之心編譯參與:李澤南、黃小天最近,Pedro Gusmo 等人對於英偉達的四種 GPU 在四種不同深度學習框架下的性能進行了評測。本次評測共使用了 7 種用於圖像識別的深度學習模型。第一個評測對比不同 GPU 在不同神經網絡和深度學習框架下的表現。
  • 深度學習之卷積神經網絡經典模型
    LeNet-5模型在CNN的應用中,文字識別系統所用的LeNet-5模型是非常經典的模型。LeNet-5模型是1998年,Yann LeCun教授提出的,它是第一個成功大規模應用在手寫數字識別問題的卷積神經網絡,在MNIST數據集中的正確率可以高達99.2%。
  • 環信人工智慧專家李理:詳解卷積神經網絡
    深度學習受到大家的關注很大一個原因就是Alex等人實現的AlexNet(一種深度卷積神經網絡)在LSVRC-2010 ImageNet這個比賽中取得了非常好的成績。此後,卷積神經網絡及其變種被廣泛應用於各種圖像相關任務。 這裡主要參考了Neural Networks and Deep Learning和cs231n的課程來介紹CNN,兩部分都會有理論和代碼。
  • 人工智慧之卷積神經網絡(CNN)
    現在,CNN已經成為眾多科學領域的研究熱點之一,特別是在模式分類領域,由於該網絡避免了對圖像的複雜前期預處理,可以直接輸入原始圖像,因而得到了更為廣泛的應用。Neural Network)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,可以應用於語音識別、圖像處理和圖像識別等領域。
  • 深度學習技術和卷積神經網絡(CNN)讓機器視覺識別更智能
    隨著人工智慧技術的進步,深度學習技術(DL)和卷積神經網絡技術(CNN)領域的人工智慧(AI)被引入到機器視覺圖像處理系統的應用中來,從而幫助機器學習和機器檢測缺陷更加高效,使機器視覺識別的過程更加精確。也讓使用這些技術的企業可以從智能化中獲得更高的生產經營效益。
  • 深度學習與圖像識別 圖像檢測
    CNN等為什麼對圖像領域更加有效,因為其不但關注了全局特徵,更是利用了圖像識別領域非常重要的局部特徵,應該是將局部特徵抽取的算法融入到了神經網絡中。圖像本身的局部數據存在關聯性,而這種局部關聯性的特徵是其他算法無法提取的。深度學習很重要的是對全局和局部特徵的綜合把握(2)深度學習不是一個黑箱系統。
  • 深度卷積神經網絡應用於量子計算機
    另一方面,機器學習,尤其是神經網絡,正在粗略地使用向量和矩陣來理解或處理數據。量子機器學習(QML)旨在使用量子系統對向量進行編碼,並使用新的量子算法對其進行學習。一個關鍵的概念是在許多矢量上使用量子疊加,我們可以同時處理它們。
  • PyTorch可視化理解卷積神經網絡
    如今,機器已經能夠在理解、識別圖像中的特徵和對象等領域實現99%級別的準確率。生活中,我們每天都會運用到這一點,比如,智慧型手機拍照的時候能夠識別臉部、在類似於谷歌搜圖中搜索特定照片、從條形碼掃描文本或掃描書籍等。造就機器能夠獲得在這些視覺方面取得優異性能可能是源於一種特定類型的神經網絡——卷積神經網絡(CNN)。
  • 機器視角:長文揭秘圖像處理和卷積神經網絡架構
    引言先坦白地說,有一段時間我無法真正理解深度學習。我查看相關研究論文和文章,感覺深度學習異常複雜。我嘗試去理解神經網絡及其變體,但依然感到困難。接著有一天,我決定一步一步,從基礎開始。我把技術操作的步驟分解開來,並手動執行這些步驟(和計算),直到我理解它們如何工作。這相當費時,且令人緊張,但是結果非凡。
  • 深度卷積神經網絡演化歷史及結構改進脈絡-40頁長文全面解讀
    早期成果 卷積神經網絡是各種深度神經網絡中應用最廣泛的一種,在機器視覺的很多問題上都取得了當前最好的效果,另外它在自然語言處理,計算機圖形學等領域也有成功的應用。 AlexNet網絡 現代意義上的深度卷積神經網絡起源於AlexNet網絡[9],它是深度卷積神經網絡的鼻祖。這個網絡相比之前的卷積網絡最顯著的特點是層次加深,參數規模變大。
  • 盤點:GPU加速的神經網絡與JavaScript的交叉
    本概述中不包括那些旨在運行現有模型的庫(特別是那些使用Python框架訓練的模型)。最後,四個項目榜上有名。雖然它的特性集面向神經網絡,但deeplearn.js可以被描述為通用機器學習框架。Propel是一個提供自動微分的科學計算的庫。
  • 通過對比深度學習各大框架的優缺點尋找最優
    開源的深度學習神經網絡正步入成熟,而現在有許多框架具備為個性化方案提供先進的機器學習和人工智慧的能力。那麼如何決定哪個開源框架最適合你呢?本文試圖通過對比深度學習各大框架的優缺點,從而為各位讀者提供一個參考。你最看好哪個深度學習框架呢?
  • 圖像識別中的深度學習【香港中文大學王曉剛】
    深度學習是近十年來人工智慧領域取得的重要突破。它在語音識別、自然語言處理、計算機視覺、圖像與視頻分析、多媒體等諸多領域的應用取得了巨大成功。現有的深度學習模型屬於神經網絡。神經網絡的起源可追溯到20世紀40年代,曾經在八九十年代流行。神經網絡試圖通過模擬大腦認知的機理解決各種機器學習問題。
  • AI入門:卷積神經網絡
    講到AI不得不講深度學習,而講到深度學習,又不能不講卷積神經網絡。如果把深度學習比作中國的網際網路界,那捲積神經網絡和循環神經網絡就是騰訊和阿里級別的地位。今天我們主要討論的卷積神經網絡,到底卷積神經網絡能解決什麼問題,它的結構是怎樣的?是怎麼學習的?應用在哪些具體的產品上?本文將為大家一一解答。
  • 深度學習不是萬靈藥!神經網絡3D建模其實只是圖像識別?
    但近期一項研究表明,幾乎所有基於深度神經網絡的3D中重建工作,實際上並不是重建,而是圖像分類。深度學習並不是萬能的!深度學習並不是萬靈藥。近幾年,隨著深度學習的大熱,許多研究攻克了如何從單張圖片生成3D模型。從某些方面似乎再次驗證了深度學習的神奇——doing almost the impossible。
  • 應用豐富的「卷積神經網絡」技術,怎樣實現了圖像識別?
    圖像識別的其他應用還包括——照片和視頻網站、互動營銷、創意活動、社交網絡上的面部及圖像識別,以及龐大數據集下的網絡圖像分類等。圖像識別是一項相當困難的任務圖像識別並不是一件容易的事,實現它的一種好辦法是將元數據應用於非結構化的數據。
  • 從基本組件到結構創新,67頁論文解讀深度卷積神經網絡架構
    5.4 圖像分類5.5 語音識別6、CNN面臨的挑戰7、未來方向8、結論摘要深度卷積神經網絡(CNN因此,本綜述著重於最近報導的深度CNN架構中存在的內在分類法,將CNN架構中的最新創新分為七個不同類別。這七個類別分別基於空間利用、深度、多路徑、寬度、特徵圖利用、通道提升和注意力。此外,本文還涵蓋了對 CNN 組成部分的基本理解,並揭示了 CNN 目前面臨的挑戰及其應用。
  • 一種基於深度卷積神經網絡(DCNN)用于于頭髮和面部皮膚實時分割方法
    為了解決這個問題,作者提出了一種基於深度卷積神經網絡(DCNN)的高效分割方法,用於頭髮和面部皮膚分割任務,該方法在三個基準數據集上實現了速度和性能之間的顯著權衡。據我們所知,由於外界環境因素(例如照明和背景噪聲)的影響,膚色分類的準確性通常不令人滿意。因此,使用分割後的人臉來獲得特定的人臉區域,並進一步利用色矩算法提取其色彩特徵。