Dataflow 작업에서 GPU를 사용하면 일부 데이터 처리 작업을 가속화할 수 있습니다. GPU는 CPU보다 특정 계산을 더 빠르게 수행할 수 있습니다. 이러한 계산은 일반적으로 이미지 처리 및 머신러닝 사용 사례와 같은 숫자 또는 선형 대수입니다. 성능 향상의 정도는 사용 사례, 계산 유형, 처리된 데이터 양에 따라 다릅니다.
Dataflow에서 GPU를 사용하기 위한 기본 요건
Dataflow는 Docker 컨테이너 내부의 작업자 VM에서 사용자 코드를 실행합니다. 이러한 작업자 VM은 컨테이너 최적화 OS를 실행합니다. Dataflow 작업에서 GPU를 사용하려면 다음 설치가 필요합니다.
- GPU 드라이버는 작업자 VM에 설치되며 Docker 컨테이너에 액세스할 수 있습니다. 자세한 내용은 GPU 드라이버 설치를 참조하세요.
- 파이프라인에 필요한 GPU 라이브러리(NVIDIA CUDA-X 라이브러리 또는 NVIDIA CUDA Toolkit)는 커스텀 컨테이너 이미지에 설치됩니다.
커스텀 컨테이너 이미지를 제공하려면 Dataflow Runner v2를 사용하고 worker_harness_container_image
파이프라인 옵션을 사용하여 컨테이너 이미지를 제공해야 합니다.
GPU 드라이버 버전은 현재 Dataflow에서 사용되는 Container-Optimized OS 버전에 따라 다릅니다.
가격 책정
GPU를 사용하는 작업에는 Dataflow 가격 책정 페이지에 명시된 대로 요금이 청구됩니다. Dataflow의 GPU 리소스는 미리보기를 제공하는 동안 할인되지 않습니다.
고려사항
머신 유형 사양
GPU는 커스텀 N1 머신 유형을 포함한 N1 머신 유형에서 지원됩니다.
GPU의 유형과 개수는 작업자에서 사용할 수 있는 vCPU 및 메모리의 양에 대한 상한값 제한을 정의합니다. 해당 제한사항을 확인하려면 가용성 섹션을 참조하세요.
더 많은 수의 CPU 또는 메모리를 지정하려면 더 많은 수의 GPU를 지정해야 할 수 있습니다.
자세한 내용은 Compute Engine의 GPU를 참조하세요.
GPU 및 작업자 동시 로드
Runner v2 아키텍처를 사용하는 Python 파이프라인의 경우 Dataflow는 VM 코어당 하나의 Apache Beam SDK 프로세스를 시작합니다. 각 SDK 프로세스는 자체 Docker 컨테이너에서 실행되며 여러 스레드를 생성한 다음 각 스레드가 수신 데이터를 처리합니다.
이러한 다중 프로세스 아키텍처와 Dataflow 작업자의 GPU가 모든 프로세스 및 스레드에 표시되므로 GPU 초과 구독을 방지하려면 GPU 액세스에 대한 신중한 관리가 필요할 수 있습니다. 예를 들어 TensorFlow를 사용하는 경우 GPU 메모리의 일부만 사용하도록 각 TensorFlow 프로세스를 구성해야 합니다. 모든 프로세스가 GPU 메모리를 초과 구독하면 안 됩니다. 자세한 내용은 GPU 메모리 증가 제한을 참조하세요.
또는 하나의 vCPU가 있는 작업자를 사용하여 GPU에 액세스하는 동시 프로세스 수를 제한할 수 있습니다. 커스텀 머신 유형을 사용하여 vCPU가 1개인 머신의 메모리 용량을 늘릴 수 있습니다.
가용성
다음 표에는 사용 가능한 GPU 유형 및 사용자에게 제공되는 작업자 VM 구성이 있습니다.
GPU 모델 | GPU | GPU 메모리 | 사용 가능한 vCPU | 사용 가능한 메모리 | 사용 가능한 영역 |
---|---|---|---|---|---|
NVIDIA® Tesla® T4 | GPU 1개 | GDDR6 16GB | vCPU 1 - 24개 | 1‑156GB |
|
GPU 2개 | GDDR6 32GB | vCPU 1 - 48개 | 1‑312GB | ||
GPU 4개 | GDDR6 64GB | vCPU 1 - 96개 | 1‑624GB | ||
NVIDIA® Tesla® P4 | GPU 1개 | GDDR5 8GB | vCPU 1 - 24개 | 1‑156GB |
|
GPU 2개 | GDDR5 16GB | vCPU 1 - 48개 | 1‑312GB | ||
GPU 4개 | GDDR5 32GB | vCPU 1 - 96개 | 1‑624GB | ||
NVIDIA® Tesla® V100 | GPU 1개 | HBM2 16GB | vCPU 1 - 12개 | 1‑78GB |
|
GPU 2개 | HBM2 32GB | vCPU 1 - 24개 | 1‑156GB | ||
GPU 4개 | HBM2 64GB | vCPU 1 - 48개 | 1‑312GB | ||
GPU 8개 | HBM2 128GB | vCPU 1 - 96개 | 1‑624GB | ||
NVIDIA® Tesla® P100 | GPU 1개 | HBM2 16GB | vCPU 1 - 16개 | 1‑104GB |
|
GPU 2개 | HBM2 32GB | vCPU 1 - 32개 | 1‑208GB | ||
GPU 4개 | HBM2 64GB | vCPU 1 - 64개 vCPU 1 - 96개 |
1‑208GB 1‑624GB |
||
NVIDIA® Tesla® K80 | GPU 1개 | GDDR5 12GB | vCPU 1 - 8개 | 1‑52GB |
|
GPU 2개 | GDDR5 24GB | vCPU 1 - 16개 | 1‑104GB | ||
GPU 4개 | GDDR5 48GB | vCPU 1 - 32개 | 1‑208GB | ||
GPU 8개 | GDDR5 96GB | vCPU 1 - 64개 | 1‑416GB 1‑208GB |
- 영역에 대한 자세한 내용은 리전 및 영역을 참조하세요.
- NVIDIA® K80® 보드에는 각각 2개의 GPU가 들어 있습니다. K80 GPU의 가격은 보드가 아닌 GPU 기준으로 책정됩니다.
다음 단계
- GPU 사용 태스크 자세히 알아보기
- GPU를 사용한 Landsat 위성 이미지 처리 살펴보기