Ray と Kueue のインフラストラクチャを AKS にデプロイする

この記事では、Azure Kubernetes Service (AKS)で Kueue を使用して Ray AI ワークロードを実行するために必要なインフラストラクチャをデプロイします。 Terraform モジュールは、GPU ノード プールを使用して AKS クラスターをプロビジョニングし、Helm 経由で KubeRay オペレーターと Kueue コントローラーをインストールし、事前にステージングされたデータセットを含むAzure Blob Storageを作成し、セキュリティで保護されたアクセス用にワークロード ID を構成します。

重要

オープンソース ソフトウェアは、AKS のドキュメントとサンプル全体で説明されています。 デプロイするソフトウェアは、AKS サービス レベル アグリーメント、限定保証、Azure サポートから除外されます。 AKS と共にオープンソース テクノロジを使用する場合は、それぞれのコミュニティとプロジェクト保守担当者から受けられるサポート オプションを調べ、計画を策定してください。

Microsoft は、AKS 上に展開するオープンソース パッケージを構築する責任を負います。 その責任には、ビルド、スキャン、署名、検証、修正プログラム プロセスの完全な所有権と、コンテナー イメージ内のバイナリの制御権が伴います。 詳細については、「AKS の脆弱性の管理」と「AKS のサポート範囲」を参照してください。

前提条件

  • Azure サブスクリプション。 お持ちでない場合は、 無料アカウントを作成してください。
  • Azure CLI バージョン 2.70 以降で、az login で認証された。 複数のサブスクリプションがある場合は、 az account set --subscription <subscription-id>を使用して正しいサブスクリプションを設定します。
  • Terraform バージョン 1.6 以降。
  • kubectl バージョン 1.28 以降。 az aks install-cliを使用してインストールします。
  • バージョン 3.10 以降Python (Aurora データ生成に必要)。
  • ターゲット Azure リージョンの GPU クォータ。 既定の構成では、 Standard_ND96amsr_A100_v4 ノード (8×A100 80 GB GPU) がプロビジョニングされます。

リポジトリの複製

Azure/AKS リポジトリを複製し、インフラストラクチャ モジュールに移動します。

git clone https://github.com/Azure/AKS
cd AKS/examples/kueue-and-ray-on-aks/1-infrastructure

Pythonの依存関係をインストールする

Aurora データのアップロード手順には、Python パッケージが必要です。 展開する前にそれらをインストールします。

pip install -r terraform/requirements-generator.txt

GPU クォータを確認する

サブスクリプションにターゲット リージョンの GPU SKU のクォータがあることを確認します。 eastus2をお好みのリージョンに置き換えます。

LOCATION=<your-azure-region>
az vm list-usage --location "$LOCATION" --output table | grep -i "NDAMSv4_A100"

GPU クォータがない場合、または GPU を使用せずにインフラストラクチャを検証する場合は、 gpu_enabled=falseを使用してデプロイします。

terraform apply -var="subscription_id=<your-subscription-id>" -var="gpu_enabled=false"

CPU 専用パスは、インフラストラクチャとキューの構成を検証するのに役立ちます。 GPU を要求するワークロードは保留中のままです。

Terraform を使用したデプロイ

Terraform モジュールを初期化して適用します。

cd terraform
terraform init
terraform apply -var="subscription_id=<your-subscription-id>"

Terraform モジュールは次を作成します。

  • OIDC 発行者とワークロード ID が有効になっている AKS クラスター
  • システム ノード プールと GPU ノード プール ( gpu_enabled=true時)
  • KubeRay オペレーターと Kueue コントローラー (MCR からの Helm リリース)
  • GPU 監視用デーモンセット (gpu_enabled=true の場合)
  • aurorallm-pipeline コンテナーを備えた Azure Blob Storage アカウント
  • Storage Blob Data ロールを持つ、ユーザー指定のマネージド ID
  • ray-workload ServiceAccount 用のフェデレーション資格情報
  • 事前にステージングされたデータセット (Aurora WeatherBench2 データと viggo NLG データセット)

Terraform モジュールの完全な構成については、リポジトリの 1 インフラストラクチャ ディレクトリ を参照してください。

クラスターに接続する

新しい AKS クラスターの資格情報を取得します。

eval "$(terraform output -raw get_credentials_command)"

デプロイメントを確認する

演算子が実行されていて、ノードが使用可能であることを確認します。

  1. KubeRay 演算子を確認します。

    kubectl -n kuberay-system get pods
    

    予想される出力:

    NAME                                READY   STATUS    RESTARTS   AGE
    kuberay-operator-xxxxxxxxxx-xxxxx   1/1     Running   0          5m
    
  2. Kueue コントローラーを確認します。

    kubectl -n kueue-system get pods
    

    予想される出力:

    NAME                                            READY   STATUS    RESTARTS   AGE
    kueue-controller-manager-xxxxxxxxxx-xxxxx       1/1     Running   0          5m
    
  3. ノードを確認します。

    kubectl get nodes
    

    予想される出力 ( gpu_enabled=true):

    NAME                              STATUS   ROLES    AGE   VERSION
    aks-gpupool-xxxxxxxx-vmssxxxxxx   Ready    <none>   5m    v1.35.x
    aks-system-xxxxxxxx-vmssxxxxxx    Ready    <none>   10m   v1.35.x
    aks-system-xxxxxxxx-vmssxxxxxx    Ready    <none>   10m   v1.35.x
    
  4. GPU 監視を確認する ( gpu_enabled=true場合のみ):

    kubectl -n gpu-monitoring get daemonsets
    

    予想される出力:

    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    gpu-monitoring-a100     1         1         1       1            1           <none>          5m
    

リソースをクリーンアップする

このモジュールを使用して作成したすべてのAzure リソースを削除するには:

terraform destroy -var="subscription_id=<your-subscription-id>"

次のステップ