다음을 통해 공유

什么是 Azure Databricks 上的 Ray?

Ray 是用于缩放 Python 应用程序的开源框架。 它包括特定于 AI 工作负载的库,使其特别适用于开发 AI 应用程序。 Azure Databricks 上的 Ray 允许运行 Ray 应用程序,同时获取 Azure Databricks 的所有平台优势和功能。

通过 Ray 2.3.0 及更高版本,可使用 Azure Databricks 在 Apache Spark 群集上创建 Ray 群集和运行 Ray 应用程序。

有关 Ray 上的机器学习入门信息(包括教程和示例),请参阅 Ray 文档。 有关 Ray 和 Apache Spark 集成的详细信息,请参阅 Spark 上的 Ray API 文档

什么是 Ray?

Ray 通过提供基本 Python 基元从头开始创建分布式应用程序,简化了分布式系统。 对于不熟悉分布式系统的 Python 开发人员,它提供与标准 Python 相同的易用性,同时管理业务流程、计划和容错。

Ray 和 Apache Spark 是互补框架。 Ray 擅长于逻辑并行性,可以处理像机器学习和强化学习这样动态、计算密集型的任务。 Apache Spark 专注于数据并行性,能够高效地处理大型数据集,以完成如 ETL 和数据分析等任务。 两者结合,为数据处理和复杂计算提供了强大的组合。

为什么在 Azure Databricks 上运行 Ray?

在 Azure Databricks 上运行 Ray 可以充分利用 Azure Databricks 生态系统的广度,通过开放源代码 Ray 中不可用的服务和集成来增强数据处理和机器学习工作流。 在 Azure Databricks 中运行 Ray 的益处包括:

  • 统一的平台:Azure Databricks 提供了一个统一的平台,可以在其中与 Apache Spark 一起运行 Ray 应用程序。 这种集成支持无缝的数据 ETL 操作、高效的数据传输以及在同一计算环境中的强大并行计算。
  • 治理和控制:利用 Unity Catalog 获取数据血统跟踪、数据版本化和访问控制的优势,针对所有的数据资产、文件、模型等,确保合规性和安全性。
  • 基础结构管理:利用 Azure Databricks Terraform 提供程序和 Azure Databricks 资产捆绑包等基础结构工具来管理群集和作业,确保简化的操作和可伸缩性。
  • 托管 Ray 群集:Ray 群集在与运行的 Apache Spark 群集相同的执行环境中管理。 这可确保无需复杂的基础结构设置即可实现可伸缩性、可靠性和易用性。
  • 模型服务和监视:将使用 Ray Train 训练的模型连接到 Mosaic AI 模型服务,以实现高可用性和低延迟的部署。 此外,使用 Lakehouse 监控工具来跟踪模型预测质量和漂移,确保性能保持一致。
  • 增强型 ML 开发:与完全托管的 Azure Databricks MLflow 服务集成,以跟踪模型开发,促进 Ray 应用程序中的实验管理和可重复性。
  • 自动化工作流:使用 Databricks 作业自动执行流程,从而创建生产就绪管道,简化操作并减少手动干预
  • 代码管理和协作:使用 Azure Databricks Git 文件夹高效管理代码,为 Ray 应用程序代码启用版本控制和协作开发的无缝 Git 集成。
  • 高效数据访问:将 Ray 应用程序连接到 Delta Lake,利用 Azure Databricks 广泛的数据集成生态系统,将 Ray 的功能扩展到更广泛的应用程序和输出。

通过在 Azure Databricks 上运行 Ray,可以获得一个集成生态系统,从而增强数据处理、机器学习和运营工作流。

用例 - 机器学习等

Ray 是一种通用的工具,可将 Python 的功能扩展到 DataFrame 操作的限制之外,使其成为高度自定义和专用分布式算法的理想工具。

机器学习和深度学习

利用 Ray 的机器学习库增强 ML 工作流:

  • 超参数优化:使用 Ray Tune 优化模型性能,以便进行高性能和可缩放的超参数搜索。
  • 分布式深度学习训练:跨多个节点缩放深度学习模型,支持 PyTorch、TensorFlow、HuggingFace 和 Keras 等常用框架。 非常适合用于训练计算机视觉模型或大型语言模型 (LLM)。
  • 传统机器学习:使用 Ray 来分发使用 scikit-learn 或 XGBoost 等流行库构建的传统机器学习模型的训练、评估和批次推理。

高性能计算 (HPC)

Ray 擅长于分发 HPC 工作负载,使其适合:

  • 数学计算:使用 Ray Core 在物理、基因组学或财务等领域执行复杂的计算,以进行高效的并行处理。
  • 时序预测:扩展预测模型,使用如 Prophet 或 ARIMA 等预测包并行运行估算。

数据处理和特征工程

Ray 还可以处理各种数据处理任务:

  • 计算特征:复杂的计算密集型特征工程任务可以从 Ray 的分布式计算体系结构中获益。
  • 音频、图像和视频处理:分发和加速多媒体数据的处理,使其非常适合语音识别、图像分类和视频分析中的应用程序。

限制

  • Apache Spark 上的 Ray 支持专用访问模式、不隔离的共享访问模式,以及仅用于作业群集的模式。 无法在使用无服务器运行环境的群集中启动 Ray 集群。 请参阅访问模式
  • 避免运行 %pip 来在运行的 Ray 群集上安装包,因为这会关闭群集。 而应在初始化群集之前安装库。
  • 如果使用替代 ray.util.spark.setup_ray_cluster 中的配置的集成,可能会导致 Ray 群集变得不稳定。 避免在第三方应用程序中过度订阅 Ray 群集资源。
  • 如果遇到类似 ncclInternalError: Internal check failed 的错误,这表示群集中 GPU 之间的网络通信出现了问题。 若要解决此错误,请在训练代码中添加以下代码片段,以使用主网络接口。
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"