Configurer l'interface Private Service Connect pour un pipeline

Vous pouvez configurer une connectivité privée pour l'exécution de votre pipeline à l'aide d'une interface Private Service Connect. Google recommande d'utiliser Private Service Connect Vertex AI pour la connectivité privée, car il réduit les risques d'épuisement des adresses IP et prend en charge l'appairage transitif.

Vertex AI Pipelines utilise l'infrastructure d'interface Private Service Connect sous-jacente pour l'entraînement afin de transmettre les informations de connexion au job d'entraînement personnalisé. Pour en savoir plus sur les limites et les tarifs de l'utilisation des interfaces Private Service Connect avec l'entraînement personnalisé, consultez la page Utiliser l'interface Private Service Connect pour l'entraînement Vertex AI.

Limites

Les interfaces Private Service Connect ne sont pas compatibles avec les adresses IP externes.

Tarifs

La tarification des interfaces Private Service Connect est décrite sur la page Tous les tarifs de mise en réseau.

Avant de commencer

Pour utiliser une interface Private Service Connect avec Vertex AI Pipelines, vous devez d'abord configurer une interface Private Service Connect pour les ressources Vertex AI.

Créer une exécution de pipeline avec des interfaces Private Service Connect

Pour créer une tâche de pipeline, vous devez d'abord créer une spécification de pipeline. Une spécification de pipeline est un objet en mémoire que vous créez en convertissant une définition de pipeline compilée.

Créer une spécification de pipeline

Suivez ces instructions pour créer une spécification de pipeline en mémoire que vous pouvez utiliser pour créer l'exécution du pipeline:

  1. Définissez un pipeline et compilez-le dans un fichier YAML. Pour en savoir plus sur la définition et la compilation d'un pipeline, consultez la section Créer un pipeline.

  2. Utilisez l'exemple de code suivant pour convertir le fichier YAML du pipeline compilé en spécification de pipeline en mémoire.

    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)
    

    Remplacez COMPILED_PIPELINE_PATH par le chemin d'accès local à votre fichier YAML de pipeline compilé.

Créer l'exécution du pipeline

Utilisez les exemples suivants pour créer une exécution de pipeline à l'aide d'interfaces Private Service Connect:

Python

Pour créer une exécution de pipeline avec des interfaces Private Service Connect à l'aide du SDK Vertex AI pour Python, configurez l'exécution à l'aide de la définition aiplatform_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)

Remplacez les éléments suivants :

  • PROJECT_ID: ID du projet dans lequel vous souhaitez créer l'exécution du pipeline.
  • LOCATION: région dans laquelle vous souhaitez créer l'exécution du pipeline.
  • DISPLAY_NAME: nom du job de pipeline. La longueur maximale d'un nom à afficher est de 128 caractères UTF-8.
  • PIPELINE_SPEC: la spécification de pipeline que vous avez créée dans Créer une spécification de pipeline.
  • OUTPUT_DIRECTORY: URI du bucket Cloud Storage pour le stockage des artefacts de sortie. Ce chemin d'accès est le répertoire de sortie racine du pipeline et permet de générer les chemins d'accès des artefacts de sortie.
  • NETWORK_ATTACHMENT_NAME: nom de l'association de réseau Compute Engine à associer à la ressource PipelineJob. Pour obtenir la pièce jointe réseau, vous devez avoir suivi les étapes de la section Avant de commencer. Pour en savoir plus sur le rattachement de réseau, consultez la section Configurer un réseau VPC, un sous-réseau et un rattachement de réseau.

REST

Pour créer une exécution de pipeline, envoyez une requête POST à l'aide de la méthode pipelineJobs.create.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID: ID du projet dans lequel vous souhaitez créer l'exécution du pipeline.
  • LOCATION: région dans laquelle vous souhaitez créer l'exécution du pipeline.
  • DISPLAY_NAME: nom du job de pipeline. La longueur maximale d'un nom à afficher est de 128 caractères UTF-8.
  • PIPELINE_SPEC: la spécification de pipeline que vous avez créée dans Créer une spécification de pipeline.
  • OUTPUT_DIRECTORY: URI du bucket Cloud Storage pour le stockage des artefacts de sortie. Ce chemin d'accès est le répertoire de sortie racine du pipeline et permet de générer les chemins d'accès des artefacts de sortie.
  • NETWORK_ATTACHMENT_NAME: nom de l'association de réseau Compute Engine à associer à la ressource PipelineJob. Pour obtenir la pièce jointe réseau, vous devez avoir suivi les étapes de la section Avant de commencer. Pour en savoir plus sur le rattachement de réseau, consultez la section Configurer un réseau VPC, un sous-réseau et un rattachement de réseau.

Méthode HTTP et URL :

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

Corps JSON de la requête :

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

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Des résultats semblables aux lignes suivantes devraient s'afficher : PIPELINE_JOB_ID représente l'ID de l'exécution du pipeline et SERVICE_ACCOUNT_NAME représente le compte de service utilisé pour exécuter le 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"
  }
}