在當今數據驅動的環境中,最大限度地提高數據處理和分析的性能和效率至關重要。雖然許多 Databricks 用戶熟悉使用 GPU 集群進行機器學習訓練,但也有巨大的機會利用 GPU 加速進行數據處理和分析任務。
Databricks 作為一個基于云的統一平臺,使用戶能夠高效地管理小型和大型數據需求。通過將 GPU 集群集成到現有工作流程中,用戶可以獲得顯著的性能提升,從而增強其數據分析能力。
本指南探討了 RAPIDS 如何幫助解鎖 Databricks 上的 GPU 加速,以使用熟悉的 API 和插件轉換數據處理和分析。RAPIDS 為 Databricks 用戶提供了多種加速現有工作流的選項,包括單節點處理以及與 Spark 和 Dask 的集成。這篇文章重點介紹了以下針對單節點和多節點用戶的安裝選項和集成方法。
對于單節點用戶,RAPIDS 可以在不更改代碼的情況下加速現有 pandas 工作流。有了這一新功能,單節點用戶現在可以在 RAPIDS cuDF(cuDF)和 pandas 之間輕松切換,以執行大型數據操作任務。
多節點用戶可以使用 Apache Spark 的 RAPIDS 加速器以及現有 Spark 集群上的 Dask 來加速工作負載。
Apache Spark 的 RAPIDS 加速器作為 Apache Spark 3.0+的插件提供。該插件的工作原理是在 Databricks 中插入用于 SQL 和 DataFrame 操作的 RAPIDS 后端,而不需要用戶更改代碼。如果不支持某個操作,它將回退到使用 Spark CPU 版本。
您可以安裝 Dask 并與 Spark 一起使用庫,如 dask-cudf,以有效地擴展不同的工作負載。本文稍后將概述 Dask 和 Spark 之間的差異,以幫助您為數據處理工作流做出最佳的工具決策。
單節點用戶:加速數據塊上的 pandas
pandas 是一個流行的數據操作庫,專門用于處理表格格式的結構化數據。Databricks Runtime 將 pandas 作為標準 Python 包之一,允許用戶創建和 在單節點計算環境中使用 DataFrames。
cuDF 是一個 GPU 加速的 DataFrame 庫,其語法在許多場景中與 pandas 相似或相同。截至 RAPIDS v24.02 版本:cuDF 現在可以零代碼更改直接加速 pandas 工作流。
利用 cuDF 加速 pandas
當 cuDF 加速 pandas 時,寫在 pandas 代碼上的單個旗幟將拉動 cuDF.pandans。該庫將盡可能自動優化 pandas,使其在 GPU 上運行,必要時與傳統 pandas 無縫切換到 CPU,并在后臺進行同步。
這種創新方法提供了連貫的 CPU 和 GPU 體驗,確保 pandas 工作流的最佳性能(圖 1)。

使用 CuDF 加速 pandas 在處理大型數據集時,單個 GPU 節點上的 Databricks 可以顯著提高傳統 pandas 的性能。以下概述解釋了當 pandas 減速時,cudf.pandas 如何幫助加速。
1.運算速度最高
- pandas 操作通常是單線程的,缺乏并行性,沒有充分利用現代硬件的計算能力,尤其是在大規模數據處理中。
- 基于 CUDA 框架,cudf.pandas 利用 GPU 的并行處理能力,實現過濾、聚合和連接等操作的更快計算。這在處理可以分布在 GPU 核心上的大型數據集時尤其有益。
2.零代碼更改加速
- 用戶可以在現有代碼中使用 cudf.pandans 加速 panda,無需任何修改。使用 magic 命令或使用命令行上的 Python 模塊標志加載 cudf.pandans Jupyter Notebook 擴展。
#IPython 或 Jupyter 筆記本 | #Python 腳本 |
%load_ext cudf.pandasimport pandas as pd |
python -m cudf.pandas script.py |
3.統一的 CPU 和 GPU 工作流程
- 絕大多數 Python 軟件包都沒有啟用 GPU。這意味著,對于任何使用其他包(PyData 庫或組織特定工具)的分析,用戶都會將計算從 GPU(cuDF)移到 CPU(panda),然后再移回來。
- 使用 cuDF pandas 加速器模式,您現在可以使用單個代碼路徑在生產中進行開發、測試和運行,而無需考慮硬件。
- 第三方庫兼容性:cudf.pandas 提供了靈活性,并與大多數操作 pandas 對象的第三方庫可兼容,從而加快了 pandas 在這些庫中的操作。
cuDF pandas 快速入門示例
要在筆記本電腦環境中使用 cuDF 加速 pandas,請按照說明進行操作,首先 啟動啟用 GPU 的單節點 Databricks 集群。然后,上傳 10 分鐘到達 RAPIDS cuDF 大 pandas?筆記本。

此外,任何在第三方庫函數內運行的 pandas 代碼也將盡可能受益于 GPU 加速。例如,您可以看到一張圖片,說明 cudf.pandas 如何在中加速 pandas 后端 Ibis,一個為各種后端提供統一 DataFrame API 的庫。此示例在具有 NVIDIA H100 GPU 和一個 Intel Xeon Platinum 8480CL CPU 的系統上運行。
通過加載 cudf.pandas 擴展,在 Ibis 中的 pandas 操作可以使用 GPU 而不更改代碼。這只是起作用。

要了解更多信息,請參閱 GTC 2024 會議,查看使用 RAPIDS cuDF 加速 pandas 零代碼更改 會議錄像和cuDF 文件。此外,還可以查看相關帖子,包括RAPIDS cuDF 在零代碼更改的情況下將 pandas 加速近 150 倍 和NVIDIA 宣布 cuDF pandas 加速器模式。
Spark 和 Dask 的分布式數據處理
Spark 和 Dask 是分布式框架,可以幫助用戶跨多個處理器處理更大數據集的工作負載。在多節點 Databricks 集群中利用 Spark 和 Dask 可確保 GPU 資源的有效利用,從而為 RAPIDS 工作流帶來更好的結果和整體性能。
在 Databricks 中,Spark 集群擅長大規模數據處理,具有管理執行的驅動程序節點和用于計算并行任務的多個工作節點。Apache Spark 專注于傳統的商業智能工作負載,如 ETL 和 SQL 查詢,以及輕量級機器學習。
Dask 集群與 Spark 集群共享類似的體系結構,但提供了一個靈活的并行計算框架,適用于各種工作負載,尤其是那些不太以傳統 SQL 風格計算為中心的工作負載。例如,Dask 擅長處理多維數組、GIS 和高級機器學習。
多節點 Databricks:使用 Spark 加速 Rapids
在 Databricks 中,Spark 集群使用 Apache Spark 處理大規模數據處理,將工作負載分布在多個節點上以實現并行。
在 Databricks 上啟動多節點集群時,會提供一個 Spark 驅動程序節點和許多 Spark 工作節點。驅動程序節點負責管理整個 Spark 應用程序,而工作程序節點執行提交的任務。
Apache Spark 的 RAPIDS 加速器 為 Apache Spark 提供了一組插件,這些插件通過利用 GPU 和 RAPIDS 庫 實現加速。
加速器建立在 RAPIDS cuDF 項目 和 UCX 之上,并且要求群集中的每個工作節點都安裝 CUDA。
要將 Spark RAPIDS 與 Databricks 集群一起使用,用戶必須提供 init 腳本下載的rapids-4-spark-xxxx.jar
插件,然后配置 Spark 來加載該插件。隨后,Spark 查詢將充分利用 libcudf,并從 GPU 加速中獲得性能提升。
要在 Databricks 上為 Apache Spark 3.x 設置 RAPIDS 加速器,請按照 Databricks 用戶指南 進行操作。本指南的結尾還提供了一個機會,讓您 運行示例 Apache Spark 應用程序,它可以在 Databricks 上的 NVIDIA GPU 上運行。
多節點 Databricks:使用 Dask 加速 Rapids
Dask 廣泛應用于整個 PyData 生態系統,并被集成到多個庫中,包括 Xarray、Prefect、RAPIDS 以及 XGBoost。
由于數據集和計算的擴展速度快于 CPU 和 RAM,因此有必要找到跨多臺機器擴展計算的方法。Dask 有助于對大型計算進行分區,并有效地分配到分布式硬件上。
為什么在 Databricks 上 Dask?
Dask 現在提供了一個 dask-databricks CLI 工具,通過 conda 和 pip,以簡化 Databricks 中的 Dask 集群啟動過程。
驅動程序和工作程序的 Spark 集群架構與 Dask 集群相同:它們在不同的節點上具有調度器和工作者。如 Spark RAPIDS 示例所示,Databricks 提供了一種機制,可以在啟動時在每個節點上運行腳本來安裝插件。
Databricks 上的 Dask 利用這種范式在后臺引導 Dask 集群,作為初始化腳本過程的一部分。這個 init 腳本在啟動時在每個節點上運行,從而實現必要的配置和安裝。
Dask on Databricks 與 RAPIDS 快速啟動示例
要開始,請首先配置init
腳本,該腳本應包含以下內容,以安裝 Dask、Databricks 上的 Dask、RAPIDS 庫以及所有其他依賴項。
#!/bin/bash set -e ?
# Install RAPIDS (cudf & dask-cudf) and dask-databricks /databricks/python/bin/pip install ?????? --extra-index-url=https: //pypi .nvidia.com \ ?????? cudf-cu11 \ ?????? dask[complete] \ ?????? dask-cudf-cu11? \ ?????? dask-cuda==24.04 \ ?????? Dask-databricks ?
# Start Dask cluster with CUDA workers dask databricks run –-cuda |
接下來,通過 Databricks 筆記本,您可以快速將 Dask 客戶端連接到 Spark 驅動程序節點上運行的調度器。
import dask_databricks ?
client = dask_databricks.get_client() |
現在將任務提交到集群:
def inc(x): ???? return x + 1 ?
x = client.submit(inc, 10 ) x.result() |
您可以訪問 Dask 儀表板,使用 Databricks 的 driver-node
代理該鏈接,該鏈接可以在客戶端中找到,也可以使用 client.dashboard_link
。
>>> print (client.dashboard_link) https: / / dbc - dp - xxxx.cloud.databricks.com / driver - proxy / o / xxxx / xx - xxx - xxxx / 8087 / status |
欲了解更全面的示例,請參閱在 Databricks 中使用 Dask RAPIDS 訓練 XGBoost 的示例。
總結?
RAPIDS 是一套開源的 GPU 加速 Python 庫,其 API 設計看起來和感覺都像是最流行的開源數據科學工具。本文將介紹一些方法,以幫助您在 Databricks 上使用 RAPIDS 統一且易于使用的分析平臺來加速您的分析工作負載:
- 如果您在單節點 GPU 筆記本電腦環境中工作,安裝 RAPIDS CUDF 可以將 Pandas 的工作負載提高近 150 倍,無需進行任何代碼更改。
- 如果您是 Apache Spark 用戶,您可以簡單地將 RAPIDS 加速器 for Apache Spark 3.x 添加到您的 Databricks 設置中,以便在多個節點上進行分布式處理。這樣可以 使用 NVIDIA 決策支持基準,最高可加速 5 倍。
- 我們很高興地與您共享另一個多節點數據處理選項,即 Dask,以及擅長擴展非 SQL 工作負載的 Databricks 上的 RAPID。特別是,Dask 現在支持集成在 Databricks 中現有的 Spark 集群上。
- 不同的安裝選項(cudf.pandans、Spark 或 Dask)使 RAPIDS 能夠很容易地適應您在 Databricks 平臺上的特定需求。
隨著數據科學家從使用傳統分析轉向利用人工智能應用程序,傳統的基于 CPU 的處理無法在不影響速度或成本的情況下跟上。對大數據分析的需求不斷增長,這就需要一種新的框架來使用 GPU 快速處理數據。
因此,Databricks 是一個有利的選擇,可以輕松地將 GPU 加速無縫集成到您使用 pandas 和其他庫的日常工作中。
無論您是否利用 cudf.pandas 進行高效的數據操作,或者使用 Apache Spark 或?Dask 實現并行計算,Databricks 都提供了一個用戶友好的環境,使您能夠充分利用 GPU 功能來增強現有的 RAPIDS 工作流,從而解鎖新的性能和效率水平。
?