魚羊 發自 凹非寺
量子位 報導 | 公眾號 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-200K和Amazon-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 · 頭條號簽約
關注我們,第一時間獲知前沿科技動態