深度学习 占用gpu内存 使用率为0_你了解GPU吗?为什么说深度学习需要GPU?
任何試圖大規(guī)模推廣訓(xùn)練模型性能的數(shù)據(jù)科學家或機器學習愛好者都將在某個時候達到頂峰,并開始經(jīng)歷不同程度的處理滯后。當數(shù)據(jù)集變得更大時,使用較小的訓(xùn)練集花費數(shù)分鐘的任務(wù)現(xiàn)在可能需要花費更多的時間(在某些情況下是幾周)。
那什么是GPU?它們?nèi)绾闻cCPU相抗衡?我的深度學習項目需要一個嗎?
如果您曾經(jīng)問??過自己這些問題,請繼續(xù)閱讀...
任何數(shù)據(jù)科學家或機器學習狂熱者一生中至少會聽說,深度學習需要大量硬件。有些人在筆記本電腦上訓(xùn)練了簡單的深度學習模型幾天(通常沒有GPU),這導(dǎo)致深度學習需要大型系統(tǒng)才能運行執(zhí)行。這創(chuàng)造了圍繞深度學習的話題,為初學者創(chuàng)建了障礙。
我在過去幾年中提到的每本書都總是提到以下內(nèi)容:深度學習需要大量的計算能力才能繼續(xù)運行。
但我沒有數(shù)據(jù)中心在我的命令,當我建立我的第一個深度學習模型在一個相當大的筆記本電腦,我知道,達成的共識是要么錯誤或描繪一些道理。
為什么我們需要更多的硬件來進行深度學習?
對于任何神經(jīng)網(wǎng)絡(luò)來說,深度學習模型的訓(xùn)練階段都是最耗費資源的任務(wù)
在訓(xùn)練過程中,神經(jīng)網(wǎng)絡(luò)會接受輸入,然后使用在訓(xùn)練過程中調(diào)整的權(quán)重在隱藏層中對其進行處理,然后模型發(fā)出預(yù)測。調(diào)整權(quán)重以找到模式,以便做出更好的預(yù)測。
這兩個運算本質(zhì)上都是矩陣乘法。下圖可以表示一個簡單的矩陣乘法
在神經(jīng)網(wǎng)絡(luò)中,我們可以將第一個數(shù)組作為神經(jīng)網(wǎng)絡(luò)的輸入,而第二個數(shù)組則形成其權(quán)重。
容易吧?
是的,如果您的神經(jīng)網(wǎng)絡(luò)具有大約10、100甚至100,000個參數(shù)。一臺計算機仍將能夠在幾分鐘甚至最多幾小時內(nèi)處理完這一問題。
但是,如果您的神經(jīng)網(wǎng)絡(luò)具有超過100億個參數(shù),該怎么辦?采用傳統(tǒng)方法來訓(xùn)練這種系統(tǒng)將需要數(shù)年時間。您的計算機可能甚至在十分之一之前就放棄了。
“一個采用搜索輸入并根據(jù)1億個輸出或產(chǎn)品進行預(yù)測的神經(jīng)網(wǎng)絡(luò),通常每個產(chǎn)品約有2,000個參數(shù)。因此,將它們相乘,神經(jīng)網(wǎng)絡(luò)的最后一層現(xiàn)在是2000億個參數(shù)。而且我還沒有做任何復(fù)雜的事情。我說的是一個非常非常簡單的簡單神經(jīng)網(wǎng)絡(luò)模型。” —博士 萊斯大學學生
如何使深度學習模型訓(xùn)練更快
深度學習模型可以被訓(xùn)練通過簡單地在運行的所有操作變得更快同一時間,而不是一個接一個。
您可以通過使用GPU訓(xùn)練模型來實現(xiàn)。
GPU(圖形處理單元)是具有專用內(nèi)存的專用處理器,通常會執(zhí)行渲染圖形所需的浮點運算。
換句話說,它是用于大量圖形和數(shù)學計算的單芯片處理器,從而釋放了CPU周期用于其他作業(yè)。
GPU和CPU之間的主要區(qū)別在于,與CPU相比,GPU按比例分配了更多的晶體管用于算術(shù)邏輯單元,而減少了對高速緩存和流控制的投入。
盡管CPU最適用于需要解析或解釋代碼中復(fù)雜邏輯的問題,但GPU是專為計算機游戲的專用圖形渲染而設(shè)計的,后來經(jīng)過增強以加速其他幾何計算(例如,變換多邊形或旋轉(zhuǎn)垂直線)進入不同的坐標系(如3D)。
GPU小于CPU,但與后者相比,GPU往往具有更多的邏輯核心(算術(shù)邏輯單元或ALU,控制單元和內(nèi)存緩存)。
在上表中,您可以看到GPU(紅色/綠色)理論上可以完成CPU(藍色)的操作的10–15倍。這種加速也非常適用于實踐。
如果您將CPU視為瑪莎拉蒂,那么GPU可以算是一輛大卡車。
CPU(瑪莎拉蒂)可以在RAM中快速獲取少量包裹(3-4位乘客),而GPU(卡車)速度較慢,但??可以在一圈內(nèi)獲取大量內(nèi)存(約20位乘客)。
為什么選擇GPU進行深度學習
GPU經(jīng)過優(yōu)化,可訓(xùn)練人工智能和深度學習模型,因為它們可以同時處理多個計算。
它們具有大量內(nèi)核,可以更好地計算多個并行進程。此外,深度學習中的計算需要處理大量數(shù)據(jù)-這使GPU的內(nèi)存帶寬最合適。
有一些決定性參數(shù)可以確定是使用CPU還是GPU來訓(xùn)練深度學習模型:
內(nèi)存帶寬:
帶寬是GPU比CPU更快的計算速度的主要原因之一。對于大型數(shù)據(jù)集,CPU在訓(xùn)練模型時會占用大量內(nèi)存。
計算龐大而復(fù)雜的作業(yè)需要占用CPU大量的時鐘周期-CPU 依次處理作業(yè),并且內(nèi)核數(shù)量少于同類GPU。
另一方面,獨立的GPU帶有專用的VRAM(視頻RAM)內(nèi)存。因此,CPU的內(nèi)存可用于其他任務(wù)。
隨時間比較CPU和GPU的帶寬
數(shù)據(jù)集大小
在深度學習中訓(xùn)練模型需要大量的數(shù)據(jù)集,因此在內(nèi)存方面需要大量的計算操作。為了有效地計算數(shù)據(jù),GPU是最佳選擇。計算量越大,GPU相對于CPU的優(yōu)勢就越大。
優(yōu)化
在CPU中優(yōu)化任務(wù)要容易得多。盡管CPU內(nèi)核數(shù)量較少,但功能卻比數(shù)千個GPU內(nèi)核強大。
每個CPU內(nèi)核可以執(zhí)行不同的指令(MIMD架構(gòu)),而通常組織在32個內(nèi)核的塊中的GPU內(nèi)核在給定的時間并行執(zhí)行同一條指令(SIMD架構(gòu))。
鑒于需要付出的努力,密集神經(jīng)網(wǎng)絡(luò)中的并行化非常困難。因此,與在CPU中相比,在GPU中難以實現(xiàn)復(fù)雜的優(yōu)化技術(shù)。
我應(yīng)該使用GPU嗎?
與任何數(shù)據(jù)科學項目一樣,這取決于。在速度,可靠性和成本之間需要權(quán)衡考慮:
通常,GPU是進行快速機器學習的更安全的選擇,因為從本質(zhì)上講,數(shù)據(jù)科學模型訓(xùn)練由簡單的矩陣數(shù)學計算組成,如果并行執(zhí)行計算,則其速度可能會大大提高。
Cloud GPU實例
您還應(yīng)該考慮Cloud GPU。如果您不想購買一堆昂貴的GPU,則可以與云托管公司一起按需利用GPU。它們將使您免于配置硬件的麻煩,最重要的是,它們并不那么昂貴-使用時的成本可以低至每小時0.25美元。
您將租用一臺外國計算機/服務(wù)器,而不是自己運行。僅僅關(guān)閉瀏覽器或關(guān)閉PC是不夠的,它們僅會切斷設(shè)備與該遠程服務(wù)器之間的連接,而不會關(guān)閉您要付費的東西。否則,您將需要支付所有費用,并且會收到討厭的賬單!
CPU最擅長順序處理單個更復(fù)雜的計算,而GPU更擅長并行處理多個但更簡單的計算。
GPU計算實例的成本通常是CPU計算實例的2-3倍,因此,除非您在基于GPU的訓(xùn)練模型中看到2-3倍的性能提升,否則我建議使用CPU。
總結(jié)
以上是生活随笔為你收集整理的深度学习 占用gpu内存 使用率为0_你了解GPU吗?为什么说深度学习需要GPU?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中构造方法可以被继承吗_py
- 下一篇: python可变类型和不可变类型_Pyt