2021-02-13 分類: 網站建設
筆者按,數據科學家需要算力。無論您是用 pandas 處理一個大數據集,還是用 Numpy 在一個大矩陣上運行一些計算,您都需要一臺強大的機器,以便在合理的時間內完成這項工作。
在過去的幾年中,數據科學家常用的 Python 庫已經非常擅長利用 CPU 能力。
Pandas 的基礎代碼是用 C 語言編寫的,它可以很好地處理大小超過 100GB 的數據集。如果您沒有足夠的 RAM 來容納這樣的數據集,那么您可以使用分塊功能,它很方便,可以一次處理一個數據塊。
GPUs vs CPUs:并行處理
有了大量的數據,CPU 就不會切斷它了。
一個超過 100GB 的數據集將有許多數據點,數據點的數值在數百萬甚至數十億的范圍內。有了這么多的數據點要處理,不管你的 CPU 有多快,它都沒有足夠的內核來進行有效的并行處理。如果你的 CPU 有 20 個內核(這將是相當昂貴的 CPU),你一次只能處理 20 個數據點!
CPU 在時鐘頻率更重要的任務中會更好——或者根本沒有 GPU 實現。如果你嘗試執行的流程有一個 GPU 實現,且該任務可以從并行處理中受益,那么 GPU 將更加有效。
使用 Scikit-Learn 在 CPU 上運行 DBSCAN 的結果GPU 上帶 Rapids 的 DBSCAN
現在,讓我們用 Rapids 進行加速!
首先,我們將把數據轉換為 pandas.DataFrame 并使用它創建一個 cudf.DataFrame。pandas.DataFrame 無縫轉換成 cudf.DataFrame,數據格式無任何更改。
- import pandas as pd
- import cudf
- X_df = pd.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})
- X_gpu = cudf.DataFrame.from_pandas(X_df)
然后我們將從 cuML 導入并初始化一個特殊版本的 DBSCAN,它是 GPU 加速的版本。DBSCAN 的 cuML 版本的函數格式與 Scikit-Learn 的函數格式完全相同:相同的參數、相同的樣式、相同的函數。
- from cuml import DBSCAN as cumlDBSCAN
- db_gpu = cumlDBSCAN(eps=0.6, min_samples=2)
最后,我們可以在測量運行時間的同時運行 GPU DBSCAN 的預測函數。
- %%time
- y_db_gpu = db_gpu.fit_predict(X_gpu)
GPU 版本的運行時間為 4.22 秒,幾乎加速了 2 倍。由于我們使用的是相同的算法,因此結果圖也與 CPU 版本完全相同。
使用 cuML 在 GPU 上運行 DBSCAN 的結果使用 Rapids GPU 獲得超高速
我們從 Rapids 獲得的加速量取決于我們正在處理的數據量。一個好的經驗法則是,較大的數據集將更加受益于 GPU 加速。在 CPU 和 GPU 之間傳輸數據有一些開銷時間——對于較大的數據集,開銷時間變得更「值得」。
我們可以用一個簡單的例子來說明這一點。
我們將創建一個隨機數的 Numpy 數組并對其應用 DBSCAN。我們將比較常規 CPU DBSCAN 和 cuML 的 GPU 版本的速度,同時增加和減少數據點的數量,以了解它如何影響我們的運行時間。
下面的代碼說明如何進行測試:
- import numpy as np
- n_rows, n_cols = 10000, 100
- X = np.random.rand(n_rows, n_cols)
- print(X.shape)
- X_df = pd.DataFrame({'fea%d'%i: X[:, i] for i in range(X.shape[1])})
- X_gpu = cudf.DataFrame.from_pandas(X_df)
- db = DBSCAN(eps=3, min_samples=2)
- db_gpu = cumlDBSCAN(eps=3, min_samples=2)
- %%time
- y_db = db.fit_predict(X)
- %%time
- y_db_gpu = db_gpu.fit_predict(X_gpu)
檢查下面的 Matplotlib 結果圖:
當使用 GPU 而不是 CPU 時,數量會急劇增加。即使在 10000 點(最左邊),我們的速度仍然是 4.54x。在更高的一端,1 千萬點,我們切換到 GPU 時的速度是 88.04x!
本文名稱:如何在GPU上加速數據科學
URL標題:http://m.newbst.com/news46/100796.html
成都網站建設公司_創新互聯,為您提供網站策劃、軟件開發、標簽優化、網站改版、網站設計、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容