AKS에서 Ray 및 Kueue에 대한 인프라 배포

이 문서에서는 AKS(Azure Kubernetes Service) 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를 사용하여 설치합니다.
  • Python 버전 3.10 이상(오로라 데이터 생성에 필요).
  • 대상 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 모니터링 DaemonSet(gpu_enabled=true의 시점)
  • aurora 및 llm-pipeline 컨테이너가 있는 Azure Blob Storage 계정
  • Storage Blob 데이터 기여자 역할이 있는 사용자 할당 관리 ID
  • ServiceAccount에 대한 ray-workload 페더레이션 ID 자격 증명
  • 미리 준비된 데이터 세트(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
    

    예상 출력(with 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>"

다음 단계