在 Azure Kubernetes 服务 (AKS) 概述中使用 Kueue 运行 Ray AI 工作负载

本文介绍如何在 Azure Kubernetes 服务 (AKS) 上运行分布式 AI 工作负载,使用 Ray 作为计算运行时,并使用 Kueue 进行准入控制。 此解决方案涵盖从基础结构预配到培训、批量推理和联机服务的完整生命周期。

重要

AKS 文档和示例中都提到了开源软件。 AKS 服务级别协议、有限保修和 Azure 支持不涵盖你部署的软件。 与 AKS 一起使用开源技术时,请查阅各社区和项目维护人员提供的支持选项,以制定计划。

Microsoft 将负责生成我们在 AKS 上部署的开源包。 该责任包括拥有构建、扫描、签名、验证和快速修复流程的完整所有权,并掌控容器镜像中的二进制文件。 如需了解详细信息,请参阅 AKS 漏洞管理AKS 支持范围

什么是 Ray?

Ray 是一个开源框架,用于缩放 AI 和Python应用程序。 它为分布式训练、超参数优化、批处理推理和模型服务提供统一运行时,因此无需重写应用程序逻辑即可跨多个节点缩放工作负荷。

Ray 通过处理计划、容错和资源管理,简化了分布式计算。 该框架通过集成(如 Ray Train、Ray Data 和 Ray Serve)支持机器学习库,如 PyTorch、TensorFlow 和 Hugging Face。 有关详细信息,请参阅 Ray GitHub 存储库

什么是 KubeRay?

KubeRay 是一个 Kubernetes 操作员,用于管理 Ray 群集的生命周期。 它提供自定义资源——RayJob用于批处理工作负载,RayService用于持久化服务端点——可自动完成集群的创建、扩缩容和删除。 有关详细信息,请参阅 KubeRay GitHub 存储库

什么是 Kueue?

Kueue 是一个 Kubernetes 原生作业队列控制器,基于资源配额管理工作负载准入。 Kueue 并不会让每个已提交的作业立即消耗资源,而是根据预先定义的配额控制作业准入:符合配额的作业会运行,不符合配额的作业则排队等待。 有关 Kueue 概念和配置的详细概述,请参阅 AKS 上的 Kueue 概述

解决方案体系结构

此解决方案结合了用于准入控制的 Kueue 与用于管理 AKS 上 Ray 集群生命周期的 KubeRay。 Terraform 负责预配基础设施,Helm 从 Microsoft Container Registry (MCR) 安装这些运维程序,而工作负载标识则可在无需存储任何凭据的情况下安全访问 Azure Blob 存储。

部署过程由三个模块组成:

  • 基础结构 - Terraform 使用 GPU 节点池预配 AKS 群集,通过 Helm 安装 KubeRay 和 Kueue 操作员,创建Azure Blob 存储并配置工作负荷标识。
  • Kueue 队列 — Kubernetes 清单定义了 ResourceFlavors(CPU 和 GPU 节点类型)、ClusterQueues(配额和准入策略)以及 LocalQueues(命名空间范围内的提交入口)。
  • 工作负载 — RayJob 和 RayService 清单会提交 AI 工作负载,这些工作负载由 Kueue 根据可用配额准入。

Ray 工作负载从 suspend: true 开始。 Kueue 会评估配额是否可用,并解除已准入工作负载的暂停状态;此时,KubeRay 会创建 Ray 集群并运行作业。

工作负荷示例

示例 类型 GPUs Description
微调极光天气模型 RayJob 1×A100 Microsoft Aurora 天气基础模型的 LoRA 微调
训练 LLM RayJob 4×A100 使用 LLaMA-Factory 对 Qwen2.5-7B 进行分布式 LoRA 微调
运行批量推理 RayJob 1×A100 使用经过训练的 LoRA 适配器进行 vLLM 脱机推理
联机为模型提供服务 RayService 1×GPU 使用 Ray Serve 的持久 HTTP 端点

后续步骤