この記事では、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の場合) -
auroraとllm-pipelineコンテナーを備えた Azure Blob Storage アカウント - Storage Blob Data ロールを持つ、ユーザー指定のマネージド ID
-
ray-workloadServiceAccount 用のフェデレーション資格情報 - 事前にステージングされたデータセット (Aurora WeatherBench2 データと viggo NLG データセット)
Terraform モジュールの完全な構成については、リポジトリの 1 インフラストラクチャ ディレクトリ を参照してください。
クラスターに接続する
新しい AKS クラスターの資格情報を取得します。
eval "$(terraform output -raw get_credentials_command)"
デプロイメントを確認する
演算子が実行されていて、ノードが使用可能であることを確認します。
KubeRay 演算子を確認します。
kubectl -n kuberay-system get pods予想される出力:
NAME READY STATUS RESTARTS AGE kuberay-operator-xxxxxxxxxx-xxxxx 1/1 Running 0 5mKueue コントローラーを確認します。
kubectl -n kueue-system get pods予想される出力:
NAME READY STATUS RESTARTS AGE kueue-controller-manager-xxxxxxxxxx-xxxxx 1/1 Running 0 5mノードを確認します。
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.xGPU 監視を確認する (
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>"