Configurer Cloud TPU sur GKE

Cette page constitue un guide rapide pour la configuration de Cloud TPU avec Google Kubernetes Engine (GKE). 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.

Pourquoi utiliser GKE ?

GKE propose des clusters Kubernetes en tant que service géré.

  • Simplification de la configuration et de la gestion : lorsque vous utilisez Cloud TPU, vous avez besoin d'une VM Compute Engine pour exécuter votre charge de travail, et d'un bloc CIDR (Classless Inter-Domain Routing) pour Cloud TPU. GKE configure et gère à votre place la VM et le bloc CIDR.

  • Optimisation des coûts : GKE fait évoluer automatiquement vos VM et nœuds Cloud TPU en fonction des charges de travail et du trafic. Vous ne payez pour Cloud TPU et pour la VM que lorsque vous y exécutez des charges de travail.

  • 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 l'API Deployment qui peut définir facilement évoluer vers des centaines de pods et de nœuds Cloud TPU.

  • 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.

Conditions requises et limites

Tenez compte des points suivants lors de la définition de la configuration :

  • 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 commande gcloud 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.13 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.11.4-gke.12 et versions ultérieures.
  • Votre cluster GKE doit être un cluster de VPC natif.

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder à la page de sélection du projet

  3. 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.

  4. Lorsque vous exploitez Cloud TPU avec GKE, votre projet utilise des composants facturables de Google Cloud. Consultez la grille tarifaire de Cloud TPU et celle de GKE pour estimer vos coûts, et suivez les instructions permettant de nettoyer les ressources lorsque vous n'en avez plus besoin.

  5. Activez les API suivantes sur Cloud Console :

Créer 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.

  1. Accédez à la page Cloud Storage de Cloud Console.

    Accéder à la page Cloud Storage

  2. Créez un bucket en spécifiant les options suivantes :

    • Un nom unique de votre choix
    • Classe de stockage par défaut : Standard
    • Zone : us-central1

    Le bucket doit se trouver dans la même région que la ressource TPU provisionnée dans le cluster GKE.

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 GKE compatible avec Cloud TPU

Vous pouvez activer la compatibilité avec Cloud TPU sur un cluster GKE nouveau ou existant.

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 :

  1. Accédez à la page GKE de Cloud Console.

    Accéder à la page GKE

  2. Cliquez sur Créer un cluster.

  3. Spécifiez le nom du cluster. Il doit être unique dans le projet et la zone.

  4. Sélectionnez le type d'emplacement zonal, puis spécifiez la zone dans laquelle vous prévoyez d'utiliser une ressource Cloud TPU. Par exemple, sélectionnez la zone us-central1-b.

    Cloud TPU est disponible dans les zones suivantes :

    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
  5. 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.

  6. Dans le volet de navigation, sous le pool de nœuds que vous souhaitez configurer, cliquez sur Sécurité.

  7. 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. Notez que les pods héritent par défaut 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.

  8. Dans le volet de navigation, sous Cluster, cliquez sur Réseau.

  9. Sélectionnez Activer le routage du trafic de VPC natif (utilisation d'une adresse IP d'alias). Vous devrez peut-être créer un réseau VPC si aucun réseau n'existe pour le projet en cours.

  10. Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.

  11. Sélectionnez Activer Cloud TPU.

  12. Configurez les options restantes pour le cluster comme vous le souhaitez. Vous pouvez conserver leurs valeurs par défaut.

  13. Cliquez sur Create (Créer).

  14. 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 :

  1. Installez les composants gcloud dont vous avez besoin pour exécuter GKE avec Cloud TPU :

    $ gcloud components install
  2. Spécifiez votre projet Google Cloud :

    $ gcloud config set project project-name
    

    Remplacez project-name par le nom de votre projet Google Cloud.

  3. Spécifiez la zone dans laquelle vous prévoyez d'utiliser une ressource Cloud TPU. Pour cet exemple, choisissez la zone us-central1-b :

    $ gcloud config set compute/zone us-central1-b
    

    Cloud TPU est disponible dans les zones suivantes :

    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
  4. 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
    

    Dans la commande ci-dessus :

    • --cluster-version=1.16 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=cloud-platform garantit que tous les nœuds du cluster ont accès à votre bucket Cloud Storage dans le projet Google Cloud défini comme project-name ci-dessus. Le cluster et le bucket de stockage doivent toutefois appartenir au même projet. Notez que les pods 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'application cloud-platform à tous les pods 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 l'emplacement de la plage CIDR à utiliser pour Cloud TPU. IP_RANGE peut avoir le format IP/20, par exemple 10.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.

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 :

  1. Activez la compatibilité avec Cloud TPU :

    gcloud beta container clusters update cluster-name --enable-tpu
    

    Remplacez cluster-name par le nom de votre cluster.

  2. 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.

Afficher les opérations

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 en cours ou terminées dans le 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 operations describe operation-id

Remplacez operation-id par l'ID de l'opération spécifique.

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 TensorFlow officiels

    Les derniers modèles TensorFlow officiels sont disponibles sur GitHub et sous forme de package pip. Pour les modèles qui utilisent l'option --tpu, ajoutez --tpu=$(KUBE_GOOGLE_CLOUD_TPU_ENDPOINTS) à la commande dans la spécification de pod.

  • Créer vos propres modèles

    Si vous souhaitez créer votre propre modèle pour exécuter Cloud TPU sur GKE, vous pouvez utiliser Cloud TPU dans TensorFlow avec tf.distribute.cluster_resolver.TPUClusterResolver et tf.distribute.experimental.TPUStrategy comme suit :

    # The tpu_names, zone, and project may be omitted in TPUClusterResolver
    # as GKE automatically uses the Cloud TPU created for your
    # job when your runs.
    
    tpu_cluster_resolver = tf.distribute.cluster_resolver.TPUClusterResolver()
    tf.config.experimental_connect_to_cluster(tpu_cluster_resolver)
    tf.tpu.experimental.initialize_tpu_system(tpu_cluster_resolver)
    strategy = tf.distribute.experimental.TPUStrategy(tpu_cluster_resolver)
    with strategy.scope():
        ...
    
    

    Pour plus d'informations, consultez la documentation de TensorFlow sur l'utilisation de Cloud TPU dans TensorFlow.

Vous pouvez utiliser gcloud builds submit -t gcr.io/... pour créer une image Docker et la stocker dans Google Container Registry.

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"
    

    x.y est la version de TensorFlow acceptée par Cloud TPU. Vous devez utiliser TensorFlow version 1.13 ou ultérieure. Toutes les instances Cloud TPU créées pour un pod doivent employer 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 champ resource 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 Kubernetes, consultez la documentation de Kubernetes.

Par exemple, cette spécification de tâche demande un appareil Cloud TPU préemptif v2 doté de TensorFlow 2.2 :

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.2. This version MUST match the
        # TensorFlow version that your model is built on.
        tf-version.cloud-tpus.google.com: "2.2"
    spec:
      restartPolicy: Never
      containers:
      - name: resnet-tpu
        # The official TensorFlow 2.2.0 image.
        # https://hub.docker.com/r/tensorflow/tensorflow
        image: tensorflow/tensorflow:2.2.0
        command:
        - bash
        - -c
        - |
          pip install tf-models-official==2.2.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://<my-model-bucket>/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

Créer la tâche

Pour créer la tâche dans le cluster GKE et installer kubectl, procédez comme suit :

  1. Créez la spécification de tâche example-job.yaml, qui inclut la spécification de tâche décrite ci-dessus.

  2. 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.

  3. 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
    
    La durée de vie des nœuds Cloud TPU dépend des pods qui les demandent. La ressource Cloud TPU est créée à la demande lors de la programmation du pod et elle est recyclée lorsque celui-ci est supprimé.

Obtenir les journaux Cloud TPU

Pour obtenir les journaux des ressources Cloud TPU utilisées par les pods Kubernetes, procédez comme suit :

  1. Créez des spécifications de déploiement et de service comme suit :

    Accéder à la page GKE

  2. Cliquez sur Charges de travail.

  3. Recherchez votre tâche et cliquez dessus.

  4. Recherchez le pod sous Pods gérés, puis cliquez dessus.

  5. Recherchez le conteneur sous Conteneurs, puis cliquez sur Afficher les journaux pour afficher les journaux de la ressource Cloud TPU utilisée par le conteneur.

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.

TensorFlow 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 est disponible sous l'onglet Profil, qui apparaît dans la barre de menu une fois que vous avez capturé les informations de trace d'un modèle TensorFlow en cours d'exécution. Vous pouvez également le sélectionner dans le menu déroulant.

Pour exécuter TensorBoard dans le cluster GKE, procédez comme suit :

  1. Créez un autre conteneur TensorFlow pour exécuter TensorBoard en remplaçant bucket-name par le nom de votre bucket GCS.

    $ kubectl run tensorboard \
      --image tensorflow/tensorflow:2.2.0 \
      --port 6006 \
      -- bash -c "pip install tensorboard-plugin-profile==2.2.0 cloud-tpu-client && tensorboard --logdir=gs://bucket-name/resnet"
    
  2. Vérifiez que le pod tensorboard a été planifié.

    $ kubectl get pod tensorboard -w
    
    NAME          READY   STATUS    RESTARTS   AGE
    tensorboard   1/1     Running   0          50s
    
    
  3. Procédez au transfert de port vers le pod tensorboard :

    $ kubectl port-forward pod/tensorboard 6006
    
  4. Accédez à http://localhost:6006 dans votre navigateur.

  5. Sélectionnez l'onglet Profile dans le menu déroulant de TensorBoard.

  6. Cliquez sur le bouton Enregistrer le profil dans l'onglet "Profil".

  7. 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

  8. Cliquez sur le bouton Capture lorsque vous êtes prêt à commencer le profilage, puis attendez quelques secondes que le profil soit terminé.

  9. 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.

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 :

  1. Vérifiez qu'aucune de vos charges de travail n'utilise Cloud TPU :

    kubectl get tpu
    
  2. 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.

  3. 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 Google Cloud.

Console

Supprimez le cluster GKE :

  1. Accédez à la page GKE de Cloud Console.

    Accéder à la page GKE

  2. Cochez la case située à côté du cluster que vous souhaitez supprimer.

  3. Cliquez sur Supprimer.

Lorsque vous avez fini d'examiner les données, supprimez le bucket Cloud Storage que vous avez créé au cours de ce tutoriel.

  1. Accédez à la page Cloud Storage de Cloud Console.

    Accéder à la page Cloud Storage

  2. Cochez la case située à côté du bucket que vous souhaitez supprimer.

  3. 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 :

  1. Exécutez la commande suivante pour supprimer votre cluster GKE, en remplaçant cluster-name par le nom de votre cluster et project-name par le nom de votre projet Google Cloud :

    $ gcloud container clusters delete cluster-name --project=project-name
    
  2. Lorsque vous avez terminé l'examen des données, exécutez la commande gsutil pour supprimer le bucket Cloud Storage que vous avez créé dans ce tutoriel. Remplacez bucket-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 :