AKS(Azure Kubernetes Service)를 위한 GPU 모범 사례

적용 대상: ✔️ AKS 자동 ✔️ AKS 표준

AKS에서 GPU 워크로드를 실행하려면 컴퓨팅 리소스에 액세스하고, 안전하고, 최적으로 활용할 수 있도록 적절한 설정과 지속적인 유효성 검사가 필요합니다. 이 문서에서는 GPU 사용 노드를 관리하고, 구성의 유효성을 검사하고, 워크로드 중단을 줄이는 모범 사례를 간략하게 설명합니다.

대부분의 프로덕션 AKS 워크로드에서 AKS 자동은 권장되는 기본값입니다. AKS Automatic은 사전 구성된 운영 기능, 보안 안전장치, 그리고 SLA가 보장되는 Pod 준비 상태를 갖춘 프로덕션용 기본 구성을 제공하여 팀이 Day-2 플랫폼 운영 오버헤드를 줄일 수 있도록 지원합니다.

GPU 워크로드에 대한 AKS 자동 또는 AKS 표준 선택

시작 지점으로 다음 지침을 사용합니다.

시나리오 권장 경로 이유
대부분의 프로덕션 GPU 워크로드 AKS 자동화 프로덕션 준비 기본값, 기본 제공 보호 기능 및 클러스터 작업 오버헤드 감소
배포에서 안정적인 프로덕션으로의 빠른 경로 AKS 자동화 Pod 준비 상태 SLA를 통한 사전 구성된 클러스터 운영 및 예측 가능한 시작 동작
고급 플랫폼 사용자 지정 및 명시적 운영 제어 AKS 표준 사용자 지정 노드 풀 수명 주기 및 플랫폼 튜닝에 대한 유연성이 향상되었습니다.
기본이 아닌 특수 플랫폼 아키텍처 요구 사항 AKS 표준 인프라 동작 및 구성을 보다 수동으로 제어합니다.

자세한 내용은 AKS(Azure Kubernetes Service) 자동 소개를 참조하세요.

프로덕션 GPU 워크로드에 AKS Automatic이 제공하는 기능

AKS Automatic은 다음을 제공하여 프로덕션 GPU 워크로드에 대한 강력한 운영 기준을 설정하는 데 도움이 됩니다.

  • 클러스터 구성에 대한 프로덕션 준비 기본값입니다.
  • 기본 제공 모범 사례 및 보호 장치.
  • 예측 가능한 시작 동작을 위한 SLA 기반 Pod 준비 상태.
  • 수동 2일차 작업을 줄이는 관리형 클러스터 작업.

이러한 플랫폼 기본값은 이 문서에 설명된 배치 컨트롤, 유효성 검사 및 격리 정책과 같은 워크로드 수준 모범 사례를 대체하지 않습니다.

AI 모델 학습, 실시간 유추, 시뮬레이션 및 비디오 처리와 같은 GPU 워크로드는 종종 다음에 따라 달라집니다.

  • 올바른 GPU 드라이버 및 런타임 호환성.
  • GPU 리소스의 정확한 스케줄링.
  • 컨테이너 내부의 GPU 하드웨어 디바이스에 액세스합니다.

잘못된 구성으로 인해 비용이 많이 들거나, 예기치 못한 작업이 실패하거나, GPU 미달 사용이 낮아질 수 있습니다.

GPU 워크로드 배치 적용

기본적으로 AKS 스케줄러는 CPU와 메모리가 충분한 사용 가능한 노드에 Pod를 배치합니다. 워크로드 배치 컨트롤이 없으면 다음 두 가지 문제가 발생할 수 있습니다.

  • 스케줄러는 GPU가 없는 노드에 GPU 워크로드를 배치하여 워크로드를 시작하지 못할 수 있습니다.
  • 범용 워크로드는 GPU 노드를 차지하여 비용이 많이 드는 리소스를 낭비할 수 있습니다.

올바른 배치를 적용하려면:

  • 키 [gpu-vendor].com/gpu: NoSchedule (예 nvidia.com/gpu: NoSchedule: )를 사용하여 GPU 노드를 오염합니다. 이 taint는 GPU가 아닌 워크로드가 이러한 노드에서 예약되지 않도록 차단합니다.

  • 테인트가 만들어진 GPU 노드에서 예약할 수 있도록 GPU 워크로드 Pod 사양에 일치하는 톨러레이션을 추가합니다.

  • Pod에서 GPU 리소스 요청 및 제한을 정의하여 스케줄러가 GPU 용량을 예약하도록 합니다. 다음은 그 예입니다.

    resources:
      limits:
        [gpu-vendor].com/gpu: 1
    
  • 유효성 검사 정책이나 허용 컨트롤러를 사용하여 GPU 워크로드에 필요한 톨러레이션과 리소스 제한이 포함되도록 합니다.

이 방식은 GPU 지원 워크로드만 GPU 노드에 할당되고 필요한 특수 컴퓨팅 리소스에 액세스할 수 있도록 보장합니다.

AKS 자동에서 플랫폼 가드레일은 기본적으로 미리 구성됩니다. 여전히 워크로드 수준 배치 컨트롤을 적용하여 엄격한 GPU 예약 동작을 적용합니다.

GPU 드라이버 설치 및 런타임 준비 상태 유효성 검사

프로덕션 GPU 워크로드를 배포하기 전에 항상 GPU 노드 풀이 다음과 같은지 유효성을 검사합니다.

  • 호환되는 GPU 드라이버가 장착되어 있습니다.
  • 정상 Kubernetes 디바이스 플러그 인 DaemonSet을 호스팅합니다.
  • [gpu-vendor].com/gpu를 예약 가능한 리소스로 노출합니다.

GPU 공급업체와 연결된 SMI(시스템 관리 인터페이스)를 통해 GPU 노드 풀에서 실행 중인 현재 드라이버 버전을 확인할 수 있습니다.

다음 명령은 GPU 디바이스 플러그 인 배포 Pod 내부에서 nvidia-smi를 실행하여 NVIDIA GPU 지원 노드 풀에서 드라이버 설치 및 런타임 준비 상태를 확인합니다.

kubectl exec -it $"{GPU_DEVICE_PLUGIN_POD}" -n {GPU_NAMESPACE} -- nvidia-smi

다음 예와 유사하게 출력됩니다.

+-----------------------------------------------------------------------------+
|NVIDIA-SMI 570.xx.xx    Driver Version: 570.xx.xx    CUDA Version: 12.x|
...
...

kubectl exec 각 GPU 노드 풀에 대한 명령을 반복하여 노드에 설치된 드라이버 버전을 확인합니다.

AMD GPU 지원 노드 풀에서 또는 AMD GPU 구성 요소를 배포하고 ROCm 디바이스 플러그 인 Pod에서 amd-smi 명령을 실행하여 설치된 드라이버 버전을 확인합니다.

GPU 지원 노드를 최신 노드 OS 이미지로 업데이트 유지

AKS에서 GPU 워크로드의 성능, 보안 및 호환성을 보장하려면 최신 권장 노드 OS 이미지로 GPU 노드 풀을 최신 상태로 유지하는 것이 필수적입니다. 이러한 업데이트는 다음과 같은 이유로 중요합니다.

  • 더 이상 사용되지 않는 버전 또는 EOL(수명 종료) 버전을 바꿔 최신 프로덕션 등급 GPU 드라이버를 포함합니다.
  • 현재 Kubernetes 버전과의 호환성을 위해 완전히 테스트되었습니다.
  • GPU 공급업체가 발견한 알려진 취약성을 해결합니다.
  • 개선된 안정성과 효율성을 위해 최신 OS 및 컨테이너 런타임 개선 사항을 통합했습니다.

자동 업그레이드 채널을 설정하거나 수동 업그레이드를 통해 GPU 노드 풀을 AKS에서 릴리스한 최신 권장 노드 OS 이미지로 업그레이드합니다. AKS 릴리스 추적기를 사용하여 최신 노드 이미지 릴리스를 모니터링하고 추적할 수 있습니다.

대부분의 프로덕션 시나리오에서 AKS 자동을 기본 기준으로 시작합니다. AKS 표준을 사용하는 경우 업그레이드 채널 및 유지 관리 기간을 명시적으로 구성합니다.

공유 클러스터를 사용할 때 GPU 워크로드 분리

GPU 노드 풀이 있는 단일 AKS 클러스터에서 모델 학습, 실시간 유추, 일괄 처리 등 여러 형식의 GPU 워크로드를 실행하는 경우 이러한 워크로드를 다음과 같이 분리해야 합니다.

  • 서로 다른 워크로드 유형 간의 우발적인 방해나 리소스 경합을 방지합니다.
  • 보안을 강화하고 준수 경계를 유지합니다.
  • 워크로드 범주별로 GPU 리소스 사용량의 관리와 모니터링을 간소화합니다.

네임스페이스와 네트워크 정책을 사용하여 단일 AKS 클러스터 내에서 GPU 워크로드를 격리할 수 있습니다. 이를 통해 워크로드별 할당량, 한도 및 로깅 구성을 통해 보다 명확한 거버넌스가 가능해집니다.

예제 시나리오

서로 통신할 필요가 없는 두 가지 서로 다른 GPU 워크로드 유형을 호스팅하는 AKS 클러스터를 고려합니다.

  • 학습 워크로드: 리소스 집약적 AI 모델 학습 작업.
  • 유추 워크로드: 대기 시간에 민감한 실시간 유추 서비스입니다.

다음 단계에 따라 두 가지 워크로드를 분리할 수 있습니다.

  1. kubectl create namespace 명령을 사용하여 워크로드 유형별로 전용 네임스페이스를 만듭니다.

    kubectl create namespace gpu-training
    kubectl create namespace gpu-inference
    
  2. 다음 예와 같이 GPU 워크로드 Pod를 형식별로 레이블을 지정합니다.

    metadata:
      namespace: gpu-training
      labels:
        workload: training
    
  3. 네트워크 정책을 적용하여 워크로드 유형 간 트래픽을 격리합니다. 다음 매니페스트는 gpu-training 네임스페이스에 대한 모든 수신 및 송신을 차단합니다(명시적으로 허용된 경우 제외).

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: deny-cross-namespace
      namespace: gpu-training
    spec:
      podSelector: {}
      policyTypes:
      - Ingress
      - Egress
      ingress: []
      egress: []
    

이 정책은 다음과 같습니다.

  • gpu-training 네임스페이스의 모든 Pod에 적용됩니다.
  • 기본적으로 모든 수신 및 발신 트래픽을 거부하여 강력한 격리를 지원합니다.

이 모델은 공유 GPU 환경에서 명확성, 제어 및 안전성을 향상시키며, 특히 워크로드 유형에 서로 다른 런타임 프로필, 위험 수준 또는 운영 요구 사항이 있는 경우에 유용합니다.

MIG(다중 인스턴스 GPU)를 사용하여 GPU 노드의 리소스 사용 최적화

GPU 워크로드에 따라 메모리 요구 사항이 다릅니다. NVIDIA A100 40GB와 같은 소규모 배포에는 전체 GPU가 필요하지 않을 수 있습니다. 그러나 기본적으로 단일 워크로드가 충분히 활용되지 않더라도 GPU 리소스를 독점하게 됩니다.

AKS는 MIG(다중 인스턴스 GPU)를 사용하여 GPU 노드를 더 작은 조각으로 분할하여 리소스 최적화를 지원하므로 팀이 더 작은 작업을 더 효율적으로 예약할 수 있습니다. 지원되는 GPU 크기와 AKS에서 다중 인스턴스 GPU를 시작하는 방법에 대해 자세히 알아봅니다.

임시 NVMe 데이터 디스크를 고성능 캐시로 사용

AKS의 GPU VM에서 실행되는 AI 워크로드의 경우 학습 및 유추 성능을 극대화하기 위해 임시 스토리지에 빠르고 안정적으로 액세스하는 것이 중요합니다. 임시 NVMe 데이터 디스크는 VM 호스트에 직접 연결된 처리량이 높고 대기 시간이 짧은 스토리지를 제공하므로 데이터 세트 캐싱, 중간 검사점 및 모델 가중치 저장 또는 데이터 전처리 및 분석을 위한 스크래치 공간 제공과 같은 시나리오에 이상적입니다.

AI 워크로드용 GPU 지원 노드 풀을 배포할 때 고성능 캐시 또는 스크래치 공간으로 사용되도록 임시 NVMe 데이터 디스크를 구성합니다. 이 방법은 I/O 병목 상태를 제거하고, 데이터 집약적 작업을 가속화하며, 데이터를 기다리는 동안 GPU 리소스가 유휴 상태가 되지 않도록 합니다.

Azure 광범위한 Azure GPU VM 제품군에서 임시 NVMe 데이터 디스크를 지원합니다. GPU VM 크기에 따라 VM에는 최대 28TiB의 결합된 용량을 가진 최대 8개의 임시 NVMe 데이터 디스크가 있습니다. VM 크기에 대한 자세한 구성은 선택한 GPU 제품군에 대한 ND H100 v5 시리즈 설명서 또는 VM 크기 설명서를 참조하세요.

프로비전 및 관리를 간소화하려면 Kubernetes 워크로드에 대한 임시 NVMe 디스크를 자동으로 검색하고 오케스트레이션할 수 있는 Azure Container Storage를 사용합니다.

권장되는 시나리오는 다음과 같습니다.

  • AI 학습 및 유추를 위한 대용량 데이터 세트 및 모델 검사점 캐싱
  • AI 추론을 위한 모델 가중치 캐싱. 예를 들어 KAITO 호스팅 모델은 로컬 NVMe에서 OCI 아티팩트로 사용됩니다.
  • 일괄 작업과 데이터 파이프라인을 위한 빠른 스크래치 공간을 제공합니다.

중요합니다

임시 NVMe 디스크의 데이터는 일시적이므로 VM의 할당을 취소하거나 다시 배포하면 손실됩니다. 이러한 디스크는 중요하지 않은 일시적인 데이터에만 사용하고 영구 Azure Storage 솔루션에 중요한 정보를 저장합니다.

임시 NVMe 데이터 디스크에 대한 자세한 지침은 AKS의 임시 NVMe 데이터 디스크에 대한 모범 사례를 참조하세요.

AKS 및 GPU 워크로드에 대한 자세한 내용은 다음 문서를 참조하세요.