在深度學(xué)習(xí)中,似乎每個(gè)人都建議使用GPU。 它是什么,沒(méi)有一個(gè),您能做得到嗎?它的確切對(duì)象是誰(shuí)?
> Photo by Florian Krumm on Unsplash
任何試圖大規(guī)模推廣訓(xùn)練模型性能的數(shù)據(jù)科學(xué)家或機(jī)器學(xué)習(xí)愛(ài)好者都將在某個(gè)時(shí)候達(dá)到頂峰,并開(kāi)始經(jīng)歷不同程度的處理滯后。 當(dāng)數(shù)據(jù)集變得更大時(shí),使用較小的訓(xùn)練集花費(fèi)數(shù)分鐘的任務(wù)現(xiàn)在可能需要花費(fèi)更多的時(shí)間(在某些情況下是幾周)。
但是什么是GPU? 它們?nèi)绾闻cCPU相抗衡? 我的深度學(xué)習(xí)項(xiàng)目需要一個(gè)嗎?
如果您曾經(jīng)問(wèn)過(guò)自己這些問(wèn)題,請(qǐng)繼續(xù)閱讀…
為什么選擇GPU進(jìn)行深度學(xué)習(xí)
GPU經(jīng)過(guò)優(yōu)化,可訓(xùn)練人工智能和深度學(xué)習(xí)模型,因?yàn)樗鼈兛梢酝瑫r(shí)處理多個(gè)計(jì)算。
它們具有大量?jī)?nèi)核,可以更好地計(jì)算多個(gè)并行進(jìn)程。 此外,深度學(xué)習(xí)中的計(jì)算需要處理大量數(shù)據(jù)-這使GPU的內(nèi)存帶寬最合適。
有一些決定性參數(shù)可以確定是使用CPU還是GPU來(lái)訓(xùn)練深度學(xué)習(xí)模型:
內(nèi)存帶寬:
帶寬是GPU比CPU更快的計(jì)算速度的主要原因之一。 對(duì)于大型數(shù)據(jù)集,CPU在訓(xùn)練模型時(shí)會(huì)占用大量?jī)?nèi)存。
計(jì)算龐大而復(fù)雜的作業(yè)需要占用CPU大量的時(shí)鐘周期-CPU依次處理作業(yè),并且內(nèi)核數(shù)量少于同類GPU。
另一方面,獨(dú)立的GPU帶有專用的VRAM(視頻RAM)內(nèi)存。 因此,CPU的內(nèi)存可用于其他任務(wù)。
> Comparison of bandwidth for CPUs and GPUs over time
數(shù)據(jù)集大小
在深度學(xué)習(xí)中訓(xùn)練模型需要大量的數(shù)據(jù)集,因此在內(nèi)存方面需要大量的計(jì)算操作。 為了有效地計(jì)算數(shù)據(jù),GPU是最佳選擇。 計(jì)算量越大,GPU相對(duì)于CPU的優(yōu)勢(shì)就越大。
優(yōu)化
在CPU中優(yōu)化任務(wù)要容易得多。 盡管CPU內(nèi)核數(shù)量較少,但功能卻比數(shù)千個(gè)GPU內(nèi)核強(qiáng)大。
每個(gè)CPU內(nèi)核可以執(zhí)行不同的指令(MIMD架構(gòu)),而通常在32個(gè)內(nèi)核的塊內(nèi)組織的GPU內(nèi)核在給定的時(shí)間并行執(zhí)行同一條指令(SIMD架構(gòu))。
鑒于需要付出的努力,密集神經(jīng)網(wǎng)絡(luò)中的并行化非常困難。 因此,與在CPU中相比,在GPU中難以實(shí)現(xiàn)復(fù)雜的優(yōu)化技術(shù)。
為什么我們需要更多的硬件來(lái)進(jìn)行深度學(xué)習(xí)?
對(duì)于任何神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),深度學(xué)習(xí)模型的訓(xùn)練階段都是最耗費(fèi)資源的任務(wù)
在訓(xùn)練過(guò)程中,神經(jīng)網(wǎng)絡(luò)會(huì)接受輸入,然后使用在訓(xùn)練過(guò)程中調(diào)整的權(quán)重在隱藏層中對(duì)其進(jìn)行處理,然后模型發(fā)出預(yù)測(cè)。 調(diào)整權(quán)重以找到模式,以便做出更好的預(yù)測(cè)。
這兩個(gè)運(yùn)算本質(zhì)上都是矩陣乘法。 下圖可以表示一個(gè)簡(jiǎn)單的矩陣乘法
> Source: jeremyjordan.me
在神經(jīng)網(wǎng)絡(luò)中,我們可以將第一個(gè)數(shù)組作為神經(jīng)網(wǎng)絡(luò)的輸入,而第二個(gè)數(shù)組則形成其權(quán)重。
容易吧?
是的,如果您的神經(jīng)網(wǎng)絡(luò)具有大約10、100甚至100,000個(gè)參數(shù)。 一臺(tái)計(jì)算機(jī)仍將能夠在幾分鐘甚至最多幾小時(shí)內(nèi)處理完這一問(wèn)題。
但是,如果您的神經(jīng)網(wǎng)絡(luò)具有超過(guò)100億個(gè)參數(shù),該怎么辦? 采用傳統(tǒng)方法來(lái)訓(xùn)練這種系統(tǒng)將需要數(shù)年時(shí)間。 您的計(jì)算機(jī)可能會(huì)在十分之一之前就放棄了。
"一個(gè)采用搜索輸入并根據(jù)1億個(gè)輸出或產(chǎn)品進(jìn)行預(yù)測(cè)的神經(jīng)網(wǎng)絡(luò),通常每個(gè)產(chǎn)品約有2,000個(gè)參數(shù)。 因此,將它們相乘,神經(jīng)網(wǎng)絡(luò)的最后一層現(xiàn)在是2000億個(gè)參數(shù)。 而且我還沒(méi)有做任何復(fù)雜的事情。 我說(shuō)的是一個(gè)非常非常簡(jiǎn)單的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)模型。" —博士 萊斯大學(xué)學(xué)生
使深度學(xué)習(xí)模型訓(xùn)練更快
通過(guò)簡(jiǎn)單地同時(shí)運(yùn)行所有操作,而不是一個(gè)接一個(gè)地運(yùn)行,可以更快地訓(xùn)練深度學(xué)習(xí)模型。
您可以通過(guò)使用GPU訓(xùn)練模型來(lái)實(shí)現(xiàn)。
GPU(圖形處理單元)是具有專用內(nèi)存的專用處理器,通常會(huì)執(zhí)行渲染圖形所需的浮點(diǎn)運(yùn)算
換句話說(shuō),它是用于大量圖形和數(shù)學(xué)計(jì)算的單芯片處理器,從而釋放了CPU周期用于其他作業(yè)。
GPU和CPU之間的主要區(qū)別在于,與CPU相比,GPU按比例分配了更多的晶體管用于算術(shù)邏輯單元,而減少了對(duì)高速緩存和流控制的投入。
盡管CPU最適用于需要解析或解釋代碼中復(fù)雜邏輯的問(wèn)題,但GPU是專為計(jì)算機(jī)游戲的專用圖形渲染而設(shè)計(jì)的,后來(lái)經(jīng)過(guò)增強(qiáng)以加速其他幾何計(jì)算(例如,變換多邊形或旋轉(zhuǎn)垂直線) 進(jìn)入不同的坐標(biāo)系(如3D)。
GPU小于CPU,但與后者相比,GPU往往具有更多的邏輯核心(算術(shù)邏輯單元或ALU,控制單元和內(nèi)存緩存)。
> Source: fast.ai
在上表中,您可以看到GPU(紅色/綠色)理論上可以完成CPU(藍(lán)色)的操作的10–15倍。 這種加速也非常適用于實(shí)踐。
如果您將CPU視為瑪莎拉蒂,那么GPU可以算是一輛大卡車。
CPU(瑪莎拉蒂)可以在RAM中快速獲取少量包裹(3-4位乘客),而GPU(卡車)則較慢,但可以在一圈內(nèi)獲取大量?jī)?nèi)存(約20位乘客)。
我應(yīng)該使用GPU嗎?
與任何數(shù)據(jù)科學(xué)項(xiàng)目一樣,這取決于。 在速度,可靠性和成本之間需要權(quán)衡考慮:
· 如果您的神經(jīng)網(wǎng)絡(luò)規(guī)模相對(duì)較小,那么無(wú)需GPU就可以解決問(wèn)題
· 如果您的神經(jīng)網(wǎng)絡(luò)涉及大量涉及數(shù)十萬(wàn)個(gè)參數(shù)的計(jì)算,那么您可能要考慮投資購(gòu)買GPU
通常,GPU是快速機(jī)器學(xué)習(xí)的安全選擇,因?yàn)閺谋举|(zhì)上講,數(shù)據(jù)科學(xué)模型訓(xùn)練由簡(jiǎn)單的矩陣數(shù)學(xué)計(jì)算組成,如果并行進(jìn)行計(jì)算,則其速度可能會(huì)大大提高。
請(qǐng)參閱有關(guān)最佳GPU進(jìn)行深度學(xué)習(xí)投資的Reddit帖子
Cloud GPU實(shí)例
您還應(yīng)該考慮Cloud GPU。 如果您不想購(gòu)買大量昂貴的GPU,則可以與云托管公司按需利用GPU。 它們可讓您免去配置硬件的麻煩,而最重要的是,它們并不那么昂貴-使用時(shí)每小時(shí)的成本低至0.25美元。
完成后,請(qǐng)記住關(guān)閉云實(shí)例。
您將租用一臺(tái)外國(guó)計(jì)算機(jī)/服務(wù)器,而不是自己運(yùn)行。 僅關(guān)閉瀏覽器或關(guān)閉PC是不夠的,它們僅會(huì)切斷設(shè)備與該遠(yuǎn)程服務(wù)器之間的連接,而不會(huì)關(guān)閉您要付費(fèi)的東西。 否則,系統(tǒng)會(huì)一直向您收取費(fèi)用,并且會(huì)產(chǎn)生令人討厭的帳單!
任何數(shù)據(jù)科學(xué)家或機(jī)器學(xué)習(xí)狂熱者一生中至少會(huì)聽(tīng)說(shuō),深度學(xué)習(xí)需要大量硬件。 有些人在筆記本電腦上訓(xùn)練了簡(jiǎn)單的深度學(xué)習(xí)模型幾天(通常沒(méi)有GPU),這導(dǎo)致深度學(xué)習(xí)需要大型系統(tǒng)才能運(yùn)行執(zhí)行。
這創(chuàng)造了圍繞深度學(xué)習(xí)的神話,為初學(xué)者創(chuàng)建了障礙。
我在過(guò)去幾年中提到的每本書都提到了以下內(nèi)容:
深度學(xué)習(xí)需要大量的計(jì)算能力才能繼續(xù)運(yùn)行。
但是我沒(méi)有數(shù)據(jù)中心,當(dāng)我在相當(dāng)大的筆記本電腦上建立第一個(gè)深度學(xué)習(xí)模型時(shí),我知道共識(shí)要么是錯(cuò)誤的,要么是真實(shí)的。
您無(wú)需接管Google即可成為深度學(xué)習(xí)專家。
CPU最擅長(zhǎng)順序處理單個(gè)更復(fù)雜的計(jì)算,而GPU更擅長(zhǎng)并行處理多個(gè)但更簡(jiǎn)單的計(jì)算。
GPU計(jì)算實(shí)例的成本通常是CPU計(jì)算實(shí)例的2-3倍,因此,除非您在基于GPU的訓(xùn)練模型中看到2-3倍的性能提升,否則建議使用CPU。
> Photo by Alex Knight on Unsplash
與往常一樣,非常感謝您的閱讀! 請(qǐng)?jiān)谠u(píng)論中告訴我您的想法或想寫的內(nèi)容。 我也很容易受到批評(píng)!
下篇再見(jiàn)!
(本文翻譯自Jason Dsouza的文章《What is a GPU and do you need one in Deep Learning?》,參考:https://towardsdatascience.com/what-is-a-gpu-and-do-you-need-one-in-deep-learning-8a323476e109)
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。