Utilizzare l'interfaccia Private Service Connect per l'addestramento Vertex AI

L'interfaccia Private Service Connect è consigliata per la connettività privata in quanto riduce le probabilità di esaurimento degli IP e consente il peering transitivo.

L'interfaccia Private Service Connect è supportata per i job personalizzati e le risorse permanenti di Vertex AI.

Panoramica

L'interfaccia Private Service Connect è supportata nei job di addestramento personalizzato e nelle risorse permanenti di Vertex AI. Per utilizzare l'interfaccia Private Service Connect, devi configurare una rete VPC, una sottorete e un collegamento di rete nel progetto utente. Consulta Configurare un'interfaccia Private Service Connect. Il nome del collegamento di rete deve essere incluso nella richiesta per creare un job personalizzato o una risorsa permanente per abilitare l'interfaccia Private Service Connect.

Connettività in uscita di Private Service Connect di Vertex AI ad altre reti

Vertex AI ha integrato le connettività di rete in uscita supportate da Private Service Connect (consulta Connessione ai carichi di lavoro in altre reti), con le seguenti eccezioni:

  • L'egress verso l'accesso privato Google di un cliente non è supportato. Al contrario, il traffico in uscita di Private Service Connect verrà risolto localmente per l'accesso privato Google.

  • L'uscita su Cloud NAT è supportata solo quando è attivato Service Control VPC.

Limitazioni

  • Le interfacce Private Service Connect non supportano gli indirizzi IP esterni.

Prezzi

I prezzi delle interfacce Private Service Connect sono descritti nella sezione "Utilizzo di un'interfaccia Private Service Connect per accedere a una rete VPC producer o consumer" della pagina Tutti i prezzi di networking.

Prima di iniziare

Configura le risorse per l'interfaccia Private Service Connect nel progetto utente.

Creare un job di addestramento personalizzato con un'interfaccia Private Service Connect

Puoi creare un job di addestramento personalizzato con l'interfaccia Private Service Connect utilizzando l'SDK Vertex AI per Python o l'API REST.

Python

Per creare un job di addestramento personalizzato con PSC-I utilizzando l'SDK Vertex AI per Python, configura il job utilizzando la definizione 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: il tuo ID progetto. Puoi trovare questi ID nella pagina di benvenuto della console Google Cloud.
  • location: consulta l'elenco delle località disponibili.
  • bucket: sostituisci bucket con il nome di un bucket a cui hai accesso.
  • display_name: il nome visualizzato della risorsa permanente.
  • machine_type: specifica le risorse di calcolo.
  • replica_count: il numero di repliche dei worker da utilizzare per ogni prova.
  • service_attachment: il nome della risorsa di collegamento a servizio. Viene compilato se Private Service Connect è abilitato.
  • image_uri: l'URI di un'immagine container Docker con il codice di addestramento. Scopri come creare un'immagine contenitore personalizzata.
  • network_attachment_name: il nome specificato durante la configurazione delle risorse per Private Service Connect nel progetto utente.

REST

Per creare un job di addestramento personalizzato, invia una richiesta POST utilizzando il metodo customJobs.create.

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION: la regione in cui verrà eseguito il container o il pacchetto Python.
  • PROJECT_ID: il tuo ID progetto.
  • JOB_NAME: un nome visualizzato per CustomJob.
  • REPLICA_COUNT: il numero di repliche dei worker da usare. Nella maggior parte dei casi, imposta questo valore su 1 per il primo pool di worker.
  • Se l'applicazione di addestramento viene eseguita in un contenitore personalizzato, specifica quanto segue:

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

"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
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

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

Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

$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

Dovresti ricevere una risposta JSON simile alla seguente: