自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)據(jù)平臺上的計算能力:哪些GPU更適合深度學(xué)習(xí)和數(shù)據(jù)庫?

人工智能 深度學(xué)習(xí) 移動開發(fā)
GPU和AI越來越火,引起了大批投資者和開發(fā)者的注意。百度前首席科學(xué)家Andrew Ng提到,AI的春天已經(jīng)到來,其重要因素之一是GPU處理能力,能讓神經(jīng)網(wǎng)絡(luò)的智能可以隨數(shù)據(jù)增加而提升,突破了過去的AI所能達(dá)到的平臺。

 [[190035]]
圖片來自“視覺中國”

最近Google在ISCA2017上披露了TPU(Tensor Processing Unit)的細(xì)節(jié),繼Haswell CPU,Tesla K80 GPU之后,又增加了一種專門用于機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的高性能武器。

數(shù)據(jù)分析和GPU

GPU不僅能實現(xiàn)數(shù)據(jù)庫的許多功能,而且其強大的計算能力,能實現(xiàn)實時分析。MapD和Kinetica是這方面比較有名的兩家公司。MapD用NVIDIA Tesla K40/K80實現(xiàn)了基于SQL和列式存儲的數(shù)據(jù)庫,無需索引,擅長任意多組合的條件查詢(Where)、聚合(Groupby)等,實現(xiàn)傳統(tǒng)關(guān)系型數(shù)據(jù)庫的BI功能,方便用戶自由地進(jìn)行多條件查詢。性能優(yōu)勢也很明顯(尤其是響應(yīng)時間)。

比如,MapD將1987-2008年全美國進(jìn)出港航班的數(shù)據(jù)擴(kuò)大10倍后,執(zhí)行全表掃描的報表任務(wù),如"SELECT...GROUP BY...”。一臺帶有8張Tesla K40顯卡的服務(wù)器(8核/384G RAM/SSD)比3臺服務(wù)器(32核/244G RAM/SSD)組成的內(nèi)存數(shù)據(jù)庫集群快50-100倍。

GPU數(shù)據(jù)庫的另一大特色是可視化渲染和繪制。將OpenGL等的緩沖區(qū)直接映射成GPU CUDA里的顯存空間,原地渲染,無需將結(jié)果從內(nèi)存拷到GPU,可以實現(xiàn)高幀頻的動畫。也可以原地繪制成PNG或視頻stream,再發(fā)給客戶端,大大減少網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。這些優(yōu)勢吸引了很多開發(fā)者。

在實時分析上比較有名的一家公司是Kinetica。他們開始時為美國情報機(jī)構(gòu)實時分析250個數(shù)據(jù)流?,F(xiàn)在能用10個節(jié)點,基于20萬個傳感器,為美國郵政服務(wù)(USPS)提供15000個并行的實時分析、物流路由計算和調(diào)度等。

我國用GPU進(jìn)行分析和挖掘的用戶也越來越多,想深入學(xué)習(xí)的朋友也不少。最快速的入門辦法是重復(fù)前人的實驗。弗吉尼亞大學(xué)的Accelerating SQL Database Operations on a GPU with CUDA里的開發(fā)環(huán)境和實驗,值得借鑒。他們用一張4G顯存的NVIDIA Tesla C1060,在一臺低配的服務(wù)器上(Xeon X5550(2.66GHz/4核),5G RAM),用5百萬行的表做查詢和匯總,響應(yīng)時間30-60毫秒。

我們測過的***配置是NVidia GTX 780,一千多塊,適合用來嘗試查詢和聚合。先用SQLite將SQL解析成多個OpCode步驟,然后在CUDA上實現(xiàn)一個虛機(jī),來逐一實現(xiàn)每個步驟,直至將整個表逐行遍歷完。其中一些步驟可以并行,因此可用CUDA起幾萬個線程,每個線程處理一行。

深度學(xué)習(xí)和GPU

深度需要較高的計算能力,所以對GPU的選擇會極大地影響使用者體驗。在GPU出現(xiàn)之前,一個實驗可能需要等幾個月,或者跑了一天才發(fā)現(xiàn)某個試驗的參數(shù)不好。好的GPU可以在深度學(xué)習(xí)網(wǎng)絡(luò)上快速迭代,幾天跑完幾個月的試驗,或者幾小時代替幾天,幾分鐘代替幾小時。

快速的GPU可以幫助剛開始學(xué)習(xí)的朋友快速地積累實踐經(jīng)驗,并用深度學(xué)習(xí)解決實際問題。如果不能快速得到結(jié)果,不能快速地從失誤中汲取教訓(xùn),學(xué)起來會比較讓人灰心。Tim Dettmers利用GPU,在一系列Kaggle比賽里應(yīng)用了deep learning,并在Partly Sunny with a chance of Hashtags比賽中獲了亞軍。他用了兩個較大的兩層深度神經(jīng)網(wǎng)絡(luò),采用了ReLU激活函數(shù),用Dropout來實現(xiàn)正則化。這個網(wǎng)絡(luò)勉強能加載到6GB的GPU顯存里。

是否需要多個GPU?

Tim曾用40Gbit/s的InfiniBand搭建了一個小GPU集群,但他發(fā)現(xiàn)很難在多個GPU上實現(xiàn)并行的神經(jīng)網(wǎng)絡(luò),而且在密集的神經(jīng)網(wǎng)絡(luò)上,速度提升也不明顯。小網(wǎng)絡(luò)可以通過數(shù)據(jù)并行更有效地并行,但對比賽里所用的這個大網(wǎng)絡(luò),幾乎沒有提速。

后來又開發(fā)了一個8-bit壓縮方法,按理說,能比32-bit更有效地并行處理密集或全互聯(lián)的網(wǎng)絡(luò)層。但是結(jié)果也不理想。即使對并行算法進(jìn)行優(yōu)化,自己專門寫代碼在多顆GPU上并行執(zhí)行,效果和付出的努力相比仍然得不償失。要非常了解深度學(xué)習(xí)算法和硬件之間具體如何互動,才能判斷是否能從并行里真的得到好處。

對GPU的并行支持越來越常見,但還遠(yuǎn)未普及,效果也未必很好。僅有CNTK這一種深度學(xué)習(xí)庫通過Microsoft特殊的1-bit量化并行算法(效率較高)和塊動量算法(效率很高),能在多個GPU和多臺計算機(jī)上高效地執(zhí)行算法。

在96顆GPU的集群上用CNTK,可以獲得90-95倍的速度提升。下一個能高效地多機(jī)并行的庫可能是Pytorch,但還沒完全做好。如果想在單機(jī)上并行,可以用CNTK,Torch或Pytorch。速度可提升3.6-3.8倍。這些庫包含了一些算法,能在4顆GPU的單機(jī)上并行執(zhí)行。其他支持并行的庫,要么慢,要么這兩個問題都有。

多GPU,非并行

用多個GPU的另一個好處是,即使不并行執(zhí)行算法,也可以在每個GPU上分別運行多個算法或?qū)嶒?。雖然不能提速,但可以一次性了解多個算法或參數(shù)的性能。當(dāng)科研人員需要盡快地積累深度學(xué)習(xí)經(jīng)驗,嘗試一個算法的不同版本時,這很有用。

這對深度學(xué)習(xí)的過程也很有好處。任務(wù)執(zhí)行得越快,越能更快地得到反饋,腦子就從這些記憶片段里總結(jié)出完整的結(jié)論。在不同的GPU上用小數(shù)據(jù)集訓(xùn)練兩個卷積網(wǎng)絡(luò),可以更快地摸索到如何能執(zhí)行得更好。也能更順地找到交叉驗證誤差(Cross validation error)的規(guī)律,并正確地解讀它們。還能發(fā)現(xiàn)某種規(guī)律,來找到需要增加、移除或調(diào)整的參數(shù)或?qū)印?/p>

總的來說,單GPU幾乎對所有的任務(wù)都夠了,不過用多個GPU來加速深度學(xué)習(xí)模型變得越來越重要。多顆便宜的GPU也能用來更快地學(xué)習(xí)深度學(xué)習(xí)。因此,建議用多個小GPU,而不是一個大的。

選哪種?

NVIDIA GPU,AMD GPU還是Intel Xeon Phi

用NVIDIA的標(biāo)準(zhǔn)庫很容易搭建起CUDA的深度學(xué)習(xí)庫,而AMD的OpenCL的標(biāo)準(zhǔn)庫沒這么強大。而且CUDA的GPU計算或通用GPU社區(qū)很大,而OpenCL的社區(qū)較小。從CUDA社區(qū)找到好的開源辦法和可靠的編程建議更方便。

而且,NVIDIA從深度學(xué)習(xí)的起步時就開始投入,回報頗豐。雖然別的公司現(xiàn)在也對深度學(xué)習(xí)投入資金和精力,但起步較晚,落后較多。如果在深度學(xué)習(xí)上采用NVIDIA-CUDA之外的其他軟硬件,會走彎路。

據(jù)稱,Intel的Xeon Phi上支持標(biāo)準(zhǔn)C代碼,而且要在Xeon Phi上加速,也很容易修改這些代碼。這個功能聽起來有意思。但實際上只支持很少一部分C代碼,并不實用。即使支持,執(zhí)行起來也很慢。Tim曾用過500顆Xeon Phi的集群,遇到一個接一個的坑,比如Xeon Phi MKL和Python Numpy不兼容,所以沒法做單元測試。因為Intel Xeon Phi編譯器無法正確地對模板進(jìn)行代碼精簡,比如對switch語句,很大一部分代碼需要重構(gòu)。因為Xeon Phi編譯器不支持一些C++11功能,所以要修改程序的C接口。既麻煩,又花時間,讓人抓狂。

執(zhí)行也很慢。當(dāng)tensor大小連續(xù)變化時,不知道是bug,還是線程調(diào)度影響了性能。舉個例子,如果全連接層(FC)或剔除層(Dropout)的大小不一樣,Xeon Phi比CPU慢。

預(yù)算內(nèi)的最快GPU

用于深度學(xué)習(xí)的GPU的高速取決于什么?是CUDA核?時鐘速度?還是RAM大???這些都不是。影響深度學(xué)習(xí)性能的最重要的因素是顯存帶寬。

GPU的顯存帶寬經(jīng)過優(yōu)化,而犧牲了訪問時間(延遲)。CPU恰恰相反,所用內(nèi)存較小的計算速度快,比如幾個數(shù)的乘法(3*6*9);所用內(nèi)存較大的計算慢,比如矩陣乘法(A*B*C)。GPU憑借其顯存帶寬,擅長解決需要大內(nèi)存的問題。當(dāng)然,GPU和CPU之間還有更復(fù)雜的區(qū)別,可以參見Tim在Quora上的回答。

所以,購買快速GPU的時候,先看看帶寬。

對比CPU和GPU的帶寬發(fā)展

芯片架構(gòu)相同時,帶寬可以直接對比。比如,Pascal顯卡GTX 1080和1070的性能對比,只需看顯存帶寬。GTX 1080(320GB/s)比GTX 1070(256GB/s)快25%。不過如果芯片架構(gòu)不同,不能直接對比。比如Pascal和Maxwell(GTX 1080和Titan X),不同的生產(chǎn)工藝對同樣帶寬的使用不一樣。不過帶寬還是可以大概體現(xiàn)GPU有多快。另外,需要看其架構(gòu)是否兼容cnDNN。絕大多數(shù)深度學(xué)習(xí)庫要用cuDNN來做卷積,因此要用Kepler或更好的GPU,即GTX 600系列或以上。一般來說,Kepler比較慢,所以從性能角度,應(yīng)考慮900或1000系列。為了比較不同顯卡在深度學(xué)習(xí)任務(wù)上的性能,Tim做了個圖。比如GTX 980和0.35個Titan X Pascal一樣快,或者說Titan X Pascal比GTX快了差不多3倍。

這些結(jié)果并不來自于每張卡的深度學(xué)習(xí)benchmark測試,而是從顯卡參數(shù)和計算型benchmark(在計算方面,一些加密貨幣挖掘任務(wù)和深度學(xué)習(xí)差不多)。所以這只是粗略估計。真實數(shù)字會有些不同,不過差距不大,顯卡排名應(yīng)該是對的。同時,采用沒有用足GPU的小網(wǎng)絡(luò)會讓大GPU看上去不夠好。比如128個隱藏單元的LSTM(批處理>64)在GTX 1080 Ti上跑的速度不比GTX 1070快多少。要得到性能區(qū)別,需要用1024個隱藏單元的LSTM(批處理>64)。

GPU跑大型深度學(xué)習(xí)網(wǎng)絡(luò)的性能比較

一般來說,Tim建議用GTX 1080 Ti或GTX 1070。這兩者都不錯。如果預(yù)算夠的話,可以用GTX 1080 Ti。GTX 1070便宜一點,比普通GTX Titan X(Maxwell)更快。兩者都比GTX 980 Ti更適合,因為顯存更大——11GB和8GB,而不是6GB。

8GB有點小,但對很多任務(wù)都足夠了,比如足夠應(yīng)付Kaggle比賽里大多數(shù)圖像數(shù)據(jù)集合自然語言理解(NLP)的任務(wù)。

剛開始接觸深度學(xué)習(xí)時,GTX 1060是***的選擇,也可以偶爾用于Kaggle比賽。3GB太少,6GB有時不太夠,不過能應(yīng)付很多應(yīng)用了。GTX 1060比普通Titan X慢,但性能和二手價格都和GTX 980差不多。

從性價比來看,10系列設(shè)計很好。GTX 1060,1070和1080 Ti更好。GTX 1060適合初學(xué)者,GTX 1070的用途多,適合初創(chuàng)公司和某些科研和工業(yè)應(yīng)用,GTX 1080 Ti是不折不扣的全能高端產(chǎn)品。

Tim不太建議NVIDIA Titan X(Pascal),因為性價比不太好。它更適合計算機(jī)視覺的大數(shù)據(jù)集,或視頻數(shù)據(jù)的科研。顯存大小對這些領(lǐng)域的影響非常大,而Titan X比GTX 1080 Ti大1GB,因此更適合。不過,從eBay上買GTX Titan X(Maxwell)更劃算——慢一點,但12GB的顯存夠大。

GTX 1080Ti對大多數(shù)科研人員夠用了。額外多1GB的顯存對很多科研和應(yīng)用的用處不大。

在科研上,Tim個人會選多張GTX 1070.他寧可多做幾次實驗,稍微慢一點,而不是跑一次實驗,快一點。NLP對顯存的要求不像計算機(jī)視覺那么緊,因此GTX 1070足夠了。他現(xiàn)在處理的任務(wù)和方式?jīng)Q定了最合適的選擇——GTX 1070。

選擇GPU時可以用類似的思路。先想清楚所執(zhí)行的任務(wù)和實驗方法,再找滿足要求的GPU?,F(xiàn)在AWS上的GPU實例比較貴且慢。GTX 970比較慢,而且二手的也比較貴而且啟動時顯卡有內(nèi)存問題??梢远嗷c錢買GTX 1060,速度更快,顯存更大,而且沒有顯存問題。如果GTX 1060太貴,可以用4G顯存的GTX 1050 Ti。4GB有點小,但也深度學(xué)習(xí)的起步也夠了。如果在某些型號上做調(diào)整,可以得到較好性能。GTX 1050 Ti適合于大多數(shù)Kaggle比賽,不過可能在一些比賽里發(fā)揮不出選手優(yōu)勢。

 

責(zé)任編輯:林師授 來源: 大數(shù)據(jù)雜談
相關(guān)推薦

2024-09-09 04:00:00

GPU人工智能

2019-08-21 09:24:45

GPUCPU深度學(xué)習(xí)

2022-07-14 13:27:01

IT領(lǐng)導(dǎo)者云計算

2009-09-09 11:27:30

Oracle數(shù)據(jù)庫服務(wù)

2010-08-17 08:57:36

NoSQL微軟

2023-10-10 08:36:57

數(shù)據(jù)庫MyISMInnoDB

2019-03-18 08:31:02

物聯(lián)網(wǎng)開源數(shù)據(jù)庫IOT

2012-07-09 15:28:53

CitusDB

2023-08-29 11:37:10

云計算數(shù)據(jù)中心

2012-12-21 09:59:40

數(shù)據(jù)中心虛擬化礎(chǔ)設(shè)施即服務(wù)IaaS

2018-09-16 15:40:06

大數(shù)據(jù)平臺數(shù)據(jù)倉庫架構(gòu)

2016-08-05 09:51:25

GPU大數(shù)據(jù)

2023-01-03 08:55:38

PG數(shù)據(jù)庫運維

2011-12-07 20:43:33

2017-07-19 06:37:18

數(shù)據(jù)庫計算存儲

2024-08-09 08:28:14

品牌數(shù)據(jù)庫產(chǎn)品

2010-10-14 13:18:55

MySQL存儲過程

2023-12-15 07:34:56

分布式數(shù)據(jù)庫數(shù)據(jù)庫租戶軟件架構(gòu)

2020-11-25 17:50:27

數(shù)據(jù)庫物聯(lián)網(wǎng)SQL

2023-11-07 07:57:59

OracleTAC數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號