GPU計算也稱圖形處理單元上的通用計算,它是支持許多現(xiàn)代的機器學(xué)習(xí)算法,這些算法以前由于運行時間慢而無法實現(xiàn)。通過利用GPU的并行計算功能,相對于傳統(tǒng)的CPU計算,可以顯著減少計算時間。CUDA由NVIDIA免費開發(fā)和提供,它是并行計算運行時和軟件API,供開發(fā)人員使用,以支持大多數(shù)領(lǐng)先的機器學(xué)習(xí)框架。相信通過上述介紹,對于GPU計算是什么大家已經(jīng)清楚,但是還有很多人想了解,用于機器學(xué)習(xí)的GPU計算的工作原理是什么樣呢?在回答這個問題之前,先讓我們了解一下CUDA平臺和API。
通過使用CUDA平臺和API,最初為計算機圖形渲染開發(fā)的并行計算管道現(xiàn)在可以被軟件開發(fā)人員用于在NVIDIA GPU上進行通用計算。與傳統(tǒng)的CPU相比,GPU硬件具有并行體系結(jié)構(gòu)和海量內(nèi)存帶寬,能夠更快地完成計算密集型任務(wù)的數(shù)量級。例如,由于GPU計算的優(yōu)勢,現(xiàn)在可以在數(shù)小時或數(shù)天內(nèi)完成在CPU上花費數(shù)年的深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練。
但是為什么要使用GPU?因為GPU具有數(shù)千個計算核心,而CPU僅具有多達2、4、8、16、32個左右的核心。代碼的并行化級別限于一個人的計算機上的內(nèi)核數(shù)。此外,許多GPU包括專門用于機器學(xué)習(xí)的各種數(shù)學(xué)計算的內(nèi)核,例如用于執(zhí)行矩陣乘法累加的NVIDIA張量內(nèi)核。
為了在NVIDIA GPU上執(zhí)行代碼,可以使用CUDA C / C ++,F(xiàn)ORTAN或其他接口將傳統(tǒng)的串行代碼重寫為并行代碼,然后對其進行編譯以利用可用的GPU硬件的特定計算功能。數(shù)據(jù)集分布在不同的工作程序處理器上,然后為每個工作程序分配任務(wù),并在計算管道的末尾收集結(jié)果。Tensorflow,Pytorch,MXNet和Chainer等許多流行的深度學(xué)習(xí)框架都包括CUDA支持,并允許用戶利用GPU計算的優(yōu)勢而無需編寫任何CUDA代碼。
但是,并非所有任務(wù)都可以由GPU加速。任務(wù)必須能夠并行化才能在GPU上工作。這些問題被稱為固有的串行問題。幸運的是,機器學(xué)習(xí)算法中的許多重要計算。例如人工神經(jīng)網(wǎng)絡(luò)都可以并行化。例如,在卷積神經(jīng)網(wǎng)絡(luò)中,較慢的計算步驟之一是滑動窗口必須“滑動”穿過圖像并將卷積核應(yīng)用于圖像的每個部分的過程。在這種情況下,每個計算步驟都獨立于其先前的步驟。這使我們能夠輕松地并行化代碼,以便每個處理器都可以執(zhí)行計算而不會中斷其他處理器。
帶有Modzy的GPU和CUDA計算
該Modzy平臺提供了對NVIDIA GPU的支持CUDA能夠運行。我們所有的模型都可以在GPU上運行,也可以在多個GPU上運行,與CPU相比,運行時性能更高。
這對您意味著什么
如果您正在使用Modzy庫中基于GPU的模型,那么您已經(jīng)可以利用運行時改進。如果要創(chuàng)建要部署到Modzy平臺中的新模型,則可以利用隨附的CUDA和GPU支持來增強其性能。
上述就是關(guān)于用于機器學(xué)習(xí)的GPU計算是怎樣工作的全部內(nèi)容,想了解更多關(guān)于機器學(xué)習(xí)的相關(guān)信息,請繼續(xù)關(guān)注中培偉業(yè)。