什麼是GPU,深度學習中需要GPU嗎?

在深度學習中,似乎每個人都建議使用GPU。 它是什麼,沒有一個,您能做得到嗎?它的確切對象是誰?

什麼是GPU,深度學習中需要GPU嗎?

> Photo by Florian Krumm on Unsplash

任何試圖大規模推廣訓練模型性能的數據科學家或機器學習愛好者都將在某個時候達到頂峰,並開始經歷不同程度的處理滯後。 當數據集變得更大時,使用較小的訓練集花費數分鐘的任務現在可能需要花費更多的時間(在某些情況下是幾周)。

但是什麼是GPU? 它們如何與CPU相抗衡? 我的深度學習項目需要一個嗎?

如果您曾經問過自己這些問題,請繼續閱讀…


為什麼選擇GPU進行深度學習

GPU經過優化,可訓練人工智能和深度學習模型,因為它們可以同時處理多個計算。

它們具有大量內核,可以更好地計算多個並行進程。 此外,深度學習中的計算需要處理大量數據-這使GPU的內存帶寬最合適。

有一些決定性參數可以確定是使用CPU還是GPU來訓練深度學習模型:

內存帶寬:

帶寬是GPU比CPU更快的計算速度的主要原因之一。 對於大型數據集,CPU在訓練模型時會佔用大量內存。

計算龐大而複雜的作業需要佔用CPU大量的時鐘週期-CPU依次處理作業,並且內核數量少於同類GPU。

另一方面,獨立的GPU帶有專用的VRAM(視頻RAM)內存。 因此,CPU的內存可用於其他任務。

什麼是GPU,深度學習中需要GPU嗎?

> Comparison of bandwidth for CPUs and GPUs over time

數據集大小

在深度學習中訓練模型需要大量的數據集,因此在內存方面需要大量的計算操作。 為了有效地計算數據,GPU是最佳選擇。 計算量越大,GPU相對於CPU的優勢就越大。

優化

在CPU中優化任務要容易得多。 儘管CPU內核數量較少,但功能卻比數千個GPU內核強大。

每個CPU內核可以執行不同的指令(MIMD架構),而通常在32個內核的塊內組織的GPU內核在給定的時間並行執行同一條指令(SIMD架構)。

鑑於需要付出的努力,密集神經網絡中的並行化非常困難。 因此,與在CPU中相比,在GPU中難以實現複雜的優化技術。

為什麼我們需要更多的硬件來進行深度學習?

對於任何神經網絡來說,深度學習模型的訓練階段都是最耗費資源的任務

在訓練過程中,神經網絡會接受輸入,然後使用在訓練過程中調整的權重在隱藏層中對其進行處理,然後模型發出預測。 調整權重以找到模式,以便做出更好的預測。

這兩個運算本質上都是矩陣乘法。 下圖可以表示一個簡單的矩陣乘法

什麼是GPU,深度學習中需要GPU嗎?

> Source: jeremyjordan.me

在神經網絡中,我們可以將第一個數組作為神經網絡的輸入,而第二個數組則形成其權重。

容易吧?

是的,如果您的神經網絡具有大約10、100甚至100,000個參數。 一臺計算機仍將能夠在幾分鐘甚至最多幾小時內處理完這一問題。

但是,如果您的神經網絡具有超過100億個參數,該怎麼辦? 採用傳統方法來訓練這種系統將需要數年時間。 您的計算機可能會在十分之一之前就放棄了。

"一個採用搜索輸入並根據1億個輸出或產品進行預測的神經網絡,通常每個產品約有2,000個參數。 因此,將它們相乘,神經網絡的最後一層現在是2000億個參數。 而且我還沒有做任何複雜的事情。 我說的是一個非常非常簡單的簡單神經網絡模型。" —博士 萊斯大學學生

使深度學習模型訓練更快

通過簡單地同時運行所有操作,而不是一個接一個地運行,可以更快地訓練深度學習模型。

您可以通過使用GPU訓練模型來實現。

GPU(圖形處理單元)是具有專用內存的專用處理器,通常會執行渲染圖形所需的浮點運算

換句話說,它是用於大量圖形和數學計算的單芯片處理器,從而釋放了CPU週期用於其他作業。

GPU和CPU之間的主要區別在於,與CPU相比,GPU按比例分配了更多的晶體管用於算術邏輯單元,而減少了對高速緩存和流控制的投入。

儘管CPU最適用於需要解析或解釋代碼中複雜邏輯的問題,但GPU是專為計算機遊戲的專用圖形渲染而設計的,後來經過增強以加速其他幾何計算(例如,變換多邊形或旋轉垂直線) 進入不同的座標系(如3D)。

GPU小於CPU,但與後者相比,GPU往往具有更多的邏輯核心(算術邏輯單元或ALU,控制單元和內存緩存)。

什麼是GPU,深度學習中需要GPU嗎?

> Source: fast.ai

在上表中,您可以看到GPU(紅色/綠色)理論上可以完成CPU(藍色)的操作的10–15倍。 這種加速也非常適用於實踐。

如果您將CPU視為瑪莎拉蒂,那麼GPU可以算是一輛大卡車。

CPU(瑪莎拉蒂)可以在RAM中快速獲取少量包裹(3-4位乘客),而GPU(卡車)則較慢,但可以在一圈內獲取大量內存(約20位乘客)。

我應該使用GPU嗎?

與任何數據科學項目一樣,這取決於。 在速度,可靠性和成本之間需要權衡考慮:

· 如果您的神經網絡規模相對較小,那麼無需GPU就可以解決問題

· 如果您的神經網絡涉及大量涉及數十萬個參數的計算,那麼您可能要考慮投資購買GPU

通常,GPU是快速機器學習的安全選擇,因為從本質上講,數據科學模型訓練由簡單的矩陣數學計算組成,如果並行進行計算,則其速度可能會大大提高。

請參閱有關最佳GPU進行深度學習投資的Reddit帖子

Cloud GPU實例

您還應該考慮Cloud GPU。 如果您不想購買大量昂貴的GPU,則可以與雲託管公司按需利用GPU。 它們可讓您免去配置硬件的麻煩,而最重要的是,它們並不那麼昂貴-使用時每小時的成本低至0.25美元。

完成後,請記住關閉雲實例。

您將租用一臺外國計算機/服務器,而不是自己運行。 僅關閉瀏覽器或關閉PC是不夠的,它們僅會切斷設備與該遠程服務器之間的連接,而不會關閉您要付費的東西。 否則,系統會一直向您收取費用,並且會產生令人討厭的帳單!

任何數據科學家或機器學習狂熱者一生中至少會聽說,深度學習需要大量硬件。 有些人在筆記本電腦上訓練了簡單的深度學習模型幾天(通常沒有GPU),這導致深度學習需要大型系統才能運行執行。

這創造了圍繞深度學習的神話,為初學者創建了障礙。

我在過去幾年中提到的每本書都提到了以下內容:

深度學習需要大量的計算能力才能繼續運行。

但是我沒有數據中心,當我在相當大的筆記本電腦上建立第一個深度學習模型時,我知道共識要麼是錯誤的,要麼是真實的。

您無需接管Google即可成為深度學習專家。

CPU最擅長順序處理單個更復雜的計算,而GPU更擅長並行處理多個但更簡單的計算。

GPU計算實例的成本通常是CPU計算實例的2-3倍,因此,除非您在基於GPU的訓練模型中看到2-3倍的性能提升,否則建議使用CPU。

什麼是GPU,深度學習中需要GPU嗎?

> Photo by Alex Knight on Unsplash

與往常一樣,非常感謝您的閱讀! 請在評論中告訴我您的想法或想寫的內容。 我也很容易受到批評!

下篇再見!


(本文翻譯自Jason Dsouza的文章《What is a GPU and do you need one in Deep Learning?》,參考:https://towardsdatascience.com/what-is-a-gpu-and-do-you-need-one-in-deep-learning-8a323476e109)


分享到:


相關文章: