Private Service Connect vous permet d'accéder de manière sécurisée aux prédictions en ligne de Vertex AI à partir de plusieurs projets clients et réseaux VPC, sans avoir besoin d'adresses IP publiques, d'un accès à Internet public ou d'une plage d'adresses IP internes explicitement appariées.
Nous vous recommandons d'utiliser Private Service Connect pour les cas d'utilisation de prédiction en ligne qui présentent les exigences suivantes:
- Exiger des connexions privées et sécurisées
- Nécessitent une faible latence
- Ne doivent pas être accessibles au public
Private Service Connect utilise une règle de transfert dans votre réseau VPC pour envoyer du trafic unidirectionnel au service de prédiction en ligne Vertex AI. La règle de transfert se connecte à un rattachement de service qui expose le service Vertex AI à votre réseau VPC. Pour en savoir plus, consultez À propos de l'accès aux services Vertex AI via Private Service Connect. Pour en savoir plus sur la configuration de Private Service Connect, consultez la présentation de Private Service Connect dans la documentation du cloud privé virtuel (VPC).
Créer le point de terminaison de prédiction en ligne
Utilisez l'une des méthodes suivantes pour créer un point de terminaison de prédiction en ligne avec Private Service Connect activé:
Console
Dans la console Google Cloud, dans Vertex AI, accédez à la page Prédiction en ligne.
Cliquez sur Créer.
Indiquez un nom à afficher pour le point de terminaison.
Sélectionnez
Privé.Sélectionnez
Private Service Connect.Cliquez sur Sélectionner des ID de projet.
Sélectionnez les projets à ajouter à la liste d'autorisation pour le point de terminaison.
Cliquez sur Continuer.
Choisissez les caractéristiques de votre modèle. Pour en savoir plus, consultez la section Déployer un modèle sur un point de terminaison.
Cliquez sur Créer pour créer votre point de terminaison et y déployer votre modèle.
Notez l'ID du point de terminaison dans la réponse.
API
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
VERTEX_AI_PROJECT_ID
: ID du projet Google Cloud dans lequel vous créez le point de terminaison de prédiction en ligne.REGION
: région dans laquelle vous utilisez Vertex AI.VERTEX_AI_ENDPOINT_NAME
: nom à afficher du point de terminaison de prédiction en ligne.ALLOWED_PROJECTS
: liste d'ID de projet Google Cloud séparés par une virgule, chacun entre guillemets, par exemple["PROJECTID1", "PROJECTID2"]
. Si un projet ne figure pas dans cette liste, vous ne pourrez pas envoyer de requêtes de prédiction au point de terminaison Vertex AI à partir de ce projet. Veillez à inclure VERTEX_AI_PROJECT_ID dans cette liste afin de pouvoir appeler le point de terminaison à partir du même projet.
Méthode HTTP et URL :
POST https://REGION-aiplatform.googleapis.com/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints
Corps JSON de la requête :
{ "displayName": "VERTEX_AI_ENDPOINT_NAME", "privateServiceConnectConfig": { "enablePrivateServiceConnect": true, "projectAllowlist": ["ALLOWED_PROJECTS"] } }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
{ "name": "projects/VERTEX_AI_PROJECT_NUMBER/locations/REGION/endpoints/ENDPOINT_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata", "genericMetadata": { "createTime": "2020-11-05T17:45:42.812656Z", "updateTime": "2020-11-05T17:45:42.812656Z" } } }
ENDPOINT_ID
.
Python
Avant d'essayer cet exemple, suivez les instructions de configuration pour Python décrites dans le guide de démarrage rapide de Vertex AI à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI Python.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PROJECT_ID = "VERTEX_AI_PROJECT_ID"
REGION = "REGION"
VERTEX_AI_ENDPOINT_NAME = "VERTEX_AI_ENDPOINT_NAME"
from google.cloud import aiplatform
aiplatform.init(project=PROJECT_ID, location=REGION)
# Create the forwarding rule in the consumer project
psc_endpoint = aiplatform.PrivateEndpoint.create(
display_name=VERTEX_AI_ENDPOINT_NAME,
project=PROJECT_ID,
location=REGION,
private_service_connect_config=aiplatform.PrivateEndpoint.PrivateServiceConnectConfig(
project_allowlist=["ALLOWED_PROJECTS"],
),
)
Remplacez les éléments suivants :
VERTEX_AI_PROJECT_ID
: ID du projet Google Cloud dans lequel vous créez le point de terminaison de prédiction en ligneREGION
: région dans laquelle vous utilisez Vertex AIVERTEX_AI_ENDPOINT_NAME
: nom à afficher du point de terminaison de prédiction en ligneALLOWED_PROJECTS
: liste d'ID de projet Google Cloud séparés par une virgule, chacun entre guillemets. Exemple :["PROJECTID1", "PROJECTID2"]
. Si un projet ne figure pas dans cette liste, vous ne pourrez pas envoyer de requêtes de prédiction au point de terminaison Vertex AI à partir de ce projet. Veillez à inclure VERTEX_AI_PROJECT_ID dans cette liste afin de pouvoir appeler le point de terminaison à partir du même projet.
Notez ENDPOINT_ID
à la fin de l'URI du point de terminaison renvoyé:
INFO:google.cloud.aiplatform.models:To use this PrivateEndpoint in another session:
INFO:google.cloud.aiplatform.models:endpoint = aiplatform.PrivateEndpoint('projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID')
Déployer le modèle
Après avoir créé votre point de terminaison de prédiction en ligne avec Private Service Connect activé, déployez votre modèle sur ce point de terminaison en suivant les étapes décrites dans la section Déployer un modèle sur un point de terminaison.
Obtenir l'URI du rattachement de service
Lorsque vous déployez votre modèle, un rattachement de service est créé pour le point de terminaison de prédiction en ligne. Ce rattachement de service représente le service de prédiction en ligne Vertex AI qui est exposé à votre réseau VPC. Exécutez la commande gcloud ai endpoints describe
pour obtenir l'URI du rattachement de service.
Indiquez uniquement la valeur
serviceAttachment
dans les détails du point de terminaison :gcloud ai endpoints describe ENDPOINT_ID \ --project=VERTEX_AI_PROJECT_ID \ --region=REGION \ | grep -i serviceAttachment
Remplacez les éléments suivants :
ENDPOINT_ID
: ID de votre point de terminaison de prédiction en ligneVERTEX_AI_PROJECT_ID
: ID du projet Google Cloud dans lequel vous avez créé votre point de terminaison de prédiction en ligneREGION
: région de la requête.
Le résultat ressemble à ce qui suit :
serviceAttachment: projects/ac74a9f84c2e5f2a1-tp/regions/us-central1/serviceAttachments/gkedpm-c6e6a854a634dc99472bb802f503c1
Notez la chaîne entière dans le champ
serviceAttachment
. Il s'agit de l'URI de rattachement de service.
Créer une règle de transfert
Vous pouvez réserver une adresse IP interne et créer une règle de transfert avec cette adresse. Pour créer la règle de transfert, vous avez besoin de l'URI du rattachement de service de l'étape précédente.
Pour réserver une adresse IP interne pour la règle de transfert, utilisez la commande
gcloud compute addresses create
:gcloud compute addresses create ADDRESS_NAME \ --project=VPC_PROJECT_ID \ --region=REGION \ --subnet=SUBNETWORK \ --addresses=INTERNAL_IP_ADDRESS
Remplacez les éléments suivants :
ADDRESS_NAME
: nom de l'adresse IP interne.VPC_PROJECT_ID
: ID du projet Google Cloud qui héberge votre réseau VPC. Si votre point de terminaison de prédiction en ligne et votre règle de transfert Private Service Connect sont hébergés dans le même projet, utilisezVERTEX_AI_PROJECT_ID
pour ce paramètre.REGION
: région Google Cloud dans laquelle la règle de transfert Private Service Connect doit être crééeSUBNETWORK
: nom du sous-réseau VPC contenant l'adresse IPINTERNAL_IP_ADDRESS
: adresse IP interne à réserver. Ce paramètre est facultatif.- Si ce paramètre est spécifié, l'adresse IP doit être comprise dans la plage d'adresses IP principale du sous-réseau. L'adresse IP peut être une adresse RFC 1918 ou un sous-réseau avec des plages non-RFC.
- Si ce paramètre est omis, une adresse IP interne est attribuée automatiquement.
- Pour plus d'informations, consultez la page Réserver une nouvelle adresse IPv4 ou IPv6 interne statique.
Pour vérifier que l'adresse IP est réservée, utilisez la commande
gcloud compute addresses list
:gcloud compute addresses list --filter="name=(ADDRESS_NAME)" \ --project=VPC_PROJECT_ID
Dans la réponse, vérifiez qu'un état
RESERVED
s'affiche pour l'adresse IP.Pour créer la règle de transfert et la faire pointer vers le rattachement de service de prédiction en ligne, utilisez la commande
gcloud compute forwarding-rules create
:gcloud compute forwarding-rules create PSC_FORWARDING_RULE_NAME \ --address=ADDRESS_NAME \ --project=VPC_PROJECT_ID \ --region=REGION \ --network=VPC_NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI
Remplacez les éléments suivants :
PSC_FORWARDING_RULE_NAME
: nom de la règle de transfert.VPC_NETWORK_NAME
: nom du réseau VPC dans lequel le point de terminaison doit être crééSERVICE_ATTACHMENT_URI
: rattachement de service que vous avez noté précédemment.
Pour vérifier que le rattachement de service accepte le point de terminaison, utilisez la commande
gcloud compute forwarding-rules describe
:gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \ --project=VPC_PROJECT_ID \ --region=REGION
Dans la réponse, vérifiez qu'un état
ACCEPTED
s'affiche pour le champpscConnectionStatus
.
Facultatif : Obtenir l'adresse IP interne
Si vous n'avez pas spécifié de valeur pour INTERNAL_IP_ADDRESS
lorsque vous avez créé la règle de transfert, vous pouvez obtenir l'adresse qui a été allouée automatiquement à l'aide de la commande gcloud compute forwarding-rules describe
:
gcloud compute forwarding-rules describe PSC_FORWARDING_RULE_NAME \
--project=VERTEX_AI_PROJECT_ID \
--region=REGION \
| grep -i IPAddress
Remplacez les éléments suivants :
VERTEX_AI_PROJECT_ID
: ID de votre projet.REGION
: nom de la région pour cette requête
Obtenir des prédictions en ligne
L'obtention de prédictions en ligne à partir d'un point de terminaison avec Private Service Connect est semblable à l'obtention de prédictions en ligne à partir de points de terminaison publics, à l'exception des points suivants:
- La requête doit être envoyée à partir d'un projet spécifié dans la
projectAllowlist
lors de la création du point de terminaison de prédiction en ligne. - Si l'accès mondial n'est pas activé, la requête doit être envoyée depuis la même région.
Pour obtenir des prédictions à l'aide de REST, vous devez vous connecter à l'aide de l'adresse IP statique du point de terminaison, sauf si vous créez un enregistrement DNS pour l'adresse IP interne. Par exemple, vous devez envoyer vos requêtes
predict
au point de terminaison suivant :https://INTERNAL_IP_ADDRESS/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Remplacez
INTERNAL_IP_ADDRESS
par l'adresse IP publique que vous avez réservée précédemment.Voici un exemple d'envoi de la requête predict à l'aide de Python:
REQUEST_FILE = "PATH_TO_INPUT_FILE" import json import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) with open(REQUEST_FILE) as json_file: data = json.load(json_file) response = psc_endpoint.predict( instances=data["instances"], endpoint_override=INTERNAL_IP_ADDRESS ) print(response)
Remplacez
PATH_TO_INPUT_FILE
par le chemin d'accès à un fichier JSON contenant l'entrée de requête.
Facultatif : Créer un enregistrement DNS pour l'adresse IP interne
Nous vous recommandons de créer un enregistrement DNS afin de pouvoir obtenir des prédictions en ligne à partir de votre point de terminaison sans avoir à spécifier l'adresse IP interne.
Pour en savoir plus, consultez la section Autres méthodes de configuration du DNS.
Créez une zone DNS privée à l'aide de la commande
gcloud dns managed-zones create
. Cette zone est associée au réseau VPC dans lequel la règle de transfert a été créée.DNS_NAME_SUFFIX="prediction.p.vertexai.goog." # DNS names have "." at the end. gcloud dns managed-zones create ZONE_NAME \ --project=VPC_PROJECT_ID \ --dns-name=$DNS_NAME_SUFFIX \ --networks=VPC_NETWORK_NAME \ --visibility=private \ --description="A DNS zone for Vertex AI endpoints using Private Service Connect."
Remplacez les éléments suivants :
ZONE_NAME
: nom de la zone DNS
Pour créer un enregistrement DNS dans la zone, utilisez la commande
gcloud dns record-sets create
:DNS_NAME=ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.$DNS_NAME_SUFFIX gcloud dns record-sets create $DNS_NAME \ --rrdatas=INTERNAL_IP_ADDRESS \ --zone=ZONE_NAME \ --type=A \ --ttl=60 \ --project=VPC_PROJECT_ID
Remplacez les éléments suivants :
VERTEX_AI_PROJECT_NUMBER
: numéro de votre projetVERTEX_AI_PROJECT_ID
. Vous trouverez ce numéro de projet dans la console Google Cloud. Pour en savoir plus, reportez-vous à la section Identifier les projets.INTERNAL_IP_ADDRESS
: adresse IP interne de votre point de terminaison de prédiction en ligne
Vous pouvez maintenant envoyer vos requêtes
predict
à :https://ENDPOINT_ID.REGION-VERTEX_AI_PROJECT_NUMBER.prediction.p.vertexai.goog/v1/projects/VERTEX_AI_PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID:predict
Voici un exemple d'envoi de la requête predict à la zone DNS à l'aide de Python:
REQUEST_FILE = "PATH_TO_INPUT_FILE"
import json
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
with open(REQUEST_FILE) as json_file:
data = json.load(json_file)
response = psc_endpoint.predict(
instances=data["instances"], endpoint_override=DNS_NAME
)
print(response)
Remplacez DNS_NAME
par le nom DNS que vous avez spécifié dans la commande gcloud dns record-sets create
.
Limites
Les points de terminaison Vertex AI avec Private Service Connect sont soumis aux limites suivantes :
- La sortie privée depuis le point de terminaison n'est pas acceptée. Comme les règles de transfert Private Service Connect sont unidirectionnelles, les autres charges de travail Google Cloud privées ne sont pas accessibles dans votre conteneur.
- Impossible de modifier la configuration
projectAllowlist
d'un point de terminaison. - La journalisation des accès n'est pas prise en charge.
- La journalisation des requêtes et des réponses n'est pas prise en charge.
- Vertex Explainable AI n'est pas compatible.
Limites de l'aperçu
Dans la version bêta, les limites supplémentaires suivantes s'appliquent:
- Si vous annulez le déploiement de tous les modèles Private Service Connect et les redéployez, vous devez recréer la règle de transfert, même si le nom du rattachement de service est identique.
- Tous les points de terminaison doivent avoir la même configuration
projectAllowlist
.