在本文中,你將部署使用 Kueue 在 Azure Kubernetes Service (AKS) 上運行 Ray AI 工作負載所需的基礎設施。 Terraform 模組提供 AKS 叢集與 GPU 節點池,透過 Helm 安裝 KubeRay 運算子與 Kueue 控制器,建立包含預設資料集的 Azure Blob 儲存體,並配置工作負載身份以確保安全存取。
重要
整個 AKS 文件和範例都會提及開放原始碼的軟體。 您部署的軟體會從 AKS 服務等級協定、有限保固和 Azure 支援 中排除。 當您搭配 AKS 使用開放原始碼技術時,請參閱個別社群和專案維護人員所提供的支援選項,以開發計畫。
Microsoft 負責建置我們在 AKS 上部署的開源套件。 該責任包括擁有組建、掃描、簽署、驗證和 Hotfix 程式的完整擁有權,以及控制容器映像中的二進位檔。 如需詳細資訊,請參閱 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. - Python 3.10 或更新版本(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 發行者及工作負載識別碼的 AKS 叢集
- 系統節點池與 GPU 節點池(當
gpu_enabled=true) - KubeRay Operator 與 Kueue 控制器 (來自 MCR 的 Helm 發行版本)
- GPU 監視 DaemonSet (當
gpu_enabled=true) - 具有
aurora和llm-pipeline容器的 Azure Blob 儲存體 帳戶 - 使用者指派的受控身分識別,具備儲存體 Blob 資料參與者角色
-
ray-workloadServiceAccount 的聯合式身分識別認證 - 預先分段的資料集(Aurora WeatherBench2 資料與 viggo NLG 資料集)
完整的 Terraform 模組配置,請參閱倉庫中的 1-infrastructure 目錄 。
連線至叢集
取得你新 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 5m驗證 Kueue 控制器:
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.x驗證 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>"