
RAPIDS v24.10 版本 在為資料科學家和開發者提供無縫用戶體驗方面又向前邁出了一步。這篇博文重點介紹了以下新功能:
零代碼更改加速的 NetworkX 現已正式推出(GA)
Polars GPU 引擎 (公測版)
將 UMAP 引入大於 GPU 的內存資料集
改進了 cuDF pandas 與 NumPy 和 PyArrow 的相容性。
將 GPU 集成到基於 GitHub 的 CI 系統的指南
RAPIDS 範圍內對 Python 3.12 和 NumPy 2.x 的支援
零代碼更改加速 NetworkX
從 NetworkX 3.4 開始,由 RAPIDS cuGraph 加速的 NetworkX 現已在 24.10 版本中正式發佈。該版本增加了 GPU 加速的圖形創建、新的用戶體驗和 擴展文檔 。
加速圖形構建可實現 NetworkX 工作流程的全面端到端加速,對於 CPU 和 GPU 之間的轉換可能會降低性能的大型圖形工作流程尤其重要。
現在,通過將 NX_CUGRAPH_AUTOCONFIG 環境變量設置為 True,可以啓用完整的端到端加速 NetworkX 體驗。
%env NX_CURGAPH_AUTOCONFIG=Trueimport pandas as pdimport networkx as nxurl = "https://data.rapids.ai/cugraph/datasets/cit-Patents.csv"df = pd.read_csv(url, sep=" ", names=["src", "dst"], dtype="int32")G = nx.from_pandas_edgelist(df, source="src", target="dst")%time result = nx.betweenness_centrality(G, k=10) |
端到端加速使使用 betweenness centrality、PageRank 等算法的工作流程能夠在更大的圖形上體驗高達 10 倍、50 倍甚至 500 倍的加速。


您可以在 文檔中 詳細瞭解由 cuGraph 加速的 NetworkX,並在 此處 探索上述基準測試的代碼。
零代碼更改加速 Polars (公測版)
9 月,由 cuDF 提供支援的 Polars GPU 引擎發佈了公開測試版。在 Polars 中提供了 GPU 支援,用戶可以訪問工作流的速度最高可提升 13 倍,且無需更改代碼,相比在 CPU 上運行。

用戶可以直接在 Polars Lazy API 中構建,將 Polars 配置為在觸發計算時使用 GPU,將 `engine` 關鍵字配置為 `collect`。
import polars as pldf = pl.LazyFrame({"a": [1.242, 1.535]})q = df.select(pl.col("a").round(1))result = q.collect(engine="gpu") |
如需瞭解詳情,請閱讀 NVIDIA 和 Polars 公告博客或深入瞭解 Polars GPU 支援文檔 。或者,直接進入 Google Colab notebook 進行試用。
將 UMAP 引入大於 GPU 的內存資料集
從 v24.10 開始,cuML 的 UMAP 算法現在支援處理大於 GPU 內存的資料集,而這在早期版本中可能會導致內存不足錯誤。通過使用 新的分批式近似近鄰算法 並可選地將完整資料集儲存在 CPU 內存中,我們能夠構建近似 KNN 圖形,同時在任何給定時間僅處理 GPU 上的資料子集。
用戶可以將新的 nnd_n_clusters 關鍵字設置為大於 1 的任何值(默認值),並(如有必要)將 data_on_host=True 關鍵字傳遞至 fit 或 fit_transform,從而利用此新的可選功能。
from cuml.manifold import UMAPimport numpy as np# Generate synthetic data using numpy (random float32 matrix)X = np.random.rand(n_samples, n_features).astype(np.float32)# UMAP parametersnum_clusters = 4 # Number of clusters for NN Descent batching, 1 means no clusteringdata_on_host = True # Whether the data is stored on the host (CPU)# UMAP model configurationreducer = UMAP( n_neighbors=10, min_dist=0.01, build_algo="nn_descent", build_kwds={"nnd_n_clusters": num_clusters},)# Fit and transform the dataembeddings = reducer.fit_transform(X, data_on_host=data_on_host) |
用戶可以從 n_clusters(例如 4) 的初始值開始,並根據需要增加該值,以管理 GPU 內存使用情況。設置值過高可能會因圖形構建的多次迭代而導致性能開銷,因此最好根據資料集的大小和可用的 GPU 內存來尋求平衡。
改進了 cuDF pandas 生態系統相容性
改進了代碼相容性
cuDF 的 pandas 加速器模式現在與 NumPy 數組完全相容。以前,對 pandas API 生成的 NumPy 數組運行 Python isinstance 檢查,在使用 cuDF pandas 時返回 False,在使用標準 pandas 時返回 True。由於這是一個常見的代碼設計模式,一些用戶工作流程需要變通方案才能順利運行。
從 v24.10 開始,當加速器模式處於活動狀態且用戶嘗試將 DataFrame 或列轉換為數組時,cudf.pandas 現在可在功能上生成真正的 NumPy 數組 —— 消除了這個問題。例如:
%load_ext cudf.pandasimport pandas as pdimport numpy as nparr = pd.Series([1, 2, 3]).values # now returns a true numpy arrayisinstance(arr, np.ndarray) # returns True |
此更改還使依賴 NumPy C API 的代碼能夠與 cuDF pandas 順暢協作。
改進箭頭相容性
cuDF 現在還支援一系列 PyArrow 版本。Arrow 相容性一直是 cuDF 用戶的痛點。到目前為止,由於我們使用 Arrow C++ API 以及對二進制相容性的要求,cuDF 的每個版本都與非常特定的 Arrow 版本相關聯。
在此版本中,我們重寫了這些功能,僅使用 Arrow C 資料接口,這反過來又使我們完全停止使用 Arrow C++。通過這一更改,cuDF Python 現在可以支援自 PyArrow 4 以來的任何 PyArrow 版本。
將 GPU 集成到基於 GitHub 的 CI 系統的指
我們從社區瞭解到,找到一種簡單有效的方法將 GPU 整合到基於 GitHub 的 CI 系統中可能很有挑戰性。根據 scikit-learn 團隊 的經驗, RAPIDS 部署文檔 中添加了有效執行此操作的新指南。
GitHub Actions 現已支援 托管的 GPU 運行程序 。這意味著 GitHub 上的任何專案都可以在其持續集成(CI)工作負載中利用 NVIDIA 的 GPU 進行測試。這使得專案更容易與 RAPIDS 庫集成,並在本地測試更改是否相容,而無需在本地擁有 GPU 硬體。
GPU 托管的運行者不包含在 GitHub Action 免費試用活動中。使用 GPU 的運行者 每分鐘的成本通常為幾美分 ,專案可以添加每月支出上限,以幫助控製成本。
要設置 GPU 運行器,請導航至組織設置的「GitHub Actions」部分,並添加新的運行器。然後,選擇 NVIDIA 合作夥伴圖像,並將「Size」更改為由 GPU 提供支援的 VM,為您的運行器提供 GPU。

然後,您可以使用 runs-on 選項配置工作流,以使用新的 runners。
name: GitHub Actions GPU Demorun-name: ${{ github.actor }} is testing out GPU GitHub Actionson: [push]jobs: gpu-workflow: runs-on: linux-nvidia-gpu steps: - name: Check GPU is available run: nvidia-smi |
有關設置 GitHub Actions GPU 驅動的工作流程的更多詳細資訊,請參閱 RAPIDS 部署文檔 ,該文檔還包含有關何時運行 GPU CI 的最佳實踐,以便物盡其用。
scikit-learn 專案最近在 GitHub Actions 上設置了 GPU 運行程序,使用標籤在選定的 PR 上手動觸發 GPU 工作流。查看 他們的博客文章 ,瞭解他們的經驗。
RAPIDS 平台更新
在 24.10 中,RAPIDS 軟體包接收了一些重要更新,可與其他科學計算軟體的更新版本一起使用。軟體包現在支援 Python 3.10-3.12 以及 NumPy 1.x 和 2.x。它們現在還支援 fmt 11 和 spdlog 1.14,這些庫的版本現已用於 conda-forge 的大部分版本。作為這些增強功能的一部分,此版本還取消了對 Python 3.9 或版本低於 2.19 的 NCCL 的支援。
WeChat
Profile