Utiliser un compte de service personnalisé

Ce guide explique comment configurer l'IA Vertex 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 accorder l'accès à d'autres services Google Cloud à Vertex AI dans certains contextes, vous pouvez personnaliser les autorisations des 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. 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.

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 doit se trouver dans le même projet que vos ressources Vertex AI.

  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. Dans le projet où vous utilisez Vertex AI, recherchez l'adresse e-mail de l'agent de service Vertex AI du projet. Cette adresse e-mail est au format suivant :

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

    PROJECT_NUMBER est remplacé par le numéro de projet correspondant à votre projet Google Cloud.

    Vous pouvez trouver le compte de service répertorié sur la page IAM de Google Cloud Console :

    Accéder à la page IAM

  4. Si vous prévoyez d'utiliser le compte de service personnalisé uniquement pour l'entraînement, ignorez cette étape. Si vous prévoyez d'utiliser le compte de service personnalisé pour un conteneur de prédiction, attribuez-lui un rôle supplémentaire :

    Dans le projet où vous utilisez Vertex AI, accordez à l'agent de service Vertex AI du projet le rôle "Administrateur de compte de service" (roles/iam.serviceAccountAdmin) pour votre nouveau compte de service personnalisé. Pour ce faire, utilisez l'outil gcloud afin d'exécuter la commande suivante :

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

    Dans cette commande, remplacez les espaces réservés suivants :

    • AI_PLATFORM_SERVICE_AGENT : adresse e-mail de l'agent de service Vertex AI de votre projet, que vous avez trouvé à l'étape précédente de cette section.

    • 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 le guide Déployer un modèle à l'aide de Cloud Console. 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 beta ai endpoints deploy-model, utilisez l'option --service-account pour spécifier l'adresse e-mail de votre compte de service.

Exemple :

gcloud beta 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

Remplacez CUSTOM_SERVICE_ACCOUNT par l'adresse e-mail du compte de service.

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 de la ressource à laquelle vous souhaitez accéder. Découvrez comment écrire votre code pour accéder à d'autres services Google Cloud.

Étape suivante