Vertex AI 학습에 Private Service Connect 인터페이스 사용

Private Service Connect 인터페이스는 IP 소진 가능성을 줄이고 전이 피어링을 허용하므로 비공개 연결에 권장됩니다.

Private Service Connect 인터페이스는 Vertex AI 맞춤 작업 및 영구 리소스에서 지원됩니다.

개요

Private Service Connect 인터페이스는 Vertex AI 학습 커스텀 작업 및 영구 리소스에서 지원됩니다. Private Service Connect 인터페이스를 사용하려면 사용자 프로젝트에서 VPC 네트워크, 하위 네트워크, 네트워크 연결을 설정해야 합니다. Private Service Connect 인터페이스 설정을 참고하세요. Private Service Connect 인터페이스를 사용 설정하기 위한 맞춤 작업 또는 영구 리소스 만들기 요청에 네트워크 연결 이름이 포함되어야 합니다.

Vertex AI Private Service Connect의 다른 네트워크로의 이그레스 연결

Vertex AI는 Private Service Connect에서 지원하는 이그레스 네트워크 연결 (다른 네트워크의 워크로드에 연결 참고)을 통합했지만 다음과 같은 예외가 있습니다.

  • 고객의 비공개 Google 액세스로의 이그레스는 지원되지 않습니다. 대신 Private Service Connect 이그레스가 비공개 Google 액세스를 위해 로컬에서 확인됩니다.

  • Cloud NAT로의 이그레스는 VPC 서비스 제어가 사용 설정된 경우에만 지원됩니다.

제한사항

  • Private Service Connect 인터페이스에서는 외부 IP 주소를 지원하지 않습니다.

가격 책정

Private Service Connect 인터페이스의 가격은 모든 네트워킹 가격 책정 페이지의 '프로듀서 또는 소비자 VPC 네트워크에 액세스하기 위해 Private Service Connect 인터페이스 사용' 섹션에 설명되어 있습니다.

시작하기 전에

사용자 프로젝트에서 Private Service Connect 인터페이스의 리소스를 설정합니다.

Private Service Connect 인터페이스로 맞춤 학습 작업 만들기

Python용 Vertex AI SDK 또는 REST API를 사용하여 Private Service Connect 인터페이스로 커스텀 학습 작업을 만들 수 있습니다.

Python

Python용 Vertex AI SDK를 사용하여 PSC-I로 커스텀 학습 작업을 만들려면 aiplatform_v1beta1/services/job_service 정의를 사용하여 작업을 구성합니다.

Python

from google.cloud import aiplatform
from google.cloud import aiplatform_v1beta1


def create_custom_job_psci_sample(
    project: str,
    location: str,
    bucket: str,
    display_name: str,
    machine_type: str,
    replica_count: int,
    image_uri: str,
    network_attachment_name: str,
):
    """Custom training job sample with PSC-I through aiplatform_v1beta1."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    client_options = {"api_endpoint": f"{location}-aiplatform.googleapis.com"}

    client = aiplatform_v1beta1.JobServiceClient(client_options=client_options)

    request = aiplatform_v1beta1.CreateCustomJobRequest(
        parent=f"projects/{project}/locations/{location}",
        custom_job=aiplatform_v1beta1.CustomJob(
            display_name=display_name,
            job_spec=aiplatform_v1beta1.CustomJobSpec(
                worker_pool_specs=[
                    aiplatform_v1beta1.WorkerPoolSpec(
                        machine_spec=aiplatform_v1beta1.MachineSpec(
                            machine_type=machine_type,
                        ),
                        replica_count=replica_count,
                        container_spec=aiplatform_v1beta1.ContainerSpec(
                            image_uri=image_uri,
                        ),
                    )
                ],
                psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
                    network_attachment=network_attachment_name,
                ),
            ),
        ),
    )

    response = client.create_custom_job(request=request)

    return response

  • project: 프로젝트 ID 이러한 ID는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
  • location: 사용 가능한 위치 목록을 참고하세요.
  • bucket: bucket을 액세스할 수 있는 버킷의 이름으로 바꿉니다.
  • display_name: 영구 리소스의 표시 이름입니다.
  • machine_type: 컴퓨팅 리소스를 지정합니다.
  • replica_count: 각 시도에서 사용할 작업자 복제본 수입니다.
  • service_attachment: 서비스 연결 리소스의 이름입니다. Private Service Connect가 사용 설정된 경우 채워집니다.
  • image_uri: 학습 코드가 포함된 Docker 컨테이너 이미지의 URI입니다. 커스텀 컨테이너 이미지를 만드는 방법을 알아보세요.
  • network_attachment_name: 사용자 프로젝트에서 Private Service Connect의 리소스를 설정할 때 지정한 이름입니다.

REST

맞춤 학습 작업을 만들려면 customJobs.create 메서드를 사용하여 POST 요청을 전송합니다.

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

  • LOCATION: 컨테이너 또는 Python 패키지가 실행될 리전입니다.
  • PROJECT_ID: 프로젝트 ID
  • JOB_NAME: CustomJob의 표시 이름입니다.
  • REPLICA_COUNT: 사용할 작업자 복제본의 수입니다. 대부분의 경우 첫 작업자 풀에서는 1로 설정합니다.
  • 학습 애플리케이션이 커스텀 컨테이너에서 실행되는 경우 다음을 지정합니다.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n1-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT_NAME
    },
    "enable_web_access": 1
}

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

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

다음과 비슷한 JSON 응답이 표시됩니다.