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

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

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

개요

Private Service Connect 인터페이스는 Vertex AI Training 커스텀 작업과 영구 리소스에서 지원됩니다. 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 인터페이스의 기능 및 제한사항은 Private Service Connect 인터페이스를 통한 Vertex AI 서비스 액세스 정보를 참조하세요.

가격 책정

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

시작하기 전에

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

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

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

Python

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

Python

from google.cloud import aiplatform


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: str,
    domain: str,
    target_project: str,
    target_network: str,
):
    """Custom training job sample with PSC Interface Config."""
    aiplatform.init(project=project, location=location, staging_bucket=bucket)

    worker_pool_specs = [{
        "machine_spec": {
            "machine_type": machine_type,
        },
        "replica_count": replica_count,
        "container_spec": {
            "image_uri": image_uri,
            "command": [],
            "args": [],
        },
    }]
    psc_interface_config = {
        "network_attachment": network_attachment,
        "dns_peering_configs": [
            {
                "domain": domain,
                "target_project": target_project,
                "target_network": target_network,
            },
        ],
    }
    job = aiplatform.CustomJob(
        display_name=display_name,
        worker_pool_specs=worker_pool_specs,
    )

    job.run(psc_interface_config=psc_interface_config)

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

REST

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

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

  • LOCATION: 컨테이너 또는 Python 패키지가 실행될 리전입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • JOB_NAME: CustomJob의 표시 이름입니다.
  • REPLICA_COUNT: 사용할 작업자 복제본의 수입니다. 대부분의 경우 첫 작업자 풀에서는 1로 설정합니다.
  • 학습 애플리케이션이 커스텀 컨테이너에서 실행되는 경우 다음을 지정합니다.
    • IMAGE_URI: 학습 코드가 포함된 Docker 컨테이너 이미지의 URI입니다. 커스텀 컨테이너 이미지를 만드는 방법을 알아보세요.
    • NETWORK_ATTACHMENT: Private Service Connect 인터페이스를 설정할 때 만든 네트워크 연결의 이름이나 전체 경로입니다.
    • 비공개 DNS 피어링이 필요한 경우 dns_peering_configs 필드가 필요합니다. 이 목록의 각 항목에는 다음이 포함됩니다.
      • DOMAIN_SUFFIX: 비공개 DNS 피어링을 설정할 때 만든 비공개 Cloud DNS 영역의 DNS 이름
      • TARGET_PROJECT: VPC 네트워크를 호스팅하는 프로젝트
      • TARGET_NETWORK: VPC 네트워크 이름

HTTP 메서드 및 URL:

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

JSON 요청 본문:

"display_name": JOB_NAME,
"job_spec": {
    "worker_pool_specs": [
      {
        "machine_spec": {
          "machine_type": "n2-standard-4",
        },
        "replica_count": REPLICA_COUNT,
        "container_spec": {
          "image_uri": IMAGE_URI,
        },
      },
    ],
    "psc_interface_config": {
      "network_attachment": NETWORK_ATTACHMENT,
      "dns_peering_configs": [
         {
          "domain": DOMAIN_SUFFIX,
          "target_project": TARGET_PROJECT,
          "target_network": TARGET_NETWORK
         }
      ],
    },
    "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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

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