RTX 40時代,給深度學習買的顯示卡居然能保值9年?仔細一算繃不住了

FP8 訓練帶來的速度提升可能要一統 AI 領域,但這是我要考慮的問題嗎?

深度學習對於算力的要求很高,對於個人來說,GPU 的選擇很大程度上決定了你的工作、學習體驗。顯示卡既貴又複雜,如果想購買新的 GPU,哪些功能最重要?記憶體、核心、Tensor Core 還是快取?如何做出價效比高的選擇?每出一代新 GPU 這些問題就要重新審視一番。

近日,華盛頓大學在讀博士 Tim Dettmers 通過一篇長文在 RTX 40 時代的背景下深入探討了這些問題,此文一出就獲得了陳天奇等人的轉推。

本文將解決常見的誤解,讓你直觀地了解如何看待 GPU 並提供建議,幫你做出適合自己的選擇。

這篇博文的結構如下:首先,我將解釋是什麼讓 GPU 變快的,我將討論 CPU 與 GPU、Tensor Core、記憶體頻寬和 GPU 的記憶體層次結構,以及它們與深度學習性能的關係。我們將討論新的 NVIDIA RTX 40 Ampere GPU 系列的獨特功能。隨後我們將針對不同的場景提出 GPU 推薦。

與深度學習相關性最高的 GPU 規格

本節按每個元件的重要性排序。Tensor Core 是最重要的,其次是 GPU 的記憶體頻寬、快取層次結構,然後才是 GPU 的純算力 FLOPS。

Tensor Core

Tensor Core(張量核心)是執行非常高效的矩陣乘法的微核心。由於任何深度神經網路中最耗費算力的部分就是矩陣乘法,所以張量核心非常有用。它們非常強大,想搞深度學習,不推薦任何沒有 Tensor Core 的 GPU。

這裡展示一個簡單的 A×B=C 矩陣乘法示例,其中所有矩陣的大小均為 32×32,計算模式在使用和不使用 Tensor Cores 時的樣子。這是一個簡化的示例,並不是編寫高性能矩陣乘法核心的確切方式,但它具有所有基礎知識。CUDA 程式設計師會把它作為第一個「草稿」,然後用雙倍緩衝、暫存器最佳化、佔用最佳化、指令級並行等概念逐步最佳化它,這裡不會一一討論。

要完全理解此示例,你必須了解循環的概念。如果處理器以 1GHz 運行,它每秒可以執行 10^9 個週期。每個循環代表一個計算機會。但大多數時候,操作需要的時間超過一個週期。籠統地說這裡有一個隊列,下一個操作需要等待上一個操作完成。這也稱為操作的延遲。

以下是一些重要的操作延遲週期時間。這些時間數字每代 GPU 都不一樣,這裡的適用於快取相對較慢的 Ampere GPU:

  • 全局記憶體訪問(多至 80GB):~380 個週期
  • L2 快取:~200 個週期
  • L1 快取或共享記憶體訪問(每個流式多處理器最多 128 kb):~34 個週期
  • 融合乘法和加法,ab+c (FFMA):4 個週期張量核心矩陣乘法:1 個週期

每個操作總是由一組 32 個執行緒執行,它的集合被稱為執行緒 warp。warp 通常以同步模式運行 ——warp 中的執行緒必須相互等待。GPU 上的所有記憶體操作都針對 warp 進行了最佳化。例如,從全局記憶體載入以 32×4 位元組的粒度發生,正好是 32 個浮點數,一個 warp 中的每個執行緒正好對應一個浮點數。我們最多可以在一個流式多處理器 (SM) 中擁有 32 個 warps = 1024 個執行緒,相當於一個 CPU 核心的 GPU。SM 的資源在所有活躍的 warp 之間分配。這意味著有時我們希望運行更少的 warp,以便每個 warp 擁有更多的暫存器 / 共享記憶體 / Tensor Core 資源。

對於以下兩個示例,我們假設擁有相同的計算資源。對於這個 32×32 矩陣乘法的小例子,我們使用 8 個 SM(大約是 RTX 3090 的 10%)和每個 SM 8 個 warp。

要了解循環延遲如何與每個 SM 的執行緒和每個 SM 的共享記憶體等資源一起發揮作用,我們現在來看一下矩陣乘法的示例。雖然以下示例大致遵循了使用和不使用 Tensor Core 的矩陣乘法的計算步驟序列,但請注意,這些示例非常簡化。矩陣乘法的真實案例涉及更大的共享記憶體塊和略有不同的計算模式。

沒有張量核的矩陣乘法

如果我們想要進行 A×B=C 矩陣乘法,其中每個矩陣的大小為 32×32,那麼就要將重複訪問的記憶體載入到共享記憶體中,因為它的延遲大約低五倍(200 週期對 34 週期)。共享記憶體中的記憶體塊通常稱為記憶體塊或簡稱為塊。使用 232 warp 可以並行地將兩個 32×32 的浮點數載入到共享記憶體塊中。我們有 8 個 SM,每個 8 warp,因此由於並行化,我們只需要執行一次從全局到共享記憶體的順序載入,這需要 200 個週期。

要進行矩陣乘法,我們現在要從共享記憶體 A 和共享記憶體 B 載入一個包含 32 個數字的向量,並執行融合乘加 (FFMA)。然後將輸出儲存在暫存器 C 中。我們劃分工作,使每個 SM 進行 8 次點積 (32×32) 來計算 C 的 8 個輸出。為什麼這恰好是 8(在舊演算法中為 4)是非常技術性的。

這裡推薦 Scott Gray 關於矩陣乘法的博文 (https://github.com/NervanaSystems/maxas/wiki/SGEMM) 來理解這一點。

這意味著我們有 8 次共享記憶體訪問,每次訪問花費 34 個週期和 8 個 FFMA 操作(並行 32 個),每個操作花費 4 個週期。總的來說成本是:200 個週期(全局記憶體)+ 834 個週期(共享記憶體)+ 84 個週期(FFMA)= 504 個週期。

讓我們看看使用 Tensor Cores 的週期成本。

用 Tensor Core 進行矩陣乘法

使用 Tensor Core,我們可以在一個週期內執行 4×4 矩陣乘法。為此我們首先需要將記憶體放入 Tensor Core。與上面類似,我們需要從全局記憶體(200 個週期)中讀取並儲存在共享記憶體中。要進行 32×32 矩陣乘法,我們需要進行 8×8=64 個 Tensor Core 運算。單個 SM 有 8 個 Tensor Core。因此,有了 8 個 SM 我們就有了 64 個 Tensor Core—— 這正是我們需要的數量!我們可以通過 1 次記憶體傳輸(34 個週期)將資料從共享記憶體傳輸到 Tensor Core,然後執行這 64 個並行 Tensor Core 操作(1 個週期)。

這意味著 Tensor Cores 矩陣乘法的總成本,在這種情況下是:200 個週期(全局記憶體)+ 34 個週期(共享記憶體)+ 1 個週期(Tensor Core)= 235 個週期。

因此,我們通過 Tensor Core 將矩陣乘法成本從 504 個週期減少到了 235 個週期。在這個簡化的案例中,Tensor Cores 降低了共享記憶體訪問和 FFMA 操作的成本。藉助新的 Hooper (H100) 和 Ada(RTX 40 系)架構,我們還擁有可以進一步加速此操作的張量記憶體加速器 (TMA) 單元。

用 Tensor Core 和 TMA 進行矩陣乘法

TMA 單元允許將全局記憶體載入到共享記憶體中,而無需用完寶貴的執行緒資源。因此當 TMA 執行非同步傳輸時,執行緒可以專注於共享記憶體和 Tensor Core 之間的工作,就像這樣

TMA 從全局記憶體獲取記憶體到共享記憶體(200 個週期)。資料到達後,TMA 就會從全局記憶體中非同步獲取下一個資料塊。這樣,執行緒從共享記憶體載入資料並通過張量核心執行矩陣乘法。執行緒完成後,它們等待 TMA 完成下一個資料傳輸,然後重複該序列。

由於非同步性質,TMA 讀取的第二個全局記憶體已經線上程處理當前共享記憶體塊時進行。這意味著第二次讀取僅需 200 – 34 – 1 = 165 個週期。

由於我們進行了多次讀取,只有第一個記憶體訪問會很慢,所有其他記憶體訪問將與 TMA 部分重疊。因此平均而言,我們將時間減少了 35 個週期。

165 個週期(等待 TMA 完成)+ 34 個週期(共享記憶體)+ 1 個週期(Tensor Core)= 200 個週期。這又將矩陣乘法加速了 15%。

從這些示例中可以清楚地看出為什麼下一個屬性記憶體頻寬對於配備 Tensor-Core 的 GPU 如此重要。由於全局記憶體是迄今為止使用 Tensor Core 進行矩陣乘法的最大週期成本,如果可以減少全局記憶體延遲,我們甚至可以擁有更快的 GPU。我們可以通過增加記憶體的時脈頻率(每秒更多的週期,但也有更多的熱量和更高的供電需求)或增加可以在任何時間傳輸的元素數量(總線寬度)來做到這一點。

記憶體頻寬

我們已經知道 Tensor Core 是非常快的,事實上,它們大部分時間都處於空閒狀態,因為它們正在等待記憶體從全局記憶體到達。例如,在使用巨大矩陣的 GPT-3 訓練期間(模型越大,對 Tensor Core 越友好)我們的 Tensor Core TFLOPS 利用率約為 45-65%,這意味著即使對於大型神經網路也有大約 50% 時間處於閒置狀態。

所以當比較兩個有 Tensor Core 的 GPU 時,GPU 性能的最重要指標之一是它們的記憶體頻寬。例如 A100 GPU 的記憶體頻寬為 1,555 GB/s,而 V100 為 900 GB/s。因此,A100 與 V100 的加速比基本估計為 1555/900 = 1.73 倍。

L2 快取 / 共享記憶體 / L1 快取 / 暫存器

由於記憶體傳輸到 Tensor Core 是性能的限制因素,我們應當尋求更快的記憶體傳輸到 Tensor Cores 的方式。二級快取、共享記憶體、一級快取和使用的暫存器數量與該速度都是相關的。

為了執行矩陣乘法,我們利用了 GPU 的記憶體層次結構,從慢速全局記憶體到更快的 L2 記憶體,再到快速本地共享記憶體,再到快如閃電的暫存器。但是,記憶體越快,它就越小。

雖然從邏輯上講,L2 和 L1 記憶體相同,但 L2 快取更大,因此檢索快取行需要遍歷的平均物理距離更大。你可以將 L1 和 L2 快取視為有組織的倉庫,可以在其中檢索項目。你知道物品在哪裡,但是對於較大的倉庫來說,去那裡平均需要更長的時間。這就是 L1 和 L2 快取的本質區別:大 = 慢,小 = 快。

對於矩陣乘法,我們可以使用這種層次把結構分割開,用更快的記憶體塊來執行快速的矩陣乘法。為此,我們需要將大矩陣乘法分塊為更小的子矩陣乘法。這些塊稱為記憶體塊,或通常簡稱為塊(tile)。

我們在快速且接近流式多處理器 (SM,相當於 CPU 核心)的本地共享記憶體中對這些較小的塊執行矩陣乘法。對於 Tensor Cores 則更進一步:我們獲取每個塊並將這些塊的一部分載入到 Tensor Core 中,這些 Tensor Core 由暫存器直接定址。L2 快取中的矩陣記憶體塊比全局 GPU 記憶體(GPU RAM)快 3-5 倍,共享記憶體比全局 GPU 記憶體快約 7-10 倍,而 Tensor Cores 的暫存器比全局 GPU 記憶體快約 200 倍。

擁有更大的塊意味著我們可以重用更多的記憶體。事實上,你可以看到 TPU 的每個 Tensor Core 都有非常非常大的塊。因此,TPU 可以在每次從全局記憶體傳輸時重用更多的記憶體,這使得它們在矩陣乘法方面比 GPU 更高效。

每個塊大小取決於每個流式多處理器 (SM) 有多少記憶體,以及所有 SM 有多少二級快取。我們在以下架構上有以下共享記憶體大小:

  • Volta (Titan V):128kb 共享記憶體 / 6 MB L2
  • Turing(RTX 20 系):96 kb 共享記憶體 / 5.5 MB L2
  • Ampere(RTX 30 系):128 kb 共享記憶體 / 6 MB L2
  • Ada(RTX 40 系):128 kb 共享記憶體 / 72 MB L2

顯然 Ada 有很大的 L2 快取,允許更大的塊體量,這減少了全局記憶體訪問。例如在 BERT large 在訓練期間,任何矩陣乘法的輸入和權重矩陣都可以很好地適合 Ada 的 L2 快取,更早期的英偉達 GPU 則不然。因此,資料只需從全局記憶體載入一次,然後可通過 L2 快取使用,使 Ada 的這種架構的矩陣乘法速度提高約 1.5-2.0 倍。對於較大的模型,訓練期間的加速比較低,但存在某些最佳點可能會使某些模型更快。推理時,batch size 大於 8 也可以從更大的 L2 快取中獲益匪淺。

Ada / Hopper 架構的深度學習性能

英偉達已經在廣泛的計算機視覺和自然語言理解任務中對 A100、V100 和 H100 進行了基準測試。不幸的是,英偉達的測試通過儘可能使用不同的 batch size 和 GPU 數量來確保這些數字不能直接比較,以支持 H100 更好的結果。因此從某種意義上說,基準數字部分是誠實的,部分是營銷數字。你可能會爭辯說使用更大的 batch size 是公平的,因為 H100/A100 有更多記憶體。儘管如此,為了比較 GPU 架構,我們應該評估具有相同 batch size 的無偏記憶體性能。

為獲得無偏估計,我們可以通過兩種方式擴展資料中心 GPU 結果:(1) 考慮 batch size 的差異,(2) 考慮使用 1 塊 GPU 與 8 塊 GPU 的差異。幸運的是,我們可以在英偉達提供的資料中找到對這兩種偏差的估計。

將 batch size 加倍可將 CNN 網路的圖像 / 秒吞吐量提高 13.6%。在我的 RTX Titan 上對 transformer 的相同問題進行了基準測試,結果令人驚訝地發現了完全相同的結果:13.5%—— 這似乎是一個可靠的估計。

隨著我們在越來越多的 GPU 上並行化網路,我們會因為一些網路開銷而損失性能。A100 8x GPU 系統具有比 V100 8x GPU 系統(NVLink 2.0)更好的網路(NVLink 3.0)—— 這是另一個第三方因素。直接看英偉達的資料我們可以發現,對於 CNN,8x A100 的系統比 8x V100 的系統開銷低 5%。這意味著如果從 1x A100 提升到 8x A100 進行加速,比如得到了 7.00x,那麼從 1x V100 到 8x V100 只能給你 6.67x 的加速。對於 transformer,這個數字是 7%。

使用這些數字,我們可以從英偉達提供的直接資料中估計一些特定深度學習架構的加速。與 Tesla V100 相比,A100 提供以下加速:

  • SE-ResNeXt101:1.43x
  • Masked-R-CNN:1.47x
  • Transformer(12 層,機器翻譯,WMT14 en-de):1.70x

這些數字略低於計算機視覺的理論估計值。這可能是由於較小的張量維度、準備矩陣乘法所需的操作(如 img2col 或快速傅立葉變換,FFT)的開銷,或者無法使 GPU 飽和的操作(最終層通常相對較小)。它也可能是特定架構(分組卷積)的產物。

實際 transformer 估計值非常接近理論估計值。這可能是因為巨大矩陣的演算法非常簡單。我將使用這些實際估算來計算 GPU 的成本效率。

需要注意的是,以上估算值適用於 H100、A100 和 V100 GPU。英偉達曾在「遊戲用」的 RTX GPU 中偷偷降低了未宣佈的性能:(1) 降低 Tensor Core 利用率,(2) 用於冷卻的風扇,(3) 禁用點對點 GPU 傳輸。與完整的 Hopper H100 相比,RTX 40 系列可能存在未明確的性能下降。

RTX 40 系列的優劣

與英偉達 Turing RTX 20 系列相比,新的 Ampere RTX 30 系列具有額外的優勢,例如稀疏網路訓練和推理能力。其他功能,如新資料類型,應該更多地被視為一種易於使用的功能,因為它們提供與 Turing 相同的性能提升,但不需要任何額外的程式設計。

Ada RTX 40 系列還有更進一步的改進,例如上面介紹的張量記憶體加速器 (TMA) 和 8 位浮點數 (FP8)。與 RTX 30 相比,40 系也存在類似的功率和溫度問題。通過正確連接電源線,可以避免 RTX 40 中電源聯結器電纜熔化的問題。

稀疏網路訓練

Ampere 允許以密集的速度進行細粒度結構自動稀疏矩陣乘法。這是如何運作的?取一個權重矩陣並將其分成 4 個元素的片段。現在想象這 4 個中的 2 個元素為零。如下圖所示:

圖 1:Ampere GPU 中稀疏矩陣乘法功能支持的結構。

當你將此稀疏權重矩陣與一些密集輸入相乘時,Ampere 中的稀疏矩陣張量核心功能會自動將稀疏矩陣壓縮為大小一半的密集表示,如下圖所示。壓縮後密集壓縮矩陣塊被送入張量核心,該核心計算兩倍於通常大小的矩陣乘法。這有效地產生了 2 倍加速,因為從共享記憶體進行矩陣乘法期間的頻寬要求減半。

圖 2:稀疏矩陣在執行矩陣乘法之前被壓縮為密集表示。

低精度計算

在我的工作中,我之前已經證明新資料類型可以提高低精度在反向傳播過程中的穩定性 (https://arxiv.org/abs/1511.04561)。

圖 4:低精度深度學習 8 位資料類型。深度學習訓練受益於高度專業化的資料類型。

但使用 BF16 精度,訓練可能比使用 FP16 精度更穩定,同時提供相同的加速。使用 TF32 精度,你可以獲得接近 FP32 的穩定性,同時提供接近 FP16 的加速。另外要使用這些資料類型,只需要將 FP32 替換為 TF32,將 FP16 替換為 BF16—— 無需更改程式碼!

風扇設計的問題

雖然目前 GPU 的設計充分考慮了散熱,但如果將多個 GPU 彼此相鄰堆疊,過熱情況仍可能發生。一個解決方案是使用 PCIe 擴展器在 GPU 之間創造空間。

‍圖 5:帶有 PCIe 擴展器的 4 塊 GPU。

‍電源設計和插槽問題

RTX 3090 和 RTX 4090 是 3 插槽 GPU,因此無法在採用英偉達默認風扇設計的 4x 設置中使用它。這自然有其道理,因為它以超過 350W TDP 運行,並且在多 GPU 雙插槽設置中很難冷卻。RTX 3080 僅在 320W TDP 時稍好一些,冷卻 4x RTX 3080 配置也將非常困難。

在 4x RTX 3090 或 4x RTX 4090 機箱中也很難為 4x 350W = 1400W 或 4x 450W = 1800W 系統供電。1600W 的電源 (PSU) 很容易買到,但只有 200W 為 CPU 和主板供電可能太緊張了。元件的最大功率只有在元件被充分利用的情況下才會使用,而在深度學習中,CPU 通常只是處於弱負載狀態。因此,1600W PSU 可能與 4x RTX 3080 配合得很好,但對於 4x RTX 3090 ,最好尋找高瓦數 PSU (+1700W)。

請務必注意並非所有插座都支持 1600W 以上的 PSU,尤其是在美國。如果你買到伺服器級 PSU,請注意外形尺寸 —— 確保它適合你的機箱。

你也可以在 GPU 上設置功率限制,以程式設計方式將 RTX 3090 的功率限制設置為 300W,而不是其標準的 350W。在 4x GPU 系統中,這節省了 200W,這可能足以構建具有 1600W PSU 的 4x RTX 3090 系統。它還有助於使 GPU 保持低溫。因此,設置功率限制可以同時解決 4x RTX 3080 或 4x RTX 3090 設置、冷卻和功率的兩個主要問題。對於 4x 配置,仍然需要有效的大風扇 GPU(標準設計可能足以滿足此要求),但這至少解決了供電問題。

圖 6:降低功率限制具有輕微的冷卻效果。

你肯定會問,「這不會降低 GPU 的速度嗎?」是的,但問題在於降低了多少。我在不同的功率限制下對圖 5 所示的 4x RTX 2080 Ti 系統進行了基準測試。在推理期間對 BERT Large 的 500 個小 batch 的時間進行了基準測試(不包括 softmax 層)。我選擇 BERT Large inference,因為根據我的經驗,這是對 GPU 壓力最大的深度學習模型。因此,我預計功率限制對該模型的影響最大。因此,此處報告的減速可能接近你可以預期的最大減速。結果如下圖所示:

圖 7:在 RTX 2080 Ti 上給定功率限制下測得的減速。所採取的測量是推理期間 500 個 BERT Large mini-batches 的平均處理時間(不包括 softmax 層)。

可見,設置功率限制不會嚴重影響性能。將功率限制為降 50W 足以帶動 4x RTX 3090,性能僅降低 7%。

H100 和 RTX 40 中的 8 位浮點數支持

支持 8 位浮點數 (FP8) 是 RTX 40 系列和 H100 GPU 的巨大優勢。使用 8 位輸入,它可以讓你以兩倍的速度載入矩陣乘法的資料,在快取中儲存兩倍的矩陣元素,現在使用 FP8 張量核心,你可以用一塊 RTX 4090 獲得 0.66 PFLOPS 的算力,這比 2007 年世界上最快的超級計算機的 FLOPS 還要多。

使用 8 位精度的主要問題是:transformer 在訓練過程中使用如此少的位會變得非常不穩定和易崩潰,或者在推理過程中產生無意義的結果。

但 RTX 30 / A100 / Ampere 一代 GPU 已經支持 Int8,為什麼 RTX 40 中的 FP8 又是一次大升級?FP8 資料類型比 Int8 資料類型穩定得多,並且很容易在層範數或非線性函數等函數中使用它,而這些函數很難用整數(Integer)資料類型來實現。這將使在訓練和推理中使用它變得非常簡單,我認為 FP8 訓練和推理會在幾個月內變得逐漸流行起來。

針對不同資料類型的 Pythia 大語言模型的 4-bit 推理擴展比例。可以看到與 Int4 資料類型相比,逐位的 4 位浮點資料類型具有更好的 zeroshot 精度。

GPU 純性能排名

下圖是所有 GPU 的原始相關性能圖表。我們看到 H100 GPU 的 8 位性能與針對 16 位性能最佳化的舊卡相比存在巨大優勢。

這裡展示的是 GPU 的原始相對性能。例如,對於 8 位推理,RTX 4090 的性能大約是 H100 SMX 的 0.33 倍。換句話說,與 RTX 4090 相比,H100 SMX 的 8 位推理速度快三倍。

對於此資料,我沒有為舊 GPU 建模 8 位計算速度,這樣做的原因是 8 位推理和訓練在 Ada/Hopper GPU 上更有效,因為張量記憶體加速器 (TMA) 節省了大量暫存器,這些暫存器在 8 位矩陣乘法中非常精確。Ada/Hopper 也有 FP8 支持,這使得特別是 8 位訓練更加有效。我沒有為 8 位訓練建模數字,因為這需要知道 Hopper/Ada GPU 上 L1 和 L2 快取的延遲,它們是未知的,我無法訪問此類 GPU。

在 Hopper/Ada 上,8 位訓練性能很可能是 16 位訓練性能的 3-4 倍,如果快取像傳聞的那樣快的話。對於舊 GPU,它們的 Int8 推理性能接近 16 位推理性能。

深度學習 GPU 價效比

下面是按 8 位推理性能排序的所有 GPU 價效比圖表。選擇適合的 GPU 時需要:

1. 確定你需要的 GPU 記憶體(例如至少 12 GB 用於圖像生成,至少 24 GB 用於處理 transformer)

2. 雖然 8 位推理和訓練是實驗性的,但將在 6 個月內成為標準。在此期間,你可能需要做一些額外的困難編碼才能使用 8 位。對於你來說這是可接受的嗎?如果不是,請只看 16 位性能。

3. 使用 (2) 中確定的指標,找到具有所需記憶體量的相對性能 / 美元最高的 GPU。

可以看到,RTX 4070 Ti 對於 8 位和 16 位推理的成本效益最高,而 RTX 3080 對於 16 位訓練的成本效益仍然最高。雖然這些 GPU 價效比看來挺高,但不一定推薦使用它們,因為它們沒有足夠的記憶體用於許多用例,但它可能是你開始深度學習之旅的理想 GPU。其中一些 GPU 非常適合 Kaggle 競賽。在資料競賽中,人們通常可以依賴較小的模型,想要取得好成績,工作方法比模型大小更重要。

用於學術和啟動伺服器的最佳 GPU 似乎是 A6000 Ada GPU(注意不要與 A6000 Turing 混淆)。H100 SXM 的價效比也很高,記憶體大,性能非常強。如果我要為公司 / 學術實驗室構建一個小型集群,我會使用 66-80% 的 A6000 GPU 和 20-33% 的 H100 SXM GPU。如果我在買 L40 GPU 時能獲得折扣價,我也會選擇它們而不是 A6000,因此請關注這些 GPU 的報價。

這裡顯示的是每美元 GPU 的相對性能,按臺式計算機的成本和每塊 GPU 的亞馬遜和 eBay 平均價格歸一化。例如,與 RTX 3090 GPU 相比,配備 RTX 4070 Ti 卡的臺式計算機每美元產生的 8 位推理性能高出約 2 倍。

GPU 推薦

我創建了一個推薦流程圖。這個圖表在 80% 的情況下可以幫助到你,但也可能也不完全使用,因為有些選項太過昂貴了。如果是這樣,你可以試著看一下上面的基準,並選擇價效比最高的 GPU,仍然能滿足你的日常使用。

具體來說,你可以通過在 vast.ai 或 Lambda Cloud 中運行你的問題來估計所需的 GPU 記憶體。如果你只是需要一個不常用的 GPU(每隔幾天用那麼幾個小時),而且不需要下載和處理大型資料集就可以開始工作,那麼 vast.ai 或 Lambda 雲可能也很好用。但如果你會連續幾個月使用 GPU,並且每天都有很高的使用率(如每天 12 小時),雲 GPU 通常不是一個好的選擇。

Ada/Hopper GPU 的推薦表。按照是 / 否問題的答案,可以找到最適合你的 GPU。使用上面的成本 / 性能圖表來進行選擇吧。

我直接等 RTX 50 系?

為了理解跳過這一代而購買下一代 GPU 是否有意義,我們有必要談一談未來的 GPU 改進會是什麼樣子。

過去,通過縮小電晶體的尺寸可以提高處理器的速度,而這種狀態即將終結。例如,雖然縮小 SRAM 曾經可以提高其速度,但目前對 SRAM 的改進並沒有再提高其性能,甚至可能是「負面改進」。雖然張量核心等邏輯變得更小,但這並不一定能使 GPU 更快,因為矩陣乘法的主要問題是將記憶體送到張量核心,這是由 SRAM 和 GPU RAM 的速度和大小決定的。

如果我們將記憶體模組堆疊成高頻寬模組(HBM3+),GPU RAM 的速度仍然會提高,但對於消費者應用來說,這些模組的製造成本太高。提高 GPU 原始速度的主要方法是使用更多的功率和更多的冷卻,正如我們在 RTX 30 和 40 系列中看到的那樣。但這種情況不能再持續下去了。

諸如 AMD CPU 所使用的晶片是另一種改進方式。AMD 通過開發 CPU 芯粒擊敗了英特爾。芯粒是指用高速片上網路融合在一起的小晶片,你可以把它們看作是兩個物理層面非常接近的 GPU,也可以看作是一個單一的大 GPU。它們的製造成本較低,但要組合成一個大的晶片卻比較困難。因此,你需要專有技術和芯粒之間的快速連接。

AMD 在芯粒設計方面有很多經驗,其下一代 GPU 將採用晶片組設計,而英偉達目前沒有公開的此類設計計劃。這可能意味著,與英偉達的 GPU 相比,下一代的 AMD GPU 在成本或性能方面可能表現更好。

然而,目前 GPU 的主要性能提升屬於專業邏輯。例如,張量儲存器加速器(TMA)單元節省了寶貴的暫存器,這些暫存器現在被釋放出來以進行更多的計算。這對 8 位計算尤為重要。

總體來說,低位精度是幾年內的另一個直接的發展方向。在接下來的幾個月裡,我們將看到 8 位推理和訓練的廣泛採用,以及在明年看到 4 位推理的普及。目前,4 位的訓練技術並不存在,但看起來很有希望,我預計在 1-2 年內將訓練出第一個具有競爭性預測性能的高性能 FP4 大型語言模型(LLM)。

目前,將訓練精度提高到 2 位估計是不可能的,但這是一個比進一步縮小電晶體更容易的問題。因此,硬體方面的進展主要取決於軟體和演算法,這些軟體和演算法使我們有可能使用硬體提供的專門功能。

我們可能仍將能夠改進演算法 + 硬體的組合,直到 2032 年,那之後將遇到 GPU 提升的終點(類似智慧手機)。2032 年之後的性能提升浪潮將來自更好的網路演算法和大規模硬體。目前還不能確定消費級 GPU 是否會與此相關。或許,你需要 RTX 9090 來運行 Super HyperStableDiffusion Ultra Plus 9000 Extra 或 OpenChatGPT 5.0,但也可能有一些公司會提供高質量的 API,比 RTX 9090 的電費更便宜,讓你希望用筆記本 + API 來生成圖像和其他任務。

最後,我認為買 8 位精度的 GPU 將是未來九年內一項非常可靠的投資。4 位和 2 位的改進可能很小,而像排序核心這樣的其他功能只有在稀疏矩陣乘法能夠得到很好利用時才會變得相關。我們可能會在 2-3 年內看到一些其他的進步,這些進步會在 4 年後的下一個 GPU 中出現,但是如果我們繼續依賴矩陣乘法,我們就會耗盡精力。

參考內容:

https://timdettmers.com/2023/01/16/which-gpu-for-deep-learning/#RTX_4090s_and_Melting_Power_Connectors_How_to_Prevent_Problems

相關文章

英偉達又「拔」了一下 AI 的上限

英偉達又「拔」了一下 AI 的上限

AI 繼續加速,解鎖了哪些新場景? 作者 | 宛辰編輯| 鄭玄 今年的 GTC,老黃又放了一堆「核彈」。 9 月 20 日晚上 11 點,英...

ChatGPT 背後的經濟賬

ChatGPT 背後的經濟賬

拿投資和賺錢之前,要先去了解下成本。 ChatGPT 能否取代 Google、百度這樣的傳統搜尋引擎?為什麼中國不能很快做出 ChatGPT...