Databricks#
您可以通过几种不同的方式在 Databricks 上安装 RAPIDS
在单节点 GPU notebook 环境中加速机器学习工作流
Spark 用户可以在 Databricks 上安装 用于 Apache Spark 3.x 的 RAPIDS 加速器
在 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 中计算部分的通用计算选项卡,然后选择创建计算。命名您的集群并选择“单节点”。
为了启动 GPU 节点,请取消勾选使用 Photon 加速并选择运行时版本 15.4 LTS ML (包含 Apache Spark 3.5.0, GPU, Scala 2.12)
。
“GPU 加速”节点现在应在节点类型下拉列表中可用。
然后展开高级选项部分,打开初始化脚本选项卡,输入您的工作区目录中 init-script 的文件路径,该路径以 /Users/<user-name>/<script-name>.sh
开头,然后点击“添加”。
选择创建计算
测试 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 示例并运行所有单元格。
多节点 Dask 集群#
Dask 现在有一个 dask-databricks CLI 工具(通过 conda
和 pip
),用于简化在 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)
标准运行时,如下所示。
然后展开高级选项部分并打开Docker选项卡。选择使用您自己的 Docker 容器并输入镜像 databricksruntime/gpu-tensorflow:cuda11.8
或 databricksruntime/gpu-pytorch:cuda11.8
。
在初始化脚本选项卡中配置 init 脚本的路径。您也可以选择在日志记录选项卡中配置集群日志交付,这将把init 脚本日志写入 DBFS 中名为 dbfs:/cluster-logs/<cluster-id>/init_scripts/
的子目录。
完成后,您应该可以为Worker和Driver节点选择“GPU 加速”实例。
选择创建计算
连接到客户端#
import dask_databricks
client = dask_databricks.get_client()
client
仪表板#
Dask 仪表板提供了一个基于 Web 的用户界面,其中包含可视化以及有关 Dask 集群状态(例如任务进度、资源利用率等)的实时信息。
创建调度器时,仪表板服务器将自动启动,默认在端口 8087
上托管。要访问,请按照 URL 导航到 Databricks 中的仪表板状态端点。
提交任务#
import cudf
import dask
df = dask.datasets.timeseries().map_partitions(cudf.from_pandas)
df.x.mean().compute()
Dask-Databricks 示例#
在您的多节点集群中,上传 在 Databricks 中使用 Dask RAPIDS 训练 XGBoost 的 Jupyter notebook 示例并运行所有单元格。
清理#
client.close()