萊斯大學&英特爾新算法證明CPU加速深度學習優於GPU!老黃核彈警告

量子位 發佈 2020-03-04T14:52:44+00:00

論文作者之一、萊斯大學助理教授AnshumaliShrivastava表示,SLIDE相對於反向傳播的最大優勢就在於數據並行。

魚羊 發自 凹非寺
量子位 報導 | 公眾號 QbitAI

實驗室一塊GPU都沒有怎麼做深度學習?

如果讓萊斯大學和英特爾的研究人員來回答,答案大概是:用CPU啊。

萊斯大學和英特爾的最新研究證明,無需專門的加速硬體(如GPU),也可以加速深度學習。

算法名為SLIDE

研究人員稱,SLIDE是第一個基於CPU的深度學習智能算法,並且,在具有大型全連接架構的行業級推薦數據集上,SLIDE訓練深度神經網絡的速度甚至超過了GPU。

代碼已開源。

基於局部敏感哈希

擺脫GPU的核心思想,是利用局部敏感哈希來擺脫矩陣乘法。

代碼採用C++編寫。

論文一作Beidi Chen介紹:

基於TensorFlow和PyTorch來實現SLIDE算法是沒有意義的,因為那必須把問題轉換成矩陣乘法問題,而這一點恰恰是我們想要擺脫的。

在架構上,SLIDE的中心模塊是神經網絡。網絡的每個層模塊由神經元和一些哈希表組成,神經元ID被哈希到其中。

每個神經元模塊都包含:

  • 一個二進位數組,提示該神經元是否對於batch中的每一個輸入都有效
  • batch中的每一個輸入的activation
  • batch中每個輸入的累積梯度
  • 與上一層的連接權重

最後一個數組的長度等於上一層中神經元的數量。

每層中的LSH哈希表構造都是一次性操作,可以與該層中不同神經元上的多個線程並行。

論文作者之一、萊斯大學助理教授Anshumali Shrivastava表示,SLIDE相對於反向傳播的最大優勢就在於數據並行。

舉個例子,數據並行的情況下,要訓練兩個數據實例,一個是貓的圖像,另一個是公共汽車的圖像,它們可能會激活不同的神經元,而SLIDE可以分別獨立地更新、訓練它們。

如此,就能更好地利用CPU的並行性。

不過,與GPU相比,該方法對內存要求較高

Shrivastava也提到,在與英特爾的合作中,他們針對SLIDE,對CPU進行了優化,比如支持Kernel Hugepages以減少緩存丟失。這些優化使得SLIDE的性能提高了約30%。

實驗結果

所以,與依賴GPU的深度學習相比,SLIDE到底表現如何?

研究人員在Delicious-200KAmazon-670K這兩個大型數據集上進行了驗證。

實驗配置,是2個22核/44線程處理器(Intel Xeon E5-2699A v4 2.40GHz),和英偉達TeslaV100 Volta 32GB GPU。

結果表明,在任意精度上,CPU上的SLIDE總是比V100上基於TensorFlow的GPU算法快。

在Delicious-200K數據集上,SLIDE比TF-GPU快1.8倍;而在算力要求更高的Amazon-670K數據集上,SLIDE的速度更是TF-GPU的2.7倍。

其大部分計算優勢,來自於對輸出層中一小部分激活神經元的採樣。

而在相同的CPU上,SLIDE要比基於TensorFlow的算法快10倍以上。

網友:英特爾的廣告?

在CPU上跑深度學習能快過GPU,這樣的結論立刻吸引住了網友們的目光。

有網友分析說:

該方法不僅使用了哈希表,其速度之快還得歸功於OpenMP的硬體多核優化。(OpenMP是一套支持跨平台共享內存方式的多線程並發的編程API)

看起來在小型DNN中是非常有前途的替代方案。不過,問題在於,該方法是否可以推廣到其他CPU架構中?這種方法中還是存在巨大的衝突和犧牲準確性的風險。

還有人表示,在與作者的交流中,他認為該方法主要適用於寬網絡,否則哈希表的開銷會大於其收益。那麼至少,在架構探索中,該方法提供了探索更寬網絡的可能性。

不過,也有網友提出了更尖銳的質疑:怕不是來給英特爾打廣告的。

1、預處理步驟看上去開銷高昂。

2、採用了特殊優化的架構,那麼性能增益有多少是歸功於方法本身的?

3、缺少分別在CPU和GPU上運行SLIDE的比較。

所以,結果到底靠不靠譜?不妨戳進文末論文連結閱讀原文,發表你的見解~

傳送門

論文地址:https://arxiv.org/abs/1903.03129

GitHub地址:https://github.com/keroro824/HashingDeepLearning

— 完 —

量子位 QbitAI · 頭條號簽約

關注我們,第一時間獲知前沿科技動態

關鍵字: