이 페이지에서는 다음을 포함하여 Google Kubernetes Engine(GKE)에서 GPU를 요청하는 옵션을 고려할 수 있습니다.
- GKE 워크로드를 위한 GPU 리소스 및 효율성 기능 선택
- 프로젝트에서 실행할 수 있는 최대 GPU 수인 GPU 할당량 선택
- Autopilot 모드와 Standard 모드 중 결정
- 사용되지 않는 GPU 리소스의 양을 줄이는 기능 선택
- CUDA 애플리케이션용 NVIDIA CUDA-X 라이브러리 액세스
- 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 | 표준 |
---|---|---|
GPU 하드웨어 요청 | 워크로드에서 GPU 리소스를 지정합니다. | 클러스터의 노드에 GPU 하드웨어를 연결한 후 해당 노드에서 실행 중인 컨테이너화된 워크로드에 GPU 리소스를 할당합니다. |
GPU 하드웨어 가용성 |
|
Compute Engine에서 지원되는 모든 GPU 유형 |
GPU 선택 | 워크로드 사양에 GPU 수량 및 유형을 요청합니다. 기본적으로 Autopilot은 해당 GKE 버전의 기본 드라이버를 설치하고 노드를 관리합니다. Autopilot에서 특정 드라이버 버전을 선택하려면 Autopilot GPU 포드를 위한 NVIDIA 드라이버 선택을 참조하세요. |
Standard 노드 풀에서 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 라이브러리를 추가하려면 컨테이너 사양의 LD_LIBRARY_PATH
환경 변수에 다음 값을 포함하여 자체 이미지를 빌드하고 사용하면 됩니다.
/usr/local/cuda-CUDA_VERSION/lib64
: 노드에서 NVIDIA CUDA-X 라이브러리의 위치CUDA_VERSION
을 사용한 CUDA-X 이미지 버전으로 바꾸세요. 일부 버전은/usr/local/nvidia/bin
에 디버그 유틸리티도 포함되어 있습니다. 자세한 내용은 DockerHub의 NVIDIA CUDA 이미지를 참조하세요.CUDA 버전에 필요한 최소 GPU 드라이버 버전을 확인하려면 CUDA Toolkit and Compatible Driver Versions를 참조하세요.
/usr/local/nvidia/lib64
: NVIDIA 기기 드라이버의 위치
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 사용량을 보려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 워크로드 페이지로 이동합니다.
워크로드로 이동- 워크로드를 선택합니다.
워크로드 대시보드에는 GPU 메모리 사용량 및 용량, GPU 사용 주기에 대한 차트가 표시됩니다.
NVIDIA Data Center GPU Manager(DCGM) 측정항목 보기
Google Cloud Managed Service for Prometheus를 사용하여 NVIDIA DCGM 측정항목을 수집하고 시각화할 수 있습니다. Autopilot 클러스터의 경우 GKE가 드라이버를 설치합니다. Standard 클러스터의 경우 NVIDIA 드라이버를 설치해야 합니다.
GKE 관리 DCGM 패키지를 배포하는 방법에 대한 안내는 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 노드 단계적 종료 구성을 참조하세요.