Google Kubernetes Engine (GKE)의 GPU 정보


이 페이지에서는 다음을 포함하여 Google Kubernetes Engine(GKE)에서 GPU를 요청하는 옵션을 고려할 수 있습니다.

GKE에서 GPU 하드웨어를 요청하는 방법은 Autopilot 또는 Standard 사용 여부에 따라 달라집니다. Autopilot에서 워크로드에 GPU 리소스를 지정하여 GPU 하드웨어를 요청합니다. GKE Standard에서는 클러스터의 노드에 GPU 하드웨어를 연결한 후 해당 노드에서 실행 중인 컨테이너화된 워크로드에 GPU 리소스를 할당할 수 있습니다. 워크로드에서 GPU를 연결하고 사용하는 방법은 Autopilot에서 GPU 워크로드 배포 또는 Standard 노드 풀에서 GPU 실행을 참조하세요.

GKE에 사용 가능한 GPU 하드웨어는 컴퓨팅 워크로드를 위한 Compute Engine GPU의 일부입니다. 사용 가능한 특정 하드웨어는 클러스터의 Compute Engine 리전 또는 영역에 따라 달라집니다. 자세한 가용성 정보는 GPU 리전 및 영역을 참조하세요.

GKE는 시간 공유, 멀티 인스턴스 GPU, NVIDIA MPS를 사용한 멀티 인스턴스 GPU를 포함하여 노드에서 실행되는 워크로드의 효율적인 GPU 리소스 사용률을 개선하기 위해 몇 가지 GPU 관련 기능을 제공합니다.

GPU 할당량 계획

GPU 할당량은 Google Cloud 프로젝트에서 실행할 수 있는 최대 GPU 수입니다. GKE 클러스터에서 GPU를 사용하려면 프로젝트에 GPU 할당량이 충분해야 합니다.

GPU 할당량은 클러스터에서 실행하려는 전체 GPU 수와 최소한 동일해야 합니다. 클러스터 자동 확장을 사용 설정할 경우, 노드당 GPU 수만큼 곱해진 최대 클러스터 노드 수와 최소한 동일 개수 이상의 GPU 할당량을 요청해야 합니다.

예를 들어 각각 2개의 GPU가 있는 3개의 노드를 사용할 것으로 예상되는 경우 6은 프로젝트에 필요한 GPU 할당량입니다.

추가 GPU 할당량을 요청하려면 gpus를 측정항목으로 사용하여 높은 할당량 한도 요청의 안내를 따르세요.

Autopilot 또는 Standard를 사용하여 GPU 지원 선택

GPU는 Autopilot 및 Standard 클러스터에서 사용할 수 있습니다. 완전 관리형 Kubernetes 환경에서는 Autopilot 클러스터를 사용하는 것이 좋습니다. Autopilot에서 GKE는 드라이버 설치, 노드 확장, 포드 격리, 노드 프로비저닝을 관리합니다.

다음 표에서는 Autopilot 및 Standard GPU 지원 간 차이에 대한 개요를 제공합니다.

설명 Autopilot Standard
GPU 하드웨어 요청 워크로드에서 GPU 리소스를 지정합니다. 클러스터의 노드에 GPU 하드웨어를 연결한 후 해당 노드에서 실행 중인 컨테이너화된 워크로드에 GPU 리소스를 할당합니다.
GPU 하드웨어 가용성
  • NVIDIA T4
  • NVIDIA L4
  • NVIDIA A100 40GB
  • NVIDIA A100 80GB
  • NVIDIA H100 80GB
Compute Engine에서 지원되는 모든 GPU 유형
GPU 선택 워크로드 사양에 GPU 수량 및 유형을 요청합니다. 기본적으로 Autopilot은 해당 GKE 버전의 기본 드라이버를 설치하고 노드를 관리합니다. Autopilot에서 특정 드라이버 버전을 선택하려면 Autopilot GPU 포드를 위한 NVIDIA 드라이버 선택을 참조하세요. Standard 노드 풀에서 GPU 실행에 설명된 단계를 수행합니다.
  1. 특정 GPU 유형 및 해당 Compute Engine 머신 유형으로 노드 풀을 만들고 설치할 드라이버를 선택합니다.
  2. 자동 설치를 사용하지 않은 경우 노드에 GPU 드라이버를 수동으로 설치합니다.
  3. 포드 사양에서 GPU 수량 요청
GPU 사용률 개선
보안 GKE Sandbox의 GPU GKE Sandbox의 GPU
가격 책정 Autopilot GPU 포드 가격 책정 Compute Engine GPU 가격 책정

워크로드에 가장 적합한 GKE 작업 모드를 선택하려면 GKE 작업 모드 선택을 참조하세요.

GKE에서 GPU 기능을 사용하여 리소스 사용량 최적화

기본적으로 Kubernetes는 GPU를 컨테이너에 전체 단위로 할당할 수만 있지만 GKE는 GPU 워크로드의 리소스 사용량을 최적화하는 데 사용할 수 있는 추가 기능을 제공합니다.

다음 기능은 활용되지 않는 GPU 리소스 양을 줄이기 위해 GKE에서 제공됩니다.

GPU 기능
멀티 인스턴스 GPU

사용 가능: Autopilot 및 Standard

단일 GPU를 한 노드의 컨테이너에 개별 GPU로 할당될 수 있는 최대 7개의 하드웨어 구분 인스턴스로 분할합니다. 각 할당된 컨테이너에 해당 인스턴스에 사용 가능한 리소스가 제공됩니다.

시간 공유 GPU

사용 가능: Autopilot 및 Standard

단일 GPU를 한 노드에서 여러 컨테이너에 대한 여러 단위로 표현합니다. GPU 드라이버가 컨텍스트를 전환하고 시간 경과에 따라 필요한 대로 전체 GPU 리소스를 각 할당된 컨테이너에 할당합니다.

NVIDIA MPS

사용 가능 대상: Standard

여러 컨테이너에서 단일 물리적 NVIDIA GPU를 공유합니다. NVIDIA MPS는 단일 GPU 기기에서 동시에 실행할 수 있는 협업 방식의 멀티 프로세스 CUDA 애플리케이션을 투명하게 지원하도록 설계된 CUDA API의 바이너리 호환 구현 대안입니다.

CUDA 애플리케이션용 NVIDIA CUDA-X 라이브러리 액세스

CUDA는 GPU를 위한 NVIDIA의 병렬 컴퓨팅 플랫폼이자 프로그래밍 모델입니다. CUDA 애플리케이션을 사용하려면 사용하는 이미지에 라이브러리가 있어야 합니다. NVIDIA CUDA-X 라이브러리를 추가하려면 다음 방법 중 하나를 사용합니다.

  • 권장: NVIDIA CUDA-X 라이브러리가 사전 설치된 이미지를 사용합니다. 예를 들어 Deep Learning Containers를 사용할 수 있습니다. 이 컨테이너는 주요 데이터 과학 프레임워크, NVIDIA CUDA-X 라이브러리, 도구를 사전 설치합니다. 또는 NVIDIA CUDA 이미지를 사용할 수 있으며 여기에는 NVIDIA CUDA-X 라이브러리만 포함됩니다.
  • 자체 이미지를 빌드하고 사용합니다. 이 경우 컨테이너 사양의 LD_LIBRARY_PATH 환경 변수에 다음 값을 포함합니다.
    1. /usr/local/cuda-CUDA_VERSION/lib64: 노드에서 NVIDIA CUDA-X 라이브러리의 위치. CUDA_VERSION을 사용한 CUDA-X 이미지 버전으로 바꾸세요. 일부 버전에는 /usr/local/nvidia/bin의 디버그 유틸리티도 포함되어 있습니다. 자세한 내용은 DockerHub의 NVIDIA CUDA 이미지를 참조하세요.
    2. /usr/local/nvidia/lib64: NVIDIA 기기 드라이버의 위치

CUDA 버전에 필요한 최소 GPU 드라이버 버전을 확인하려면 CUDA Toolkit and Compatible Driver Versions를 참조하세요. 노드에서 실행 중인 GKE 패치 버전에 선택한 CUDA 버전과 호환되는 GPU 드라이버 버전이 포함되어 있는지 확인합니다. GKE 버전과 연결된 GPU 드라이버 버전 목록은 GKE 현재 버전 표에 연결된 해당 Container-Optimized OS 페이지를 참조하세요.

Autopilot 클러스터에서 GKE는 드라이버 버전 선택 및 설치를 관리합니다.

GPU 노드 모니터링

GKE 클러스터에 시스템 측정항목이 사용 설정된 경우 GPU 워크로드 성능을 모니터링하도록 Cloud Monitoring에서 다음 측정항목이 제공됩니다.

  • 가동 주기(container/accelerator/duty_cycle): 이전 샘플 기간(10초) 중에 가속기가 실제로 처리를 수행한 시간의 백분율입니다. 1~100 사이입니다.
  • 메모리 사용량(container/accelerator/memory_used): 할당된 가속기 메모리 양(바이트)입니다.
  • 메모리 용량(container/accelerator/memory_total): 총 가속기 메모리 용량(바이트)입니다.

사전 정의된 대시보드를 사용해서 GPU 노드가 있는 클러스터를 모니터링할 수 있습니다. 자세한 내용은 관측 가능성 측정항목 보기를 참조하세요. 클러스터 및 리소스 모니터링에 대한 일반적인 내용은 GKE의 관측 가능성을 참조하세요.

워크로드의 사용량 측정항목 보기

Google Cloud 콘솔의 워크로드 대시보드에서 워크로드 GPU 사용량 측정항목을 봅니다.

워크로드 GPU 사용량을 보려면 다음 단계를 수행합니다.

  1. Google Cloud 콘솔에서 워크로드 페이지로 이동합니다.

    워크로드로 이동
  2. 워크로드를 선택합니다.

워크로드 대시보드에는 GPU 메모리 사용량 및 용량, GPU 사용 주기에 대한 차트가 표시됩니다.

NVIDIA Data Center GPU Manager(DCGM) 측정항목 보기

Google Cloud Managed Service for Prometheus를 사용하여 NVIDIA DCGM 측정항목을 수집하고 시각화할 수 있습니다. Standard 클러스터의 경우 NVIDIA 드라이버를 설치해야 합니다. Autopilot 클러스터의 경우 GKE가 드라이버를 설치합니다.

DCGM 및 Prometheus DCGM 내보내기 도구를 배포하는 방법에 대한 안내는 Google Cloud Observability 문서의 NVIDIA Data Center GPU Manager(DCGM)를 참조하세요.

노드 유지보수로 인한 중단 처리

GPU를 호스팅하는 GKE 노드는 유지보수 이벤트 또는 기타 중단으로 인해 노드가 종료될 수 있습니다.

버전 1.29.1-gke.1425000 이상을 실행하는 제어 영역이 있는 GKE 클러스터에서 워크로드를 정상적으로 종료하도록 GKE를 구성하여 워크로드 중단을 줄일 수 있습니다.

종료 예정인 노드의 포드에 SIGTERM 신호를 보내도록 GKE를 구성하여 제거 전에 진행 중인 작업을 완료할 수 있도록 유예 기간을 제공할 수 있습니다. 포드 매니페스트의 spec.terminationGracePeriodSeconds 필드에 최대 3600초(1시간)까지 초를 지정합니다. GKE는 이러한 포드를 정상적으로 종료하고 개발자가 정의한 종료 작업(예: 학습 상태 저장)을 실행하기 위해 최선을 다합니다.

GKE는 PodDisruptionBudget 또는 terminationGracePeriodSeconds 설정에 대해 최대 60분의 모든 구성을 준수합니다. 이 두 설정이 상호작용하는 방식을 포함한 자세한 내용은 GPU 노드 단계적 종료 구성을 참조하세요.

다음 단계