深度學(xué)習(xí)GPU最全對(duì)比,到底誰(shuí)才是性價(jià)比之王?
搞AI,誰(shuí)又沒(méi)有“GPU之惑”?
張量核心、顯存帶寬、16位能力……各種紛繁復(fù)雜的GPU參數(shù)讓人眼花繚亂,到底怎么選?
從不到1000元1050 Ti到近30000元的Titan V,GPU價(jià)格的跨度這么大,該從何價(jià)位下手?誰(shuí)才是性價(jià)比之王?
讓GPU執(zhí)行不同的任務(wù),最佳選擇也隨之變化,用于計(jì)算機(jī)視覺(jué)和做NLP就不太一樣。
而且,用云端TPU、GPU行不行?和本地GPU在處理任務(wù)時(shí)應(yīng)該如何分配,才能更省錢(qián)?
最合適的AI加速裝備,究竟什么樣?
現(xiàn)在,為了幫你找到最適合的裝備,華盛頓大學(xué)的博士生Tim Dettmers將對(duì)比凝練成實(shí)用攻略,最新的模型和硬件也考慮在內(nèi)。
到底誰(shuí)能在眾多GPU中脫穎而出?測(cè)評(píng)后馬上揭曉。
文末還附有一份特別精簡(jiǎn)的GPU選購(gòu)建議,歡迎對(duì)號(hào)入座。
最重要的參數(shù)
針對(duì)不同深度學(xué)習(xí)架構(gòu),GPU參數(shù)的選擇優(yōu)先級(jí)是不一樣的,總體來(lái)說(shuō)分兩條路線:
卷積網(wǎng)絡(luò)和Transformer:張量核心>FLOPs(每秒浮點(diǎn)運(yùn)算次數(shù))>顯存帶寬>16位浮點(diǎn)計(jì)算能力
循環(huán)神經(jīng)網(wǎng)絡(luò):顯存帶寬>16位浮點(diǎn)計(jì)算能力>張量核心>FLOPs
這個(gè)排序背后有一套邏輯,下面將詳細(xì)解釋一下。
在說(shuō)清楚哪個(gè)GPU參數(shù)對(duì)速度尤為重要之前,先看看兩個(gè)最重要的張量運(yùn)算:矩陣乘法和卷積。
舉個(gè)栗子🌰,以運(yùn)算矩陣乘法A×B=C為例,將A、B復(fù)制到顯存上比直接計(jì)算A×B更耗費(fèi)資源。也就是說(shuō),如果你想用LSTM等處理大量小型矩陣乘法的循環(huán)神經(jīng)網(wǎng)絡(luò),顯存帶寬是GPU最重要的屬性。
矩陣乘法越小,內(nèi)存帶寬就越重要。
相反,卷積運(yùn)算受計(jì)算速度的約束比較大。因此,要衡量GPU運(yùn)行ResNets等卷積架構(gòu)的性能,最佳指標(biāo)就是FLOPs。張量核心可以明顯增加FLOPs。
Transformer中用到的大型矩陣乘法介于卷積運(yùn)算和RNN的小型矩陣乘法之間,16位存儲(chǔ)、張量核心和TFLOPs都對(duì)大型矩陣乘法有好處,但它仍需要較大的顯存帶寬。
需要特別注意,如果想借助張量核心的優(yōu)勢(shì),一定要用16位的數(shù)據(jù)和權(quán)重,避免使用RTX顯卡進(jìn)行32位運(yùn)算!
下面Tim總結(jié)了一張GPU和TPU的標(biāo)準(zhǔn)性能數(shù)據(jù),值越高代表性能越好。RTX系列假定用了16位計(jì)算,Word RNN數(shù)值是指長(zhǎng)度<100的段序列的biLSTM性能。
這項(xiàng)基準(zhǔn)測(cè)試是用PyTorch 1.0.1和CUDA 10完成的。
△ GPU和TPU的性能數(shù)據(jù)
性價(jià)比分析
性價(jià)比可能是選擇一張GPU最重要的考慮指標(biāo)。在攻略中,小哥進(jìn)行了如下運(yùn)算測(cè)試各顯卡的性能:
- 用語(yǔ)言模型Transformer-XL和BERT進(jìn)行Transformer性能的基準(zhǔn)測(cè)試。
- 用最先進(jìn)的biLSTM進(jìn)行了單詞和字符級(jí)RNN的基準(zhǔn)測(cè)試。
- 上述兩種測(cè)試是針對(duì)Titan Xp、Titan RTX和RTX 2080 Ti進(jìn)行的,對(duì)于其他GPU則線性縮放了性能差異。
- 借用了現(xiàn)有的CNN基準(zhǔn)測(cè)試。
- 用了亞馬遜和eBay上顯卡的平均售價(jià)作為GPU的參考成本。
最后,可以得出CNN、RNN和Transformer的歸一化性能/成本比值,如下所示:
△ CNN、RNN和Transformer的每美元性能
在上面這張圖中,數(shù)字越大代表每一美元能買(mǎi)到的性能越強(qiáng)。可以看出, RTX 2060比RTX 2070,RTX 2080或RTX 2080 Ti更具成本效益,甚至是Tesla V100性價(jià)比的5倍以上。
所以此輪的性價(jià)比之王已經(jīng)確定,是RTX 2060無(wú)疑了。
不過(guò),這種考量方式更偏向于小型GPU,且因?yàn)橛螒蛲婕也幌矚gRTX系列顯卡,導(dǎo)致GTX 10xx系列的顯卡售價(jià)虛高。此外,還存在一定的單GPU偏差,一臺(tái)有4個(gè)RTX 2080 Ti的計(jì)算機(jī)比兩臺(tái)帶8個(gè)RTX 2060的計(jì)算機(jī)性價(jià)比更高。
所需顯存與16位訓(xùn)練
GPU的顯存對(duì)某些應(yīng)用至關(guān)重要,比如常見(jiàn)的計(jì)算機(jī)視覺(jué)、機(jī)器翻譯和一部分NLP應(yīng)用??赡苣阏J(rèn)為RTX 2070具有成本效益,但需要注意其顯存很小,只有8 GB。
不過(guò),也有一些補(bǔ)救辦法。
通過(guò)16位訓(xùn)練,你可以擁有幾乎16位的顯存,相當(dāng)于將顯存翻了一倍,這個(gè)方法對(duì)RTX 2080和RTX 2080 Ti同樣適用。
也就是說(shuō),16位計(jì)算可以節(jié)省50%的內(nèi)存,16位 8GB顯存大小與12GB 32位顯存大小相當(dāng)。
云端or本地?TPU or GPU?
搞清楚了參數(shù),還有更眼花繚亂的選項(xiàng)擺在面前:
谷歌云、亞馬遜AWS、微軟的云計(jì)算平臺(tái)都能搞機(jī)器學(xué)習(xí),是不是可以不用自己買(mǎi)GPU?
英偉達(dá)、AMD、英特爾、各種創(chuàng)業(yè)公司……AI加速芯片也有不少品牌可選。
面對(duì)整個(gè)行業(yè)的圍攻,Tim分析了各家平臺(tái)的優(yōu)缺點(diǎn)。
英偉達(dá)
英偉達(dá)無(wú)疑是深度學(xué)習(xí)硬件領(lǐng)域的領(lǐng)導(dǎo)者,大多數(shù)深度學(xué)習(xí)庫(kù)都對(duì)英偉達(dá)GPU提供最佳支持。而AMD的OpenCL沒(méi)有這樣強(qiáng)大的標(biāo)準(zhǔn)庫(kù)。
軟件是英偉達(dá)GPU非常強(qiáng)大的一部分。在過(guò)去的幾個(gè)月里,NVIDIA還在為軟件注入更多資源。例如,Apex庫(kù)對(duì)PyTorch中的16位梯度提供支持,還包括像FusedAdam這樣的融合快速優(yōu)化器。
但是英偉達(dá)現(xiàn)在有一項(xiàng)非??拥恼撸绻跀?shù)據(jù)中心使用CUDA,那么只允許使用Tesla GPU而不能用GTX或RTX GPU。
由于擔(dān)心法律問(wèn)題,研究機(jī)構(gòu)和大學(xué)經(jīng)常被迫購(gòu)買(mǎi)低性價(jià)比的Tesla GPU。然而,Tesla與GTX和RTX相比并沒(méi)有真正的優(yōu)勢(shì),價(jià)格卻高出10倍。
AMD
AMD GPU性能強(qiáng)大但是軟件太弱。雖然有ROCm可以讓CUDA轉(zhuǎn)換成可移植的C++代碼,但是問(wèn)題在于,移植TensorFlow和PyTorch代碼庫(kù)很難,這大大限制了AMD GPU的應(yīng)用。
TensorFlow和PyTorch對(duì)AMD GPU有一定的支持,所有主要的網(wǎng)絡(luò)都可以在AMD GPU上運(yùn)行,但如果想開(kāi)發(fā)新的網(wǎng)絡(luò),可能有些細(xì)節(jié)會(huì)不支持。
對(duì)于那些只希望GPU能夠順利運(yùn)行的普通用戶,Tim并不推薦AMD。但是支持AMD GPU和ROCm開(kāi)發(fā)人員,會(huì)有助于打擊英偉達(dá)的壟斷地位,將使每個(gè)人長(zhǎng)期受益。
英特爾
Tim曾經(jīng)嘗試過(guò)至強(qiáng)融核(Xeon Phi)處理器,但體驗(yàn)讓人失望。英特爾目前還不是英偉達(dá)或AMD GPU真正的競(jìng)爭(zhēng)對(duì)手。
至強(qiáng)融核對(duì)深度學(xué)習(xí)的支持比較差,不支持一些GPU的設(shè)計(jì)特性,編寫(xiě)優(yōu)化代碼困難,不完全支持C++ 11的特性,與NumPy和SciPy的兼容性差。
英特爾曾計(jì)劃在今年下半年推出神經(jīng)網(wǎng)絡(luò)處理器(NNP),希望與GPU和TPU競(jìng)爭(zhēng),但是該項(xiàng)目已經(jīng)跳票。
谷歌
谷歌TPU已經(jīng)發(fā)展成為一種非常成熟的云端產(chǎn)品。你可以這樣簡(jiǎn)單理解TPU:把它看做打包在一起的多個(gè)專(zhuān)用GPU,它只有一個(gè)目的——進(jìn)行快速矩陣乘法。
如果看一下具有張量核心的V100 GPU與TPUv2的性能指標(biāo),可以發(fā)現(xiàn)兩個(gè)系統(tǒng)的性能幾乎相同。
TPU本身支持TensorFlow,對(duì)PyTorch的支持也在試驗(yàn)中。
TPU在訓(xùn)練大型Transformer GPT-2上取得了巨大的成功,BERT和機(jī)器翻譯模型也可以在TPU上高效地進(jìn)行訓(xùn)練,速度相比GPU大約快56%。
但是TPU也并非沒(méi)有問(wèn)題,有些文獻(xiàn)指出在TPUv2上使用LSTM沒(méi)有收斂。
TPU長(zhǎng)時(shí)間使用時(shí)還面臨著累積成本的問(wèn)題。TPU具有高性能,最適合在訓(xùn)練階段使用。在原型設(shè)計(jì)和推理階段,應(yīng)該依靠GPU來(lái)降低成本。
總而言之,目前TPU最適合用于訓(xùn)練CNN或大型Transformer,并且應(yīng)該補(bǔ)充其他計(jì)算資源而不是主要的深度學(xué)習(xí)資源。
亞馬遜和微軟云GPU
亞馬遜AWS和Microsoft Azure的云GPU非常有吸引力,人們可以根據(jù)需要輕松地?cái)U(kuò)大和縮小使用規(guī)模,對(duì)于論文截稿或大型項(xiàng)目結(jié)束前趕出結(jié)果非常有用。
然而,與TPU類(lèi)似,云GPU的成本會(huì)隨著時(shí)間快速增長(zhǎng)。目前,云GPU過(guò)于昂貴,且無(wú)法單獨(dú)使用,Tim建議在云GPU上進(jìn)行最后的訓(xùn)練之前,先使用一些廉價(jià)GPU進(jìn)行原型開(kāi)發(fā)。
初創(chuàng)公司的AI硬件
有一系列初創(chuàng)公司在生產(chǎn)下一代深度學(xué)習(xí)硬件。但問(wèn)題在于,這些硬件需要開(kāi)發(fā)一個(gè)完整的軟件套件才能具有競(jìng)爭(zhēng)力。英偉達(dá)和AMD的對(duì)比就是鮮明的例子。
小結(jié)
總的來(lái)說(shuō),本地運(yùn)算首選英偉達(dá)GPU,它在深度學(xué)習(xí)上的支持度比AMD好很多;云計(jì)算首選谷歌TPU,它的性價(jià)比超過(guò)亞馬遜AWS和微軟Azure。
訓(xùn)練階段使用TPU,原型設(shè)計(jì)和推理階段使用本地GPU,可以幫你節(jié)約成本。如果對(duì)項(xiàng)目deadline或者靈活性有要求,請(qǐng)選擇成本更高的云GPU。
最終建議
總之,在GPU的選擇上有三個(gè)原則:
1、使用GTX 1070或更好的GPU;
2、購(gòu)買(mǎi)帶有張量核心的RTX GPU;
3、在GPU上進(jìn)行原型設(shè)計(jì),然后在TPU或云GPU上訓(xùn)練模型。
針對(duì)不同研究目的、不同預(yù)算,Tim給出了如下的建議:
最佳GPU:RTX 2070
避免的坑:所有Tesla、Quadro、創(chuàng)始人版(Founders Edition)的顯卡,還有Titan RTX、Titan V、Titan XP
高性價(jià)比:RTX 2070(高端),RTX 2060或GTX 1060 (6GB)(中低端)
窮人之選:GTX 1060 (6GB)
破產(chǎn)之選:GTX 1050 Ti(4GB),或者CPU(原型)+ AWS / TPU(訓(xùn)練),或者Colab
Kaggle競(jìng)賽:RTX 2070
計(jì)算機(jī)視覺(jué)或機(jī)器翻譯研究人員:采用鼓風(fēng)設(shè)計(jì)的GTX 2080 Ti,如果訓(xùn)練非常大的網(wǎng)絡(luò),請(qǐng)選擇RTX Titans
NLP研究人員:RTX 2080 Ti
已經(jīng)開(kāi)始研究深度學(xué)習(xí):RTX 2070起步,以后按需添置更多RTX 2070
嘗試入門(mén)深度學(xué)習(xí):GTX 1050 Ti(2GB或4GB顯存)





































