2020年搞深度學(xué)習(xí)需要什么樣的GPU:請(qǐng)上48G顯存
眾所周知,當(dāng)今業(yè)界性能最強(qiáng)(SOTA)的深度學(xué)習(xí)模型都會(huì)占用巨大的顯存空間,很多過(guò)去性能算得上強(qiáng)勁的 GPU,現(xiàn)在可能稍顯內(nèi)存不足。在 lambda 最新的一篇顯卡橫向測(cè)評(píng)文章中,開(kāi)發(fā)者們探討了哪些 GPU 可以再不出現(xiàn)內(nèi)存錯(cuò)誤的情況下訓(xùn)練模型。當(dāng)然,還有這些 GPU 的 AI 性能。
今年的 GPU 評(píng)測(cè)相比往年有了不小的變化:因?yàn)樯疃葘W(xué)習(xí)技術(shù)的突飛猛進(jìn),以前 12G 內(nèi)存打天下的局面不復(fù)存在了。在 2020 年 2 月,你至少需要花費(fèi) 2500 美元買(mǎi)上一塊英偉達(dá)最新款的 Titan RTX 才可以勉強(qiáng)跑通業(yè)界性能最好的模型——那到今年年底會(huì)是什么樣就無(wú)法想象了?;蛟S我們應(yīng)該把目光轉(zhuǎn)向云端 GPU。
一、一句話總結(jié)
截止到 2020 年 2 月份,只有以下這幾種 GPU 可以訓(xùn)練所有業(yè)內(nèi)頂尖的語(yǔ)言和圖像模型:
- RTX 8000:48GB 顯存,約 5500 美元
- RTX 6000:24GB 顯存,約 4000 美元
- Titan RTX:24GB 顯存,約 2500 美元
以下 GPU 可以訓(xùn)練大多數(shù) SOTA 模型,但不是所有模型都能:
- RTX 2080Ti:11GB 顯存,約 1150 美元
- GTX 1080Ti:11GB 顯存,約 800 美元(二手)
- RTX 2080:8GB 顯存,約 720 美元
- RTX 2070:8GB 顯存,約 500 美元
超大規(guī)模的模型在這一級(jí)別的 GPU 上訓(xùn)練,通常需要調(diào)小 Batch size,這很可能意味著更低的準(zhǔn)確性。
以下 GPU 不太能用作高端 AI 模型的訓(xùn)練:
RTX 2060:6GB 顯存,約 359 美元
1. 圖像模型測(cè)試
為測(cè)試當(dāng)前 GPU 性能,研究者們以 CV 和 NLP 兩個(gè)方向的頂尖模型進(jìn)行了測(cè)試。處理圖像模型而言,基礎(chǔ)版 GPU 或 Ti 系的處理的效果都不是很好,且相互差異不大。
相較而言 RTX 的有明顯優(yōu)勢(shì)且以最新版的 RTX8000 最為突出,不難發(fā)現(xiàn)就目前為止對(duì)于 GPU 能處理的批量大小基本都是以 2 的倍數(shù)來(lái)提升。相較于性能方面,總體還是以 RTX 系為最優(yōu)。
(1) 顯存能支持的最大批量大小
如下如果要訓(xùn)練 Pix2Pix HD 模型,至少需要 24GB 的顯存,且批大小還只能是一張圖像。這主要因?yàn)檩斎雸D像為 2048x1024 的高清大圖,訓(xùn)練所需的顯存與計(jì)算都非常大。
帶*符號(hào)表示 GPU 顯存不足以運(yùn)行模型
(2) 性能(每秒處理的圖像數(shù)量)
這些都是大模型,連計(jì)算最快的神經(jīng)架構(gòu)搜索模型 NasNet Large,之前也一直以算力需求大著稱(chēng)。盡管訓(xùn)練 NasNet Large 的數(shù)據(jù)集是 ImageNet,其圖像分辨率只有 331x331。
帶*符號(hào)表示 GPU 顯存不足以運(yùn)行模型
2. 語(yǔ)言類(lèi)模型測(cè)試
對(duì)于語(yǔ)言類(lèi)模型而言,批量處理量方面依舊是 RTX 系為最優(yōu)。但單從性能角度而言,跟其他各款相比,Titan RTX 卻有著不錯(cuò)的表現(xiàn)。
(1) 顯存能支持的最大批量大小
如下前面三個(gè)都是機(jī)器翻譯模型,后面三個(gè)都是預(yù)訓(xùn)練語(yǔ)言模型。兩者的計(jì)數(shù)方式不太一樣,一條 Sequences 可能幾十到幾百個(gè) Token。
帶*符號(hào)表示 GPU 顯存不足以運(yùn)行模型
(2) 性能
帶*符號(hào)表示 GPU 顯存不足以運(yùn)行模型
3. 以 RTX 8000 為基準(zhǔn),向右看齊
上面的性能表格可能不夠直觀,lambda 以 Quadro RTX 8000 為基準(zhǔn),將其設(shè)定為「1」,其它 GPU 則針對(duì)該 GPU 計(jì)算出相對(duì)性能。如下所示為不同模型在不同 GPU 上進(jìn)行訓(xùn)練的數(shù)據(jù)吞吐量:
對(duì)于所有測(cè)試結(jié)果,lambda 給出了測(cè)試模型與數(shù)據(jù)集。如說(shuō)是 CV 中的各種任務(wù),其采用了 ImageNet、MSCOCO 和 CityScape 等主流主數(shù)據(jù)集,模型也直接用原作者在 GitHub 上開(kāi)源的代碼。如果是 NLP 中的各種任務(wù),除了 WMT 英-德數(shù)據(jù)集,其它 GLUE 基準(zhǔn)中的數(shù)據(jù)集也有采用。
從圖像識(shí)別、分割、檢測(cè)與生成,到機(jī)器翻譯、語(yǔ)言模型與 GLUE 基準(zhǔn),這些任務(wù)差不多覆蓋了 GPU 使用的絕大多數(shù)場(chǎng)景,這樣的測(cè)試也是比較合理了。
二、2020 年,深度學(xué)習(xí)需要什么樣的 GPU?
「舊模型」都跑不了,更別說(shuō)什么開(kāi)發(fā)新模型了??赐晟厦娴臏y(cè)試結(jié)果,是不是感覺(jué)「生活突然失去了夢(mèng)想」?除了硬件之外,我們還可以從本次測(cè)評(píng)中觀察到近段時(shí)間深度學(xué)習(xí)發(fā)展趨勢(shì)的變化:
- 語(yǔ)言模型比圖像模型更需要大容量顯存。注意語(yǔ)言模型那張圖的折線變化軌跡要比圖像模型那張更加陡峭。這表明語(yǔ)言模型受內(nèi)存的限制更大,而圖像模型受算力的限制更大。
- 顯存越高,意味著性能越強(qiáng)大。因?yàn)轱@存越大,batch size 就越大,CUDA 核可以更加接近滿負(fù)荷工作。
- 更大的顯存可以按比例用更大的 Batch size,以此推之:24GB 顯存的 GPU 相比 8GB 顯存的 GPU 可以用上 3 倍的 batch。
- 對(duì)于長(zhǎng)序列來(lái)說(shuō),語(yǔ)言模型的內(nèi)存占用增長(zhǎng)情況不成比例,因?yàn)樽⒁饬κ切蛄虚L(zhǎng)度的二次方。
有了這些認(rèn)識(shí),我們就可以愉快地挑選 GPU 了:
- RTX 2060(6GB):如果你想在業(yè)余時(shí)間探索深度學(xué)習(xí)。
- RTX 2070 或 2080(8GB):如果你想認(rèn)真地研究深度學(xué)習(xí),但用在 GPU 上的預(yù)算僅為 600-800 美元。8G 的顯存可以適用于大部分主流深度學(xué)習(xí)模型。
- RTX 2080Ti(11GB):如果你想要認(rèn)真地研究深度學(xué)習(xí),不過(guò)用在 GPU 上的預(yù)算可以到 1200 美元。RTX 2080Ti 在深度學(xué)習(xí)訓(xùn)練上要比 RTX 2080 快大約 40%。
- Titan RTX 和 Quadro RTX 6000(24GB):如果你經(jīng)常研究 SOTA 模型,但沒(méi)有富裕到能買(mǎi) RTX 8000 的話,可以選這兩款顯卡。
- Quadro RTX 8000(48GB):恭喜你,你的投入正面向未來(lái),你的研究甚至可能會(huì)成為 2020 年的新 SOTA。
三、GPU 太貴,我選擇薅羊毛
現(xiàn)在訓(xùn)練個(gè)模型,GPU 顯存至少得上 8GB,對(duì)應(yīng)的價(jià)格實(shí)在有點(diǎn)勸退。
其實(shí),很多大企業(yè)都推出了面向研究和實(shí)驗(yàn)的免費(fèi) GPU 計(jì)算資源,例如我們熟知的 Kaggle Kernel、Google Colab,它們能提供 K80 或 P100 這種非常不錯(cuò)的 GPU 資源,其中 Colab 還能提供免費(fèi) TPU。國(guó)內(nèi)其實(shí)也有免費(fèi) GPU,百度的 AI Studio 能提供 Tesla V100 這種強(qiáng)勁算力。
這三者都有各自的優(yōu)劣勢(shì),Kaggle Kernel 與 Colab 都需要科學(xué)上網(wǎng),且 Kaggle Kernel 只能提供最基礎(chǔ)的 K80 GPU,它的算力并不大。Colab 還會(huì)提供 T4 和 P100 GPU,算力確實(shí)已經(jīng)足夠了,但 Colab 有時(shí)會(huì)中斷你的計(jì)算調(diào)用,這就需要特殊的技巧解決。
百度 AI Studio 也能提供非常強(qiáng)大的 V100 算力,且現(xiàn)在有免費(fèi)算力卡計(jì)劃,每天運(yùn)行環(huán)境都能獲得 12 小時(shí)的 GPU 使用時(shí)長(zhǎng)。但問(wèn)題在于,百度 AI Studio 只能調(diào)用 PaddlePaddle 框架,而不能自由選擇 TF 或 PyTorch。
1. Colab 薅毛要技巧
很多開(kāi)發(fā)者在使用 Colab 時(shí),總會(huì)抱怨時(shí)不時(shí)的終止,抱怨每一次結(jié)束后所有包和文件都會(huì)刪除。但實(shí)際上,除了科學(xué)上網(wǎng),其它很多問(wèn)題都能解決。
首先最大一個(gè)問(wèn)題是 Colab 會(huì)斷,但小編用過(guò)很多次,差不多每次只要保證頁(yè)面不關(guān)閉,連續(xù)運(yùn)行十多個(gè)小時(shí)是沒(méi)問(wèn)題的。按照我們的經(jīng)驗(yàn),最好是在北京時(shí)間上午 9 點(diǎn)多開(kāi)始運(yùn)行,因?yàn)檫@個(gè)時(shí)候北美剛過(guò)凌晨 12 點(diǎn),連續(xù)運(yùn)行時(shí)間更長(zhǎng)一些。像 T4 或 P100 這樣的 GPU,連續(xù)運(yùn)行 10 多個(gè)小時(shí)已經(jīng)是很劃算了,即使復(fù)雜的模型也能得到初步訓(xùn)練。
那么如果斷了呢?這就要考慮加載 Google Drive 了。Colab 非常好的一點(diǎn)是能與谷歌云硬盤(pán)互動(dòng),也就是說(shuō)等訓(xùn)練一些 Epoch 后,可以將模型保存在云端硬盤(pán),這樣就能做到持久化訓(xùn)練。每當(dāng) Colab 斷了時(shí),我們可以從云端硬盤(pán)讀取保存的模型,并繼續(xù)訓(xùn)練。
如上兩行代碼可以將谷歌云硬盤(pán)加載到遠(yuǎn)程實(shí)例的「content/drive」目錄下,后面各種模型操作與數(shù)據(jù)集操作都可以在這個(gè)目錄下完成,即使 Colab 斷了連接,所有操作的內(nèi)容也會(huì)保存在谷歌云盤(pán)。
只要搞定上面兩個(gè)小技巧,Colab 的實(shí)用性就很強(qiáng)了。當(dāng)然,如果讀者發(fā)現(xiàn)分配的 GPU 是 K80,你可以重新啟動(dòng)幾次 Colab,即釋放內(nèi)存和本地文件的重新啟動(dòng),每一次重啟都會(huì)重新分配 GPU 硬件,你可以「等到」P100。
此外,開(kāi)發(fā)者還探索了更多的秘籍來(lái)保證 Colab 連接不會(huì)斷,例如跑一段模擬鼠標(biāo)點(diǎn)擊的代碼,讓 Colab 斷了也能自己重連:
- function ClickConnect(){
- console.log("Working");
- document.querySelector("colab-toolbar-button#connect").click()
- }
- setInterval(ClickConnect,60000)
2. AI Studio 算力是真強(qiáng)
Colab 的 P100 已經(jīng)非常不錯(cuò)了,它有 16GB 的顯存,訓(xùn)練大模型也沒(méi)多大問(wèn)題,但 AI Studio 的 V100 更強(qiáng)大。AI Studio 即使不申請(qǐng)計(jì)算卡,每天登陸項(xiàng)目也能獲得 12 個(gè) GPU 運(yùn)算時(shí),連續(xù)登陸還能有獎(jiǎng)勵(lì)。
AI Studio 類(lèi)似 Jupyter Notebook 的編輯界面也非常容易使用,且中斷運(yùn)行環(huán)境后保存在磁盤(pán)里面的文件并不會(huì)刪除,這也是 Colab 局限的地方。但該平臺(tái)只能導(dǎo)入 PaddlePaddle 框架,所以對(duì)于熟悉 PaddlePaddle 框架的開(kāi)發(fā)者而言,AI Studio 是最好的免費(fèi)算力平臺(tái)。
我們嘗試了一下,在終端可以安裝其他框架,且進(jìn)入 Python 自帶 IDE 后也能導(dǎo)入新安裝的框架。但是在 Notebook 界面,會(huì)顯示只能導(dǎo)入 PaddlePaddle。
最后,看了這么多頂級(jí) GPU 的性能對(duì)比,也了解了免費(fèi) GPU 計(jì)算資源的特性。所以,你是不是該宅在家搞一搞炫酷的深度學(xué)習(xí)新模型與新能力?
參考內(nèi)容:https://lambdalabs.com/blog/choosing-a-gpu-for-deep-learning/
【本文是51CTO專(zhuān)欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】