Puoi configurare la connettività privata per l'esecuzione della pipeline utilizzando un'interfaccia Private Service Connect. Google consiglia di utilizzare Vertex AI Private Service Connect per la connettività privata, in quanto riduce le possibilità di esaurimento degli IP e supporta il peering transitivo.
Vertex AI Pipelines utilizza l'infrastruttura di interfaccia Private Service Connect sottostante per l'addestramento per trasmettere i dettagli di connessione al job di addestramento personalizzato. Per saperne di più sulle limitazioni e sui prezzi dell'utilizzo delle interfacce Private Service Connect con l'addestramento personalizzato, consulta Utilizzare l'interfaccia Private Service Connect per Vertex AI Training.
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 un'interfaccia Private Service Connect con Vertex AI Pipelines, devi prima configurare un'interfaccia Private Service Connect per le risorse Vertex AI.
Crea un'esecuzione della pipeline con le interfacce Private Service Connect
Per creare un'esecuzione della pipeline, devi prima creare una specifica della pipeline. Una specifica della pipeline è un oggetto in memoria che crei convertendo una definizione di 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:
Definisci una pipeline e compilala in un file YAML. Per ulteriori informazioni sulla definizione e la compilazione di una pipeline, consulta Creare una pipeline.
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 gli esempi riportati di seguito per creare un'esecuzione della pipeline utilizzando interfacce Private Service Connect:
Python
Per creare un'esecuzione della pipeline con
interfacce Private Service Connect utilizzando
l'SDK Vertex AI per Python, configura l'esecuzione utilizzando la
definizione aiplatform_v1/services/pipeline_service
.
# Import aiplatform and the appropriate API version v1
from google.cloud import aiplatform, aiplatform_v1
# 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_v1.PipelineServiceClient(client_options=client_options)
PSCI_INTERFACE_CONFIG = {
"network_attachment": "NETWORK_ATTACHMENT_NAME",
"dns_peering_configs": [
{
"domain": "DNS_DOMAIN",
"target_project": "TARGET_PROJECT",
"target_network": "TARGET_NETWORK"
}
]
}
# Construct the request
request = aiplatform_v1.CreatePipelineJobRequest(
parent=f"projects/PROJECT_ID/locations/LOCATION",
pipeline_job=aiplatform_v1.PipelineJob(
display_name="DISPLAY_NAME",
pipeline_spec=PIPELINE_SPEC,
runtime_config=aiplatform_v1.PipelineJob.RuntimeConfig(
gcs_output_directory="OUTPUT_DIRECTORY",
),
psc_interface_config=aiplatform_v1.PscInterfaceConfig(
PSCI_INTERFACE_CONFIG
),
)
# Make the API call
response = client.create_pipeline_job(request=request)
# Print the response
print(response)
Sostituisci quanto segue:
- PROJECT_ID: l'ID progetto del 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 di un nome visualizzato è di 128 caratteri UTF-8.
- PIPELINE_SPEC: la specifica della pipeline che hai creato in Crea una specifica della pipeline.
- OUTPUT_DIRECTORY: l'URI del bucket Cloud Storage per l'archiviazione degli artefatti di output. Questo percorso è la directory di output principale per la pipeline e viene utilizzato per generare i percorsi degli artefatti di output.
- NETWORK_ATTACHMENT_NAME: il nome dell'allegato di rete Compute Engine
da collegare alla risorsa
PipelineJob
. Per ottenere l'allegato di rete, devi aver completato i passaggi descritti nella sezione Prima di iniziare. Per saperne di più sull'allegato di rete, consulta Configurare una rete VPC, una subnet e un allegato di rete. - DNS_DOMAIN: il nome DNS della zona DNS cloud privato che hai creato quando hai configurato il peering DNS privato.
- TARGET_PROJECT: Il progetto che ospita la rete VPC.
- TARGET_NETWORK: il nome della rete VPC.
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 del 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 di un nome visualizzato è di 128 caratteri UTF-8.
- PIPELINE_SPEC: la specifica della pipeline che hai creato in Crea una specifica della pipeline.
- OUTPUT_DIRECTORY: l'URI del bucket Cloud Storage per l'archiviazione degli artefatti di output. Questo percorso è la directory di output principale per la pipeline e viene utilizzato per generare i percorsi degli artefatti di output.
- NETWORK_ATTACHMENT_NAME: il nome dell'allegato di rete Compute Engine
da collegare alla risorsa
PipelineJob
. Per ottenere l'allegato di rete, devi aver completato i passaggi descritti nella sezione Prima di iniziare. Per saperne di più sull'allegato di rete, consulta Configurare una rete VPC, una subnet e un allegato di rete. - DNS_DOMAIN: il nome DNS della zona DNS cloud privato che hai creato quando hai configurato il 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/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", "dns_peering_configs": [ { "domain": "DNS_DOMAIN", "target_project": "TARGET_PROJECT", "target_network": "TARGET_NETWORK" } ] } }
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/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/v1/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", "dnsPeeringConfigs": [ { "domain": "DNS_DOMAIN", "targetProject": "TARGET_PROJECT", "targetNetwork": "TARGET_NETWORK" } ] } }