Ce guide explique comment:
- Configurer une configuration Cloud TPU en vue de l'exécuter dans Google Kubernetes Engine
- Créer un cluster GKE compatible avec Cloud TPU
- Afficher les opérations du cluster
- Utiliser TensorBoard pour visualiser les métriques Cloud TPU et analyser les performances
- Créer et compiler un modèle dans Docker
Si vous recherchez une procédure détaillée, suivez le tutoriel qui explique comment entraîner le modèle TensorFlow ResNet-50 à l'aide de Cloud TPU et de GKE.
Avantages de l'exécution des applications Cloud TPU sur GKE
Les applications d'entraînement Cloud TPU peuvent être configurées pour s'exécuter dans des conteneurs GKE au sein de pods GKE. Ces options offrent les avantages suivants:
Configuration et gestion simplifiées:lorsque vous utilisez Cloud TPU, vous avez besoin d'une VM Compute Engine pour exécuter votre charge de travail et d'un bloc de routage CIDR (Classless Inter-Domain Routing) pour Cloud TPU. GKE configure la VM et le bloc CIDR et gère la VM pour vous.
Coût optimisé:vous ne payez pour le TPU que lorsque la tâche est active. GKE crée et supprime automatiquement les TPU en fonction des besoins en ressources d'une tâche.
Flexibilité d'utilisation : vous n'avez qu'une seule ligne à modifier dans la spécification de pod pour demander un accélérateur matériel différent (processeur, GPU ou TPU) :
kind: Pod spec: containers: - name: example-container resources: limits: cloud-tpus.google.com/v2: 8 # See the line above for TPU, or below for CPU / GPU. # cpu: 2 # nvidia.com/gpu: 1
Évolutivité:GKE fournit des API (Job et Deployment) qui peuvent facilement évoluer jusqu'à plusieurs centaines de pods GKE et de nœuds Cloud TPU. s'affiche en haut de l'écran.
Tolérance aux pannes : l'API Job de GKE, ainsi que le mécanisme de point de contrôle TensorFlow, fournissent la sémantique d'exécution jusqu'à la fin. Si des échecs surviennent sur les instances de VM ou les nœuds Cloud TPU, les tâches d'entraînement sont automatiquement réexécutées avec le dernier état lu à partir du point de contrôle.
Configuration requise et limites de Cloud TPU et de GKE
Tenez compte des points suivants lors de la définition de la configuration GKE:
- Vous devez utiliser la version de GKE
1.13.4-gke.5
ou ultérieure. Vous pouvez spécifier la version en ajoutant le paramètre--cluster-version
à la commandegcloud container clusters create
comme décrit ci-dessous. Pour en savoir plus sur la version, consultez la documentation relative au SDK. - Vous devez utiliser TensorFlow version 1.15.5 ou ultérieure. Vous devez spécifier la version de TensorFlow utilisée par la ressource Cloud TPU dans la spécification de pod Kubernetes, comme décrit ci-dessous.
- Vous devez créer les pools de nœuds et le cluster GKE dans une zone où Cloud TPU est disponible. Vous devez également créer des buckets Cloud Storage pour stocker vos données et modèles d'entraînement dans la même région que votre cluster GKE.
Les zones suivantes sont disponibles :
US
Type de TPU (v2) Cœurs de TPU v2 Mémoire de TPU totale Région/Zone v2-8 8 64 Gio us-central1-b
us-central1-c
us-central1-f
v2-32 32 256 Gio us-central1-a
v2-128 128 1 Tio us-central1-a
v2-256 256 2 Tio us-central1-a
v2-512 512 4 Tio us-central1-a
Type de TPU (v3) Cœurs de TPU v3 Mémoire de TPU totale Zones disponibles v3-8 8 128 Gio us-central1-a
us-central1-b
us-central1-f
Europe
Type de TPU (v2) Cœurs de TPU v2 Mémoire de TPU totale Région/Zone v2-8 8 64 Gio europe-west4-a
v2-32 32 256 Gio europe-west4-a
v2-128 128 1 Tio europe-west4-a
v2-256 256 2 Tio europe-west4-a
v2-512 512 4 Tio europe-west4-a
Type de TPU (v3) Cœurs de TPU v3 Mémoire de TPU totale Zones disponibles v3-8 8 128 Gio europe-west4-a
v3-32 32 512 Gio europe-west4-a
v3-64 64 1 Tio europe-west4-a
v3-128 128 2 Tio europe-west4-a
v3-256 256 4 Tio europe-west4-a
v3-512 512 8 Tio europe-west4-a
v3-1024 1 024 16 Tio europe-west4-a
v3-2048 2 048 32 Tio europe-west4-a
Asie-Pacifique
Type de TPU (v2) Cœurs de TPU v2 Mémoire de TPU totale Région/Zone v2-8 8 64 Gio asia-east1-c
- Chaque conteneur ne peut demander qu'une ressource Cloud TPU. Toutefois, plusieurs conteneurs d'un pod peuvent en demander chacun une.
- L'autoscaler de cluster accepte Cloud TPU sur GKE
1.13.4-gke.5
ou version ultérieure.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.
-
Activez les API suivantes sur Cloud Console :
Lorsque vous exploitez Cloud TPU avec GKE, votre projet utilise des composants facturables de Google Cloud. Vérifier Tarifs de Cloud TPU etTarifs de GKE pour estimer vos coûts et suivez les instructionsnettoyer les ressources une fois que vous n'en avez plus besoin.
Créer un compte de service et un bucket Cloud Storage
Vous avez besoin d'un bucket Cloud Storage pour stocker les résultats de l'entraînement du modèle de machine learning.
Ouvrez une fenêtre Cloud Shell.
Créez une variable pour l'ID de votre projet.
export PROJECT_ID=project-id
Utilisez l'API
gcloud
pour créer un compte de service pour le projet Cloud TPU.gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
La commande renvoie un compte de service Cloud TPU au format suivant :
service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
Créez un bucket en spécifiant les options suivantes :
- Un nom unique de votre choix
- Type d'emplacement :
region
- Zone :
us-central1
- Classe de stockage par défaut :
Standard
- Contrôle des accès :
fine-grained
Avant d'utiliser le bucket de stockage, vous devez autoriser le compte de service Cloud TPU à accéder au bucket. Définissez des LCA précises pour votre compte de service Cloud TPU.
Autoriser Cloud TPU à accéder au bucket Cloud Storage
Vous devez octroyer à votre Cloud TPU un accès en lecture/écriture à vos objets Cloud Storage. Pour ce faire, vous devez accorder l'accès requis au compte de service utilisé par Cloud TPU. Suivez le guide pour attribuer l'accès à votre bucket de stockage .
Créer un cluster compatible avec Cloud TPU
Vous pouvez créer un cluster compatible avec Cloud TPU à l'aide de Cloud Console ou de l'outil gcloud
.
Sélectionnez une option ci-dessous pour consulter les instructions correspondantes :
Console
Pour créer un cluster GKE compatible avec Cloud TPU, procédez comme suit :
Accédez à la page GKE de Cloud Console.
Cliquez sur Créer un cluster.
Spécifiez le nom du cluster. Il doit être unique dans le projet et la zone.
Sélectionnez le type d'emplacement zonal, puis spécifiez la zone dans laquelle vous prévoyez d'utiliser une ressource Cloud TPU. Pour cet exemple, sélectionnez la zone us-central1-b.
Assurez-vous que la version maître est définie sur 1.13.4-gke.5 ou une version ultérieure, afin de permettre la compatibilité avec Cloud TPU.
Dans le volet de navigation, sous le pool de nœuds que vous souhaitez configurer, cliquez sur Securité.
Sélectionnez Autoriser l'accès complet à l'ensemble des API Cloud. Cette option garantit que tous les nœuds du cluster ont accès au bucket Cloud Storage. Le cluster et le bucket de stockage doivent toutefois appartenir au même projet. Par défaut, les pods Kubernetes héritent des champs d'application des nœuds sur lesquels ils sont déployés. Si vous souhaitez limiter l'accès pod par pod, consultez le guide GKE sur l'authentification avec des comptes de service.
Dans le volet de navigation, sous Cluster, cliquez sur Réseau.
Sélectionnez Activer le routage du trafic de VPC natif (utilisation d'une adresse IP d'alias). Vous devez créer un réseau VPC si aucun réseau n'existe pour le projet en cours.
Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.
Sélectionnez Activer Cloud TPU.
Configurez les options restantes pour le cluster comme vous le souhaitez. Vous pouvez conserver leurs valeurs par défaut.
Cliquez sur Create (Créer).
Connectez-vous au cluster. Pour ce faire, sélectionnez votre cluster sur la page des clusters Kubernetes de la console et cliquez sur le bouton CONNEXION. Cette action affiche la commande
gcloud
à exécuter dans Cloud Shell pour établir la connexion.
gcloud
Suivez les instructions ci-dessous pour configurer votre environnement et créer un cluster GKE compatible avec Cloud TPU, à l'aide de l'outil gcloud
:
Installez les composants
gcloud
dont vous avez besoin pour exécuter GKE avec Cloud TPU :$ gcloud components install kubectl
Configurez
gcloud
avec l'ID de votre projet Google Cloud :$ gcloud config set project project-name
Remplacez project-name par le nom de votre projet Google Cloud.
La première fois que vous exécutez cette commande dans une nouvelle VM Cloud Shell, une page
Authorize Cloud Shell
s'affiche. Cliquez surAuthorize
en bas de la page pour permettre àgcloud
d'effectuer des appels d'API GCP avec vos identifiants.Configurez
gcloud
avec la zone dans laquelle vous prévoyez d'utiliser une ressource Cloud TPU. Pour ce tutoriel, utilisez la zoneus-central1-b
:$ gcloud config set compute/zone us-central1-b
Exécutez la commande
gcloud container clusters create
pour créer un cluster sur GKE compatible avec Cloud TPU. Dans la commande suivante, remplacez cluster-name par le nom de cluster de votre choix :$ gcloud container clusters create cluster-name \ --cluster-version=1.16 \ --scopes=cloud-platform \ --enable-ip-alias \ --enable-tpu
Description des options de commande
- cluster-version
- Indique que le cluster utilise la dernière version de Kubernetes 1.16. Vous devez utiliser la version
1.13.4-gke.5
ou ultérieure. - scopes
- Garantit que tous les nœuds du cluster ont accès au bucket Cloud Storage.
Le cluster et le bucket de stockage doivent toutefois appartenir au même projet. Notez que les pods Kubernetes héritent par défaut des champs d'application des nœuds sur lesquels ils sont déployés.
Par conséquent,
scopes=cloud-platform
donne le champ d'applicationcloud-platform
à tous les pods Kubernetes exécutés dans le cluster. Si vous souhaitez limiter l'accès pod par pod, consultez le guide GKE sur l'authentification avec des comptes de service. - enable-ip-alias
- Indique que le cluster utilise des plages d'adresses IP d'alias. Ceci est obligatoire pour pouvoir utiliser Cloud TPU sur GKE.
- enable-tpu
- Indique que le cluster doit être compatible avec Cloud TPU.
- tpu-ipv4-cidr (facultatif, non spécifié ci-dessus)
- Indique la plage CIDR à utiliser pour Cloud TPU. Spécifiez le
IP_RANGE
au formatIP/20
, par exemple10.100.0.0/20
. Si vous ne définissez pas cet indicateur, une plage CIDR de taille/20
est automatiquement allouée et attribuée.
Une fois le cluster créé, un message de ce type doit s'afficher :
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS cluster-resnet us-central1-b 1.16.15-gke.4901 34.71.245.25 n1-standard-1 1.16.15-gke.4901 3 RUNNING
Afficher les opérations du cluster
L'activation de la prise en charge de Cloud TPU lance une opération de mise à jour. Pour les clusters zonaux, cette opération prend environ cinq minutes. Pour les clusters régionaux, elle prend environ 15 minutes, selon la région du cluster.
Pour répertorier toutes les opérations terminées et en cours d'exécution dans votre cluster, exécutez la commande suivante:
$ gcloud container operations list
Pour obtenir plus d'informations sur une opération spécifique, exécutez la commande suivante :
$ gcloud container operations describe operation-id
Remplacez operation-id par l'ID de l'opération spécifique.
Demander une ressource Cloud TPU dans la spécification de pod Kubernetes
Dans la spécification de pod Kubernetes :
Spécifiez la version de TensorFlow utilisée par les nœuds Cloud TPU au moyen de l'annotation de pod suivante :
tf-version.cloud-tpus.google.com: "x.y"
où
x.y
est la version de TensorFlow acceptée par Cloud TPU. Vous devez utiliser TensorFlow version 1.15.5 ou ultérieure. Toutes les instances Cloud TPU créées pour un pod Kubernetes doivent utiliser la même version de TensorFlow. Cette exigence vaut aussi pour les modèles que vous créez dans les conteneurs. Consultez les versions compatibles.Spécifiez la ressource Cloud TPU dans la section
limits
située sous le champresource
dans les spécifications du conteneur.Notez que l'unité de la ressource Cloud TPU est le nombre de cœurs Cloud TPU. Le tableau suivant répertorie toutes les demandes de ressources valides.
Si la ressource que vous prévoyez d'utiliser est un pod Cloud TPU, veuillez effectuer une demande de quota, car le quota par défaut des pods Cloud TPU est de zéro.
Demande de ressource Type de ressource Cloud TPU Version de GKE requise cloud-tpus.google.com/v2: 8 Appareil Cloud TPU v2 (8 cœurs) 1.10.4-gke.2 ou ultérieure cloud-tpus.google.com/v2: 32 Pod Cloud TPU v2-32 (32 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v2: 128 Pod Cloud TPU v2-128 (128 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v2: 256 Pod Cloud TPU v2-256 (256 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v2: 512 Pod Cloud TPU v2-512 (512 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v3: 32 Pod Cloud TPU v3-32 (32 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v3: 64 Pod Cloud TPU v3-64 (64 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v3: 128 Pod Cloud TPU v3-128 (128 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v3: 256 Pod Cloud TPU v3-256 (256 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v3: 512 Pod Cloud TPU v3-512 (512 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v3: 1024 Pod Cloud TPU v3-1024 (1 024 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/v3: 2048 Pod Cloud TPU v3-2048 (2 048 cœurs) (bêta) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/preemptible-v2: 8 Appareil Cloud TPU préemptif v2 (8 cœurs) 1.10.6-gke.1 ou ultérieure cloud-tpus.google.com/v3: 8 Appareil Cloud TPU v3 (8 cœurs) 1.10.7-gke.6 ou ultérieure cloud-tpus.google.com/preemptible-v3: 8 Appareil Cloud TPU préemptif v3 (8 cœurs) 1.10.7-gke.6 ou ultérieure Pour savoir comment indiquer des ressources et des limites dans la spécification de pod, consultez la documentation Kubernetes.
L'exemple de spécification de tâche ci-dessous demande un appareil Cloud TPU préemptif v2 doté de TensorFlow 2.3. Il démarre également un processus TensorBoard.
La durée de vie des nœuds Cloud TPU dépend des pods Kubernetes qui les demandent. La ressource Cloud TPU est créée à la demande lors de la programmation du pod Kubernetes et elle est recyclée lorsque celui-ci est supprimé.
apiVersion: batch/v1 kind: Job metadata: name: resnet-tpu spec: template: metadata: annotations: # The Cloud TPUs that will be created for this Job will support # TensorFlow 2.3. This version MUST match the # TensorFlow version that your model is built on. tf-version.cloud-tpus.google.com: "2.3" spec: restartPolicy: Never containers: - name: resnet-tpu # The official TensorFlow 2.3.0 image. # https://hub.docker.com/r/tensorflow/tensorflow image: tensorflow/tensorflow:2.3.0 command: - bash - -c - | pip install tf-models-official==2.3.0 python3 -m official.vision.image_classification.resnet.resnet_ctl_imagenet_main \ --tpu=$(KUBE_GOOGLE_CLOUD_TPU_ENDPOINTS) \ --distribution_strategy=tpu \ --steps_per_loop=500 \ --log_steps=500 \ --use_synthetic_data=true \ --dtype=fp32 \ --enable_tensorboard=true \ --train_epochs=90 \ --epochs_between_evals=1 \ --batch_size=1024 \ --model_dir=gs://bucket-name/resnet resources: limits: # Request a single Preemptible v2-8 Cloud TPU device to train the # model. A single v2-8 Cloud TPU device consists of 4 chips, each of # which has 2 cores, so there are 8 cores in total. cloud-tpus.google.com/preemptible-v2: 8 - name: tensorboard image: tensorflow/tensorflow:2.2.0 command: - bash - -c - | pip install tensorboard-plugin-profile==2.3.0 cloud-tpu-client tensorboard --logdir=gs://bucket-name/resnet --port=6006 ports: - containerPort: 6006
Créer la tâche
Pour créer la tâche dans le cluster GKE et installer kubectl, procédez comme suit :
À l'aide d'un éditeur de texte, créez une spécification de tâche
example-job.yaml
et copiez-collez les spécifications de tâche présentées ci-dessus. Veillez à remplacer la variable bucket-name dans le paramètre--model_dir
et dans la commande Tensorboard par le nom de votre bucket de stockage.Exécutez la tâche :
$ kubectl create -f example-job.yaml
job "resnet-tpu" created
Cette commande crée la tâche qui planifie automatiquement le pod.
Vérifiez que le pod a été planifié et que les nœuds Cloud TPU ont été provisionnés. Un pod demandant des nœuds Cloud TPU peut donc se retrouver en attente pendant 5 minutes avant d'être exécuté. Vous verrez une sortie semblable à la suivante jusqu'à ce que le pod soit planifié.
$ kubectl get pods -w NAME READY STATUS RESTARTS AGE resnet-tpu-cmvlf 0/1 Pending 0 1m
Passé ce délai, la sortie suivante s'affiche :
NAME READY STATUS RESTARTS AGE resnet-tpu-cmvlf 1/1 Running 0 6m
Afficher l'état et les journaux de Cloud TPU
Suivez ces étapes pour vérifier l'état et afficher les journaux des instances Cloud TPU utilisées par les pods Kubernetes.
Accédez à la page GKE de Cloud Console.
Dans la barre de navigation de gauche, cliquez sur Workloads (Charges de travail).
Sélectionnez votre tâche. Vous êtes alors dirigé vers une page avec le titre Pods gérés.
Sous Pods gérés, sélectionnez votre pod Kubernetes. Vous accédez ainsi à une page comportant un titre Conteneurs.
Sous Conteneurs, une liste de conteneurs s'affiche. La liste comprend toutes les instances Cloud TPU. Pour chaque conteneur, les informations suivantes s'affichent:
- État de l'exécution
- Lien vers les journaux de conteneurs
Visualiser les métriques et analyser les performances à l'aide de TensorBoard
TensorBoard est une suite d'outils conçus pour offrir une présentation visuelle des données TensorFlow. TensorBoard peut aider à identifier les goulots d'étranglement lors du traitement et suggérer des méthodes permettant d'améliorer les performances.
TPU Profiler est un plug-in TensorBoard qui permet de capturer un profil sur une ressource Cloud TPU individuelle ou sur un pod Cloud TPU. Ce profil peut ensuite être visualisé sur TensorBoard. Le sélecteur d'outils Cloud TPU devient disponible dans l'onglet Profil de la barre de menu TensorBoard lorsque vous avez collecté, à l'aide de TPU Profiler, des informations de trace à partir d'un modèle TensorFlow en cours d'exécution.
Exécuter TensorBoard dans un cluster GKE
Pour exécuter TensorBoard dans le cluster GKE, procédez comme suit :
Suivez la procédure pour afficher l'état de TensorBoard afin de vérifier que l'instance TensorBoard s'exécute dans un conteneur.
Transfert de port vers le pod Kubernetes TensorBoard :
$ kubectl port-forward pod/resnet-tpu-pod-id 6006
où pod-id correspond au dernier ensemble de chiffres du nom de votre pod GKE affiché dans la console sous : Kubernetes Engine > Charges de travail > Pods gérés. Exemple :
resnet-tpu-wxskc
.Dans la barre en haut à droite de la session Cloud Shell, cliquez sur le bouton Aperçu sur le Web et ouvrez le port 6006 pour afficher le résultat de TensorBoard. L'UI TensorBoard s'affiche dans un onglet de votre navigateur.
Sélectionnez PROFIL dans le menu déroulant situé en haut à droite de la page TensorBoard.
Cliquez sur le bouton CAPTURER LE PROFIL sur la page PROFIL.
Dans le menu pop-up, sélectionnez le type d'adresse du nom du TPU et saisissez le nom du TPU. Le nom de la ressource TPU apparaît dans Cloud Console sur la page Compute Engine > TPU, au format suivant :
gke-cluster-name-cluster-id-tpu-tpu-id
Exemple :gke-demo-cluster-25cee208-tpu-4b90f4c5
Cliquez sur le bouton CAPTURE dans le menu pop-up lorsque vous êtes prêt à commencer le profilage, puis attendez quelques secondes que le profil soit terminé.
Actualisez le navigateur pour voir les données de traçage sous l'onglet PROFIL de TensorBoard.
Pour en savoir plus sur la capture et l'interprétation des profils, consultez le guide de TensorFlow Profiler.
Créer et intégrer en conteneur votre modèle dans une image Docker
Vous pouvez utiliser un modèle TPU officiel qui a été intégré en conteneur dans des images Docker, ou créer et intégrer en conteneur votre propre modèle.
Utiliser les modèles TPU officiels
Les derniers modèles TPU officiels sont conteneurisés dans des images Docker. Ces images Docker ont été créées avec un fichier Docker.
Créer votre propre modèle
Les notebooks Colab de la documentation TensorFlow fournissent des exemples sur la façon de créer votre propre modèle.
Si vous choisissez de créer votre propre modèle, procédez comme suit pour intégrer le modèle au conteneur dans une image Docker et l'envoyer à Google Container Registry.
Activez les API suivantes sur Cloud Console :
Créez un fichier Dockerfile contenant les lignes suivantes.
FROM tensorflow/tensorflow:2.3.0 RUN pip install tf-models-official==2.3.0 tensorboard-plugin-profile==2.3.0 cloud-tpu-client
Exécutez la commande suivante dans le même répertoire que le fichier Docker pour créer et ajouter des tags à l'image Docker. Remplacez la variable
my-project
par le nom de votre projet, et remplacez la variablemy-image
par un nom d'image.gcloud builds submit . -t gcr.io/my-project/my-image
Le préfixe
gcr.io
fait référence à Container Registry, où l'image est hébergée. Cette commande n'importe pas l'image.Exécutez la commande
docker images
pour vérifier que la compilation a réussi :docker images
Sortie :REPOSITORY TAG IMAGE ID CREATED SIZE gcr.io/my-project/my-image v1 25cfadb1bf28 10 seconds ago 54 MB
Mettez à jour les spécifications de la tâche pour utiliser l'image Docker. Remplacez les variables my-project et my-image par le nom de votre projet et un nom d'image que vous avez défini. Remplacez également la variable bucket-name par le nom d'un bucket que vous utiliserez pour stocker le résultat de l'entraînement du modèle.
image: gcr.io/my-project/my-image command: - python3 - -m - official.vision.image_classification.resnet.resnet_ctl_imagenet_main - --tpu=$(KUBE_GOOGLE_CLOUD_TPU_ENDPOINTS) - --distribution_strategy=tpu - --steps_per_loop=500 - --log_steps=500 - --use_synthetic_data=true - --dtype=fp32 - --enable_tensorboard=true - --train_epochs=90 - --epochs_between_evals=1 - --batch_size=1024 - --model_dir=gs://<bucket-name>/resnet-output
Créez et exécutez la tâche comme vous le feriez avec un modèle TPU officiel.
Activer la compatibilité avec Cloud TPU sur un cluster existant
Pour activer la compatibilité avec Cloud TPU sur un cluster GKE existant, procédez comme suit dans l'outil de ligne de commande gcloud
:
Activez la compatibilité avec Cloud TPU :
gcloud beta container clusters update cluster-name --enable-tpu
Remplacez cluster-name par le nom de votre cluster.
Mettez à jour l'entrée kubeconfig :
gcloud container clusters get-credentials cluster-name
Définir une plage CIDR personnalisée
Par défaut, GKE alloue un bloc CIDR de taille /20
pour les TPU provisionnés par le cluster. Vous pouvez spécifier une plage CIDR personnalisée pour la ressource Cloud TPU en exécutant la commande suivante :
gcloud beta container clusters update cluster-name \ --enable-tpu \ --tpu-ipv4-cidr 10.100.0.0/20
Remplacez l'élément suivant :
- cluster-name : nom de votre cluster existant.
- 10.100.0.0/20 : votre plage CIDR personnalisée.
Désactiver Cloud TPU dans un cluster
Pour désactiver la compatibilité avec Cloud TPU sur un cluster GKE existant, procédez comme suit dans l'outil de ligne de commande gcloud
:
Vérifiez qu'aucune de vos charges de travail n'utilise Cloud TPU :
$ kubectl get tpu
Désactivez la prise en charge de Cloud TPU dans votre cluster :
$ gcloud beta container clusters update cluster-name --no-enable-tpu
Remplacez cluster-name par le nom de votre cluster.
Pour les clusters zonaux, cette opération prend environ cinq minutes. Pour les clusters régionaux, elle prend environ 15 minutes, selon la région du cluster.
Une fois les opérations terminées sans erreur, vous pouvez vérifier que les TPU provisionnés par le cluster ont été supprimés :
$ gcloud compute tpus list
Les noms des TPU créés par Cloud TPU sont au format suivant :
$ gke-cluster-name-cluster-id-tpu-tpu-id
Remplacez l'élément suivant :
- cluster-name : nom de votre cluster existant.
- cluster-id : ID de votre cluster existant.
- tpu-id : ID de la ressource Cloud TPU.
Si des TPU apparaissent, vous pouvez les supprimer manuellement en exécutant la commande suivante :
$ gcloud compute tpus delete gke-cluster-name-cluster-id-tpu-tpu-id
Nettoyer
Une fois que vous n'avez plus besoin d'utiliser Cloud TPU sur GKE, nettoyez les ressources pour éviter que des frais supplémentaires ne soient imputés à votre compte Cloud Billing.
Console
Supprimez le cluster GKE :
Accédez à la page GKE de Cloud Console.
Cochez la case située à côté du cluster que vous souhaitez supprimer.
Cliquez sur Supprimer.
Lorsque vous avez fini d'examiner les données, supprimez le bucket Cloud Storage que vous avez créé:
Accédez à la page Cloud Storage de Cloud Console.
Cochez la case située à côté du bucket que vous souhaitez supprimer.
Cliquez sur Supprimer.
Consultez la grille tarifaire de Cloud Storage pour connaître les limites en matière de stockage gratuit ainsi que d'autres informations sur les tarifs.
gcloud
Si vous n'avez pas défini le projet et la zone pour cette session, faites-le maintenant. Consultez les instructions plus haut dans ce guide. Suivez ensuite cette procédure de nettoyage :
Exécutez la commande suivante pour supprimer votre cluster GKE, en remplaçant
cluster-name
par le nom de votre cluster etproject-name
par le nom de votre projet Google Cloud :$ gcloud container clusters delete cluster-name --project=project-name
Lorsque vous avez terminé l'examen des données, exécutez la commande
gsutil
pour supprimer le bucket Cloud Storage que vous avez créé. Remplacezbucket-name
par le nom de votre bucket Cloud Storage.$ gsutil rm -r gs://bucket-name
Consultez la grille tarifaire de Cloud Storage pour connaître les limites en matière de stockage gratuit ainsi que d'autres informations sur les tarifs.
Étapes suivantes
- Suivez le tutoriel permettant d'entraîner le modèle TensorFlow ResNet-50 sur Cloud TPU et GKE.
- Exécutez d'autres modèles et tâches de récupération d'ensemble de données à l'aide de l'une des spécifications de tâche suivantes :
- Téléchargez et prétraitez l'ensemble de données COCO sur GKE.
- Téléchargez et prétraitez ImageNet sur GKE.
- Entraînez AmoebaNet-D à l'aide de Cloud TPU et de GKE.
- Entraînez Inception v3 à l'aide de Cloud TPU et de GKE.
- Entraînez RetinaNet à l'aide de Cloud TPU et de GKE.