이 페이지에서는 다음을 포함하여 Google Kubernetes Engine(GKE)에서 GPU를 요청하는 옵션을 고려할 수 있습니다.
- GKE 워크로드를 위한 GPU 리소스 및 효율성 기능 선택
- 프로젝트에서 실행할 수 있는 최대 GPU 수인 GPU 할당량 선택
- Autopilot 모드와 Standard 모드 중 결정
- GKE 또는 GKE의 NVIDIA GPU Operator를 통해 GPU 스택 관리
- 활용되지 않는 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 또는 GKE에서 NVIDIA GPU Operator를 통해 GPU 스택 관리
기본적으로 GKE는 자동 GPU 드라이버 설치, NVIDIA Data Center GPU Manager(DCGM)를 사용하여 GKE에서 GPU 워크로드 모니터링, GPU 공유 전략을 비롯한 GPU 노드의 전체 수명 주기를 관리합니다.
GKE는 GPU 노드 수명 주기를 완전히 관리하므로 GKE를 사용하여 GPU 노드를 관리하는 것이 좋습니다. 다음 중 하나를 선택하여 GPU 노드 관리를 위한 GKE를 시작하세요.
NVIDIA GPU Operator는 Container-Optimized OS(COS) 및 Ubuntu 노드 이미지 모두에서 GKE의 완전 관리형 GPU 지원 대안으로 사용할 수 있습니다. 여러 클라우드 서비스 제공업체에서 일관된 환경을 원하거나, 이미 NVIDIA GPU Operator를 사용하고 있거나, NVIDIA GPU Operator에 종속된 소프트웨어를 사용하는 경우 이 옵션을 선택합니다. 자세한 내용은 NVIDIA GPU Operator로 GPU 스택 관리를 참조하세요.
사용 사례에 가장 적합한 옵션을 선택하려면 GKE에서 GPU 노드를 관리하는 두 가지 방법을 비교하는 다음 표를 참조하세요.
설명 | GKE를 사용하여 GPU 노드 관리 | GKE에서 NVIDIA GPU Operator 사용 |
---|---|---|
GPU 노드 수명 주기 관리(설치, 업그레이드) | GKE에서 완전히 관리합니다. | 사용자가 관리합니다. |
드라이버 설치 | GPU 드라이버 자동 및 수동 설치 | GPU 드라이버 수동 설치 |
노드 선택기 | cloud.google.com/gke-gpu=true |
nvidia.com/gpu=true |
GPU 공유 전략 |
|
|
GPU 노드 상태 점검 |
|
|
측정항목 및 관측 가능성 |
|
|
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를 구성하여 워크로드에 대한 중단을 줄일 수 있습니다.
AI/ML 워크로드를 실행하는 GKE 노드에서 발생할 수 있는 서비스 중단 이벤트를 이해, 구성, 모니터링하려면 GPU 및 TPU의 GKE 노드 서비스 중단 관리를 참조하세요.