在 Azure Kubernetes Service (AKS) 上使用 Kueue 執行 Ray AI 工作負載概觀

在本文中,你將學習如何在 Azure Kubernetes Service (AKS) 上運行分散式 AI 工作負載,使用 Ray 作為運算執行時,使用 Kueue 作為准入控制。 此解決方案涵蓋從基礎設施配置、訓練、批次推論到線上服務的完整生命週期。

重要

整個 AKS 文件和範例都會提及開放原始碼的軟體。 您部署的軟體會從 AKS 服務等級協定、有限擔保和 Azure 支援 中排除。 當您搭配 AKS 使用開放原始碼技術時,請參閱個別社群和專案維護人員所提供的支援選項,以開發計畫。

Microsoft負責建置我們在 AKS 上部署的開放原始碼套件。 該責任包括擁有組建、掃描、簽署、驗證和 Hotfix 程式的完整擁有權,以及控制容器映像中的二進位檔。 如需詳細資訊,請參閱 AKS 弱點管理和 AKS 支援涵蓋範圍。

什麼是 Ray?

Ray 是一個開源框架,用於擴展 AI 與 Python 應用程式。 它提供統一的執行時,用於分散式訓練、超參數調整、批次推論和模型服務,讓你能在多個節點間擴展工作負載,而不必重寫應用程式邏輯。

Ray 透過處理排程、容錯與資源管理,簡化了分散式運算。 該框架透過 Ray Train、Ray Data 和 Ray Serve 等整合,支援機器學習函式庫如 PyTorch、TensorFlow 和 Hugging Face。 如需詳細資訊,請參閱Ray GitHub存放 庫。

什麼是 KubeRay?

KubeRay 是一個管理 Ray 叢集生命週期的 Kubernetes 營運商。 它提供自訂資源——RayJob 用於批次工作負載,RayService 用於持久性服務端點——可自動完成叢集的建立、擴縮與刪除。 如需詳細資訊,請參閱 KubeRay GitHub 存放 庫。

什麼是 Kueue?

Kueue 是 Kubernetes 原生的作業佇列控制器,會根據資源配額管理工作負載准入。 KueKueue 不會讓每個提交的工作立即消耗資源,而是根據定義的配額控制工作負載准入 - 符合條件的工作會執行,不符合條件的工作會排隊等待。 欲了解 Kueue 的概念與配置,請參閱 AKS 上的 Kueue 概述。

解決方案架構

此解決方案結合 Kueue 的准入管制功能,以及 KubeRay 在 AKS 上管理 Ray 叢集生命週期的功能。 Terraform 負責佈建基礎結構,Helm 從 Microsoft Container Registry (MCR) 安裝運算子,而工作負載身分識別則可在無須儲存認證資訊的情況下,安全地存取 Azure Blob 儲存體。

部署過程包含三個模組:

  • 基礎架構 — Terraform 為 AKS 叢集配置 GPU 節點池,透過 Helm 安裝 KubeRay 與 Kueue 運算子,建立 Azure Blob 儲存體,並配置工作負載識別碼。
  • Kueue 佇列 — Kubernetes 資訊清單會定義 ResourceFlavors (CPU 和 GPU 節點類型)、ClusterQueues (配額和准入原則),以及 LocalQueues (命名空間範圍的提交端點)。
  • 工作負載 — RayJob 和 RayService 會根據可用配額提交 AI 工作負載,Kueue 會接受這些工作負載。

Ray 工作負載以 suspend: true 開頭。 Kueue 會評估配額可用性,並取消已准入工作負載的暫停狀態;此時 KubeRay 會建立 Ray 叢集並執行工作。

工作負載範例

Example 類型 GPUs Description
微調極光天氣模型 RayJob 1×A100 LoRA 對 Microsoft Aurora 天氣基礎模型的微調
訓練 LLM RayJob 4×A100 使用 LLaMA-Factory 對 Qwen2.5-7B LoRA 進行分散式微調
執行批次推斷 RayJob 1×A100 使用已訓練的 LoRA 適配器進行 vLLM 離線推論
線上服務模特兒 RayService 1×GPU 具備 Ray Serve 的持久 HTTP 端點

後續步驟