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

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

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

Panoramica

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

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

Vertex AI ha integrato le connettività di rete in uscita supportate da Private Service Connect (vedi Connessione ai carichi di lavoro in altre reti) con i seguenti comportamenti architetturali.

Raggiungere le API di Google e i servizi solo interni

Quando Vertex AI invia traffico alle API di Google, questo viene risolto localmente all'interno dell'ambiente del producer e non utilizza le impostazioni di accesso privato Google o il routing della tua rete VPC consumer.

Nota:

  • Requisito di identità VPC: poiché la risoluzione locale bypassa il percorso della rete VPC consumer, il traffico non trasporta l'identità della rete VPC. In questo modo, le richieste ai servizi Google solo interni, come i servizi Cloud Run configurati con l'ingresso interno, non andranno a buon fine e verrà visualizzato un errore 404 o 403.
  • Soluzione endpoint Private Service Connect: per raggiungere questi servizi interni in modo privato, devi configurare un endpoint Private Service Connect per le API di Google nella tua rete VPC.
  • Configurazione DNS: devi assicurarti che il dominio del servizio (ad es. *.run.app) viene risolto nell'indirizzo IP interno dell'endpoint Private Service Connect per garantire che il traffico rimanga su un percorso puramente privato.

Traffico in uscita da internet e Cloud NAT

Per impostazione predefinita, Vertex AI utilizza i gateway internet gestiti da Google per il traffico in uscita anziché le route della rete VPC. L'uscita utilizzando un gateway Cloud NAT del consumer viene utilizzata solo quando il progetto fa parte di un perimetro dei Controlli di servizio VPC.

Questo perimetro blocca l'accesso a internet predefinito, forzando il traffico attraverso l'interfaccia Private Service Connect e le regole di routing della tua rete VPC. Se non utilizzi Controlli di servizio VPC, il traffico internet in uscita bypasserà completamente la tua rete VPC e il gateway Cloud NAT.

Limitazioni

Per le funzionalità e le limitazioni delle interfacce Private Service Connect, consulta Informazioni sull'accesso ai servizi Vertex AI tramite le interfacce Private Service Connect.

Prezzi

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

Prima di iniziare

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

Crea un job di addestramento serverless Vertex AI con un'interfaccia Private Service Connect

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

Python

Per creare un job di addestramento serverless con PSC-I utilizzando l'SDK Vertex AI per Python, configura il job utilizzando la definizione 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: . Puoi trovare questi ID nella pagina 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 del servizio. Compilato se Private Service Connect è abilitato.
  • image_uri: l'URI di un'immagine container Docker con il tuo codice di addestramento. Scopri come creare un'immagine container personalizzata.
  • network_attachment: il nome o il percorso completo del collegamento di rete che hai creato durante la configurazione delle risorse per Private Service Connect.
  • domain: il nome DNS della zona Cloud DNS privata che hai creato durante la configurazione del peering DNS privato.
  • target_project: il progetto che ospita la rete VPC.
  • target_network: il nome della rete VPC.

REST

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

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

  • 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 utilizzare. 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 container personalizzato, specifica quanto segue:
    • IMAGE_URI: l'URI di un'immagine container Docker con il tuo codice di addestramento. Scopri come creare un'immagine container personalizzata.
    • NETWORK_ATTACHMENT: il nome o il percorso completo del collegamento di rete che hai creato quando hai configurato l'interfaccia Private Service Connect.
    • Se hai bisogno del peering DNS privato, il campo dns_peering_configs è obbligatorio. Per questo elenco, ogni elemento contiene:
      • DOMAIN_SUFFIX: il nome DNS della zona Cloud DNS privata che hai creato durante la configurazione del peering DNS privato.
      • TARGET_PROJECT: il progetto che ospita la rete VPC.
      • TARGET_NETWORK: il nome della rete VPC.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

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

Per inviare la richiesta, scegli una di queste 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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/customJobs" | Select-Object -Expand Content

Dovresti ricevere una risposta JSON simile alla seguente: