학습과 함께 예약 사용

커스텀 학습 작업에 VM 리소스가 필요할 때 VM 리소스를 사용할 수 있도록 보장하려면 Compute Engine 예약을 사용하면 됩니다. 예약을 사용하면 높은 확신으로 Compute Engine 리소스 용량을 확보할 수 있습니다. 자세한 내용은 Compute Engine 영역별 리소스 예약을 참조하세요.

개요

Vertex AI 커스텀 학습 및 예측 작업은 Compute Engine 예약을 사용할 수 있습니다. 예약에 A2 또는 A3 머신 유형을 지정해야 합니다. 이러한 예약의 리소스에 약정 사용 할인(CUD)이 적용되는 경우 VM에서 이러한 예약을 사용하면 할인된 가격으로 리소스를 가져올 수 있습니다. 예약된 리소스의 CUD를 참조하세요.

제한사항 및 요구사항

Vertex AI에서 Compute Engine 예약을 사용할 경우 다음 제한사항과 요구사항을 고려하세요.

  • Vertex AI는 다음 머신 시리즈의 예약만 사용할 수 있습니다.

    • A2
    • A3
  • 커스텀 학습 및 예측에만 Vertex AI에서 Compute Engine 예약 사용이 지원됩니다.
  • Vertex AI 작업에 사용할 수 있는 할당량이 충분한지 확인합니다. 공유 예약의 추가 할당량 요구사항을 참조하세요.
  • 정기적인 Vertex AI 배포 업데이트를 지원하려면 동시 배포마다 VM 수를 최소 1개 이상 늘리는 것이 좋습니다.
  • 조직 정책 제약 조건에서 공유 예약을 허용하는지 확인합니다. 프로젝트의 공유 예약 생성 및 수정 허용 및 제한을 참조하세요.
  • 예약을 사용하려면 예약의 VM 인스턴스 속성이 Vertex AI 워크로드와 정확히 일치해야 합니다. 예를 들어 Vertex AI 워크로드에 a2-megagpu-16g 머신 유형이 있으면 예약 머신 유형이 일치해야 합니다. 요구사항을 참조하세요.
  • Vertex AI 학습에 Compute Engine 예약을 사용할 경우에는 다음 서비스와 기능이 지원되지 않습니다.

  • 커스텀 학습 작업은 커스텀 서비스 계정을 사용해야 합니다. 커스텀 서비스 계정 사용을 참조하세요.

결제

Compute Engine 예약을 사용하면 다음 항목에 대한 요금이 청구됩니다.

시작하기 전에

예약 사용 허용

A2 또는 A3 VM 예약을 사용하기 전에 Vertex AI에서 예약을 사용할 수 있도록 공유 정책을 설정해야 합니다. 이렇게 하려면 다음 방법 중 하나를 사용합니다.

예약을 만드는 동안 사용 허용

A2 또는 A3 VM의 단일 프로젝트 또는 공유 예약을 만드는 동안 Vertex AI에서 다음과 같이 예약을 사용할 수 있도록 지정할 수 있습니다.

  • Google Cloud 콘솔을 사용하는 경우 Google Cloud 서비스 섹션에서 예약 공유를 선택합니다.
  • Google Cloud CLI를 사용하는 경우 ALLOW_ALL로 설정된 --reservation-sharing-policy 플래그를 포함합니다.
  • REST API를 사용하는 경우 ALLOW_ALL로 설정된 serviceShareType 필드를 포함합니다.

기존 예약에서 사용 허용

Vertex AI에서 기존 A2 또는 A3 VM 예약을 사용하도록 허용하려면 예약의 공유 정책 수정을 참조하세요.

예약이 있는 커스텀 학습 작업 만들기

REST API를 사용하여 Compute Engine 예약을 사용하는 커스텀 학습 작업을 만들 수 있습니다.

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • LOCATION: 컨테이너 또는 Python 패키지가 실행될 리전입니다.
  • PROJECT_ID: 프로젝트 ID
  • JOB_NAME: 필수. CustomJob의 표시 이름입니다.
  • 커스텀 학습 작업을 다음과 같이 정의합니다.
    • MACHINE_TYPE: 머신 유형입니다. 학습에 사용 가능한 머신 유형을 참고하세요.
    • RESERVATION_AFFINITY_TYPE: ANY, SPECIFIC_RESERVATION 또는 NONE이어야 합니다.

      • ANYcustomJob VM에서 일치하는 속성이 있는 예약을 자동으로 사용할 수 있음을 의미합니다.
      • SPECIFIC_RESERVATIONcustomJob VM이 VM에서 이름별로 명확하게 타겟팅하는 예약만 사용할 수 있음을 의미합니다.
      • NONEcustomJob VM에서 어떠한 예약도 사용할 수 없음을 의미합니다. NONE을 지정하면 예약 어피니티 사양 생략과 동일한 효과가 있습니다.
    • RESERVATION_NAME: 예약의 이름입니다.
    • DISK_TYPE: 선택사항. 작업에 사용할 부팅 디스크의 유형으로 pd-standard(기본값) 또는 pd-ssd입니다. 디스크 유형에 대해 자세히 알아보세요.
    • DISK_SIZE: 선택사항. 작업에 사용할 부팅 디스크의 크기(GB)입니다. 기본값은 100입니다.
    • REPLICA_COUNT: 사용할 작업자 복제본의 수입니다. 대부분의 경우 첫 작업자 풀에서는 1로 설정합니다.
    • 학습 애플리케이션이 커스텀 컨테이너에서 실행되는 경우 다음을 지정합니다.
      • CUSTOM_CONTAINER_IMAGE_URI: 각 작업자 복제본에서 실행될 Artifact Registry 또는 Docker Hub의 컨테이너 이미지 URI입니다.
      • CUSTOM_CONTAINER_COMMAND: 선택사항. 컨테이너가 시작될 때 호출되는 명령어입니다. 이 명령어는 컨테이너의 기본 진입점을 재정의합니다.
      • CUSTOM_CONTAINER_ARGS: 선택사항. 컨테이너 시작 시 전달될 인수입니다.
    • 학습 애플리케이션이 사전 빌드된 컨테이너에서 실행되는 Python 패키지인 경우 다음을 지정합니다.
      • EXECUTOR_IMAGE_URI: 제공된 코드를 실행하는 컨테이너 이미지의 URI입니다. 학습에 사용 가능한 사전 빌드된 컨테이너를 참고하세요.
      • PYTHON_PACKAGE_URIS: 학습 프로그램 및 종속 패키지인 Python 패키지 파일을 지정하는 쉼표로 구분된 Cloud Storage URI 목록입니다. 패키지 URI의 최대 개수는 100개입니다.
      • PYTHON_MODULE: 패키지를 설치한 후 실행할 Python 모듈 이름입니다.
      • PYTHON_PACKAGE_ARGS: 선택사항. Python 모듈로 전달할 명령줄 인수입니다.
    • TIMEOUT: 선택사항. 작업의 최대 실행 시간입니다.
  • 이 커스텀 작업에 적용할 모든 라벨의 LABEL_NAMELABEL_VALUE를 지정합니다.

HTTP 메서드 및 URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs

JSON 요청 본문:

{
  "displayName": "JOB_NAME",
  "jobSpec": {
    "workerPoolSpecs": [
      {
        "machineSpec": {
          "machineType": "MACHINE_TYPE",
          "reservationAffinity": {
            "reservationAffinityType": "RESERVATION_AFFINITY_TYPE",
            "key": "compute.googleapis.com/reservation-name",
            "values": [
              "projects/PROJECT_ID/reservations/RESERVATION_NAME"
            ]
          }
        },
        "replicaCount": REPLICA_COUNT,
        "diskSpec": {
          "bootDiskType": DISK_TYPE,
          "bootDiskSizeGb": DISK_SIZE
        },

        // Union field task can be only one of the following:
        "containerSpec": {
          "imageUri": CUSTOM_CONTAINER_IMAGE_URI,
          "command": [
            CUSTOM_CONTAINER_COMMAND
          ],
          "args": [
            CUSTOM_CONTAINER_ARGS
          ]
        },
        "pythonPackageSpec": {
          "executorImageUri": EXECUTOR_IMAGE_URI,
          "packageUris": [
            PYTHON_PACKAGE_URIS
          ],
          "pythonModule": PYTHON_MODULE,
          "args": [
            PYTHON_PACKAGE_ARGS
          ]
        }
        // End of list of possible types for union field task.
      }
      // Specify one workerPoolSpec for single replica training, or multiple workerPoolSpecs
      // for distributed training.
    ],
    "scheduling": {
      "timeout": TIMEOUT
    }
  },
  "labels": {
    LABEL_NAME_1": LABEL_VALUE_1,
    LABEL_NAME_2": LABEL_VALUE_2
  }
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

응답에는 사양 및 TRAININGPIPELINE_ID에 대한 정보가 포함됩니다.

다음 단계