萊斯大學(xué)&英特爾新算法證明CPU加速深度學(xué)習(xí)優(yōu)于GPU!老黃核彈警告
魚羊 發(fā)自 凹非寺
量子位 報道 | 公眾號 QbitAI
實(shí)驗(yàn)室一塊GPU都沒有怎么做深度學(xué)習(xí)?
如果讓萊斯大學(xué)和英特爾的研究人員來回答,答案大概是:用CPU啊。
萊斯大學(xué)和英特爾的最新研究證明,無需專門的加速硬件(如GPU),也可以加速深度學(xué)習(xí)。
算法名為SLIDE。
研究人員稱,SLIDE是第一個基于CPU的深度學(xué)習(xí)智能算法,并且,在具有大型全連接架構(gòu)的行業(yè)級推薦數(shù)據(jù)集上,SLIDE訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的速度甚至超過了GPU。
代碼已開源。
基于局部敏感哈希
擺脫GPU的核心思想,是利用局部敏感哈希來擺脫矩陣乘法。
代碼采用C++編寫。
論文一作Beidi Chen介紹:
基于TensorFlow和PyTorch來實(shí)現(xiàn)SLIDE算法是沒有意義的,因?yàn)槟潜仨毎褑栴}轉(zhuǎn)換成矩陣乘法問題,而這一點(diǎn)恰恰是我們想要擺脫的。
在架構(gòu)上,SLIDE的中心模塊是神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)的每個層模塊由神經(jīng)元和一些哈希表組成,神經(jīng)元ID被哈希到其中。
每個神經(jīng)元模塊都包含:
- 一個二進(jìn)制數(shù)組,提示該神經(jīng)元是否對于batch中的每一個輸入都有效
- batch中的每一個輸入的activation
- batch中每個輸入的累積梯度
- 與上一層的連接權(quán)重
最后一個數(shù)組的長度等于上一層中神經(jīng)元的數(shù)量。
每層中的LSH哈希表構(gòu)造都是一次性操作,可以與該層中不同神經(jīng)元上的多個線程并行。
論文作者之一、萊斯大學(xué)助理教授Anshumali Shrivastava表示,SLIDE相對于反向傳播的最大優(yōu)勢就在于數(shù)據(jù)并行。
舉個例子,數(shù)據(jù)并行的情況下,要訓(xùn)練兩個數(shù)據(jù)實(shí)例,一個是貓的圖像,另一個是公共汽車的圖像,它們可能會激活不同的神經(jīng)元,而SLIDE可以分別獨(dú)立地更新、訓(xùn)練它們。
如此,就能更好地利用CPU的并行性。
不過,與GPU相比,該方法對內(nèi)存要求較高。
Shrivastava也提到,在與英特爾的合作中,他們針對SLIDE,對CPU進(jìn)行了優(yōu)化,比如支持Kernel Hugepages以減少緩存丟失。這些優(yōu)化使得SLIDE的性能提高了約30%。
實(shí)驗(yàn)結(jié)果
所以,與依賴GPU的深度學(xué)習(xí)相比,SLIDE到底表現(xiàn)如何?
研究人員在Delicious-200K和Amazon-670K這兩個大型數(shù)據(jù)集上進(jìn)行了驗(yàn)證。
實(shí)驗(yàn)配置,是2個22核/44線程處理器(Intel Xeon E5-2699A v4 2.40GHz),和英偉達(dá)TeslaV100 Volta 32GB GPU。
結(jié)果表明,在任意精度上,CPU上的SLIDE總是比V100上基于TensorFlow的GPU算法快。
在Delicious-200K數(shù)據(jù)集上,SLIDE比TF-GPU快1.8倍;而在算力要求更高的Amazon-670K數(shù)據(jù)集上,SLIDE的速度更是TF-GPU的2.7倍。
其大部分計算優(yōu)勢,來自于對輸出層中一小部分激活神經(jīng)元的采樣。
而在相同的CPU上,SLIDE要比基于TensorFlow的算法快10倍以上。
網(wǎng)友:英特爾的廣告?
在CPU上跑深度學(xué)習(xí)能快過GPU,這樣的結(jié)論立刻吸引住了網(wǎng)友們的目光。
有網(wǎng)友分析說:
該方法不僅使用了哈希表,其速度之快還得歸功于OpenMP的硬件多核優(yōu)化。(OpenMP是一套支持跨平臺共享內(nèi)存方式的多線程并發(fā)的編程API)
看起來在小型DNN中是非常有前途的替代方案。不過,問題在于,該方法是否可以推廣到其他CPU架構(gòu)中?這種方法中還是存在巨大的沖突和犧牲準(zhǔn)確性的風(fēng)險。
還有人表示,在與作者的交流中,他認(rèn)為該方法主要適用于寬網(wǎng)絡(luò),否則哈希表的開銷會大于其收益。那么至少,在架構(gòu)探索中,該方法提供了探索更寬網(wǎng)絡(luò)的可能性。
不過,也有網(wǎng)友提出了更尖銳的質(zhì)疑:怕不是來給英特爾打廣告的。
1、預(yù)處理步驟看上去開銷高昂。
2、采用了特殊優(yōu)化的架構(gòu),那么性能增益有多少是歸功于方法本身的?
3、缺少分別在CPU和GPU上運(yùn)行SLIDE的比較。
所以,結(jié)果到底靠不靠譜?不妨戳進(jìn)文末論文鏈接閱讀原文,發(fā)表你的見解~
傳送門
論文地址:https://arxiv.org/abs/1903.03129
GitHub地址:https://github.com/keroro824/HashingDeepLearning
— 完 —