Guide de l'utilisateur de la VM Cloud TPU

Ce guide explique comment configurer un projet Google Cloud Platform pour l'utilisation de VM Cloud TPU. Elle décrit les commandes permettant d'utiliser des VM et des solutions Cloud TPU aux problèmes courants que vous pouvez rencontrer lors de l'utilisation de ces VM.

Les VM Cloud TPU s'exécutent sur la machine hôte TPU (machine connectée à l'appareil Cloud TPU) et offrent de meilleures performances et une plus grande facilité lorsque vous utilisez des TPU.

Si vous débutez avec Cloud TPU, consultez le guide du débutant consacré aux TPU.

L'aperçu de la VM Cloud TPU introduit une nouvelle architecture Cloud TPU. L'architecture actuelle s'appelle "nœuds TPU". Pour plus d'informations sur les architectures de VM Cloud TPU et de VM Cloud TPU, consultez la page Architecture système.

Configurer un projet GCP

Après avoir installé le SDK Google Cloud, installez les composants alpha pour gcloud à l'aide de la commande suivante:

gcloud components install alpha

Pour en savoir plus sur les composants gcloud, consultez la page Gérer les composants du SDK.

Préparer un projet GCP

Connectez-vous à votre compte Google. Si vous n'avez pas encore de compte, créez-en un. Dans Google Cloud Console, sélectionnez ou créez un projet Cloud à partir de la page de sélection du projet. Assurez-vous que la facturation est activée pour votre projet. Définissez l'ID du projet à l'aide de la commande gcloud dans Cloud Shell. L'ID du projet est le nom de votre projet, affiché dans Cloud Console.

$ gcloud config set project project-id

Activer l'API Cloud TPU

Activez l'API Cloud TPU à l'aide de la commande gcloud suivante dans Cloud Shell. Vous pouvez également l'activer dans Google Cloud Console.

$ gcloud services enable tpu.googleapis.com

Configurer la commande gcloud

Exécutez les commandes suivantes pour configurer gcloud afin qu'il utilise votre projet GCP et installez les composants nécessaires à l'aperçu de la VM TPU.

$ gcloud config set account your-email-account
$ gcloud config set project your-project

Gérer les TPU

Vous pouvez gérer une VM Cloud TPU à l'aide de gcloud ou curl. Pour en savoir plus, consultez la page Gérer des Cloud TPU.

Créer une VM Cloud TPU avec gcloud

$ gcloud alpha compute tpus tpu-vm create tpu-name \
  --zone=zone \
  --accelerator-type=v3-8 \
  --version=v2-alpha

Champs obligatoires

zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.
accelerator-type
Type de Cloud TPU à créer.
version
La version d'exécution de Cloud TPU.

Créer une VM Cloud TPU avec curl

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" -d "{accelerator_type: 'v2-8', \
  runtime_version:'[runtime_version]', \
  network_config: {enable_external_ips: true}}" \
  https://tpu.googleapis.com/v2alpha1/projects/[project]/locations/[zone]/nodes?node_id=[node_name]

Champs obligatoires

runtime_version
Version d'exécution que vous souhaitez utiliser.
project
Nom du projet GCP inscrit.
zone
Zone dans laquelle vous créez votre Cloud TPU.
node_name
Nom de la VM TPU que vous créez.

Se connecter à une VM Cloud TPU

  1. (facultatif). Configurer un pare-feu pour SSH

Le réseau par défaut est préconfiguré pour autoriser l'accès SSH à toutes les VM. Si vous n'utilisez pas le réseau par défaut ou si les paramètres réseau par défaut ont été modifiés, vous devrez peut-être activer explicitement l'accès SSH en ajoutant une règle de pare-feu:

$ gcloud compute firewall-rules create --network=network allow-ssh --allow=tcp:22
  1. Se connecter en SSH aux VM TPU
$ gcloud alpha compute tpus tpu-vm ssh tpu-name --zone zone --project project-id

Champs obligatoires

tpu_name
Nom de la VM TPU à laquelle vous vous connectez.
zone
Zone dans laquelle vous créez votre Cloud TPU. Actuellement, les langues europe-west4-a et us-central1-a sont acceptées.
project-id
ID de votre projet GCP.

Champs facultatifs

user
Vous pouvez choisir le nom d'utilisateur utilisé pour vous connecter lors de la connexion à la VM Cloud TPU via SSH, en utilisant le préfixe $USER@ au nom du TPU, par exemple : my-email-account@tpu-node-1.
worker
Pour les pods Cloud TPU, vous pouvez choisir la VM de nœud de calcul vers laquelle vous souhaitez vous connecter en SSH. La valeur par défaut est le nœud de calcul 0, la première VM associée au pod TPU.
ssh-key-file
Chemin d'accès au fichier de clé SSH. La valeur par défaut est ~/.ssh/google_compute_engine.
internal-ip
Connectez-vous aux VM TPU à l'aide d'une adresse IP interne. Pour que cette connexion fonctionne, vous devez configurer vos réseaux et votre pare-feu afin d'autoriser les connexions SSH à l'adresse IP interne de la VM TPU à laquelle vous souhaitez vous connecter.
command
Une commande à exécuter sur la VM TPU. La commande est exécutée sur la VM TPU cible, puis se ferme.
tunnel-through-iap
Tunnelez la connexion SSH via Cloud Identity-Aware Proxy pour le transfert TCP. Pour en savoir plus, consultez la page [Présentation du transfert TCP](https://cloud.google.com/iap/docs/tcp-forwarding-overview).

Pour vous connecter en SSH à d'autres VM TPU associées au pod TPU, ajoutez --worker ${WORKER_NUMBER} dans la commande, où WORKER_NUMBER est un index basé sur 0.

Répertorier vos ressources Cloud TPU

Vous pouvez répertorier tous vos Cloud TPU dans une zone spécifiée.

$ gcloud alpha compute tpus tpu-vm list --zone=zone

Champs obligatoires

zone
Zone dans laquelle vous prévoyez de créer votre Cloud TPU.

Cette commande répertorie les ressources Cloud TPU dans la zone spécifiée. Si aucune ressource n'est actuellement configurée, la sortie affiche uniquement les tirets de la VM et du TPU.

Récupérer des informations sur votre ressource Cloud TPU

Vous pouvez récupérer des informations sur un Cloud TPU spécifique à l'aide de la commande suivante.

$ gcloud alpha compute tpus tpu-vm describe tpu-name \
  --zone=zone

Champs obligatoires

tpu-name
Nom de la ressource Cloud TPU à créer.
zone
Zone dans laquelle votre Cloud TPU a été créé.

Arrêter vos ressources Cloud TPU

Vous pouvez arrêter un Cloud TPU unique à l'aide de la commande suivante. Vous ne pouvez pas arrêter un pod TPU.

$ gcloud alpha compute tpus tpu-vm stop tpu-name \
  --zone=zone

Champs obligatoires

tpu-name
Nom du Cloud TPU à arrêter.
zone
Zone dans laquelle vous avez créé votre Cloud TPU.

Démarrer vos ressources Cloud TPU

Si votre Cloud TPU a été arrêté, vous pouvez le redémarrer à l'aide de la commande suivante.

$ gcloud alpha compute tpus tpu-vm start tpu-name --zone  zone

Description des options de commande

tpu-name
Nom du Cloud TPU à démarrer.
zone
Zone dans laquelle le Cloud TPU a été créé.

Supprimer la VM et vos ressources Cloud TPU

Vous pouvez supprimer votre Cloud TPU lorsque vous avez fini de les utiliser.

$ gcloud alpha compute tpus tpu-vm delete tpu-name \
  --zone=zone

Champs obligatoires

zone
Zone dans laquelle votre Cloud TPU a été créé.

Capturer les métriques de performances

Vous pouvez capturer un profil de performances à l'aide d'un script de ligne de commande ou à l'aide de TensorBoard. Pour obtenir des instructions sur l'installation de TensorBoard, consultez la page Configuration de TensorBoard.

Pour les modèles TensorFlow, vous pouvez capturer automatiquement les données de profil à l'aide de la méthode de rappel de profilage TensorFlow standard.

Pour capturer manuellement les données de profil pour les modèles TensorFlow, exécutez la commande suivante sur votre VM TPU:

$ python3 -c "import tensorflow as tf; tf.profiler.experimental.client.trace('grpc://localhost:port', 'gs://model-dir', 1000)"

Pour capturer les données de profil pour les modèles PyTorch à l'aide de la ligne de commande, exécutez la commande suivante sur votre VM TPU:

$ python3 -c "import torch_xla.debug.profiler as xp; xp.trace('localhost:port', '/tmp/tb', 1000)"

Pour savoir comment capturer les données de profil pour les modèles JAX, consultez la page Profiler des programmes AJAX.

Afficher les données de profil

  1. Ouvrir Cloud Shell
  2. Vérifiez que vous avez installé TensorBoard.
  3. Exécuter TensorBoard
  4. Dans Cloud Shell, cliquez sur le bouton "Aperçu sur le Web", puis sélectionnez "Modifier le port" et saisissez 6006.
  5. Cliquez sur "Profil". Une page de présentation s'affiche.
  6. Accéder au lecteur de traces sous "Outils"

Demander une augmentation de quota TPU

Cloud TPU attribue le quota TPU par défaut à votre projet. Si vous avez besoin d'espace supplémentaire, consultez la section Demander une augmentation de quota.

Générer et afficher des informations de profil

Vous pouvez générer des informations de profil et utiliser TensorBoard pour visualiser les métriques d'entraînement.

Dépannage de la configuration gcloud

Problème

gcloud components update affiche le message d'erreur suivant:

ERROR: (gcloud.components.update)
You cannot perform this action because the Cloud SDK component manager
is disabled for this installation.
Solution

Pour utiliser gcloud avec une VM TPU, vous devez utiliser une installation gcloud qui n'est pas gérée par le biais d'un gestionnaire de packages. Procédez comme suit pour installer gcloud à partir du code source:

sudo apt-get remove google-cloud-sdk
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-311.0.0-linux-x86_64.tar.gz
tar -xzf google-cloud-sdk-311.0.0-linux-x86_64.tar.gz
./google-cloud-sdk/install.sh
source ~/.bashrc
Problème

L'exécution de toute commande commençant par gcloud alpha compute tpus tpu-vm affiche les informations suivantes:

ERROR: (gcloud.alpha.compute.tpus) Invalid choice: 'tpu-vm'.
Solution

Cette erreur se produit lorsque le dépôt des composants n'a pas été correctement mis à jour. Pour le vérifier, exécutez la commande gcloud --version. La première ligne de la sortie doit être "Google Cloud SDK HEAD"; Si le résultat est différent, la mise à jour n'a pas eu lieu. Si cela se produit, essayez de mettre à jour les composants gcloud à l'aide de la commande suivante.

gcloud components update

Si vous obtenez toujours la même erreur, essayez de réinstaller gcloud à l'aide de la commande suivante:

gcloud components reinstall
Problème

gcloud alpha compute tpus tpu-vm ssh ${TPU_NAME} --zone ${ZONE} affiche le message d'erreur suivant:

Waiting for SSH key to propagate.
ssh: connect to host 34.91.136.59 port 22: Connection timed out
ssh: connect to host 34.91.136.59 port 22: Connection timed out
ssh: connect to host 34.91.136.59 port 22: Connection timed out
ERROR: (gcloud.alpha.compute.tpus.tpu-vm.ssh) Could not SSH into the instance.  It is possible that your SSH key has not propagated to the instance yet. Try running this command again.  If you still cannot connect, verify that the firewall and instance are set to accept ssh traffic.
Solution

La propagation de la clé SSH présente peut-être un problème. Essayez de déplacer les clés générées automatiquement vers un emplacement de sauvegarde pour forcer gcloud à les recréer:

mv ~/.ssh/google_compute_engine ~/.ssh/old-google_compute_engine
mv ~/.ssh/google_compute_engine.pub ~/.ssh/old-google_compute_engine.pub

Questions fréquentes

Puis-je utiliser les API V1alpha1 et V1 pour gérer les VM Cloud TPU ?
La méthode "Get/List" est autorisée, mais les mutations ne sont disponibles que dans la version 2 de l'API V2.Alpha1.
Comment savoir si les TPU utilisent des VM Cloud TPU ?
Effectuez un appel GetNode sur le TPU, définissez le champ APIVersion sur V2_ALPHA1.