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.
Elle est compatible avec les jobs personnalisés et les ressources persistantes de Vertex AI.
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 Vertex AI vers d'autres réseaux
Vertex AI 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), à l'exception des cas suivants :
La sortie vers l'accès privé à Google d'un client n'est pas acceptée. Au lieu de cela, la sortie Private Service Connect serait résolue localement pour l'accès privé à Google.
La sortie vers Cloud NAT n'est possible que si VPC Service Controls est activé.
Limites
- Les interfaces Private Service Connect ne sont pas compatibles avec les adresses IP externes.
Tarifs
Les tarifs des interfaces Private Service Connect sont décrits dans la section "Utiliser une interface Private Service Connect pour accéder à un réseau VPC producteur ou consommateur" 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 personnalisé avec une interface Private Service Connect
Vous pouvez créer un job d'entraînement personnalisé avec l'interface Private Service Connect à l'aide du SDK Vertex AI pour Python ou de l'API REST.
Python
Pour créer un job d'entraînement personnalisé avec l'interface PSC à l'aide du SDK Vertex AI pour Python, configurez le job à en utilisant la définition aiplatform_v1/services/job_service
.
Python
project
: ID de votre projet. Vous pouvez trouver cet ID sur la page d'accueil de la console Google Cloud .location
: consultez la liste des emplacements disponibles.bucket
: remplacezbucket
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. Découvrez comment 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éé 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 qui héberge le réseau VPC.target_network
: nom du réseau VPC.
REST
Pour créer un job d'entraînement personnalisé, envoyez une requête POST à l'aide de la méthode 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 : ID de votre projet.
- JOB_NAME : nom à afficher pour
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 qui héberge 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
, 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/customJobs"
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/customJobs" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON de ce type :