CPU(Center Processing Unit)就是我們常見的中央處理器,用來解釋和處理計算機指令以及處理計算機軟體中的數據。CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷會引入大量的分支跳轉和中斷的處理,接收其他的硬體的信號,並處理在返迴響應指令。這些複雜的功能使得CPU的內部結構異常複雜。

GPU(Graphics Processing Unit)也就是圖形處理器,最早是為了圖形應用而開發的專用硬體組件。特別是在一些大型的遊戲上如極品飛車、古墓麗影以及一些電影中的圖像特效渲染。這些應用要求GPU能夠並行快速的執行一些操作,最頻繁的就是環境和角色模型的變換。因為在遊戲中,我們會控制角色或者視角發生變化,這就需要相應的環境和角色動作同時改變,而這些操作就需要同時執行大量的矩陣運算。

相比於CPU的複雜任務,GPU面對的實際上類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純凈的計算環境。CPU和GPU晶元的組成如下圖所示。我們可以看到對於CPU來說,控制單元(Control)和緩存(Cache)佔據了大量的空間,用來執行複雜的指令和實現多樣的功能,而算數邏輯單元(ALU)則相對較少。但是GPU則恰恰相反,具有大量的算數邏輯單元作為計算力的保證。

那麼在深度學習中,特別是在訓練卷積神經網路時,需要對圖片進行多次的卷積(對應於矩陣相乘相加),同時訓練模型需要大量的數據以及反覆的調參來改進模型。這就給了GPU發揮的空間,GPU擁有巨大的內存帶寬,因此十分適用於大型的矩陣運算,比如上萬維度的矩陣運算。同時GPU還支持並行計算,可以並行進行模型的訓練,從而大大減少模型訓練的時間。


推薦閱讀:
相关文章