NVIDIA 已發布 RAPIDS cuDF 統一顯存和文本數據處理功能,幫助數據科學家在嚴苛的工作負載中處理更大、文本密集型數據集時繼續使用 pandas。現在,數據科學家可以將這些工作負載加速高達 30 倍。
RAPIDS 是開源 GPU 加速數據科學和 AI 庫的集合。cuDF 是一個 Python GPU DataFrame 庫,用于加載、連接、聚合和過濾數據。
作為面向數據科學家的頂級數據處理庫,pandas 是一個靈活而強大的 Python 數據分析和操作庫。上個月,它的下載量超過 2000 萬次。然而,隨著數據集規模的增長,pandas 在 CPU 系統中的處理速度和效率都很低。這迫使數據科學家不得不在緩慢的執行時間和使用其他工具相關的切換成本之間做出選擇。
NVIDIA 在 GTC 2024 上宣布,RAPIDS cuDF 可將 pandas 的速度提升近 150 倍,無需更改代碼。Google 隨后宣布,默認情況下,RAPIDS cuDF 可在 Colab 的 Google I/O 上使用,使 pandas 代碼加速比以往更容易實現。
雖然這一勢頭令人興奮,但用戶反饋強調了使用 RAPIDS cuDF pandas 加速的工作負載在大小和類型方面的限制。更具體地說:
- 為了最大限度地加速,數據集需要適合 GPU 顯存,以提供充足的空間用于分組和連接操作,從而滿足工作負載的內存需求。這一要求大大限制了用戶可以應用加速的 pandas 代碼的數據量和操作復雜性,尤其是在內存較低的 GPU 上。
- 在原始版本的 cuDF 中,用戶很快就遇到了文本密集型數據集的處理限制,該版本每列最多支持 2.1 億個字符。通過標準客戶日志、產品評論和位置密集型數據集,可以輕松達到這一限制。這在為 LLM 和類似的生成式 AI 用例預處理大型字符串時造成了限制。
為應對這些反饋,最新版本的 RAPIDS cuDF pandas 加速器模式包括:
- 內置優化的 CUDA 統一顯存功能,可以優化 CPU+GPU 系統的顯存利用率,從而實現更大的數據集和更復雜的工作負載的速度提升高達 30 倍。
- 將字符串支持從一列中的 21 億個字符擴展到 21 億行表格文本數據,以支持數據預處理 LLM 和其他要求嚴苛的用例中使用的文本密集型數據。
借助此版本,您可以在 GPU 上高效加速更大的數據集和文本密集型用例,從而使 cuDF 更適合多樣化和要求嚴苛的工作流程。
通過統一顯存加速數據處理
為了實現零代碼更改加速和無縫體驗,cuDF 依賴于 CPU 回退。當工作流程的顯存需求超過 GPU 顯存時,cuDF 會將數據傳輸到 CPU 顯存中,并使用 pandas 處理數據。
由于連接和逐組聚合等常見操作的顯存峰值高于輸入數據的大小,因此在處理大型數據集時避免 CPU 回退需要輸入數據在 GPU 顯存中留出大量空間,以免出現性能下降的情況。
為了解決此問題,cuDF 現在使用 CUDA 統一顯存來支持將 pandas 工作負載擴展到 GPU 顯存之外。統一顯存提供了一個跨越系統中 CPU 和 GPU 的單一地址空間,支持分配大于可用 GPU 顯存的虛擬內存(超額訂閱),并根據需要將數據傳入和傳出 GPU 顯存(分頁)。
但是,在需要數據但不在 GPU 上時,使用統一顯存可能會導致重復出現分頁錯誤,從而降低性能。為了最大限度地提高性能,cuDF 包含優化,以幫助確保數據在 CUDA 內核需要之前駐留在 GPU 上。這使您能夠充分利用系統顯存來擴展 GPU 顯存之外的內存,并繼續利用加速計算的優勢。為了實現峰值加速,數據集的大小仍應完全適合 GPU 顯存。
如 GPU 顯存以外的加速 pandas 基準測試 (圖 1) 所示,與僅使用 CPU 的 pandas 相比,在 16 GB 顯存 GPU 上使用 cuDF 運行具有 10 GB 數據集的數據處理工作負載,數據連接速度提升高達 30 倍。以前,由于 GPU 顯存限制,處理大于 4 GB 的數據集會降低性能。注意:在執行期間,工作負載占用的最大 GPU 顯存可能會超過輸入數據集大小。

硬件:NVIDIA T4,CPU:英特爾至強金牌 6130 CPU;軟件:pandas v2.2.2,RAPIDS cuDF 24.08
有關這些基準測試結果及其再現方式的更多信息,請參閱 cuDF 基準測試指南。請注意,我們之前的 DuckDB 基準測試分別在 0.5 GB 和 5 GB 上運行,因此需要更改數據生成腳本和數據處理腳本以便創建 10 GB 基準測試。
使用 RAPIDS cuDF 大規模處理表格文本數據
在原始版本中,cuDF 在文本數據列中支持多達 2.1 億個總字符,這在常見的大型數據集中很容易被超越。處理產品審查數據、客戶服務聊天記錄或具有重要位置或用戶 ID 數據的大型數據集是如何輕松滿足這一限制的常見示例。
眾所周知,使用僅 CPU 的 pandas 時,字符串執行速度緩慢,因此無法使用 pandas 代碼大規模處理表格文本數據。用戶反饋表明,文本密集型數據集中的大型字符串是可以從 cuDF 加速中受益的用例。這最初受到 cuDF 設計的限制。
通過大幅增加字符串中支持的字符數量,cuDF 現在可以使用 GPU 上的 pandas 代碼處理多達 21 億行的表格文本數據,從而使 pandas 成為生成式 AI 流程中可行的數據準備工具。
開始使用
所有這些功能均可在 RAPIDS 24.08 中使用,您可以從 RAPIDS 安裝指南中下載該版本。請注意,統一內存功能僅適用于基于 Linux 的系統中。
- 要體驗統一顯存,請嘗試Unified Memory演示notebook,其中詳細解釋了擴展顯存功能的工作原理。
- 要測試大型字符串預處理工作流,請查看職位發布演示 notebook.
?