
我有一個懸而未決的問題要問你:
我在辦公室設置了一台二手伺服器來訓練我們的機器學習模型;它包含 4 個 Xeon E7 4820(https://ark.intel.com/products/53675/Intel-Xeon-Processor-E7-4820-18M-Cache-2_00-GHz-5_86-GTs-Intel-QPI) - 2,00GHz,8 個核心,每個核心 16 個線程 -,128Gbs RAM 和 128GB SWAP(SSD 交換)。
然而,我對它進行了第一次測試學習,令人驚訝的是它非常慢。訓練時間為 11 分鐘,而在我的第 8 代 i5 cpu(1.6GHz、4 核、8 線程)、8Gb RAM 和 8Gbs 交換區上訓練需要 5 分鐘。
Htop 告訴我,並行計算已開啟,CPU 負載峰值約為 3(i5)和 22(4 E7);那你知道為什麼會有這樣的效能差距嗎?我知道摩爾定律是一種不可抗拒的現象,但對於一個一年前的中階CPU來說,它的表現能夠勝過四個七年前的Xeon E7,我無法理解這個問題。希望您能幫忙! :)
PS:我已經在上面安裝了 Cuda 和 CuDNN,但它還不能工作,我只用 CPU 進行了學習。我對結果感到非常困惑,以至於我完全停止了 GPU 加速工作(我們在伺服器上安裝了一個小型 1050 Ti)來解決這個問題。我確保兩台計算機上也運行完全相同的程式碼。
提前致謝 ! :)
霜
答案1
您的問題(與大多數機器學習問題一樣)可能與記憶體頻寬有關。
機器學習並不是特別需要 CPU 運算密集型,它們會進行大量「簡單」運算,但受到記憶體頻寬的嚴重限制。這就是顯示卡流處理器如此出色的原因之一。每個流處理器相對有限(與 CPU 相比),但對於更簡單的操作,其龐大的頻寬和處理器的絕對數量足以彌補其限制。
隨機選一個第八代i5:
Max Memory Bandwidth 41.6 GB/s
CPU老大似乎顯示第一代 E7-4820 的記憶體頻寬為 23GB/s (23,464 MB/s)
多處理器機器需要不斷地在 CPU 之間複製內存,或以其他方式從一個 CPU 到另一個 CPU 共享對內存的存取。
共享記憶體和顯著降低的頻寬的結合可能是損害舊系統的原因。
較新的 Xeon 聲稱頻寬高達 85GB/s。