kuberay-project/kuberay

A toolkit to run Ray applications on Kubernetes

KubeRay – Kubernetes 操作器 for Ray

它是什么

  • 一个开源 CNCF 沙箱项目,提供一个 Kubernetes 操作器,用于在 Kubernetes 集群上运行 Ray 工作负载(分布式训练、推理、服务等)。
  • 它定义了三个自定义资源:RayCluster、RayJob 和 RayService,允许您直接从 Kubernetes 清单声明式地创建、扩展和管理 Ray 集群。

关键组件

组件 用途
RayCluster 管理 Ray 集群的完整生命周期——创建、自动扩展、容错和删除。
RayJob 启动一个临时 RayCluster,运行作业,并在作业完成后选择性地拆除集群。
RayService 将 RayCluster 与 Ray Serve 部署图结合,提供零停机升级和高可用性服务。
kubectl-ray 插件(测试版) CLI 辅助工具(kubectl ray ...),为不熟悉原始 Kubernetes 对象的用户简化常见 KubeRay 操作。
KubeRay APIServer(alpha 版) 一个轻量级 API 层,可供自定义 UI 或其他工具用于管理 KubeRay 资源。
KubeRay 仪表盘(实验性) 用于可视化和管理 Ray 集群、作业和服务的 Web UI。

为什么使用它

  • 声明式:像任何其他 Kubernetes 应用一样,在 YAML 中定义 Ray 工作负载。
  • 原生扩展:利用 Kubernetes 自动扩展机制,并与队列系统(Volcano、Kueue 等)集成以实现弹性资源分配。
  • 可观测性:与 Prometheus、Grafana 和性能分析工具(py-spy)开箱即用地协作。
  • 生产级模式:支持零停机升级、高可用性服务以及临时集群的自动清理。

典型用例

  • 大规模分布式模型训练(例如 Ray Train)。
  • 使用 Ray Serve 进行大语言模型(LLM)服务,包括 GPU/TPU 支持的推理。
  • 批处理推理管道和集成模型服务。
  • 任何受益于 Kubernetes 调度、安全性和多租户能力的基于 Ray 的工作负载。

快速开始

  1. 安装操作器(例如,通过 Helm 或 kubectl apply 提供的清单)。
  2. 选择自定义资源:
    • RayCluster 用于长期运行的集群。
    • RayJob 用于一次性作业。
    • RayService 用于带自动滚动的 API 服务。
  3. 应用相应的 YAML 清单;操作器创建 Ray 头节点和工作节点 pod,处理自动扩展,并监视健康状态。
  4. 可选安装 kubectl ray 插件以运行 kubectl ray submit ... 等快捷命令。

生态系统集成

  • 与常见 Kubernetes 附加组件配合使用:Ingress 控制器(NGINX)、可观测性堆栈(Prometheus/Grafana)和批处理调度器(Volcano、Kueue、YuniKorn)。
  • 文档和示例托管在 Ray 文档站点,涵盖训练、LLM 推理、批处理作业等。

社区与支持

  • 活跃的 Slack 频道 #kuberay 和双周社区会议。
  • 提供治理和贡献指南(GOVERNANCE.md、CONTRIBUTING.md)。
  • 安全问题通过项目的安全政策报告。

许可证

  • Apache-2.0。

底线 KubeRay 将 Ray 强大的分布式计算模型转变为一等 Kubernetes 工作负载,使 AI/ML 团队能够使用熟悉的 Kubernetes 工具部署、扩展和运营训练与服务管道。

相关

  • 项目
  • 项目
  • 项目
  • 项目