最近,我嘗試在大型CPU服務器上實施並部署一個深度學習解決方案(帶有用於靜態輸入的附加層的多層LSTM網絡)。經過多次嘗試後,我的個人電腦性能僅比我的速度提高了3倍。我聽說GPU可能會做得更好。你能否解釋一下,在深度神經網絡計算中,GPU比CPU更好的確切原因是什麼?什麼讓GPU在神經網絡計算中如此高效?
2
A
回答
3
GPU的架構主要集中在並行性上,而CPU的架構則不是。這意味着GPU可以同時進行很多簡單的操作;例如,GPU可以每秒60次處理屏幕上每個像素的顏色(1920x1080幾乎是200萬像素)。 通用CPU每個核心可以有一個ALU(物理或邏輯),所以也許你的CPU有8/16個ALU。 GPU可以有thousands of them。長話短說:CPU可以非常快地執行一些複雜的操作,而GPU可以非常快速地執行數千個非常簡單的操作。另外,由於GPU同時處理大量數據,因此通常會配備高速RAM以避免出現瓶頸。
神經網絡是基本上很多小的「計算機」,在並行工作,所以GPU適合完成這個任務
2
訓練深層神經漁網事實上的算法更好的架構是反向傳播算法。它涉及在網絡的不同層次上計算雅可比矩陣和乘以這些矩陣。由於涉及的操作是結構化的並且不需要存在於CPU中的複雜機器(如分支預測,無序調度),所以步驟是GPU超過CPU的步驟。作爲一個觀點,你可能會爭辯說,通過使用諸如緩存阻塞,預取和手工編碼彙編等技術,CPU在矩陣乘法中變得更好。
除了訓練,神經網絡的推理部分也利用了有效的矩陣乘法。這是因爲各層的輸入和權重(參數)矢量通常以張量形式存儲。
使用GPU的另一個好處是提供更好的內存帶寬。 GDDR5x正在接近500 GB/s,而最先進的DDR4提供的約80-100 GB/s。因此,您可以獲得帶寬提升的5倍,這是內存密集型神經網絡計算可以利用的。
相關問題
- 1. 神經網絡值計算?
- 2. 高效計算任意神經網絡輸出?
- 3. 針對(conv)神經網絡計算的CPU vs GPU
- 4. 貝葉斯神經網絡:計算Hessian
- 5. 如何在Haskell中高效實現通用神經網絡?
- 6. 什麼是神經網絡中的EPOCH?
- 7. 神經網絡設計
- 8. 設計神經網絡
- 9. 如何讓神經網絡給位置?
- 10. 神經網絡
- 11. 神經網絡
- 12. 爲神經網絡計算隱藏和輸出神經元的數量如何?
- 13. 在scikit-learn中訓練神經網絡來計算'XOR'
- 14. 算法從神經網絡中刪除孤立神經
- 15. 在神經網絡中發生了什麼神經網絡中的反向傳播在Matlab中反向傳播
- 16. matlab中的神經網絡設計
- 17. 測試自定義神經網絡的算法是什麼?
- 18. 提高Tensorflow神經網絡 - 蟒蛇
- 19. 提高了感知神經網絡
- 20. 如何計算神經網絡的輸出?
- 21. 如何計算神經網絡輸出層的二階導數?
- 22. 神經網絡[ocr]
- 23. 神經網絡,python
- 24. MATLAB神經網絡
- 25. 神經網絡backpropogation
- 26. 神經網絡:「InverseLayer」
- 27. 的神經網絡
- 28. SOM - 神經網絡
- 29. sigmoid神經網絡
- 30. Spiking神經網絡
深度學習(和AI)嚴重依賴於矩陣和矩陣運算(即線性代數)。 Matrix ops可以高度並行化,並且可以利用數百個線程(考慮例如兩個matries的乘法) - 這就是GPU非常擅長的(也可以認爲GPU中的內存帶寬) – rbm