中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

如何在GPU上加速數(shù)據(jù)科學(xué)

2021-02-13    分類: 網(wǎng)站建設(shè)

筆者按,數(shù)據(jù)科學(xué)家需要算力。無論您是用 pandas 處理一個(gè)大數(shù)據(jù)集,還是用 Numpy 在一個(gè)大矩陣上運(yùn)行一些計(jì)算,您都需要一臺(tái)強(qiáng)大的機(jī)器,以便在合理的時(shí)間內(nèi)完成這項(xiàng)工作。

在過去的幾年中,數(shù)據(jù)科學(xué)家常用的 Python 庫已經(jīng)非常擅長(zhǎng)利用 CPU 能力。

Pandas 的基礎(chǔ)代碼是用 C 語言編寫的,它可以很好地處理大小超過 100GB 的數(shù)據(jù)集。如果您沒有足夠的 RAM 來容納這樣的數(shù)據(jù)集,那么您可以使用分塊功能,它很方便,可以一次處理一個(gè)數(shù)據(jù)塊。

GPUs vs CPUs:并行處理

有了大量的數(shù)據(jù),CPU 就不會(huì)切斷它了。

一個(gè)超過 100GB 的數(shù)據(jù)集將有許多數(shù)據(jù)點(diǎn),數(shù)據(jù)點(diǎn)的數(shù)值在數(shù)百萬甚至數(shù)十億的范圍內(nèi)。有了這么多的數(shù)據(jù)點(diǎn)要處理,不管你的 CPU 有多快,它都沒有足夠的內(nèi)核來進(jìn)行有效的并行處理。如果你的 CPU 有 20 個(gè)內(nèi)核(這將是相當(dāng)昂貴的 CPU),你一次只能處理 20 個(gè)數(shù)據(jù)點(diǎn)!

CPU 在時(shí)鐘頻率更重要的任務(wù)中會(huì)更好——或者根本沒有 GPU 實(shí)現(xiàn)。如果你嘗試執(zhí)行的流程有一個(gè) GPU 實(shí)現(xiàn),且該任務(wù)可以從并行處理中受益,那么 GPU 將更加有效。

使用 Scikit-Learn 在 CPU 上運(yùn)行 DBSCAN 的結(jié)果

GPU 上帶 Rapids 的 DBSCAN

現(xiàn)在,讓我們用 Rapids 進(jìn)行加速!

首先,我們將把數(shù)據(jù)轉(zhuǎn)換為 pandas.DataFrame 并使用它創(chuàng)建一個(gè) cudf.DataFrame。pandas.DataFrame 無縫轉(zhuǎn)換成 cudf.DataFrame,數(shù)據(jù)格式無任何更改。

  1. import pandas as pd  
  2. import cudf  
  3. X_df = pd.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})  
  4. X_gpu = cudf.DataFrame.from_pandas(X_df) 

然后我們將從 cuML 導(dǎo)入并初始化一個(gè)特殊版本的 DBSCAN,它是 GPU 加速的版本。DBSCAN 的 cuML 版本的函數(shù)格式與 Scikit-Learn 的函數(shù)格式完全相同:相同的參數(shù)、相同的樣式、相同的函數(shù)。

  1. from cuml import DBSCAN as cumlDBSCAN  
  2. db_gpu = cumlDBSCAN(eps=0.6, min_samples=2) 

最后,我們可以在測(cè)量運(yùn)行時(shí)間的同時(shí)運(yùn)行 GPU DBSCAN 的預(yù)測(cè)函數(shù)。

  1. %%time  
  2. y_db_gpu = db_gpu.fit_predict(X_gpu) 

GPU 版本的運(yùn)行時(shí)間為 4.22 秒,幾乎加速了 2 倍。由于我們使用的是相同的算法,因此結(jié)果圖也與 CPU 版本完全相同。

如何在GPU上加速數(shù)據(jù)科學(xué)

使用 cuML 在 GPU 上運(yùn)行 DBSCAN 的結(jié)果

使用 Rapids GPU 獲得超高速

我們從 Rapids 獲得的加速量取決于我們正在處理的數(shù)據(jù)量。一個(gè)好的經(jīng)驗(yàn)法則是,較大的數(shù)據(jù)集將更加受益于 GPU 加速。在 CPU 和 GPU 之間傳輸數(shù)據(jù)有一些開銷時(shí)間——對(duì)于較大的數(shù)據(jù)集,開銷時(shí)間變得更「值得」。

我們可以用一個(gè)簡(jiǎn)單的例子來說明這一點(diǎn)。

我們將創(chuàng)建一個(gè)隨機(jī)數(shù)的 Numpy 數(shù)組并對(duì)其應(yīng)用 DBSCAN。我們將比較常規(guī) CPU DBSCAN 和 cuML 的 GPU 版本的速度,同時(shí)增加和減少數(shù)據(jù)點(diǎn)的數(shù)量,以了解它如何影響我們的運(yùn)行時(shí)間。

下面的代碼說明如何進(jìn)行測(cè)試:

  1. import numpy as np  
  2.  
  3. n_rows, n_cols = 10000, 100  
  4. X = np.random.rand(n_rows, n_cols)  
  5. print(X.shape)  
  6.  
  7. X_df = pd.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})  
  8. X_gpu = cudf.DataFrame.from_pandas(X_df)  
  9.  
  10. db = DBSCAN(eps=3, min_samples=2)  
  11. db_gpu = cumlDBSCAN(eps=3, min_samples=2)  
  12.  
  13. %%time  
  14. y_db = db.fit_predict(X) 
  15.  
  16. %%time  
  17. y_db_gpu = db_gpu.fit_predict(X_gpu) 

檢查下面的 Matplotlib 結(jié)果圖:

如何在GPU上加速數(shù)據(jù)科學(xué)

當(dāng)使用 GPU 而不是 CPU 時(shí),數(shù)量會(huì)急劇增加。即使在 10000 點(diǎn)(最左邊),我們的速度仍然是 4.54x。在更高的一端,1 千萬點(diǎn),我們切換到 GPU 時(shí)的速度是 88.04x!

本文名稱:如何在GPU上加速數(shù)據(jù)科學(xué)
URL標(biāo)題:http://m.2m8n56k.cn/news46/100796.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃軟件開發(fā)標(biāo)簽優(yōu)化網(wǎng)站改版網(wǎng)站設(shè)計(jì)服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
主站蜘蛛池模板: 欧洲美女a视频一级毛片 | 牛牛本精品99久久精品88m | 成人av手机在线观看 | 久热香蕉精品视频在线播放 | 成人香蕉xxxxxxx | 国产亚洲精品久久久久91网站 | 精品国产一区二区三区在线 | 最新日韩欧美不卡一二三区 | 日韩国产欧美成人一区二区影院 | 中文字幕一区二区三区视频在线 | 日韩一区在线播放 | 午夜手机看片 | 久久精品国产亚洲网址 | 日韩亚洲欧美一区噜噜噜 | 国产愉拍精品手机 | 免费特黄级夫费生活片 | 欧美一区二区三区四区在线观看 | 三级毛片在线播放 | 在线观看免费精品国产 | 国产精品久久久久久一区二区 | 97超频国产在线公开免费视频 | 久久在线影院 | 欧美日韩在线看 | 99精品视频一区在线视频免费观看 | 国产99视频精品免视看9 | 中文字幕欧美一区 | 亚洲高清免费观看 | 久久aa毛片免费播放嗯啊 | 99日韩| 免费一级成人免费观看 | 好看的看黄a大片爽爽影院 好男人天堂网 | 国产亚洲精品国产 | 高清国产一级精品毛片基地 | 成人亚洲综合 | 久久99精品久久久久久秒播放器 | 性色xxx| 国产午夜精品久久久久免费视 | 乱淫67194| 一个人免费看的www 一及 片日本 | 99视频在线国产 | 免费一级毛片麻豆精品 |