Databricks#

您可以通过几种不同的方式在 Databricks 上安装 RAPIDS

  1. 在单节点 GPU notebook 环境中加速机器学习工作流

  2. Spark 用户可以在 Databricks 上安装 用于 Apache Spark 3.x 的 RAPIDS 加速器

  3. 在 Spark 旁边安装 Dask,然后使用 dask-cudf 等库进行多节点工作负载

单节点 GPU Notebook 环境#

创建 init-script#

要开始使用,您必须首先配置一个初始化脚本,以安装 RAPIDS 库和项目的所有其他依赖项。

Databricks 推荐使用存储在工作区文件中的集群范围的 init 脚本。

导航到左上角的工作区选项卡,点击您的主目录,然后从菜单中选择添加 > 文件。创建一个包含以下内容的 init.sh 脚本:

#!/bin/bash
set -e

# Install RAPIDS libraries
pip install \
    --extra-index-url=https://pypi.nvidia.com \
    "cudf-cu12>=25.04" "cuml-cu12>=25.04" \
    "dask-cuda>=25.04"

启动集群#

要开始使用,请导航到 Databricks 中计算部分的通用计算选项卡,然后选择创建计算。命名您的集群并选择“单节点”

Screenshot of the Databricks compute page

为了启动 GPU 节点,请取消勾选使用 Photon 加速并选择运行时版本 15.4 LTS ML (包含 Apache Spark 3.5.0, GPU, Scala 2.12)

“GPU 加速”节点现在应在节点类型下拉列表中可用。

Screenshot of selecting a g4dn.xlarge node type

然后展开高级选项部分,打开初始化脚本选项卡,输入您的工作区目录中 init-script 的文件路径,该路径以 /Users/<user-name>/<script-name>.sh 开头,然后点击“添加”

Screenshot of init script path

选择创建计算

测试 RAPIDS#

集群启动后,您可以从 /Workspace 目录创建新的 notebook 或打开现有 notebook,然后将其附加到正在运行的集群。

import cudf

gdf = cudf.DataFrame({"a":[1,2,3],"b":[4,5,6]})
gdf
    a   b
0   1   4
1   2   5
2   3   6

cuDF Pandas 快速入门#

RAPIDS 最近引入了 cuDF 的pandas 加速器模式,以零代码更改加速现有 pandas 工作流。

在 Databricks 单节点上使用 cudf.pandas 在处理大型数据集时,可以比传统 pandas 提供显著的性能提升;操作在可能的情况下会优化为在 GPU (cuDF) 上运行,并在必要时无缝回退到 CPU (pandas),同时在后台进行同步。

下面是一个快速示例,说明如何在 Jupyter notebook 中加载 cudf.pandas 扩展


%load_ext cudf.pandas

%%time

import pandas as pd

df = pd.read_parquet(
    "nyc_parking_violations_2022.parquet",
    columns=["Registration State", "Violation Description", "Vehicle Body Type", "Issue Date", "Summons Number"]
)

(df[["Registration State", "Violation Description"]]
 .value_counts()
 .groupby("Registration State")
 .head(1)
 .sort_index()
 .reset_index()
)

在您的单节点 Databricks 集群中上传10 分钟掌握 RAPIDS cuDF Pandas notebook 示例并运行所有单元格。

注意:cuDF pandas 处于公开测试阶段,正在积极开发中。您可以通过文档发布博客了解更多信息。

多节点 Dask 集群#

Dask 现在有一个 dask-databricks CLI 工具(通过 condapip),用于简化在 Databricks 中启动 Dask 集群的过程。

安装 RAPIDS 和 Dask#

请参照下方创建 init 脚本,以安装 dask, dask-databricks RAPIDS 库以及项目的其他所有依赖项。

#!/bin/bash
set -e

# The Databricks Python directory isn't on the path in
# databricksruntime/gpu-tensorflow:cuda11.8 for some reason
export PATH="/databricks/python/bin:$PATH"

# 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==25.04 \
      dask-databricks

# Start the Dask cluster with CUDA workers
dask databricks run --cuda

注意:默认情况下,dask databricks run 命令会在驱动节点上启动一个 dask 调度器,并在其余节点上启动标准 worker。

要启动具有 GPU worker 的 dask 集群,您必须解析并加入 --cuda 标志选项。

启动 Dask 集群#

脚本准备好后,按照说明启动多节点集群。

请确保选择 14.2 (Scala 2.12, Spark 3.5.0) 标准运行时,如下所示。

Screenshot of standard runtime

然后展开高级选项部分并打开Docker选项卡。选择使用您自己的 Docker 容器并输入镜像 databricksruntime/gpu-tensorflow:cuda11.8databricksruntime/gpu-pytorch:cuda11.8

Screenshot of custom docker container

初始化脚本选项卡中配置 init 脚本的路径。您也可以选择在日志记录选项卡中配置集群日志交付,这将把init 脚本日志写入 DBFS 中名为 dbfs:/cluster-logs/<cluster-id>/init_scripts/ 的子目录。

Screenshot of log delivery

完成后,您应该可以为WorkerDriver节点选择“GPU 加速”实例。

Screenshot of driver worker node

选择创建计算

连接到客户端#

import dask_databricks


client = dask_databricks.get_client()
client

仪表板#

Dask 仪表板提供了一个基于 Web 的用户界面,其中包含可视化以及有关 Dask 集群状态(例如任务进度、资源利用率等)的实时信息。

创建调度器时,仪表板服务器将自动启动,默认在端口 8087 上托管。要访问,请按照 URL 导航到 Databricks 中的仪表板状态端点。

Screenshot of dask-client.png

提交任务#

import cudf
import dask


df = dask.datasets.timeseries().map_partitions(cudf.from_pandas)
df.x.mean().compute()

Screenshot of dask-cudf-example.png

Dask-Databricks 示例#

在您的多节点集群中,上传 在 Databricks 中使用 Dask RAPIDS 训练 XGBoost 的 Jupyter notebook 示例并运行所有单元格。

清理#

client.close()