Vous pouvez configurer AI Platform Training de sorte qu'il utilise le compte de service de votre choix lorsqu'il exécute votre application d'entraînement. L'utilisation d'un compte de service personnalisé vous permet de personnaliser les ressources Google Cloud auxquelles votre code d'entraînement peut accéder sans accorder d'autorisations trop étendues au compte de service utilisé par défaut par AI Platform Training. De plus, vous pouvez utiliser un compte de service personnalisé pour accorder l'accès de votre code à d'autres services Google Cloud tels que Secret Manager.
Ce guide se concentre sur les autorisations des ressources AI Platform Training pour accéder à d'autres ressources Google Cloud. Pour en savoir plus sur les autorisations nécessaires pour accéder directement aux ressources AI Platform Training, consultez la page Contrôle des accès.
Comprendre le fonctionnement du compte de service géré par Google
Par défaut, AI Platform Training utilise un compte de service géré par Google pour exécuter des tâches d'entraînement. Ce compte de service est identifié par une adresse e-mail au format suivant :
service-PROJECT_NUMBER@cloud-ml.google.com.iam.gserviceaccount.com
PROJECT_NUMBER est remplacé par le numéro de projet correspondant à votre projet Google Cloud.
Recherchez le compte de service correspondant à votre projet dans Google Cloud Console ou à l'aide de l'outil de ligne de commande gcloud
:
Cloud Console
Accédez à la page IAM de Cloud Console et recherchez le membre correspondant au format d'adresse e-mail décrit précédemment dans cette section. Le compte de service porte également le nom Google Cloud ML Engine Service Agent
.
gcloud
Exécutez la commande suivante dans un environnement Shell dans lequel vous avez initialisé l'outil gcloud
:
gcloud projects get-iam-policy PROJECT_ID \
--flatten="bindings[].members" \
--format="table(bindings.members)" \
--filter="bindings.role:roles/ml.serviceAgent" \
| grep serviceAccount:
Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.
Cette commande génère les éléments suivants :
serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT
GOOGLE_MANAGED_SERVICE_ACCOUNT est l'adresse e-mail du compte de service AI Platform géré par Google de votre projet.
Ce compte de service géré par Google dispose d'autorisations appropriées pour la plupart des tâches d'entraînement. Par exemple, il peut lire et écrire dans des buckets Cloud Storage situés dans le même projet Google Cloud.
Si vous souhaitez que vos applications d'entraînement s'exécutent avec des autorisations supplémentaires, vous pouvez attribuer des rôles IAM supplémentaires à ce compte de service. Par exemple, vous pouvez l'autoriser à accéder aux buckets Cloud Storage d'autres projets Google Cloud.
Utiliser un compte de service personnalisé
Si vous souhaitez accorder ou limiter des autorisations Google Cloud pour une tâche d'entraînement spécifique, utilisez un compte de service personnalisé au lieu du compte de service géré par Google.
Pour ce faire, commencez par configurer un compte de service personnalisé. Ensuite, spécifiez le compte de service personnalisé lorsque vous créez une tâche d'entraînement.
Configurer un compte de service personnalisé
Pour configurer un compte de service personnalisé, procédez comme suit :
Attribuez des rôles IAM à votre nouveau compte de service afin de fournir à votre application d'entraînement toutes les autorisations nécessaires à son exécution.
Attribuez au compte de service AI Platform géré par Google de votre projet le rôle "Administrateur de compte de service" (
roles/iam.serviceAccountAdmin
) pour votre nouveau compte de service personnalisé. Pour ce faire, utilisez l'outilgcloud
afin d'exécuter la commande suivante :gcloud iam service-accounts add-iam-policy-binding \ --role=roles/iam.serviceAccountAdmin \ --member=serviceAccount:GOOGLE_MANAGED_SERVICE_ACCOUNT \ CUSTOM_SERVICE_ACCOUNT
Dans cette commande, remplacez les espaces réservés suivants :
GOOGLE_MANAGED_SERVICE_ACCOUNT : adresse e-mail du
Google Cloud ML Engine Service Agent
de votre projet. Découvrez comment trouver cette adresse e-mail dans une section précédente de ce guide.CUSTOM_SERVICE_ACCOUNT : adresse e-mail du nouveau compte de service géré par l'utilisateur que vous venez de créer à une étape précédente de cette section.
Spécifier le compte de service personnalisé pour votre tâche d'entraînement
Pour configurer AI Platform Training de sorte à utiliser votre compte de service personnalisé lors de l'exécution de votre application d'entraînement, spécifiez le champ trainingInput.serviceAccount
lorsque vous créez une tâche d'entraînement.
Si vous utilisez l'outil gcloud
pour créer une tâche d'entraînement, vous devez utiliser un fichier config.yaml
pour spécifier ce champ. Exemple :
trainingInput:
serviceAccount: CUSTOM_SERVICE_ACCOUNT
Remplacez CUSTOM_SERVICE_ACCOUNT par l'adresse e-mail du compte de service géré par l'utilisateur que vous avez configuré dans une section précédente de ce guide.
Accéder aux services Google Cloud à partir du code d'entraînement
Dans votre code d'entraînement, si vous souhaitez accéder à d'autres services Google Cloud à partir de votre tâche d'entraînement, utilisez les identifiants par défaut de l'application. De nombreuses bibliothèques clientes Google Cloud s'authentifient par défaut avec les identifiants par défaut de l'application. Vous n'avez pas besoin de configurer de variables d'environnement. AI Platform Training configure automatiquement les identifiants par défaut de l'application de sorte qu'il s'authentifie en tant que compte de service personnalisé que vous avez spécifié à l'étape précédente.
Toutefois, lorsque vous utilisez une bibliothèque cliente Google Cloud dans votre code d'entraînement, il se peut qu'elle ne se connecte pas par défaut au projet Google Cloud approprié. Si vos journaux d'entraînement signalent des erreurs d'autorisation, le problème peut venir de là. Lorsque vous créez une tâche d'entraînement, AI Platform Training n'exécute pas votre code d'entraînement directement dans votre projet Google Cloud. AI Platform Training exécute votre code dans un projet distinct géré par Google. AI Platform Training utilise ce projet exclusivement pour les opérations liées à votre projet. Par conséquent, n'essayez pas de déduire un ID de projet de l'environnement de votre code d'entraînement. Spécifiez les ID de projet explicitement.
Par exemple, envisagez d'exécuter une tâche d'entraînement dans un projet Google Cloud dont l'ID est PROJECT_ID. Si vous souhaitez utiliser le client Python pour Google BigQuery afin d'accéder à une table BigQuery du même projet, n'essayez pas de déduire le projet dans votre code d'entraînement :
Sélection implicite d'un projet
from google.cloud import bigquery
client = bigquery.Client()
Utilisez plutôt un code qui sélectionne explicitement un projet :
Sélection explicite d'un projet
from google.cloud import bigquery
client = bigquery.Client(project=PROJECT_ID)
Étape suivante
Découvrez comment créer une tâche d'entraînement et consultez les options de configuration supplémentaires disponibles pour vos tâches.
Découvrez comment utiliser Cloud Storage avec AI Platform Training.
En savoir plus sur les comptes de service