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

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

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

개요

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

Gemini Enterprise Agent Platform Private Service Connect 이그레스 연결(다른 네트워크에 대한)

Gemini Enterprise Agent Platform은 Private Service Connect에서 지원하는 이그레스 네트워크 연결을 통합했습니다 (다른 네트워크의 워크로드에 연결 참조). 단, 다음은 아키텍처 동작입니다.

Google API 및 내부 전용 서비스에 연결

Gemini Enterprise Agent Platform이 Google API로 트래픽을 전송하면 프로듀서 환경 내에서 로컬로 확인되며 소비자 VPC 네트워크의 비공개 Google 액세스 설정 또는 라우팅을 사용하지 않습니다.

참고:

  • VPC ID 요구사항: 로컬 확인은 소비자 VPC 네트워크 경로를 우회하므로 트래픽은 VPC 네트워크의 ID를 전달하지 않습니다. 이로 인해 내부 인그레스로 구성된 Cloud Run 서비스와 같은 내부 전용 Google 서비스에 대한 요청이 404 또는 403 오류로 실패합니다.
  • Private Service Connect 엔드포인트 솔루션: 이러한 내부 서비스에 비공개로 연결하려면 VPC 네트워크에서 Google API용 Private Service Connect 엔드포인트를 구성해야 합니다.
  • DNS 구성: 트래픽이 순전히 비공개 경로에 유지되도록 서비스 도메인 (예: *.run.app)이 Private Service Connect 엔드포인트의 내부 IP 주소로 확인되는지 확인해야 합니다.

인터넷 이그레스 및 Cloud NAT

기본적으로 Gemini Enterprise Agent Platform은 VPC 네트워크의 경로가 아닌 Google에서 관리하는 인터넷 게이트웨이를 아웃바운드 트래픽에 사용합니다. 소비자의 Cloud NAT 게이트웨이를 사용하는 이그레스는 프로젝트가 VPC 서비스 제어 경계의 일부인 경우에만 사용됩니다.

이 경계는 기본 인터넷 액세스를 차단하여 Private Service Connect 인터페이스와 VPC 네트워크의 라우팅 규칙을 통해 트래픽을 강제합니다. VPC 서비스 제어를 사용하지 않는 경우 아웃바운드 인터넷 트래픽은 VPC 네트워크와 Cloud NAT 게이트웨이를 완전히 우회합니다.

제한사항

Private Service Connect 인터페이스의 기능 및 제한사항은 Private Service Connect 인터페이스를 통한 Gemini Enterprise Agent Platform 서비스 액세스 정보를 참조하세요.

가격 책정

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

시작하기 전에

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

Private Service Connect 인터페이스로 서버리스 학습 작업 만들기

Agent Platform SDK for Python 또는 REST API를 사용하여 Private Service Connect 인터페이스로 서버리스 학습 작업을 만들 수 있습니다.

Python

Agent Platform 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: . 이러한 ID는 Cloud de Confiance 콘솔 시작 페이지에서 확인할 수 있습니다.
  • 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 응답이 표시됩니다.