Configurare l'interfaccia Private Service Connect per una pipeline

Puoi configurare la connettività privata per l'esecuzione della pipeline utilizzando l'interfaccia Private Service Connect (PSC-I). Ti consigliamo di utilizzare Private Service Connect di Vertex AI per la connettività privata, poiché riduce le probabilità di esaurimento degli IP e supporta il peering transitivo.

Vertex AI Pipelines utilizza l'infrastruttura PSC-I sottostante per l'addestramento per trasmettere i dettagli di connessione al job di addestramento personalizzato. Per scoprire di più sulle limitazioni e sui prezzi dell'utilizzo di PSC-I con l'addestramento personalizzato, consulta Utilizzare l'interfaccia Private Service Connect per l'addestramento di Vertex AI.

Limitazioni

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

Prezzi

I prezzi delle interfacce Private Service Connect sono descritti nella pagina Tutti i prezzi di networking.

Prima di iniziare

Per utilizzare PSC-I con Vertex AI Pipelines, devi prima configurare un'interfaccia Private Service Connect per le risorse Vertex AI.

Creare un'esecuzione della pipeline con PSC-I

Per creare un job della pipeline, devi prima creare una specifica della pipeline. Una specifica della pipeline è un oggetto in memoria che crei convertendo una definizione della pipeline compilata.

Crea una specifica della pipeline

Segui queste istruzioni per creare una specifica della pipeline in memoria che puoi utilizzare per creare l'esecuzione della pipeline:

  1. Definisci una pipeline e compilala in un file YAML. Per ulteriori informazioni sulla definizione e sulla compilazione di una pipeline, consulta Creare una pipeline.

  2. Utilizza il seguente esempio di codice per convertire il file YAML della pipeline compilata in una specifica della pipeline in memoria.

    import yaml
    with open("COMPILED_PIPELINE_PATH", "r") as stream:
      try:
        pipeline_spec = yaml.safe_load(stream)
        print(pipeline_spec)
      except yaml.YAMLError as exc:
        print(exc)
    

    Sostituisci COMPILED_PIPELINE_PATH con il percorso locale del file YAML della pipeline compilata.

Crea l'esecuzione della pipeline

Utilizza i seguenti esempi per creare un'esecuzione della pipeline utilizzando PSC-I:

Python

Per creare un'esecuzione della pipeline con PSC-I utilizzando l'SDK Vertex AI per Python, configura l'esecuzione utilizzando la definizioneaiplatform_v1beta1/services/pipeline_service.

# Import aiplatform and the appropriate API version v1beta1
from google.cloud import aiplatform, aiplatform_v1beta1

# Initialize the Vertex SDK using PROJECT_ID and LOCATION
aiplatform.init(project="PROJECT_ID", location="LOCATION")

# Create the API endpoint
client_options = {
"api_endpoint": f"LOCATION-aiplatform.googleapis.com"
}

# Initialize the PipelineServiceClient
client = aiplatform_v1beta1.PipelineServiceClient(client_options=client_options)

# Construct the request
request = aiplatform_v1beta1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1beta1.PipelineJob(
    display_name="DISPLAY_NAME",
    pipeline_spec=PIPELINE_SPEC,
    runtime_config=aiplatform_v1beta1.PipelineJob.RuntimeConfig(
        gcs_output_directory="OUTPUT_DIRECTORY",
    ),
    psc_interface_config=aiplatform_v1beta1.PscInterfaceConfig(
        network_attachment="NETWORK_ATTACHMENT_NAME"
    ),
)

# Make the API call
response = client.create_pipeline_job(request=request)

# Print the response
print(response)

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto in cui vuoi creare l'esecuzione della pipeline.
  • LOCATION: la regione in cui vuoi creare l'esecuzione della pipeline.
  • DISPLAY_NAME: il nome del job della pipeline. La lunghezza massima per un nome visualizzato è di 128 caratteri UTF-8.
  • PIPELINE_SPEC: la specifica della pipeline creata in Creare una specifica della pipeline.
  • OUTPUT_DIRECTORY: l'URI del bucket Cloud Storage per memorizzare gli elementi di output. Questo percorso è la directory di output principale della pipeline e viene utilizzato per generare i percorsi degli artefatti di output.
  • NETWORK_ATTACHMENT_NAME: il nome dell'attacco della rete Compute Engine da collegare alla risorsa PipelineJob. Per ottenere l'allegazione della rete, devi aver completato i passaggi descritti nella sezione Prima di iniziare. Per ulteriori informazioni sull'aggancio alla rete, consulta Configurare una rete VPC, una subnet e un aggancio alla rete.

REST

Per creare un'esecuzione della pipeline, invia una richiesta POST utilizzando il metodo pipelineJobs.create.

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

  • PROJECT_ID: l'ID progetto in cui vuoi creare l'esecuzione della pipeline.
  • LOCATION: la regione in cui vuoi creare l'esecuzione della pipeline.
  • DISPLAY_NAME: il nome del job della pipeline. La lunghezza massima per un nome visualizzato è di 128 caratteri UTF-8.
  • PIPELINE_SPEC: la specifica della pipeline creata in Creare una specifica della pipeline.
  • OUTPUT_DIRECTORY: l'URI del bucket Cloud Storage per memorizzare gli elementi di output. Questo percorso è la directory di output principale della pipeline e viene utilizzato per generare i percorsi degli artefatti di output.
  • NETWORK_ATTACHMENT_NAME: il nome dell'attacco della rete Compute Engine da collegare alla risorsa PipelineJob. Per ottenere l'allegazione della rete, devi aver completato i passaggi descritti nella sezione Prima di iniziare. Per ulteriori informazioni sull'aggancio alla rete, consulta Configurare una rete VPC, una subnet e un aggancio alla rete.

Metodo HTTP e URL:

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

Corpo JSON della richiesta:

{
  "display_name": "DISPLAY_NAME",
  "pipeline_spec": "PIPELINE_SPEC",
  "runtime_config": {
       "gcs_output_directory": "OUTPUT_DIRECTORY",
   },
   "psc_interface_config": {
       "network_attachment": "NETWORK_ATTACHMENT_NAME"
   }
}

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/pipelineJobs"

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/pipelineJobs" | Select-Object -Expand Content

Dovresti vedere un output simile al seguente. PIPELINE_JOB_ID rappresenta l'ID dell'esecuzione della pipeline e SERVICE_ACCOUNT_NAME rappresenta l'account di servizio utilizzato per eseguire la pipeline.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/pipelineJobs/PIPELINE_JOB_ID",
  "displayName": "DISPLAY_NAME",
  "createTime": "20xx-01-01T00:00:00.000000Z",
  "updateTime": "20xx-01-01T00:00:00.000000Z",
  "pipelineSpec": PIPELINE_SPEC,
  "state": "PIPELINE_STATE_PENDING",
  "labels": {
    "vertex-ai-pipelines-run-billing-id": "VERTEX_AI_PIPELINES_RUN_BILLING_ID"
  },
  "runtimeConfig": {
    "gcsOutputDirectory": "OUTPUT_DIRECTORY"
  },
  "serviceAccount": "SERVICE_ACCOUNT_NAME"
  "pscInterfaceConfig": {
    "networkAttachment": "NETWORK_ATTACHMENT_NAME"
  }
}