동적 워크로드 스케줄러 사용

동적 워크로드 스케줄러 (DWS) Flex Start 모드를 사용하여 Managed Service for Apache Spark 일괄 워크로드의 부족한 GPU 리소스 확보 가능성을 개선할 수 있습니다.

개요

동적 워크로드 스케줄러는 부족한 컴퓨팅 리소스를 전역적으로 관리하는 용량 인식 스케줄러입니다. Flex Start 모드에서 Managed Service for Apache Spark는 리전 재고 부족으로 인해 GPU를 즉시 사용할 수 없는 경우 구성 가능한 기간 동안 요청을 큐에 추가할 수 있습니다.

Flex Start는 Managed Service for Apache Spark Spark 런타임 버전 3.0+에 제출된 모든 GPU 지원 워크로드의 기본 동작입니다. 리소스를 사용할 수 없는 경우 재고 부족 오류로 인해 실패하는 대신 요청이 큐에 추가됩니다. 용량이 확보되면 DWS는 실행이 시작되기 전에 전체 클러스터를 '한 번에' 프로비저닝합니다. 자세한 내용은 동적 워크로드 스케줄러 소개를 참조하세요.

혜택

  • 가용성 향상: 일시적인 GPU 용량 부족으로 인한 작업 실패가 크게 줄어듭니다.
  • 원자적 프로비저닝: 클러스터 작업자를 단일 단위로 프로비저닝하여 클러스터 무결성을 보장하고 작업자의 일부만 생성되는 시나리오를 방지합니다.
  • 기본 안정성: 수동 파라미터 구성 없이 리소스 확보가 개선됩니다.

할당량 요구사항

DWS Flex Start를 사용하려면 프로젝트에 충분한 할당량이 있어야 합니다.

  • 선점형 GPU 할당량: DWS Flex Start는 표준 풀 (예: PREEMPTIBLE_NVIDIA_L4_GPUS)이 아닌 GPU 할당량 풀의 선점형 버전을 사용합니다. 자세한 내용은 Managed Service for Apache Spark 리소스 할당량을 참조하세요.
  • 로컬 SSD 할당량: GPU 가속 머신에서 performance 스토리지 클래스를 사용하는 경우 Managed Service for Apache Spark는 고속 셔플 및 임시 스토리지를 위해 로컬 SSD를 프로비저닝합니다. 프로젝트에는 대상 리전에 충분한 로컬 SSD 할당량이 있어야 합니다.

구성

DWS Flex Start는 런타임 버전 3.0+의 GPU 워크로드에 기본적으로 사용 설정됩니다. 다음 Spark 속성을 사용하여 제한 시간을 맞춤설정하거나 이 기능을 사용 중지할 수 있습니다.

속성 설명 기본값
spark.dataproc.[driver|executor].provisioning.mode 프로비저닝 모델을 지정합니다. DWS Flex Start (GPU의 기본값)에 queue를 사용하거나 DWS를 사용 중지하고 주문형 프로비저닝을 사용하려면 default를 사용합니다. queue, default queue (3.0+의 GPU)
spark.dataproc.[driver|executor].provisioning.allocationTimeout 노드 풀이 용량을 위해 큐에서 대기하는 최대 기간입니다. 기본값은 1시간 (3600s)이고 최댓값은 2시간 (7200s)입니다. 참고: 값은 's' 접미사로 끝나야 합니다. 시간(초)(예: 1800s) 3600s

예: DWS Flex Start를 사용하는 GPU 일괄 워크로드

다음 예에서는 NVIDIA L4 GPU를 사용하여 PySpark 일괄 작업을 제출합니다. DWS Flex Start가 기본적으로 활성화된 상태에서 이 명령어는 드라이버와 실행기 모두에 30분 (1800s)의 큐 대기 제한 시간을 설정합니다.

gcloud dataproc batches submit pyspark \
    gs://my-bucket/path/to/your-script.py \
    --project="PROJECT_ID" \
    --region="REGION" \
    --version="3.0" \
    --properties="spark.dataproc.driver.resource.accelerator.type=l4,\
spark.dataproc.driver.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.resource.accelerator.type=l4,\
spark.dataproc.executor.provisioning.allocationTimeout=1800s,\
spark.dataproc.executor.compute.tier=premium,\
spark.dataproc.executor.disk.tier=premium"