Utiliser l'interface Private Service Connect pour Vertex AI Training

Nous vous recommandons d'utiliser l'interface Private Service Connect pour bénéficier d'une connectivité privée, car elle réduit le risque d'épuisement des adresses IP et permet l'appairage transitif.

L'interface Private Service Connect est compatible avec les jobs personnalisés et les ressources persistantes d'Agent Platform.

Présentation

L'interface Private Service Connect est compatible avec les jobs personnalisés et les ressources persistantes de Vertex AI Training. Pour l'utiliser, vous devez configurer un réseau VPC, un sous-réseau et un rattachement de réseau dans votre projet utilisateur. Consultez Configurer une interface Private Service Connect. Le nom du rattachement de réseau doit être inclus dans la requête de création d'un job personnalisé ou d'une ressource persistante afin d'activer l'interface Private Service Connect.

Connectivité de sortie Private Service Connect de la plate-forme Agent Gemini Enterprise vers d'autres réseaux

La plate-forme Agent Gemini Enterprise a intégré les connectivités réseau de sortie compatibles avec Private Service Connect (voir Se connecter à des charges de travail sur d'autres réseaux), avec les comportements architecturaux suivants.

Accéder aux API Google et aux services internes uniquement

Lorsque la plate-forme Agent Gemini Enterprise envoie du trafic aux API Google, il est résolu localement dans l'environnement du producteur et n'utilise pas les paramètres d'accès privé à Google ni le routage de votre réseau VPC consommateur.

Remarque :

  • Exigence d'identité VPC : étant donné que la résolution locale contourne le chemin d'accès au réseau VPC consommateur, le trafic ne transporte pas l'identité de votre réseau VPC. Les requêtes adressées aux services Google internes uniquement, tels que les services Cloud Run configurés avec une entrée interne, échoueront avec une erreur 404 ou 403.
  • Solution de point de terminaison Private Service Connect : pour accéder à ces services internes de manière privée, vous devez configurer un point de terminaison Private Service Connect pour les API Google dans votre réseau VPC.
  • Configuration DNS : vous devez vous assurer que le domaine de service (par exemple, *.run.app) est résolu en adresse IP interne de votre point de terminaison Private Service Connect pour que le trafic reste sur un chemin d'accès purement privé.

Sortie Internet et Cloud NAT

Par défaut, la plate-forme Agent Gemini Enterprise utilise des passerelles Internet gérées par Google pour le trafic sortant, plutôt que les routes de votre réseau VPC. La sortie à l'aide d'une passerelle Cloud NAT du consommateur n'est utilisée que lorsque le projet fait partie d'un périmètre VPC Service Controls.

Ce périmètre bloque l'accès Internet par défaut, ce qui force le trafic à passer par l'interface Private Service Connect et les règles de routage de votre réseau VPC. Si vous n'utilisez pas VPC Service Controls, le trafic Internet sortant contournera complètement votre réseau VPC et votre passerelle Cloud NAT.

Limites

Pour connaître les fonctionnalités et les limites des interfaces Private Service Connect, consultez À propos de l'accès aux services de la plate-forme Agent Gemini Enterprise via des interfaces Private Service Connect.

Tarifs

Les tarifs des interfaces Private Service Connect sont décrits dans la "Utiliser une interface Private Service Connect pour accéder à un réseau VPC producteur ou consommateur" section de la page Tous les tarifs de mise en réseau.

Avant de commencer

Configurez vos ressources pour l'interface Private Service Connect sur votre projet utilisateur.

Créer un job d'entraînement sans serveur avec une interface Private Service Connect

Vous pouvez créer un job d'entraînement sans serveur avec l'interface Private Service Connect à l'aide du SDK Agent Platform pour Python ou de l'API REST.

Python

Pour créer un job d'entraînement sans serveur avec l'interface PSC à l'aide du SDK de l'Agent Platform pour Python, configurez le job à l'aide de la aiplatform_v1/services/job_service définition.

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: . Vous trouverez ces ID sur la Cloud de Confiance console page de bienvenue.
  • location : consultez la liste des emplacements disponibles.
  • bucket : remplacez bucket par le nom d'un bucket auquel vous avez accès.
  • display_name (facultatif) : nom à afficher de la ressource persistante.
  • machine_type : spécifiez les ressources de calcul.
  • replica_count : nombre d'instances répliquées de nœuds de calcul à utiliser pour chaque essai.
  • service_attachment : nom de la ressource de rattachement de service. Renseigné si Private Service Connect est activé.
  • image_uri : URI d'une image de conteneur Docker comportant votre code d'entraînement. Apprenez à créer une image de conteneur personnalisé.
  • network_attachment : nom ou chemin d'accès complet du rattachement de réseau que vous avez créé lors de la configuration de vos ressources pour Private Service Connect.
  • domain : nom DNS de la zone Cloud DNS privée que vous avez créée lors de la configuration de l'appairage DNS privé.
  • target_project : projet hébergeant le réseau VPC.
  • target_network : nom du réseau VPC.

REST

Pour créer un job d'entraînement sans serveur, envoyez une requête POST à l'aide de la customJobs.create.

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

  • LOCATION : région où le conteneur ou le package Python sera exécuté.
  • PROJECT_ID : l'ID de votre projet. .
  • JOB_NAME : nom à afficher pour le CustomJob.
  • REPLICA_COUNT : nombre d'instances répliquées de nœuds de calcul à utiliser. Dans la plupart des cas, définissez cette valeur sur 1 pour votre premier pool de nœuds de calcul.
  • Si votre application d'entraînement s'exécute dans un conteneur personnalisé, spécifiez les éléments suivants :
    • IMAGE_URI : URI d'une image de conteneur Docker comportant votre code d'entraînement. Apprenez à créer une image de conteneur personnalisée.
    • NETWORK_ATTACHMENT : nom ou chemin d'accès complet du rattachement de réseau que vous avez créé lorsque vous avez configuré l'interface Private Service Connect.
    • Si vous avez besoin d'un appairage DNS privé, le champ dns_peering_configs est obligatoire. Pour cette liste, chaque élément contient les éléments suivants :
      • DOMAIN_SUFFIX : nom DNS de la zone Cloud DNS privée que vous avez créée lors de la configuration de 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/customJobs

Corps JSON de la requête :

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

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, et 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/customJobs"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, et 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/customJobs" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :