Kueue を使用して Ray AI ワークロードを実行Azure Kubernetes Service (AKS)概要

この記事では、コンピューティング ランタイムに Ray を使用し、アドミッション制御に Kueue を使用して、Azure Kubernetes Service (AKS)で分散 AI ワークロードを実行する方法について説明します。 このソリューションは、インフラストラクチャのプロビジョニングからトレーニング、バッチ推論、オンライン サービスまでの完全なライフサイクルをカバーします。

重要

オープンソース ソフトウェアは、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 は、Ray クラスターのライフサイクルを管理する Kubernetes オペレーターです。 クラスターの作成、スケーリング、破棄を自動化するカスタム リソース (バッチ ワークロードの RayJob と永続的なサービス エンドポイントの RayService ) が提供されます。 詳細については、「KubeRay GitHub リポジトリ」を参照してください。

Kueue とは

Kueue は、リソース クォータに基づいてワークロードの受付を管理する Kubernetes ネイティブ ジョブ キュー コントローラーです。 送信されたすべてのジョブが即座にリソースを消費するのではなく、Kueue は定義されたクオータに基づいてジョブの受け入れを制御します。クオータの範囲内にあるジョブは実行され、範囲外のジョブは待機列に加わります。 Kueue の概念と構成の詳細については、 AKS の Kueue の概要を参照してください。

ソリューション アーキテクチャ

このソリューションは、アドミッション制御のための Kueue と、AKS での KubeRay for Ray クラスターライフサイクル管理を組み合わせたものです。 Terraform はインフラストラクチャをプロビジョニングし、Helm は Microsoft Container Registry (MCR) からオペレーターをインストールし、ワークロード ID は保存された資格情報なしでAzure Blob Storageへの安全なアクセスを提供します。

デプロイ プロセスは、次の 3 つのモジュールで構成されます。

  • インフラストラクチャ — Terraform は、GPU ノード プールを使用して AKS クラスターをプロビジョニングし、Helm 経由で KubeRay および Kueue オペレーターをインストールし、Azure Blob Storageを作成し、ワークロード ID を構成します。
  • Kueue キュー — Kubernetes マニフェストでは、ResourceFlavors (CPU および GPU ノードの種類)、ClusterQueues (クォータとアドミッション ポリシー)、LocalQueues (名前空間スコープの送信ポイント) が定義されます。
  • ワークロード - RayJob マニフェストと RayService マニフェストは、使用可能なクォータに基づいて Kueue が許可する AI ワークロードを送信します。

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 エンドポイント

次のステップ