在 Azure Kubernetes 服务(AKS)上配置并部署 Ray 群集以使用 BlobFuse 进行优化

本文介绍如何使用 KubeRay 在 Azure Kubernetes 服务(AKS)上配置和部署 Ray 群集,BlobFuse 提供可缩放存储。 你将了解如何设置群集、集成 BlobFuse 实现高吞吐量数据访问,以及如何使用 Ray 运行分布式优化或训练作业。 本指南还介绍了在 Ray 仪表板上监视结果以及高效管理资源。

概述

Ray 是用于分布式计算和机器学习工作负载的开源框架。 在 Azure Kubernetes 服务(AKS)上部署时,Ray 可以在多个节点上启用可缩放的超参数优化、训练和推理。 将 BlobFuse 作为持久性存储后端集成可让 Ray 作业有效地读取和写入大型数据集,这对于优化需要快速访问训练数据、中间结果和模型检查点的工作负荷尤其重要。

BlobFuse 的高吞吐量对于优化作业至关重要,因为这些工作负荷通常涉及许多并行任务,每次同时读取和写入数据。 BlobFuse 提供对 Azure Blob 存储的符合 POSIX 的高性能访问,最大限度地减少 I/O 瓶颈并确保分布式 Ray 任务能够更快地完成。 这可以提高资源利用率,并加速整体优化过程。

此解决方案利用 KubeRay 在 AKS 上协调 Ray 群集,BlobFuse 提供可缩放且高性能的存储。 该体系结构支持可靠的数据管理、快速 I/O 和无缝缩放,使数据科学家和工程师能够优化云中的模型开发和优化工作流。

部署体系结构

下图显示了在 AKS 上部署的 Ray 群集,其中包含使用 BlobFuse 预配的永久性卷。 BlobFuse 将 Azure Blob 存储连接到群集,从而实现对大型数据集的快速、符合 POSIX 标准的访问。 此体系结构可确保分布式优化作业的高吞吐量,使多个 Ray 辅助角色能够高效并行读取和写入数据,从而加速模型训练和超参数优化。

使用 BlobFuse 的 Azure Kubernetes 服务上的 Ray 群集体系结构

图 1:在 AKS 上部署的 Ray 集群使用 BlobFuse 提供可扩展的高吞吐量存储,以支持分布式调优作业。

存储注意事项

在 AKS 上部署用于分布式优化的 Ray 群集时,选择正确的存储后端对于性能和可伸缩性至关重要。 主要选项包括 Azure 磁盘、Azure 文件和 BlobFuse(Azure Blob 存储):

存储选项 可伸缩性 性能(吞吐量) 访问模式 成本效益 分布式调优作业的适用性
Azure 磁盘 有限(每个节点) 高(单节点) 单个/共享节点 更高,用于大量数据 不理想(有限的并发访问)
Azure 文件 中等 中等 多节点(共享) 中等 在使用中是可行的,但在大规模扩展时可能会遇到瓶颈问题。
BlobFuse/Blobs 高(云计算规模) 高(并行访问) 多节点(共享) 经济高效 最佳(可缩放、高吞吐量、并行访问)

建议:
对于在 AKS 上运行分布式调优任务的 Ray 集群,BlobFuse(Azure Blob 存储)是首选方案。 它提供云规模的并发性、用于并行读取/写入的高吞吐量和经济高效的存储,使其成为数据密集型机器学习工作负载的理想选择。

部署 Ray 群集以使用 BlobFuse 进行调优

先决条件

自动部署 Ray 示例

如果要以非交互方式部署完整的 Ray 示例,可以使用 GitHub 存储库中的 deploy.sh 脚本 (https://github.com/Azure-Samples/aks-ray-sample)。 此脚本将完成 Ray 部署过程部分中所述的步骤。

  1. 使用以下命令在本地克隆 GitHub 存储库,但要更改为存储库的根目录:

    git clone https://github.com/Azure-Samples/aks-ray-sample
    cd aks-ray-sample/sample-tuning-setup/terraform
    
  2. 使用以下命令部署完整的示例:

    chmod +x deploy.sh
    ./deploy.sh
    
  3. 部署完成后,请在 Azure 门户中查看日志输出和资源组,以查看创建的基础结构。

清理资源

若要清理在本指南中创建的资源,可以删除包含 AKS 群集的 Azure 资源组。

后续步骤

若要详细了解 AKS 上的 AI 和机器学习工作负载,请参阅以下文章: