在這篇文章中,我們將闡述它如何幫助您、如何開始以及替代方案是什麼。
邁向高性能 pandas 代碼的夢想
熊貓的問題
pandas 是最受歡迎的 Python 資料操作包,上個月 貝寧電話號碼列表 下載量為1.44 億次。 pandas 的受歡迎程度很大程度上來自於它的易用性和廣泛的資料操作功能。
不幸的是,pandas 的廣泛開發歷史(於 2011 年首次公開)意味著它早於高效能運算 (HPC) 領域的許多創新。這意味著 pandas 程式碼運行速度太慢,無法用於大型資料集。
多次嘗試讓熊貓變得更快
為了解決這個問題已經有很多嘗試。目標是能夠編寫數百萬用戶熟悉的相同 pandas 程式碼,但運行速度更快。一些高效能的 pandas 替代品包括Polars,它透過用 Rust 重寫後端來加快速度;PySpark,為 Spark HPC 平台提供 Python 介面;Vaex,它使用記憶體不足計算;和DuckDB,它在分析最佳化的資料庫內執行計算。
請參閱這些教程,其中更詳細地討論了一些替代方案:
Python 中的高效能資料操作:pandas 2.0 與 Polars
對高性能 pandas 替代品進行基準測試
DuckDB 簡介:它是什麼以及為什麼要使用它?
NVIDIA 的更快 pandas 解決方案
NVIDIA 一直在開發一套名為RAPIDS的高效能資料科學工具。該工具箱包括cuDF,NVIDIA 的用於高效能 pandas 程式碼的 Python 套件。 (名稱結合了CUDA(NVIDIA 用於建立支援 GPU 的應用程式的低階工具包)和 DataFrame(用於儲存分析資料的 pandas 物件。後者啟發了 DataCamp 的DataFramed播客的名稱。)
cuDF 加速資料操作程式碼的技巧是讓程式碼在 GPU 而不是 CPU 上運作。雖然 GPU 最初是為計算顯示圖形而設計的,但它在資料科學運算方面卻非常有效。
cuDF 有問題
儘管 cuDF 在讓您更快地運行 pandas 程式碼方面非常成功,但它有幾個問題阻礙了廣泛採用。
並非所有 pandas 都受支持
一大障礙是 cuDF 僅實現了 Pandas API 的約 60%。也就是說,您可以在 pandas 中編寫的所有可能程式碼中只有大約 60% 可以在 cuDF 中運行。可以運行的 60% 的程式碼自然是大多數人想要運行的最常見的 60% 程式碼。這意味著對於日常分析,cuDF 程式碼應該沒問題。然而,如果你想做一些不尋常的事情,你會遇到 cuDF 的問題。
開發和測試需要 GPU
cuDF 僅支援在 GPU 上執行程式碼。這意味著您在開發程式碼和測試程式碼時需要 GPU。如果您想在筆記型電腦上本地運行程式碼,這通常是不可行的,如果您想在雲端中運行程式碼,這通常是昂貴的。
與其他 Python 套件互動需要處理器交換
另一個問題是絕大多數 Python 套件都不支援 GPU。這意味著,對於使用其他套件的任何分析(例如,或多或少的任何機器學習工作流程),您必須弄清楚如何將計算從 GPU 轉移到 CPU 並返回。
針對缺乏 GPU 的現有解決方案非常繁瑣
這三個問題加在一起意味著您必須編寫兩個版本的程式碼:一種在 GPU 可用且 cuDF 可以計算所有內容的情況下運行,另一種在沒有 GPU 可用的情況下運行。
大多數資料科學家希望更多地關注從數據中獲取見解,而不是此類程式碼細節。歷史上,這使得使用 cuDF 對於許多資料科學任務來說都是有問題的。
pandas 加速器模式如何改善 cuDF
pandas Accelerator Mode 提供的這些問題的解決方案是,您只需要編寫一行程式碼即可啟用 GPU 支持,然後就可以編寫標準的 pandas 程式碼。
當支援 GPU 運算時(有可用的 NVIDIA GPU,並且 cuDF 知道如何運行 pandas 程式碼),您的程式碼將在 GPU 上運行。如果無法做到這一點,cuDF 會自動切換到在 CPU 上運行。您不需要編寫兩個版本的程式碼,也不需要手動處理 GPU 和 CPU 之間的切換。
pandas 加速器模式比其他方案更快嗎?
資料庫基準測試結果 - 來自 NVIDIA

圖片版權所有 NVIDIA。
NVIDIA 在類似 DuckDB 資料庫的操作基準測試中針對其他高效能 Python 資料操作工具測試了 pandas 加速器模式。這套資料操作挑戰提供了一種衡量技術執行任務的能力的方法,例如在大資料集上提供分組匯總統計資料和表格連接。
根據 NVIDIA 的說法,pandas Accelerator Mode(圖中表示為 xdf)在基準測試中名列第一。這是值得注意的,因為 cuDF 的標準版本目前無法通過連線測試,因為它無法在 GPU 上執行所有必要的操作。 (您需要將 cuDF 與其他工具混合才能使一切正常運作。)
需要注意的一點是,NVIDIA 在高階 NVIDIA A100 80GB GPU 上對此進行了測試,並且未指定所使用的 CPU。您的效能將根據您的硬體設定、資料集和要執行的計算而有所不同。
如何使用 pandas 加速器模式?
讓我們看看如何開始在 pandas 中使用加速器模式:
如何安裝最新的cuDF