Guide des utilisateurs de VM Cloud TPU

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

Les VM Cloud TPU s'exécutent sur la machine hôte TPU (la machine connectée à l'appareil Cloud TPU) et offrent des performances et une facilité d'utilisation nettement supérieures lors de l'utilisation de TPU.

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

La version bêta de VM Cloud TPU introduit une nouvelle architecture Cloud TPU. L'architecture actuelle est appelée "nœuds TPU". Pour en savoir plus sur les architectures de nœud Cloud TPU et de VM Cloud TPU, consultez la page Architecture du système.

Configurez un projet GCP.

Après avoir installé la CLI 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 de la CLI Google Cloud.

Préparer un projet GCP

Connectez-vous à votre compte Google. Si vous n'en possédez pas déjà un, vous devez créer un compte. 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 de votre projet à l'aide de gcloud dans Cloud Shell. L'ID de 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 d'utiliser votre projet GCP et d'installer les composants requis pour la VM TPU version bêta.

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

Gérer les TPU

Vous pouvez gérer la VM Cloud TPU à l'aide de gcloud ou curl. Pour en savoir plus, consultez la page Gérer les 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 du Cloud TPU à créer.
version
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 enregistré.
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, europe-west4-a et us-central1-a sont compatibles.
project-id
ID de votre projet GCP.

Champs facultatifs

user
Vous pouvez choisir le nom d'utilisateur utilisé pour l'authentification lors de la connexion à la VM Cloud TPU via SSH en ajoutant 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 à laquelle se 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. Par défaut, il s'agit de la valeur ~/.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 pour autoriser les connexions SSH à l'adresse IP interne de la VM TPU à laquelle vous souhaitez vous connecter.
command
Commande à exécuter sur la VM TPU. La commande est exécutée sur la VM TPU cible, puis se ferme.
tunnel-through-iap
Configurez le tunnel de 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 les 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 un 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 du 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 seul Cloud TPU à 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 de la ressource Cloud TPU à arrêter.
zone
Zone dans laquelle vous avez créé votre Cloud TPU.

Démarrer des 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 de la ressource Cloud TPU à démarrer.
zone
Zone dans laquelle la ressource Cloud TPU a été créée.

Supprimer la VM et les ressources Cloud TPU

Vous pouvez supprimer votre Cloud TPU lorsque vous avez fini de l'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 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 des 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 des 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 des données de profil pour les modèles JAX, consultez la page Profiler des programmes JAX.

Afficher les données de profil

  1. Ouvrir une fenêtre Cloud Shell
  2. Assurez-vous d'avoir installé TensorBoard.
  3. Exécuter TensorBoard
  4. Dans Cloud Shell, cliquez sur le bouton "Aperçu sur le Web", sélectionnez "Modifier le port", puis saisissez 6006.
  5. Cliquez sur "Profil". Une page de présentation s'affiche.
  6. Accéder au lecteur de traces sous les outils

Demander une augmentation de quota de TPU

Cloud TPU alloue le quota par défaut de TPU pour votre projet. Si vous avez besoin d'un quota supérieur, consultez la page 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.

Résoudre les problèmes de configuration de gcloud

Problème

gcloud components update affiche le message d'erreur suivant :

ERROR: (gcloud.components.update)
You cannot perform this action because the gcloud CLI 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 via un gestionnaire de packages. Suivez ces étapes 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 des commandes commençant par gcloud alpha compute tpus tpu-vm affiche les informations suivantes :

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

Cela se produit lorsque le dépôt du composant 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"HEAD"pour la CLI Google Cloud. Si la sortie est différente, la mise à jour n'a pas eu lieu. Si cela se produit, essayez de mettre à jour les composants gcloud avec la commande suivante.

gcloud components update

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

gcloud components reinstall
Problème

La commande 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

Une erreur s'est peut-être produite lors de la propagation de la clé SSH. Déplacez 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 versions V1Alpha1 et V1 des API 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 V2Alpha1 de l'API.
Comment savoir si les TPU utilisent des VM Cloud TPU ?
Effectuez un appel GetNode sur le TPU, puis définissez le champ APIVersion sur V2_ALPHA1.