Dask Helm Chart#
Dask 有一个 Helm Chart,它会创建以下资源:
1 个 Jupyter 服务器(已预配置好访问 Dask 集群)
1 个 Dask 调度器
3 个连接到调度器的 Dask 工作节点(可伸缩)
通过为 Jupyter 服务器和 Dask 工作节点提供 GPU 并使用包含 RAPIDS 库的容器镜像,可以配置此 helm chart 来运行 RAPIDS。
配置 RAPIDS#
基于 Dask Helm Chart 构建,rapids-config.yaml
文件包含设置 RAPIDS 环境所需的额外配置。
# rapids-config.yaml scheduler: image: repository: "nvcr.io/nvidia/rapidsai/base" tag: "25.04-cuda12.8-py3.12" worker: image: repository: "nvcr.io/nvidia/rapidsai/base" tag: "25.04-cuda12.8-py3.12" dask_worker: "dask_cuda_worker" replicas: 3 resources: limits: nvidia.com/gpu: 1 jupyter: image: repository: "nvcr.io/nvidia/rapidsai/notebooks" tag: "25.04-cuda12.8-py3.12" servicePort: 8888 # Default password hash for "rapids" password: "argon2:$argon2id$v=19$m=10240,t=10,p=8$TBbhubLuX7efZGRKQqIWtw$RG+jCBB2KYF2VQzxkhMNvHNyJU9MzNGTm2Eu2/f7Qpc" resources: limits: nvidia.com/gpu: 1
[jupyter|scheduler|worker].image.*
会更新为稳定版本中的 RAPIDS “runtime” 镜像,该镜像包含启动 RAPIDS 加速库并使用 dask 进行伸缩所需的环境。请注意,所有调度器、工作节点和 jupyter pod 都需要使用相同的镜像。这确保了 dask 调度器和工作节点版本匹配。
[jupyter|worker].resources
显式为每个工作节点 pod 和 Jupyter pod 请求一个 GPU,这对于 RAPIDS 中的许多加速库是必需的。
worker.dask_worker
是工作节点 pod 内部 dask 工作节点的启动命令。为了利用分配给每个 Pod 的 GPU,启动的是 dask_cuda_worker
命令而不是常规的 dask_worker
。
如果希望设置不同于默认的 jupyter notebook 密码,计算 <您的密码>
的哈希值并更新 jupyter.password
。您可以通过遵循 jupyter notebook 指南 计算密码哈希值。
安装 Helm Chart#
$ helm install rapids-release --repo https://helm.dask.org dask -f rapids-config.yaml
这将部署与 dask helm chart 具有相同拓扑结构的集群,详情请参阅 dask helm chart 文档。
注意
默认情况下,Dask Helm Chart 不会创建 Ingress
资源。可以配置自定义的 Ingress
来接收外部流量并重定向到相应的服务。
为简单起见,本指南将通过端口转发设置对 Jupyter 服务器的访问。
运行 Rapids Notebook#
首先,设置从集群到外部端口的端口转发
# For the Jupyter server
$ kubectl port-forward --address 127.0.0.1 service/rapids-release-dask-jupyter 8888:8888
# For the Dask dashboard
$ kubectl port-forward --address 127.0.0.1 service/rapids-release-dask-scheduler 8787:8787
打开浏览器访问 localhost:8888
以访问 Jupyter,访问 localhost:8787
以访问 dask dashboard。输入密码(默认为 rapids
)并访问 notebook 环境。
Notebooks 和集群伸缩#
现在我们可以通过运行一些示例 notebook 来验证一切是否正常工作。
打开 cudf/10-min.ipynb
下的 10 Minutes to cuDF and Dask-cuDF
notebook。
在顶部添加一个新单元格以连接到 Dask 集群。方便的是,helm chart 已在客户端环境中预配置了调度器地址。因此您无需向 Client
对象传递任何配置。
from dask.distributed import Client
client = Client()
client
默认情况下,我们可以看到创建了 3 个工作节点,每个节点都分配了 1 个 GPU。
逐步执行示例,验证 dask 集群是否已正确设置,以及工作节点是否可以访问 GPU。可以在 dask dashboard 中检查工作节点指标。
如果您想通过添加更多 GPU 工作节点来扩展集群,可以使用 kubectl
或 helm upgrade
来实现。
$ kubectl scale deployment rapids-release-dask-worker --replicas=8
# or
$ helm upgrade --set worker.replicas=8 rapids-release dask/dask