Cette page a été traduite par l'API Cloud Translation.
Switch to English

Exécuter des applications Cloud TPU sur GKE

Ce guide explique comment:

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

  1. 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.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de 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. 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.

  5. Activez les API suivantes sur Cloud Console :

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.

  1. Ouvrez une fenêtre Cloud Shell.

    Ouvrir Cloud Shell

  2. Créez une variable pour l'ID de votre projet.

    export PROJECT_ID=project-id
    
  3. 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
    
  4. 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 :

  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. Pour cet exemple, sélectionnez la zone us-central1-b.

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

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

  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 devez 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 kubectl 
  2. 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 sur Authorize en bas de la page pour permettre à gcloud d'effectuer des appels d'API GCP avec vos identifiants.

  3. Configurez gcloud avec la zone dans laquelle vous prévoyez d'utiliser une ressource Cloud TPU. Pour ce tutoriel, utilisez la zone us-central1-b:

    $ gcloud config set compute/zone us-central1-b
    
  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
    

    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'application cloud-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 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.

    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"
    

    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 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, 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 :

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

  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
    

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.

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

    Accéder à la page GKE

  2. Dans la barre de navigation de gauche, cliquez sur Workloads (Charges de travail).

  3. Sélectionnez votre tâche. Vous êtes alors dirigé vers une page avec le titre Pods gérés.

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

  1. Suivez la procédure pour afficher l'état de TensorBoard afin de vérifier que l'instance TensorBoard s'exécute dans un conteneur.

  2. Transfert de port vers le pod Kubernetes TensorBoard :

    $ kubectl port-forward pod/resnet-tpu-pod-id 6006
    

    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.

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

  4. Sélectionnez PROFIL dans le menu déroulant situé en haut à droite de la page TensorBoard.

  5. Cliquez sur le bouton CAPTURER LE PROFIL sur la page PROFIL.

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

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

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

    1. Activez les API suivantes sur Cloud Console :

    2. 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
      
    3. 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 variable my-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.

    4. 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
      
    5. 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
      
    6. 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 :

  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.

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

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éé:

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