博客專欄

EEPW首頁(yè) > 博客 > RTX 40時(shí)代,給深度學(xué)習(xí)買的顯卡居然能保值9年?仔細(xì)一算繃不住了(2)

RTX 40時(shí)代,給深度學(xué)習(xí)買的顯卡居然能保值9年?仔細(xì)一算繃不住了(2)

發(fā)布人:機(jī)器之心 時(shí)間:2023-01-17 來源:工程師 發(fā)布文章

RTX 40 系列的優(yōu)劣


與英偉達(dá) Turing RTX 20 系列相比,新的 Ampere RTX 30 系列具有額外的優(yōu)勢(shì),例如稀疏網(wǎng)絡(luò)訓(xùn)練和推理能力。其他功能,如新數(shù)據(jù)類型,應(yīng)該更多地被視為一種易于使用的功能,因?yàn)樗鼈兲峁┡c Turing 相同的性能提升,但不需要任何額外的編程。


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


稀疏網(wǎng)絡(luò)訓(xùn)練


Ampere 允許以密集的速度進(jìn)行細(xì)粒度結(jié)構(gòu)自動(dòng)稀疏矩陣乘法。這是如何運(yùn)作的?取一個(gè)權(quán)重矩陣并將其分成 4 個(gè)元素的片段?,F(xiàn)在想象這 4 個(gè)中的 2 個(gè)元素為零。如下圖所示:



圖片

圖 1:Ampere GPU 中稀疏矩陣乘法功能支持的結(jié)構(gòu)。


當(dāng)你將此稀疏權(quán)重矩陣與一些密集輸入相乘時(shí),Ampere 中的稀疏矩陣張量核心功能會(huì)自動(dòng)將稀疏矩陣壓縮為大小一半的密集表示,如下圖所示。壓縮后密集壓縮矩陣塊被送入張量核心,該核心計(jì)算兩倍于通常大小的矩陣乘法。這有效地產(chǎn)生了 2 倍加速,因?yàn)閺墓蚕韮?nèi)存進(jìn)行矩陣乘法期間的帶寬要求減半。


圖片

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


低精度計(jì)算


在我的工作中,我之前已經(jīng)證明新數(shù)據(jù)類型可以提高低精度在反向傳播過程中的穩(wěn)定性 (https://arxiv.org/abs/1511.04561)。


圖片

圖 4:低精度深度學(xué)習(xí) 8 位數(shù)據(jù)類型。深度學(xué)習(xí)訓(xùn)練受益于高度專業(yè)化的數(shù)據(jù)類型。


但使用 BF16 精度,訓(xùn)練可能比使用 FP16 精度更穩(wěn)定,同時(shí)提供相同的加速。使用 TF32 精度,你可以獲得接近 FP32 的穩(wěn)定性,同時(shí)提供接近 FP16 的加速。另外要使用這些數(shù)據(jù)類型,只需要將 FP32 替換為 TF32,將 FP16 替換為 BF16—— 無需更改代碼!


風(fēng)扇設(shè)計(jì)的問題


雖然目前 GPU 的設(shè)計(jì)充分考慮了散熱,但如果將多個(gè) GPU 彼此相鄰堆疊,過熱情況仍可能發(fā)生。一個(gè)解決方案是使用 PCIe 擴(kuò)展器在 GPU 之間創(chuàng)造空間。


圖片

圖 5:帶有 PCIe 擴(kuò)展器的 4 塊 GPU。


電源設(shè)計(jì)和插槽問題


RTX 3090 和 RTX 4090 是 3 插槽 GPU,因此無法在采用英偉達(dá)默認(rèn)風(fēng)扇設(shè)計(jì)的 4x 設(shè)置中使用它。這自然有其道理,因?yàn)樗猿^ 350W TDP 運(yùn)行,并且在多 GPU 雙插槽設(shè)置中很難冷卻。RTX 3080 僅在 320W TDP 時(shí)稍好一些,冷卻 4x RTX 3080 配置也將非常困難。


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


請(qǐng)務(wù)必注意并非所有插座都支持 1600W 以上的 PSU,尤其是在美國(guó)。如果你買到服務(wù)器級(jí) PSU,請(qǐng)注意外形尺寸 —— 確保它適合你的機(jī)箱。


你也可以在 GPU 上設(shè)置功率限制,以編程方式將 RTX 3090 的功率限制設(shè)置為 300W,而不是其標(biāo)準(zhǔn)的 350W。在 4x GPU 系統(tǒng)中,這節(jié)省了 200W,這可能足以構(gòu)建具有 1600W PSU 的 4x RTX 3090 系統(tǒng)。它還有助于使 GPU 保持低溫。因此,設(shè)置功率限制可以同時(shí)解決 4x RTX 3080 或 4x RTX 3090 設(shè)置、冷卻和功率的兩個(gè)主要問題。對(duì)于 4x 配置,仍然需要有效的大風(fēng)扇 GPU(標(biāo)準(zhǔn)設(shè)計(jì)可能足以滿足此要求),但這至少解決了供電問題。



圖片

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


你肯定會(huì)問,「這不會(huì)降低 GPU 的速度嗎?」是的,但問題在于降低了多少。我在不同的功率限制下對(duì)圖 5 所示的 4x RTX 2080 Ti 系統(tǒng)進(jìn)行了基準(zhǔn)測(cè)試。在推理期間對(duì) BERT Large 的 500 個(gè)小 batch 的時(shí)間進(jìn)行了基準(zhǔn)測(cè)試(不包括 softmax 層)。我選擇 BERT Large inference,因?yàn)楦鶕?jù)我的經(jīng)驗(yàn),這是對(duì) GPU 壓力最大的深度學(xué)習(xí)模型。因此,我預(yù)計(jì)功率限制對(duì)該模型的影響最大。因此,此處報(bào)告的減速可能接近你可以預(yù)期的最大減速。結(jié)果如下圖所示:



圖片

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


可見,設(shè)置功率限制不會(huì)嚴(yán)重影響性能。將功率限制為降 50W 足以帶動(dòng) 4x RTX 3090,性能僅降低 7%。


H100 和 RTX 40 中的 8 位浮點(diǎn)數(shù)支持


支持 8 位浮點(diǎn)數(shù) (FP8) 是 RTX 40 系列和 H100 GPU 的巨大優(yōu)勢(shì)。使用 8 位輸入,它可以讓你以兩倍的速度加載矩陣乘法的數(shù)據(jù),在緩存中存儲(chǔ)兩倍的矩陣元素,現(xiàn)在使用 FP8 張量核心,你可以用一塊 RTX 4090 獲得 0.66  PFLOPS 的算力,這比 2007 年世界上最快的超級(jí)計(jì)算機(jī)的 FLOPS 還要多。


使用 8 位精度的主要問題是:transformer 在訓(xùn)練過程中使用如此少的位會(huì)變得非常不穩(wěn)定和易崩潰,或者在推理過程中產(chǎn)生無意義的結(jié)果。


圖片


但 RTX 30 / A100 / Ampere 一代 GPU 已經(jīng)支持 Int8,為什么 RTX 40 中的 FP8 又是一次大升級(jí)?FP8 數(shù)據(jù)類型比 Int8 數(shù)據(jù)類型穩(wěn)定得多,并且很容易在層范數(shù)或非線性函數(shù)等函數(shù)中使用它,而這些函數(shù)很難用整數(shù)(Integer)數(shù)據(jù)類型來實(shí)現(xiàn)。這將使在訓(xùn)練和推理中使用它變得非常簡(jiǎn)單,我認(rèn)為 FP8 訓(xùn)練和推理會(huì)在幾個(gè)月內(nèi)變得逐漸流行起來。


圖片


針對(duì)不同數(shù)據(jù)類型的 Pythia 大語(yǔ)言模型的 4-bit 推理擴(kuò)展比例??梢钥吹脚c Int4 數(shù)據(jù)類型相比,逐位的 4 位浮點(diǎn)數(shù)據(jù)類型具有更好的 zeroshot 精度。


GPU 純性能排名


下圖是所有 GPU 的原始相關(guān)性能圖表。我們看到 H100 GPU 的 8 位性能與針對(duì) 16 位性能優(yōu)化的舊卡相比存在巨大優(yōu)勢(shì)。


圖片


這里展示的是 GPU 的原始相對(duì)性能。例如,對(duì)于 8 位推理,RTX 4090 的性能大約是 H100 SMX 的 0.33 倍。換句話說,與 RTX 4090 相比,H100 SMX 的 8 位推理速度****倍。


對(duì)于此數(shù)據(jù),我沒有為舊 GPU 建模 8 位計(jì)算速度,這樣做的原因是 8 位推理和訓(xùn)練在 Ada/Hopper GPU 上更有效,因?yàn)閺埩績(jī)?nèi)存加速器 (TMA) 節(jié)省了大量寄存器,這些寄存器在 8 位矩陣乘法中非常精確。Ada/Hopper 也有 FP8 支持,這使得特別是 8 位訓(xùn)練更加有效。我沒有為 8 位訓(xùn)練建模數(shù)字,因?yàn)檫@需要知道 Hopper/Ada GPU 上 L1 和 L2 緩存的延遲,它們是未知的,我無法訪問此類 GPU。


在 Hopper/Ada 上,8 位訓(xùn)練性能很可能是 16 位訓(xùn)練性能的 3-4 倍,如果緩存像傳聞的那樣快的話。對(duì)于舊 GPU,它們的 Int8 推理性能接近 16 位推理性能。


深度學(xué)習(xí) GPU 性價(jià)比


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


1. 確定你需要的 GPU 內(nèi)存(例如至少 12 GB 用于圖像生成,至少 24 GB 用于處理 transformer)2. 雖然 8 位推理和訓(xùn)練是實(shí)驗(yàn)性的,但將在 6 個(gè)月內(nèi)成為標(biāo)準(zhǔn)。在此期間,你可能需要做一些額外的困難編碼才能使用 8 位。對(duì)于你來說這是可接受的嗎?如果不是,請(qǐng)只看 16 位性能。3. 使用 (2) 中確定的指標(biāo),找到具有所需內(nèi)存量的相對(duì)性能 / 美元最高的 GPU。


可以看到,RTX 4070 Ti 對(duì)于 8 位和 16 位推理的成本效益最高,而 RTX 3080 對(duì)于 16 位訓(xùn)練的成本效益仍然最高。雖然這些 GPU 性價(jià)比看來挺高,但不一定推薦使用它們,因?yàn)樗鼈儧]有足夠的內(nèi)存用于許多用例,但它可能是你開始深度學(xué)習(xí)之旅的理想 GPU。其中一些 GPU 非常適合 Kaggle 競(jìng)賽。在數(shù)據(jù)競(jìng)賽中,人們通??梢砸蕾囕^小的模型,想要取得好成績(jī),工作方法比模型大小更重要。


用于學(xué)術(shù)和啟動(dòng)服務(wù)器的最佳 GPU 似乎是 A6000 Ada GPU(注意不要與 A6000 Turing 混淆)。H100 SXM 的性價(jià)比也很高,內(nèi)存大,性能非常強(qiáng)。如果我要為公司 / 學(xué)術(shù)實(shí)驗(yàn)室構(gòu)建一個(gè)小型集群,我會(huì)使用 66-80% 的 A6000 GPU 和 20-33% 的 H100 SXM GPU。如果我在買 L40 GPU 時(shí)能獲得折扣價(jià),我也會(huì)選擇它們而不是 A6000,因此請(qǐng)關(guān)注這些 GPU 的報(bào)價(jià)。


圖片

這里顯示的是每美元 GPU 的相對(duì)性能,按臺(tái)式計(jì)算機(jī)的成本和每塊 GPU 的亞馬遜和 eBay 平均價(jià)格歸一化。例如,與 RTX 3090 GPU 相比,配備 RTX 4070 Ti 卡的臺(tái)式計(jì)算機(jī)每美元產(chǎn)生的 8 位推理性能高出約 2 倍。


GPU 推薦


我創(chuàng)建了一個(gè)推薦流程圖。這個(gè)圖表在 80% 的情況下可以幫助到你,但也可能也不完全使用,因?yàn)橛行┻x項(xiàng)太過昂貴了。如果是這樣,你可以試著看一下上面的基準(zhǔn),并選擇性價(jià)比最高的 GPU,仍然能滿足你的日常使用。


具體來說,你可以通過在 vast.ai 或 Lambda Cloud 中運(yùn)行你的問題來估計(jì)所需的 GPU 內(nèi)存。如果你只是需要一個(gè)不常用的 GPU(每隔幾天用那么幾個(gè)小時(shí)),而且不需要下載和處理大型數(shù)據(jù)集就可以開始工作,那么 vast.ai 或 Lambda 云可能也很好用。但如果你會(huì)連續(xù)幾個(gè)月使用 GPU,并且每天都有很高的使用率(如每天 12 小時(shí)),云 GPU 通常不是一個(gè)好的選擇。


圖片

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


我直接等 RTX 50 系? 


為了理解跳過這一代而購(gòu)買下一代 GPU 是否有意義,我們有必要談一談未來的 GPU 改進(jìn)會(huì)是什么樣子。


過去,通過縮小晶體管的尺寸可以提高處理器的速度,而這種狀態(tài)即將終結(jié)。例如,雖然縮小 SRAM 曾經(jīng)可以提高其速度,但目前對(duì) SRAM 的改進(jìn)并沒有再提高其性能,甚至可能是「負(fù)面改進(jìn)」。雖然張量核心等邏輯變得更小,但這并不一定能使 GPU 更快,因?yàn)榫仃嚦朔ǖ闹饕獑栴}是將內(nèi)存送到張量核心,這是由 SRAM 和 GPU RAM 的速度和大小決定的。


如果我們將內(nèi)存模塊堆疊成高帶寬模塊(HBM3+),GPU RAM 的速度仍然會(huì)提高,但對(duì)于消費(fèi)者應(yīng)用來說,這些模塊的制造成本太高。提高 GPU 原始速度的主要方法是使用更多的功率和更多的冷卻,正如我們?cè)?RTX 30 和 40 系列中看到的那樣。但這種情況不能再持續(xù)下去了。


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


AMD 在芯粒設(shè)計(jì)方面有很多經(jīng)驗(yàn),其下一代 GPU 將采用芯片組設(shè)計(jì),而英偉達(dá)目前沒有公開的此類設(shè)計(jì)計(jì)劃。這可能意味著,與英偉達(dá)的 GPU 相比,下一代的 AMD GPU 在成本或性能方面可能表現(xiàn)更好。


然而,目前 GPU 的主要性能提升屬于專業(yè)邏輯。例如,張量存儲(chǔ)器加速器(TMA)單元節(jié)省了寶貴的寄存器,這些寄存器現(xiàn)在被釋放出來以進(jìn)行更多的計(jì)算。這對(duì) 8 位計(jì)算尤為重要。


總體來說,低位精度是幾年內(nèi)的另一個(gè)直接的發(fā)展方向。在接下來的幾個(gè)月里,我們將看到 8 位推理和訓(xùn)練的廣泛采用,以及在明年看到 4 位推理的普及。目前,4 位的訓(xùn)練技術(shù)并不存在,但看起來很有希望,我預(yù)計(jì)在 1-2 年內(nèi)將訓(xùn)練出第一個(gè)具有競(jìng)爭(zhēng)性預(yù)測(cè)性能的高性能 FP4 大型語(yǔ)言模型(LLM)。


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


我們可能仍將能夠改進(jìn)算法 + 硬件的組合,直到 2032 年,那之后將遇到 GPU 提升的終點(diǎn)(類似智能手機(jī))。2032 年之后的性能提升浪潮將來自更好的網(wǎng)絡(luò)算法和大規(guī)模硬件。目前還不能確定消費(fèi)級(jí) GPU 是否會(huì)與此相關(guān)?;蛟S,你需要 RTX 9090 來運(yùn)行 Super HyperStableDiffusion Ultra Plus 9000 Extra 或 OpenChatGPT 5.0,但也可能有一些公司會(huì)提供高質(zhì)量的 API,比 RTX 9090 的電費(fèi)更便宜,讓你希望用筆記本 + API 來生成圖像和其他任務(wù)。


最后,我認(rèn)為買 8 位精度的 GPU 將是未來九年內(nèi)一項(xiàng)非??煽康耐顿Y。4 位和 2 位的改進(jìn)可能很小,而像排序核心這樣的其他功能只有在稀疏矩陣乘法能夠得到很好利用時(shí)才會(huì)變得相關(guān)。我們可能會(huì)在 2-3 年內(nèi)看到一些其他的進(jìn)步,這些進(jìn)步會(huì)在 4 年后的下一個(gè) GPU 中出現(xiàn),但是如果我們繼續(xù)依賴矩陣乘法,我們就會(huì)耗盡精力。


參考內(nèi)容:

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


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: 芯片

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉