1. 程式人生 > >SenseTime(商湯科技)HPC團隊:如何實現Caffe訓練GoogLeNet加速近14倍

SenseTime(商湯科技)HPC團隊:如何實現Caffe訓練GoogLeNet加速近14倍

高效能運算的概念很早就被大家所熟知,但是隨著近幾年深度學習的發展,高效能運算才開始得到越來越多的關注。SenseTime(商湯科技)作為一家專注於計算機視覺和深度學習原創技術的科技創新公司,為解決深度學習模型大、訓練時間長等業界普遍面對的問題,組建了一支在應用演算法上造詣深厚的HPC團隊,為深度學習訓練及應用部署提供高效引擎。本文為SenseTime HPC部門的相關實踐經驗分享。

目前,SenseTime HPC部門擁有2000片以上NVIDIA GPU,4000多x86 CPU核心,150TB以上記憶體,以及4000TB硬碟空間的硬體部署,為其基於深度學習的人臉識別、文字識別、人體識別、車輛識別、物體識別、影象處理等技術提供了一個穩定可靠的平臺,使其在金融、移動網際網路、安防監控三大行業中與商業夥伴攜手高效前行。

圖片描述

SenseTime HPC團隊,左起:孔暢,孫剛,劉文志,高洋,顏深根

CSDN:構建作為深度學習(DL)平臺的HPC,與傳統HPC有什麼不同?其技術水平具體受哪些因素制約?

SenseTime:面對的需求不同。傳統HPC需要面對大量不同的應用——比如說,超算中心的使用者有石油企業、氣象單位等。

作為當下熱門的深度學習(DL)平臺的HPC,由於應用場景的限定使HPC可以做得非常高效。

例如,SenseTime 以深度學習(DL)見長,HPC可以為其依託深度學習的技術服務的金融、移動網際網路、安防監控三大行業做更多貼合應用場景的高效改進,使其技術更高效地服務大眾。

對深度學習平臺的HPC來說,其技術水平受如下條件制約:

  1. 擁有的硬體數量和質量,巧婦難為無米之炊,要發揮HPC水平,需要足夠的高質量硬體。SenseTime HPC部門總共具有2000片以上NVIDIA GPU,4000多x86 CPU核心,150TB以上記憶體,4000TB硬碟空間。

  2. 擁有的HPC人才數量和質量。人才是將無數個想法真正落地的保障。SenseTime具有十幾位在各個領域工作過的HPC員工,近一半來自BAT HPC部門,部分在BAT時已經成為中堅力量。

  3. 擁有的深度學習人才的數量和質量。需求是動力,SenseTime的深度學習部門提出的需求促使HPC部門員工解決困難,更好的完成工作。

CSDN:能否介紹SenseTime在DL方面做了哪些工作?如何克服挑戰用HPC來支援這些工作?

SenseTime:我們在DL方面的工作可以從三個角度來看:

  • 人才戰略:成功聚集了當下華人中頂級的深度學習、計算機視覺科學家,包括一批來自於谷歌、百度、微軟、聯想等公司的產業界領軍人物。

  • 技術積累:擁有超過十年的積累,包括基於深度學習的人臉識別、文字識別、人體識別、車輛識別、物體識別和影象處理等技術,包括深度學習平臺的構建和優化。

  • 市場戰略:深耕金融、移動網際網路、安防監控三大行業,與銀聯、京東、拉卡拉、華為、小米、新浪微博、科大訊飛、東方網力、英偉達等各行業巨頭深度合作,推動行業產品智慧化升級。

深度學習模型大、訓練時間長,使用HPC技術來支援的深度學習,主要受硬體計算效能、硬體的搭配(如記憶體和晶片、主機板的配置)、軟體環境、演算法和員工水平等因素制約。

SenseTime主要通過以下方法來克服這些挑戰:

  1. 市場戰略合作:SenseTime與各行業領軍企業共贏共進的理念為我們贏得了很多深度而長期的戰略支援,比如我們與和NVIDIA的合作,為HPC提供了更優的硬體配置;

  2. 集聚精英人才: SenseTime的HPC團隊是由曾在NVIDIA、百度、阿里等工作過的優秀人才組成,這些同事在常見的HPC應用演算法上具有非常高的造詣。人才為我們的演算法研究能力提供了保障。

  3. 提升應用能力:SenseTime演化優化ARM、x86和GPU上應用的能力。我們的一些HPC常見的演算法效能已經接近甚至超過了許多開源庫,SenseTime優化的多GPU版本Caffe在8卡K80機器(總共16個GPU)在GoogLeNet上獲得了近14倍的加速。

目前,我們自主開發了基於GPU的多卡、多機訓練系統,訓練系統的效能也已經處於世界前列。在技術上,SenseTime擁有x86/GPU/ARM/FPGA全方位的優化人員。

CSDN:關於近14倍的加速,是從哪些方面進行優化的?K80是有兩個GPU的,是否單晶片效能更強的K40更適合DL?另外除了Caffe之外,SenseTime針對其他的深度學習框架進行優化的效果如何?

SenseTime:要發揮一個多GPU計算平臺的效能,需要綜合考慮兩個方面的因素:

  1. 充分優化應用,將單GPU的計算能力發揮到極致。為此我們使用了NVIDIA的CUDNN庫,將其效能優勢發揮到極致,並且給NVIDIA提供了許多建議(比如如何進一步優化卷積效能,如何提升矩陣向量乘效能,一些bug彙報等)。

  2. 對於多GPU應用來說,如何安排非同步計算以掩蓋PCI-e頻寬對多GPU應用的效能非常重要。我們通過吸引並改進現有的演算法,能夠基本完全掩蓋掉PCI-e的延遲。

對於深度學習訓練來說,我們關心的是在多長的時間內能夠訓練完所有資料出結果,而並不關心單個數據多長時間能夠訓練完,而深度學習的具體應用來說剛好相反(使用者關心他的請求多長時間返回)。具體到K80和K40上,我們認為K80更適合訓練,而K40更適合來部署應用。

SenseTime除了優化Caffe外,同時也在開發自己的深度學習訓練和部署系統,目前來說,無論是訓練還是部署應用,我們的優化效果、水平都在中國甚至世界的前列。我們開發的矩陣乘法(卷積神經網路的核心計算)在x86上的效能接近Intel的MKL庫;在ARM v7上開發的矩陣乘法效能是OpenBLAS的2倍(已經在HPC2015的展臺上公佈,得到許多研究人員的好評)。

CSDN:當前不同的硬體,GPU、FPGA、IBM SyNAPSE以及中科院寒武紀,哪種硬體更加符合DL未來的需求?另外能否把DL計算並行在造價低廉的記憶體計算平臺上(如Spark叢集),在不減少輸入引數和神經網路規模的前提下完成任務?

SenseTime:未來的硬體必須和演算法結合起來才有出路,即硬體的設計必須要考慮到其應用場景,通用的硬體設計是沒有辦法完全解決細分領域的計算需求。

深度學習需要兩種不同型別的硬體,一種用於訓練,一種用於部署應用。對於訓練來說,未來依舊會是GPU佔主導,而對於部署來說,未來可能FPGA或寒武紀之類能夠獲得更多的應用。

把深度學習平行計算在Spark叢集上有其意義,但是對於深度學習公司來說並無必要。想象一下:您有200臺機器的spark叢集,而我只用50臺機器的GPU叢集就可以做到同樣的計算能力,這種情況下,您還會繼續堅持要用Spark嗎?

CSDN:SenseTime對HPC團隊成員的選擇有什麼要求?這幾年CV領域創業非常熱,由DL大牛弟子組成的優秀團隊也很多,SenseTime如何吸引優秀的團隊成員加入並留下?

SenseTime:我們在不斷地招納人才,SenseTime對HPC團隊成員的選擇非常嚴格,除了對專業素養和個人經驗的要求外,還要考慮HPC領域需要的一些特殊氣質,如冷靜、邏輯分析能力非常強、對未知事物保持興趣等。

團隊成員選擇SenseTime的原因大體概括為如下四點:

  1. SenseTime提供很好的個人發展平臺,作為創業公司,我們有許多事情要做,並能自主地安排工作時間;

  2. SenseTime擁有許多領域的精英,和精英一起工作可以更好的提升自己;

  3. SenseTime有許多技術需求、應用空間、商業客戶,我們的價值能夠得到實實在在的呈現;

  4. SenseTime注重員工的人文關懷,提供一份不辜負才華的薪水。

SenseTime HPC團隊介紹:

劉文志:畢業於中國科學院研究生院,現為SenseTime異構平行計算部門主管、總監。曾於2011年至2014年間於英偉達擔任平行計算工程師。後就職百度深度學習研究院高階研發工程師,負責異構計算組日常工作。工作期間參與兩項美國專利申請。已出版《並行演算法設計與效能優化》、《並行程式設計方法與優化實踐》、《科學計算與企業經應用的並行優化》、《OpenCL異構平行計算》等四本個人著作。

顏深根: 博士畢業於中國科學院大學,現為SenseTime主任研究員,香港中文大學博士後。曾於2013年6月至2014年2月在美國北卡州立大學做訪問研究,為2015年國際並行處理大會程式委員會委員,2015年網路與平行計算國際會議程式委員會委員。曾就職於百度深度學習研究院,任資深研發工程師。博士期間在平行計算領域發表論文多篇,曾連續兩年以第一作者身份在並行處理頂級國際會議PPoPP發表論文(大陸唯一)。碩士期間曾創辦自己的公司並盈利幾十萬元,為著名開源計算機視覺庫(OpenCV)OpenCL分支的主要貢獻者之一,《OpenCL異構計算》一書譯者之一。

孔暢: 深圳大學碩士畢業,SenseTime異構平行計算部門經理。師從陳國良院士,碩士期間在國家高效能中心(深圳分中心)研究平行計算和計算機體系結構方向,國家研究生獎學金獲得者。參加國家重大科技專案“基於龍芯3B八核處理器的高效能運算機KD-90”,翻譯出版了圖書《Intel Parallel Studio環境下的並行程式設計》,並發表了多篇學術論文。畢業後曾就職於百度IDL異構計算組,主要研究方向是基於GPU的並行分散式優化技術和深度學習相關演算法。

高洋: 畢業於中國科學院研究生院,現為SenseTime異構平行計算部門高階經理。曾在阿里核心系統部專用計算組擔任研發工程師,後於百度深度學習研究員擔任高階研發工程師。

孫剛: 中國科學院大學博士,現為SenseTime視覺計算高階研究員。先後在微軟亞洲研究院視覺計算組進行研究、百度深度學習研究院異構計算組進行研究實習。博士期間在計算機視覺領域發表多篇論文,在多個公共資料集上取得最好的影象分類結果。