用于机器学习基础设施的 Ray#
提示
如果你正在使用 Ray 构建机器学习平台,我们很想听听你的想法!填写这份简短表格参与进来吧。
Ray 及其 AI 库为寻求简化其机器学习平台的团队提供了统一的计算运行时。Ray 的库,如 Ray Train、Ray Data 和 Ray Serve,可用于构建端到端机器学习工作流,提供数据预处理(作为训练的一部分)以及从训练过渡到服务的特性和 API。
为什么选择 Ray 用于机器学习基础设施?#
Ray 的 AI 库通过为可扩展机器学习提供无缝、统一和开放的体验,简化了机器学习框架、平台和工具的生态系统。
1. 无缝从开发到生产:Ray 的 AI 库减少了从开发到生产过程中的摩擦。借助 Ray 及其库,相同的 Python 代码可以从笔记本电脑无缝扩展到大型集群。
2. 统一的机器学习 API 和运行时:Ray 的 API 支持在流行的框架(如 XGBoost、PyTorch 和 Hugging Face)之间进行切换,只需极少的代码更改。从训练到服务的一切都运行在单个运行时(Ray + KubeRay)上。
3. 开放且可扩展:Ray 是完全开源的,可以在任何集群、云或 Kubernetes 上运行。可以在可扩展的开发者 API 之上构建自定义组件和集成。
基于 Ray 构建的机器学习平台示例#
Merlin 是 Shopify 基于 Ray 构建的机器学习平台。它支持快速迭代以及分布式应用的扩展,例如产品分类和推荐。

Shopify 基于 Ray 构建的 Merlin 架构。#
Spotify 使用 Ray 来构建高级应用,包括个性化主页播客内容推荐和个性化 Spotify Radio 曲目序列。

Ray 生态系统如何在 Spotify 赋能机器学习科学家和工程师。#
以下重点介绍了利用 Ray 的统一 API 构建更简单、更灵活的机器学习平台的公司。
为机器学习平台部署 Ray#
在这里,我们描述了你如何在你的基础设施中使用或部署 Ray。主要有两种部署模式——选择特定库使用,以及在现有平台内部使用。
核心思想是 Ray 可以补充你现有的基础设施和集成工具。
设计原则#
Ray 及其库处理 AI 应用和服务的繁重计算方面。
Ray 依赖外部集成(例如 Tecton、MLFlow、W&B)进行存储和追踪。
工作流编排器(例如 AirFlow)是一个可选组件,可用于调度周期性作业、为作业启动新的 Ray 集群以及运行非 Ray 计算步骤。
单个 Ray 应用内的任务图的轻量级编排可以使用 Ray 任务来处理。
Ray 库可以独立使用,也可以在现有机器学习平台内部使用,或者用于构建 Ray 原生机器学习平台。
选择你自己的库#
你可以选择想要使用的 Ray AI 库。
如果你是一名机器学习工程师,希望独立使用 Ray 库来解决特定的 AI 应用或服务用例,并且不需要与现有机器学习平台集成,则此模式适用。
例如,Alice 想使用 RLlib 为她的工作项目训练模型。Bob 想使用 Ray Serve 部署他的模型流水线。在这两种情况下,Alice 和 Bob 都可以独立使用这些库,无需任何协调。
此场景描述了 Ray 库目前的大多数用法。
在上面的图表中
只使用了一个库——这表明你可以选择使用,并且无需替换整个机器学习基础设施即可使用 Ray。
你可以使用Ray 的多种部署模式之一来启动和管理 Ray 集群和 Ray 应用。
Ray AI 库可以从外部存储系统(如 Amazon S3 / Google Cloud Storage)读取数据,也可以将结果存储在那里。
现有机器学习平台集成#
你可能已经拥有一个现有的机器学习平台,但想使用 Ray 机器学习库的某个子集。例如,一位机器学习工程师希望在他们的组织购买的机器学习平台(例如 SageMaker、Vertex)中使用 Ray。
Ray 可以通过与现有流水线/工作流编排器、存储和追踪服务集成来补充现有的机器学习平台,而无需替换整个机器学习平台。

在上面的图表中
工作流编排器(如 AirFlow、Oozie、SageMaker Pipelines 等)负责调度和创建 Ray 集群以及运行 Ray 应用和服务。Ray 应用可能是更大编排工作流的一部分(例如,Spark ETL,然后在 Ray 上进行训练)。
任务图的轻量级编排可以完全在 Ray 内部处理。外部工作流编排器可以很好地集成,但只有在运行非 Ray 步骤时才需要。
Ray 集群也可以用于交互式使用(例如 Jupyter notebooks、Google Colab、Databricks Notebooks 等)。
Ray Train、Data 和 Serve 提供了与 Feast 等特征存储的集成,用于训练和服务。
Ray Train 和 Tune 提供了与 MLFlow 和 Weights & Biases 等追踪服务的集成。