리소스 가용성 기반의 학습 작업 예약

GPU 리소스가 필요한 커스텀 학습 작업의 경우 동적 워크로드 스케줄러를 사용하면 요청된 GPU 리소스가 제공되었을 때를 기준으로 작업을 예약할 수 있습니다. 이 페이지에서는 동적 워크로드 스케줄러를 사용해서 커스텀 학습 작업을 예약하고 Vertex AI에서 예약 동작을 맞춤설정하는 방법을 설명합니다.

다음 상황에서는 동적 워크로드 스케줄러를 사용해서 커스텀 학습 작업을 예약하는 것이 좋습니다.

  • 커스텀 학습 작업에 A100 또는 H100 GPU가 필요하고, 요청한 리소스를 사용할 수 있는 즉시 작업을 실행하려고 합니다. 예를 들어 Vertex AI가 피크 시간이 아닌 시간대에 GPU 리소스를 할당하는 경우입니다.
  • 워크로드에 여러 노드가 필요하고 모든 GPU 노드가 동시에 프로비저닝되고 준비될 때까지 실행을 시작할 수 없습니다. 예를 들어 분산 학습 작업을 만드는 경우입니다.

요구사항

동적 워크로드 스케줄러를 사용하려면 커스텀 학습 작업이 다음 요구사항을 충족해야 합니다.

  • 커스텀 학습 작업의 최대 timeout이 7일 이하입니다.
  • 커스텀 학습 작업에서 모든 작업자 풀에 대해 동일한 머신 구성이 사용됩니다.

지원되는 작업 유형

CustomJob, HyperparameterTuningjob, TrainingPipeline을 포함하여 모든 커스텀 학습 작업 유형이 지원됩니다.

커스텀 학습 작업에서 동적 워크로드 스케줄러 사용 설정

커스텀 학습 작업에서 동적 워크로드 스케줄러를 사용 설정하려면 작업을 만들 때 scheduling.strategy API 필드를 FLEX_START로 설정합니다.

커스텀 학습 작업을 만드는 방법은 다음 링크를 참조하세요.

리소스 가용성을 기다리는 기간 구성

scheduling.maxWaitDuration 필드에서 해당 작업이 리소스를 기다릴 수 있는 기간을 구성할 수 있습니다. 값이 0이면 요청된 리소스를 사용할 수 있을 때까지 작업이 무제한으로 기다립니다. 기본값은 1일입니다.

예시

다음 예시는 customJob에 대해 동적 워크로드 스케줄러를 사용 설정하는 방법을 보여줍니다. 사용할 인터페이스의 탭을 선택하세요.

gcloud

Google Cloud CLI를 사용하여 작업을 제출할 때는 config.yaml 파일에 scheduling.strategy 필드를 추가합니다.

YAML 구성 파일 예시:

workerPoolSpecs:
  machineSpec:
    machineType: n1-highmem-2
  replicaCount: 1
  containerSpec:
    imageUri: gcr.io/ucaip-test/ucaip-training-test
    args:
    - port=8500
    command:
    - start
scheduling:
  strategy: FLEX_START
  maxWaitDuration: 1800s

python

Vertex AI SDK for Python을 사용하여 작업을 제출할 때는 관련 CustomJob 만들기 메서드에서 scheduling_strategy 필드를 설정합니다.

from google.cloud.aiplatform_v1.types import custom_job as gca_custom_job_compat

def create_custom_job_with_dws_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    script_path: str,
    container_uri: str,
    service_account: str,
    experiment: str,
    experiment_run: Optional[str] = None,
) -> None:
    aiplatform.init(project=project, location=location, staging_bucket=staging_bucket, experiment=experiment)

    job = aiplatform.CustomJob.from_local_script(
        display_name=display_name,
        script_path=script_path,
        container_uri=container_uri,
        enable_autolog=True,
    )

    job.run(
        service_account=service_account,
        experiment=experiment,
        experiment_run=experiment_run,
        max_wait_duration=1800,
        scheduling_strategy=gca_custom_job_compat.Scheduling.Strategy.FLEX_START
    )

REST

Vertex AI REST API를 사용하여 작업을 제출할 때는 커스텀 학습 작업을 만들 때 scheduling.strategyscheduling.maxWaitDuration 필드를 설정합니다.

요청 JSON 본문 예시:

{
  "displayName": "MyDwsJob",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "a2-highgpu-1g",
          "acceleratorType": "NVIDIA_TESLA_A100",
          "acceleratorCount": 1
        },
        "replicaCount": 1,
        "diskSpec": {
          "bootDiskType": "pd-ssd",
          "bootDiskSizeGb": 100
        },
        "containerSpec": {
          "imageUri": "python:3.10",
          "command": [
            "sleep"
          ],
          "args": [
            "100"
          ]
        }
      }
    ],
    "scheduling": {
      "maxWaitDuration": "1800s",
      "strategy": "FLEX_START"
    }
  }
}

할당량

동적 워크로드 스케줄러를 사용하여 작업을 제출할 때 Vertex AI는 주문형 Vertex AI 할당량을 소비하는 대신 선점형 할당량을 소비합니다. 예를 들어 Nvidia H100 GPU의 경우 다음을 소비하는 대신:

aiplatform.googleapis.com/custom_model_training_nvidia_h100_gpus,

Vertex AI가 다음을 소비합니다.

aiplatform.googleapis.com/custom_model_training_preemptible_nvidia_h100_gpus.

하지만 선점형 할당량은 이름에만 사용됩니다. 여기서 리소스는 선점형이 아니며 표준 리소스와 같이 작동합니다.

동적 워크로드 스케줄러를 사용하여 작업을 제출하기 전에 선점형 할당량이 충분한 양으로 증가되었는지 확인합니다. Vertex AI 할당량 및 할당량 증가 요청 방법에 대한 자세한 내용은 Vertex AI 할당량 및 한도를 참조하세요.

결제

작업이 실행되는 기간 동안만 비용이 청구되고 리소스를 사용할 수 있을 때까지 작업을 기다리는 시간에는 비용이 청구되지 않습니다. 자세한 내용은 가격 책정을 참조하세요.

다음 단계