首頁  >  文章  >  科技週邊  >  為深度學習選擇最好的GPU

為深度學習選擇最好的GPU

WBOY
WBOY轉載
2023-05-20 17:04:061693瀏覽

在進行機器學習專案時,特別是在處理深度學習和神經網路時,最好使用GPU而不是CPU來處理,因為在神經網路方面,即使是一個非常基本的GPU也會勝過CPU。

為深度學習選擇最好的GPU

但是你應該買哪種GPU呢?本文將總結需要考慮的相關因素,以便可以根據預算和特定的建模要求做出明智的選擇。

為什麼 GPU 比 CPU 更適合機器學習?

CPU(中央處理器)是電腦的主力,它非常靈活,不僅需要處理來自各種程式和硬體的指令,處理速度也有一定的要求。為了在這種多任務環境中表現出色,CPU 具有少量且靈活快速的處理單元(也稱為核)。

GPU(圖形處理單元)GPU在多工處理方面較不靈活。但它可以並行執行大量複雜的數學計算。這是透過擁有更多數量的簡單核心(數千到上萬)來實現的,這樣可以同時處理許多簡單的計算。

並行執行多個計算的要求非常適合於:

  • 圖形渲染-移動的圖形物件需要不斷地計算它們的軌跡,這需要大量不斷重複的平行數學計算。
  • 機器和深度學習-大量的矩陣/張量計算,GPU可以並行處理。
  • 任何類型的數學計算,可以拆分為平行運行。

在Nvidia自己的部落格上已經總結了CPU和GPU的主要差異:

為深度學習選擇最好的GPU

張量處理單元(TPU)

隨著人工智慧和機器/深度學習的發展,現在已經有了更專門的處理核心,稱為張量核(Tensor cores)。在執行張量/矩陣計算時,它們更快更有效。因為我們在機器/深度學習中所處理的資料型態就是張量。

雖然有專用的tpu,但一些最新的GPU也包含許多張量核,我們會在後面總結。

Nvidia vs AMD

這將是一個相當短的部分,因為這個問題的答案肯定是Nvidia

雖然可以使用AMD的gpu進行機器/深度學習,但在寫本文時,Nvidia的GPU具有更高的相容性,並且通常更好地整合到TensorFlow和PyTorch等工具中(例如目前PyTorch的AMD GPU的支援還只能在Linux上使用)。

使用AMD GPU需要使用額外的工具(ROCm),這個會有一些額外的工作,而且版本可能不會很快更新的。這種情況將來可能會有所改善,但現在為止,最好還是使用Nvidia。

GPU選擇的主要屬性

選擇一個夠完成機器學習任務並且符合預算的GPU,基本上歸結為四個主要因素的平衡:

  • GPU有多少記憶體?
  • GPU有多少CUDA和/或張量核?
  • 卡使用什麼晶片架構?
  • 功耗需求是多少(如果有) ?

以下將逐一探討這些方面,希望能讓你更能理解什麼對你來說是重要的。

GPU記憶體

答案是,越多越好!

這實際上取決於你的任務,以及這些模型有多大。例如,如果你正在處理圖像、視頻或音頻,那麼根據定義,你將處理相當大量的數據,GPU RAM將是一個非常重要的考慮因素。

總有辦法解決記憶體不足的問題(例如減少批次大小)。但是這將會浪費訓練的時間,因此需要很好地平衡需求。

根據經驗,我的建議如下:

  • 4GB:我認為這是絕對的最小值,只要你不是在處理過於複雜的模型,或者大的圖像、視頻或音頻,這個在大多數情況下能工作,但是達不到日常使用的需要。如果你剛起步,想嘗試一下又不想全力投入,那麼可以從它開始
  • 8GB:這是一個日常學習很好的開始,可以在不超過RAM限制的情況下完成大多數任務,但在使用更複雜的圖像、視訊或音訊模型時會遇到問題。
  • 12GB:我認為這是科研最基本的要求。可以處理大多數較大的模型,甚至是那些處理影像、視訊或音訊的模型。
  • 12GB :越多越好,你將能夠處理更大的資料集和更大的批次大小。超過12GB才是價格真正開始上漲的開始。

一般來說,如果成本相同的話,選擇「速度較慢」但記憶體較大的卡片會更好。請記住,GPU的優勢是高吞吐量,這在很大程度上依賴可用的RAM來透過GPU傳輸資料。

CUDA核心與Tensor 核心

這其實很簡單,越多越好。

先考慮RAM,然後就是CUDA。對於機器/深度學習來說,Tensor 核比CUDA核更好(更快,更有效)。這是因為它們是為機器/深度學習領域所需的計算而精確設計的。

但這並不重要,因為CUDA核心已經夠快了。如果你能得到一張包含Tensor 核的卡,這是一個很好的加分點,只是不要太糾結於它。

後面你會看到「CUDA」被提到很多次,我們先總結它:

CUDA核心-這些是顯示卡上的實體處理器,通常有數千個,4090已經1萬6了。

CUDA 11 -數字可能會改變,但這是指安裝的軟體/驅動程序,以允許顯示卡正常的工作。 NV會定期發布新版本,它可以像其他軟體一樣安裝和更新。

CUDA代數(或計算能力)-這描述了顯示卡卡在它的更新迭代的代號。這在硬體上是固定的,因此只能透過升級到新卡來改變。它由數字和一個代號來區分。例:3。 x[Kepler],5。 x [Maxwell], 6。 x [Pascal], 7。 x[Turing]和8。 x(Ampere)。

晶片架構

這其實比你想像的更重要。我們這裡不討論AMD,我的眼裡只有」老黃「。

上面我們已經說了,30系列的卡片就是Ampere架構,最新的40系列是 Ada Lovelace。一般老黃都會使用一個著名科學家和數學家來對架構命名,這次選擇的是著名英國詩人拜倫之女,建立了循環和子程序概念的女數學家、計算機程序創始人Ada Lovelace來命名。

了解對於卡片的運算能力,我們要了解2個面向:

  • 顯著的功能改進
  • 這裡一個重要的功能就是,混合精準度訓練:

使用精確度低於32 位元浮點數的數字格式有許多好處。首先它們需要更少的內存,從而能夠訓練和部署更大的神經網路。其次它們需要更少的記憶體頻寬,從而加快資料傳輸操作。第三數學運算在精度降低的情況下運行得更快,尤其是在具有 Tensor Core 的 GPU 上。混合精度訓練實現了所有這些好處,同時確保與完全精度訓練相比不會失去特定於任務的準確性。它透過識別需要完全精確度的步驟並僅對這些步驟使用 32 位元浮點而在其他任何地方使用 16 位元浮點來實現這一點。

這裡是Nvidia 官方文檔,有興趣的可以看看:

https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html

如果您的GPU 具有7.x (Turing) 或更高的架構,才有可能使用混合精確訓練。也就是說 桌面的RTX 20 系列或高版本,或伺服器上的 “T”或“A”系列。

混合精準度訓練具有如此優勢的主要原因是它降低了RAM 使用率,Tensor Core 的GPU會加速混精度訓練,如果沒有的話使用FP16也會節省顯存,可以訓練更大的批次大小,間接提升訓練速度。

是否會被棄用

如果你對RAM有特別高的要求,但又沒有足夠的錢買高階卡,那麼你可能會選擇二手市場上的老款GPU。這有一個相當大的缺點…這張卡的壽命結束了。

一個典型的例子就是Tesla K80,它有4992個CUDA核心和24GB的RAM。 2014年,它零售價約為7,000美元。現在的價格從 150到170美元不等!(鹹魚的價格600-700左右)這麼小的價格卻有這麼大的內存,你一定很興奮。

但是這有一個非常大的問題。 K80的運算架構是3.7 (Kepler),CUDA 11起已經不支援(目前CUDA版本為11.7)。這意味著這張卡已經廢了,所以它才賣的這麼便宜。

所以在選擇2手卡時一定要看清楚是否支援最新版本的驅動程式和CUDA,這是最重要的。

高階遊戲卡 VS 工作站/伺服器卡

老黃基本上把卡片分成了兩個部分。消費性顯示卡與工作站/伺服器的顯示卡(即專業顯示卡)。

這兩個部分之間有明顯的區別,對於相同的規格(RAM, CUDA內核,架構),消費性顯示卡通常會更便宜。但是專業卡通常會有更好的質量,而且較低的能源消耗(其實渦輪的噪音挺大的,放機房還可以,放家裡或是試驗室有點吵)。

高階(非常昂貴)的專業卡,你可能會注意到它們有很大的RAM(例如RTX A6000有48GB, A100有80GB!)。這是因為它們通常直接針對3D建模、渲染和機器/深度學習專業市場,這些市場需要高水準的RAM。再說一次,如果你有錢,買A100就對了!(H100是A100的新版,目前無法評價)

但是我個人認為,我們還是選擇消費者的高端遊戲卡,因為如果你不差錢,你也不會看這篇文章,對吧

選擇建議

所以在最後我根據預算和需求提出一些建議。我將其分為三個部分:

  • 低預算
  • 中預算
  • #高預算

高預算不考慮任何超出高端消費顯示卡。還是那句話如果你有錢:A100,H100隨便買。

本文會包含在二手市場買到的卡片。這主要是因為我認為在低預算的情況下,二手是可以考慮的。這裡還包括了專業桌面系列卡(T600、A2000和A4000),因為它的一些配置比同類消費類顯示卡稍差,但功耗明顯更好。

低預算

為深度學習選擇最好的GPU

中預算

為深度學習選擇最好的GPU

#高預算

為深度學習選擇最好的GPU

為深度學習選擇最好的GPU

##線上/雲端服務

如果你決定花錢買顯示卡不適合你,你可以利用GoogleColab,它可以讓你免費使用GPU。

但這是有時間限制的,如果你使用GPU太長時間,他們會把你踢出去,然後回到CPU上。如果GPU處於非活動狀態太長時間,可能是在你寫程式碼的時候,它也會把GPU拿回來。 GPU也是自動分配的,所以你不能選擇你想要的確切的GPU(你也可以每月9.9刀弄個Colab Pro,我個人覺得要比低預算好很多,但是要求有梯子,$49.99的Colab Pro 有點貴,不建議)。

在寫本文時,透過Colab可以得到以下GPU:

在前面也提到了,K80有24GB的RAM和4992個CUDA核心,它基本上是兩個K40卡連在一起。這意味著當你在Colab中使用K80時,你實際上可以存取一半的卡,所以也就是只有12GB和2496個CUDA核心。 ######總結######最後現在4090還是處於耍猴的狀態,基本上要搶購或加價找黃牛######但是16384 CUDA 24GB,對比3090 的10496 CUDA ,真的很香。 ######而4080 16G的9728CUDA 如果價格能到7000內,應該是性價比很高的選擇。 12G的 4080就別考慮了,它配不上這個名字。 ######對於AMD的 7900XTX 應該也是一個很好的選擇,但是相容性是個大問題,如果有人測試的話可以留言。 ######40系列老黃一直在耍猴,所以如果不著急的話還再等等把:#########你不買,我不買,明天還能降兩百## ####

以上是為深度學習選擇最好的GPU的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除