Configurer une interface Private Service Connect pour un pipeline

Vous pouvez configurer une connectivité privée pour votre exécution de pipeline à l'aide d'une interface Private Service Connect. Google recommande d'utiliser Gemini Enterprise Agent Platform Private Service Connect pour la connectivité privée, car cela réduit le risque d'épuisement des adresses IP et permet l'appairage transitif.

Gemini Enterprise Agent Platform Pipelines utilise l'infrastructure d'interface Private Service Connect sous-jacente pour l'entraînement afin de transmettre les détails de la connexion au job d'entraînement personnalisé. Pour en savoir plus sur les limites et la tarification de l'utilisation des interfaces Private Service Connect avec l'entraînement personnalisé, consultez Utiliser l'interface Private Service Connect pour l'entraînement Gemini Enterprise Agent Platform.

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 Agent Platform Pipelines, vous devez d'abord configurer une interface Private Service Connect pour les ressources Gemini Enterprise Agent Platform.

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

Pour créer une exécution de pipeline, vous devez d'abord créer une spécification de pipeline. Il s'agit d'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 pourrez utiliser pour créer l'exécution de 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 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 de 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 Agent Platform pour Python, configurez l'exécution à l'aide de la définition 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)

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet dans lequel vous souhaitez créer l'exécution de pipeline.
  • LOCATION : région dans laquelle vous souhaitez créer l'exécution de pipeline.
  • DISPLAY_NAME : nom du job de pipeline. La longueur maximale d'un nom à afficher est de 128 caractères UTF-8.
  • PIPELINE_SPEC : 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 stocker les 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 la pièce jointe réseau Compute Engine à joindre à 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 la pièce jointe réseau, consultez Configurer un réseau VPC, un sous-réseau et une pièce jointe réseau.
  • DNS_DOMAIN : nom DNS de la zone DNS de cloud privé que vous avez créée lorsque vous avez configuré l'appairage DNS privé.
  • TARGET_PROJECT : projet hébergeant le réseau VPC.
  • TARGET_NETWORK : nom du réseau VPC.

REST

Pour créer une exécution de pipeline, envoyez une POST requête à l'aide de la 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 de pipeline.
  • LOCATION : région dans laquelle vous souhaitez créer l'exécution de pipeline.
  • DISPLAY_NAME : nom du job de pipeline. La longueur maximale d'un nom à afficher est de 128 caractères UTF-8.
  • PIPELINE_SPEC : 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 stocker les 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 la pièce jointe réseau Compute Engine à joindre à 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 la pièce jointe réseau, consultez Configurer un réseau VPC, un sous-réseau et une pièce jointe réseau.
  • DNS_DOMAIN : nom DNS de la zone DNS de cloud privé que vous avez créée lorsque vous avez configuré l'appairage DNS privé.
  • TARGET_PROJECT : projet hébergeant le réseau VPC.
  • TARGET_NETWORK : nom du réseau VPC.

Méthode HTTP et URL :

POST https://LOCATION-aiplatform.googleapis.com/v1/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",
      "dns_peering_configs": [
      {
        "domain": "DNS_DOMAIN",
        "target_project": "TARGET_PROJECT",
        "target_network": "TARGET_NETWORK"
      }
    ]
  }
}

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/v1/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/v1/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 de 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",
    "dnsPeeringConfigs": [
      {
        "domain": "DNS_DOMAIN",
        "targetProject": "TARGET_PROJECT",
        "targetNetwork": "TARGET_NETWORK"
      }
    ]
  }
}