騰訊旗下的圖像技術團隊—優圖團隊,近日在國際著名深度學習開源框架Cuda-Convnet2項目上做出了重要的代碼提交,將其GPU訓練性能提升50%之多,顯示了騰訊在深度學習領域的又一重大進展及騰訊積極參與開源項目與業界共享技術研究進展的開放心態。
近年來,深度學習及相關領域已然成為最活躍的計算機研究領域之一,無論是學術界還是互聯網科技巨頭,均在此方向投入了巨大的研究資源。深度學習在計算機視覺、語音識別等領域均帶來了巨大的、非常領先的研究成果。但由于其超級龐大的網絡計算規模和海量的訓練數據,深度學習的訓練往往耗時巨大,已經成為深度學習目前研究和實踐中一個巨大瓶頸。騰訊優圖團隊在GPU kernel層面做了大量底層優化工作,極大緩解了深度學習訓練性能這個瓶頸。
優圖團隊的優化工作主要基于Alex Krizhevsky實現的CUDA-Convnet2框架。Alex Krizhevsky是深度學習領域非常有影響力的研究者之一,是著名的AlexNet模型的發明者。CUDA-Convnet2模型是一種支持多GPU并行運行的深度學習算法框架,是所有同類開源框架中性能最優秀的框架。
優圖團隊的深度學習系統在CUDA-Convnet2的基礎上,實現了更為高效的GPU利用。測試結果表明(如圖表1所示),batchSize為32或64時,優化后的內核速度提升超過50%,這也彌補了之前CUDA-Convnet2在batchSize 32或64時的不足。batchSize為128時,內核速度有10%以上的提升,在對jpeg解碼部分做優化后,整體性能提升也達到50%。
圖表 1 優圖優化前后的性能對比
之所以取得如此大的進展,是因為優圖團隊在精通GPU硬件架構和深度學習算法的基礎上,采用了更加前沿的優化策略。優圖團隊的優化理念源自于當前的GPU計算主頻已足夠高,而數據訪問速度跟不上運算速度,造成GPU的空轉。其優化點主要包含如下幾點:
1. 更大的共享內存帶寬?,F在的GPU都具有高達64~128 bit的共享內存帶寬,且共享內存具有訪問速度快等特點。為了充分利用共享內存的硬件性能,優圖團隊采用矢量化的數據類型來匹配更大的內存帶寬,使得數據的訪問速度呈倍數增加,極大提升了數據的傳輸速度;
2. 巧妙的數據拓撲結構和精心組織的訪問指令順序。由于大部分GPU都支持并發訪問的特性,為了進一步提升內存訪問速度,優圖團隊巧妙的排列數據拓撲結構和數據訪問指令順序。眾所周知,頁面沖突是內存并發訪問的最大的難題,因此,通過巧妙的排列數據結構可以最大程度減少頁面沖突,提升并發訪問的幾率。同時在充分利用指令集的并發流水線基礎上,優化數據的訪問指令順序,提升指令間并行度,也可以大幅提升數據訪問速度;
3. 高效的數據傳輸粒度。由于GPU程序分為運算和數據訪問兩個部分,當數據訪問速度跟不上GPU的運算速度時,為了最大程度利用GPU性能,應盡量避免GPU的運算部分或數據訪問部分處于長期空轉的狀態,因此必須優化數據的訪問粒度。將過大的數據訪問粒度切割成若干個小的訪問粒度,合適插入到GPU的運算周期中。
騰訊優圖團隊長期致力于各種圖像技術和深度學習方向的研究和應用。在人臉檢測和人臉識別,圖像美化和人像美容等方向上均有深厚的積累并取得了業內領先的成果。此次深度學習性能優化的重要進展和開源貢獻相信能夠為業界在深度學習的研究上提供非常有益的幫助。
特別提醒:本網內容轉載自其他媒體,目的在于傳遞更多信息,并不代表本網贊同其觀點。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,并請自行核實相關內容。本站不承擔此類作品侵權行為的直接責任及連帶責任。如若本網有任何內容侵犯您的權益,請及時聯系我們,本站將會在24小時內處理完畢。