春暖花開,各位深度學習 er 想不想給自己的 " 丹爐 " 升級一波?
" 煉丹 " 愛好者們應該知道,在該領域中,**GPU 的總體表現完勝 CPU。
那麽 GPU 應該怎麽選?不妨來看看這篇超級詳盡的"2023 版 GPU 選購指南 "。
知名測評博主、華盛頓大學在讀博士 Tim Dettmers 親測後,寫下萬字長文,手把手教你 Pick 性價比最高的顯卡,避免踩雷。
△光是目錄就有這麽長……
至于誰是性價比之王,不賣關子,這裏先放上 Tim 哥的結論:
對于 16 位訓練過程,RTX 3080的性價比最高;對于 8 位和 16 位推理,RTX 4070Ti的性價比最高。
有意思的是,不隻這倆,他在本文推薦的顯卡全是英偉達家的—— Tim 哥覺得,對于深度學習,"AMD GPU+ROCm" 目前還打不過 "NVIDIA GPU+CUDA"。
手把手教你挑 GPU
Tim 哥自制了一張表格,展示出在訓練和推理過程中,一美元能買到多少算力;這在一定程度上體現了英偉達衆顯卡的性價比。
△藍色 -16 位訓練;紅色 -16 位推理;黃色 -8 位推理
看到這個,你可能一臉問号:從表格來看,不是 RTX 4080 在 8 位和 16 位推理上的性價比更高嗎?
其實,咱們開頭說的是 " 綜合性價比 " ——
除了看一美元能買多少算力,還要結合顯卡的運行成本,比如電費。所以總的來說,還是 RTX 4070Ti 的性價比更高。
雖然 RTX3080 和 RTX 4070 Ti 性價比高,但這倆的内存是個明顯短闆:
Tim 哥指出,12GB 在很多情況下都不夠用,要運行 Transformer 模型的話,至少需要 24GB。
于是,Tim 哥又貼心地做了一個小程序,幫你根據不同的任務選擇最合适的 GPU。
其背後的核心思想是:不管幹啥,一定要保證 GPU 的内存滿足你的需求。
首先,要弄清楚這個 GPU 是個人用還是公用,還有就是要處理什麽任務——比如,是要訓練語言大模型(LLM)嗎、參數量有沒有超過 130 億?還是就做點小項目?
然後再根據自己的錢包情況,參考上面的表格,選擇最合适的 GPU。
舉個例子:
如果要訓練 LLM 且參數量超過 130 億,不差錢的可以選擇支持 Azure 公有雲的 A100 或者 H100;追求性價比的話,可以選支持 AWS 的 A100 或者 H100。
但如果預算實在有限,建議放棄……
(在亞馬遜上,40GB 的英偉達 Tesla A100 售價爲 11769 美元起,約合人民币 79529 美元。當然這都是針對國外的情況,在國内煉丹僅供參考)
另外,Tim 哥還支了一招:最好用雲 GPU(比如 Lambda 雲)來估測一下所需的 GPU 内存(至少 12GB 用于圖像生成,至少 24GB 用于處理 Transformer)。
其實假如 GPU 僅偶爾使用(每隔幾天用幾小時),甚至都不用去買個實體的,用雲 GPU 就可以了。
對了 ~ 如果你真的不在乎這點(?)錢,就要追求極緻性能,那可以看看這張表,即 GPU 的原始性能排行。
那如果實在錢不夠,即使是 Tim 哥推薦的最便宜的 GPU 也買不起,還有辦法嗎?
那可以考慮二手呀!
先去買個便宜的 GPU 用于原型設計和測試,然後在雲端進行全面的實驗和測試。
關鍵性能點有哪些?
盤點完英偉達的一堆 GPU 後,再來叙一叙關乎深度學習速度的幾大 GPU 性能關鍵點。
(如果你想稍微深入了解一些,請接着往下看。)
Tim 哥指出,重點有四:GPU 的内存、核心、Tensor Core 和緩存。
而其中最重要的是 Tensor Core。
Tensor Core 是英偉達爲其高端 GPU 開發的一項技術,本質上,就是加速矩陣乘法的處理單元。其中 Tensor 即張量,是一種能表示所有類型數據的數據類型。
Tim 表示,在所有深度神經網絡中,最昂貴的部分是矩陣乘法,而有了 Tensor Core,運算速度會變得非常快,有助于大大減少成本。
就拿一個入門級的 32 × 32 矩陣乘法來說,通過 Tensor Core,将矩陣乘法的運算時間從 504 個周期,降低到 235 個周期,直接減半。
而且即便是超大規模的矩陣運算,Tensor Core 也能輕松處理。在規模堪比 GPT-3 的訓練中,Tensor Core 的 TFLOPS 利用率也就約爲 45-65%。
而當兩個 GPU 都有 Tensor Cores 時,要比較它們性能,最佳指标之一就是内存帶寬。
例如,A100 GPU 的内存帶寬爲 1555GB/s,而 V100 爲 900GB/s。因此,A100 和 V100 相比,運算速度大概是後者的 1555/900=1.73 倍。
由此可見,内存帶寬會影響到 Tensor Core 的性能發揮。于是研究人員開始尋找其他 GPU 屬性,使内存數據傳輸到 Tensor Core 的速度更快。
然後,他們發現,GPU 的一級緩存、二級緩存、共享内存和使用的寄存器數量也都是相關因素。
對于緩存來說,數據塊越小,計算速度越快;所以需要把大的矩陣乘法,劃分成小的子矩陣乘法。研究者們把這些小的子矩陣乘法稱爲 " 内存碎片 "*(memory tiles)。
一部分 " 碎片 " 被加載到 Tensor Core 中,由寄存器直接尋址。
根據英偉達 Ampere 架構的規則,舉個例子 ~
把每一個權重矩陣都切成 4 個 " 碎片 ",并假設其中兩個爲零——于是就得到了一堆稀疏權重矩陣。
然後把這些稀疏權重矩陣與一些密集輸入相乘,Tensor Core 功能啓動,将稀疏矩陣壓縮爲密集表示,其大小爲下圖所示的一半。
在壓縮之後,密集壓縮的 " 碎片 " 被送入 Tensor Core,計算的矩陣乘法是一般大小的兩倍。這樣,運算速度就成了通常的 2 倍。
Tim 哥表示,上述性能點,他在統計英偉達 GPU 性能時都考慮在内了。
如果你把這些東西吃透了話,以後就能完全靠自己配置出最合适的 " 煉丹爐 " 了。
原文傳送門:
https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/