Utiliser un compte de service personnalisé

Ce guide explique comment configurer Vertex AI pour utiliser un compte de service personnalisé dans les scénarios suivants :

Quand utiliser un compte de service personnalisé

Pendant l'exécution, Vertex AI utilise généralement les autorisations de l'un des multiples comptes de service que Google crée et gère pour votre projet Google Cloud. Pour permettre à Vertex AI d'accéder à d'autres services Google Cloud dans certains contextes, vous pouvez ajouter des rôles spécifiques aux agents de service de Vertex AI.

Toutefois, le fait de personnaliser les autorisations des agents de service peut ne pas fournir un contrôle d'accès suffisamment précis. Voici quelques cas d'utilisation courants :

  • Accorder moins d'autorisations aux tâches et modèles Vertex AI L'agent de service Vertex AI par défaut a accès à BigQuery et à Cloud Storage.
  • Autoriser différentes tâches à accéder à différentes ressources. Vous pouvez autoriser de nombreux utilisateurs à lancer des tâches dans un même projet, mais n'autoriser les tâches de chaque utilisateur qu'à accéder à une table BigQuery ou à un bucket Cloud Storage spécifique.

Par exemple, vous pouvez personnaliser individuellement chaque tâche d'entraînement personnalisée que vous exécutez pour avoir accès à différentes ressources Google Cloud en dehors de votre projet.

De plus, la personnalisation des autorisations des agents de service ne modifie pas les autorisations disponibles pour un conteneur qui diffuse des prédictions à partir d'un Model personnalisé.

Pour personnaliser l'accès à chaque fois que vous effectuez un entraînement personnalisé ou pour personnaliser les autorisations d'un conteneur de prédiction Model résultant d'un entraînement personnalisé, vous devez utiliser un compte de service personnalisé.

Accès par défaut

Cette section décrit l'accès par défaut disponible pour les conteneurs d'entraînement personnalisés et pour les conteneurs de prédiction des ressources Model résultant d'un entraînement personnalisé. Lorsque vous utilisez un compte de service personnalisé, vous remplacez cet accès pour une ressource CustomJob, HyperparameterTuningJob, TrainingPipeline ou DeployedModel spécifique.

Conteneurs d'entraînement

Lorsque vous créez un CustomJob, HyperparameterTuningJob ou TrainingPipeline personnalisé, le conteneur d'entraînement s'exécute par défaut en utilisant l'agent de service de code personnalisé de Vertex AI de votre projet Google Cloud.

Obtenez plus d'informations sur l'agent de service de code personnalisé de Vertex AI et découvrez comment lui donner accès à d'autres ressources Google Cloud.

Conteneurs de prédiction

Lorsque vous déployez un Model personnalisé entraîné sur un Endpoint, le conteneur de prédiction utilise un compte de service géré par Vertex AI. Ce compte de service est différent des agents de service d'IA Vertex.

Le compte de service utilisé par défaut par le conteneur de prédiction a l'autorisation de lire des artefacts de modèle que Vertex AI met à disposition sur un URI stocké dans la variable d'environnement AIP_STORAGE_URI. Ne comptez pas sur le fait que le compte de service dispose d'autres autorisations. Vous ne pouvez pas personnaliser les autorisations du compte de service.

Configurer un compte de service personnalisé

Les sections suivantes décrivent comment configurer un compte de service personnalisé à utiliser avec Vertex AI et comment configurer CustomJob, HyperparameterTuningJob, TrainingPipeline ou DeployedModel pour utiliser le compte de service. Notez que vous ne pouvez pas configurer de compte de service personnalisé pour extraire des images d'Artifact Registry. Vertex AI utilise le compte de service par défaut pour extraire des images.

Configurer un compte de service personnalisé

Pour configurer un compte de service personnalisé, procédez comme suit :

  1. Créez un compte de service géré par l'utilisateur. Le compte de service géré par l'utilisateur peut se trouver dans le même projet que vos ressources d'IA Vertex ou dans un projet différent.

  2. Accordez à votre nouveau compte de service des rôles IAM qui lui permettent d'accéder aux services et ressources Google Cloud que vous souhaitez que Vertex AI puisse utiliser lors de l'entraînement personnalisé ou de la prédiction.

  3. Facultatif : Si le compte de service géré par l'utilisateur se trouve dans un projet différent de vos jobs d'entraînement, configurez le compte de service géré par l'utilisateur afin de pouvoir l'associer à vos jobs d'entraînement.

  4. Facultatif : Si vous envisagez également d'utiliser le compte de service géré par l'utilisateur pour les prédictions, vous devez attribuer le rôle "Administrateur de compte de service" (roles/iam.serviceAccountAdmin) à l'agent de service Vertex AI du projet dans lequel vous utilisez Vertex AI :

    gcloud iam service-accounts add-iam-policy-binding \
      --role=roles/iam.serviceAccountAdmin \
      --member=serviceAccount:AI_PLATFORM_SERVICE_AGENT \
      CUSTOM_SERVICE_ACCOUNT
    

    Remplacez les éléments suivants :

    • AI_PLATFORM_SERVICE_AGENT : adresse e-mail de l'agent de service Vertex AI de votre projet, au format suivant :

      service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com

      Pour trouver l'agent de service Vertex AI, accédez à la page IAM de la console Google Cloud.

      Accéder à IAM

    • CUSTOM_SERVICE_ACCOUNT : adresse e-mail du nouveau compte de service géré par l'utilisateur que vous avez créé à la première étape de cette section.

Spécifier un compte de service personnalisé pour les ressources Vertex AI

Le processus de configuration de Vertex AI permettant d'utiliser un compte de service spécifique pour une ressource s'appelle la liaison ou l'association du compte de service à la ressource. Les sections suivantes expliquent comment associer le compte de service que vous avez créé dans la section précédente à plusieurs ressources Vertex AI.

Associer un compte de service à une ressource d'entraînement personnalisé

Pour configurer Vertex AI afin qu'il utilise votrenouveau compte de service lors de l'entraînement personnalisé, spécifiez l'adresse e-mail du compte de service dans le champ serviceAccount d'un message CustomJobSpec lorsque vous démarrez l'entraînement personnalisé. Selon le type de ressource d'entraînement personnalisé que vous créez, l'emplacement de ce champ dans votre requête API peut varier :

  • Si vous créez un CustomJob, spécifiez l'adresse e-mail du compte de service dans CustomJob.jobSpec.serviceAccount.

    Découvrez comment créer un CustomJob.

  • Si vous créez un HyperparameterTuningJob, spécifiez l'adresse e-mail du compte de service dans HyperparameterTuningJob.trialJobSpec.serviceAccount.

    Découvrez comment créer un HyperparameterTuningJob.

  • Si vous créez un TrainingPipeline personnalisé sans réglage d'hyperparamètres, spécifiez l'adresse e-mail du compte de service dans TrainingPipeline.trainingTaskInputs.serviceAccount.

  • Si vous créez un TrainingPipeline personnalisé avec réglage d'hyperparamètres, spécifiez l'adresse e-mail du compte de service dans TrainingPipeline.trainingTaskInputs.trialJobSpec.serviceAccount.

Associer un compte de service à un conteneur qui diffuse des prédictions en ligne

Pour configurer le conteneur de prédiction Model résultant d'un entraînement personnalisé afin qu'il utilise votre nouveau compte de service, spécifiez l'adresse e-mail du compte de service lorsque vous déployez le Model sur un Endpoint :

Console

Suivez les instructions de la page Déployer un modèle à l'aide de la console Google Cloud. Lorsque vous spécifiez les paramètres du modèle, sélectionnez le compte de service dans la liste déroulante Compte de service.

gcloud

Suivez la section Déployer un modèle à l'aide de l'API Vertex AI. Lorsque vous exécutez la commande gcloud ai endpoints deploy-model, utilisez l'option --service-account pour spécifier l'adresse e-mail de votre compte de service.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • ENDPOINT_ID : ID du point de terminaison.
  • LOCATION_ID : région dans laquelle vous utilisez Vertex AI.
  • MODEL_ID : ID du modèle à déployer.
  • DEPLOYED_MODEL_NAME : nom de l'élément DeployedModel. Vous pouvez également utiliser le nom à afficher du Model pour le DeployedModel.
  • MACHINE_TYPE : facultatif. Ressources machine utilisées pour chaque nœud de ce déploiement. Le paramètre par défaut est n1-standard-2. En savoir plus sur les types de machines.
  • MIN_REPLICA_COUNT : nombre minimal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge de prédiction, dans la limite du nombre maximal de nœuds et jamais moins que ce nombre de nœuds.
  • MAX_REPLICA_COUNT : nombre maximal de nœuds pour ce déploiement. Le nombre de nœuds peut être augmenté ou réduit selon les besoins de la charge de prédiction, dans la limite de ce nombre de nœuds et jamais moins que le nombre minimal de nœuds.
  • CUSTOM_SERVICE_ACCOUNT : adresse e-mail du compte de service. Par exemple : SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

Exécutez la commande gcloud ai endpoints deploy-model :

Linux, macOS ou Cloud Shell

gcloud ai endpoints deploy-model ENDPOINT_ID \
  --region=LOCATION \
  --model=MODEL_ID \
  --display-name=DEPLOYED_MODEL_NAME \
  --machine-type=MACHINE_TYPE \
  --min-replica-count=MIN_REPLICA_COUNT \
  --max-replica-count=MAX_REPLICA_COUNT \
  --traffic-split=0=100 \
  --service-account=CUSTOM_SERVICE_ACCOUNT

Windows (PowerShell)

gcloud ai endpoints deploy-model ENDPOINT_ID `
  --region=LOCATION `
  --model=MODEL_ID `
  --display-name=DEPLOYED_MODEL_NAME `
  --machine-type=MACHINE_TYPE `
  --min-replica-count=MIN_REPLICA_COUNT `
  --max-replica-count=MAX_REPLICA_COUNT `
  --traffic-split=0=100 `
  --service-account=CUSTOM_SERVICE_ACCOUNT

Windows (cmd.exe)

gcloud ai endpoints deploy-model ENDPOINT_ID ^
  --region=LOCATION ^
  --model=MODEL_ID ^
  --display-name=DEPLOYED_MODEL_NAME ^
  --machine-type=MACHINE_TYPE ^
  --min-replica-count=MIN_REPLICA_COUNT ^
  --max-replica-count=MAX_REPLICA_COUNT ^
  --traffic-split=0=100 ^
  --service-account=CUSTOM_SERVICE_ACCOUNT
 

API

Suivez la section Déployer un modèle à l'aide de l'API Vertex AI. Lorsque vous envoyez la requête projects.locations.endpoints.deployModel, définissez le champ deployedModel.serviceAccount sur l'adresse e-mail du compte de service.

Accéder aux services Google Cloud dans votre code

Si vous configurez Vertex AI pour utiliser un compte de service personnalisé en suivant les instructions des sections précédentes, votre conteneur d'entraînement ou votre conteneur de prédiction peut accéder à tous les services et ressources Google Cloud auxquels le compte de service a accès.

Pour accéder aux services Google Cloud, rédigez votre code d'entraînement ou votre code de diffusion de prédictions de manière à utiliser les Identifiants par défaut de l'application (ADC) et spécifiez explicitement l'ID ou le numéro du projet correspondant à la ressource à laquelle vous souhaitez accéder. Découvrez comment écrire votre code pour accéder à d'autres services Google Cloud.

Étape suivante