Gérer les ressources TPU

Cette page explique comment gérer des ressources Cloud TPU à l'aide des éléments suivants:

  • La Google Cloud CLI, qui fournit l'interface de ligne de commande principale à Google Cloud.
  • La console Google Cloud, qui fournit une console de gestion intégrée à vos ressources Google Cloud

Cloud TPU dispose de deux architectures de VM : un nœud TPU et une VM TPU. Les deux architectures de VM sont décrites dans la section Architecture du système. Vous pouvez exécuter les commandes gcloud décrites dans ce document avec les deux configurations TPU. Les commandes gcloud que vous utilisez dépendent de la configuration TPU que vous utilisez. Chaque commande gcloud s'affiche dans une section à onglets. Choisissez l'onglet correspondant à la configuration TPU que vous souhaitez utiliser. La page Web affiche la commande gcloud appropriée. À moins que vous ayez besoin d'utiliser des nœuds TPU, nous vous recommandons d'utiliser des VM TPU. Pour Cloud TPU v4 et versions ultérieures, seule l'architecture de VM TPU est compatible.

Prérequis

Avant d'exécuter ces procédures, vous devez installer la Google Cloud CLI, créer un projet Google Cloud et activer l'API Cloud TPU. Pour obtenir des instructions, consultez la page Configurer un projet et activer l'API Cloud TPU.

Si vous utilisez la Google Cloud CLI, vous pouvez utiliser Google Cloud Shell, une VM Compute Engine ou installer la Google Cloud CLI en local. Google Cloud Shell vous permet d'interagir avec les Cloud TPU sans avoir à installer de logiciel. Google Cloud Shell peut se déconnecter après une période d'inactivité. Si vous exécutez des commandes de longue durée, nous vous recommandons d'installer Google Cloud CLI sur votre ordinateur local. Pour en savoir plus sur la Google Cloud CLI, consultez la documentation de référence sur gcloud.

Provisionner des Cloud TPU

Vous pouvez provisionner un Cloud TPU à l'aide de gcloud, de la console Google Cloud ou de l'API Cloud TPU.

gcloud permet de provisionner les TPU de deux manières:

  1. Utilisation des ressources en file d'attente : gcloud alpha compute tpus queued-resources create
  2. À l'aide de l'API Create Node: gcloud alpha compute tpus tpu-vm create

La bonne pratique consiste à provisionner avec des ressources en file d'attente. Lorsque vous demandez des ressources en file d'attente, la requête est ajoutée à une file d'attente gérée par le service Cloud TPU. Lorsque la ressource demandée devient disponible, elle est attribuée à votre projet Google Cloud pour votre utilisation exclusive immédiate.

Pour créer un TPU à l'aide de ressources en file d'attente, consultez la section Ressources en file d'attente.

Si vous utilisez des multitranches, consultez la page Introduction à la création de multitranches pour en savoir plus.

Lorsque vous utilisez plusieurs tranches, spécifiez les paramètres supplémentaires suivants lorsque vous demandez des ressources en file d'attente:

export NODE_COUNT=node_count
export NODE_PREFIX=your_tpu_prefix # Optional

Créer un Cloud TPU à l'aide de l'API Create Node

Pour créer un TPU à l'aide de l'API Create Node, vous devez exécuter la commande gcloud compute tpus tpu-vm create.

VM TPU

Vous pouvez spécifier des configurations TPU en termes de TensorCore ou de puces TPU. Pour en savoir plus, consultez la section correspondant à la version de TPU que vous utilisez dans Architecture système.

La commande suivante utilise une configuration basée sur TensorCore:

$ gcloud alpha compute tpus tpu-vm create tpu-name \
  --zone=us-central2-b \
  --accelerator-type=v4-8 \
  --version=tpu-software-version

Description des options de commande

zone
Zone dans laquelle vous prévoyez de créer la ressource Cloud TPU.
accelerator-type
Type de Cloud TPU à créer.
version
Version du logiciel TPU.
shielded-secure-boot (facultatif)
Indique que le démarrage sécurisé est activé pour les instances TPU. Cela les transforme implicitement en instances de VM protégées. Consultez la section Qu'est-ce qu'une VM protégée ? pour en savoir plus.

La commande suivante crée un TPU à l'aide de l'API Create Node:

  $ gcloud alpha compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --type=v4 \
    --topology=2x2x1 \
    --version=tpu-software-version

Options requises

tpu-name
Nom de la VM TPU que vous créez.
zone
Zone dans laquelle vous créez la ressource Cloud TPU.
type
Pour en savoir plus sur les types de TPU compatibles, consultez la section Types de TPU.
topology
Consultez la section Topologie pour connaître les topologies compatibles.
version
Version du logiciel TPU que vous souhaitez utiliser. Pour en savoir plus, consultez la section Versions du logiciel TPU

Pour en savoir plus sur les topologies et les types de TPU compatibles, consultez la page Configurations de TPU compatibles.

Nœuds TPU

$ gcloud compute tpus execution-groups create --name=tpu-name \
  --zone=us-central1-a \
  --tf-version=2.12.0 \
  --machine-type=n1-standard-1 \
  --accelerator-type=v3-8

Description des options de commande

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

tf-version
Version de Tensorflow que la commande gcloud installe sur votre VM.

machine-type
Type de machine de la VM Compute Engine à créer.

accelerator-type
Type de Cloud TPU à créer.

Créer un Cloud TPU dans la console Google Cloud

  1. Accédez à la console Google Cloud.
  2. Dans le menu de navigation, sélectionnez Compute Engine > TPU.
  3. Cliquez sur CRÉER UN NŒUD TPU.
  4. Dans le champ Nom, saisissez un nom d'instance TPU.
  5. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.
  6. Sous Paramètres TPU, sélectionnez Architecture de VM TPU ou Architecture de nœud TPU. La configuration du TPU détermine si vous créez le TPU en tant que VM TPU ou en tant que nœud TPU. Pour en savoir plus, consultez la page Architecture du système.
  7. Dans le champ Type de TPU, sélectionnez le type de TPU que vous souhaitez créer.
  8. Dans le champ Version logicielle du TPU, sélectionnez la version du logiciel. Lorsque vous créez une VM Cloud TPU, la version logicielle TPU spécifie la version de l'environnement d'exécution TPU à installer. Lors de la création d'un nœud Cloud TPU, la version logicielle TPU vous permet de choisir le framework de ML installé sur la VM du nœud. Aucun autre paramètre n'est requis. Pour en savoir plus, consultez la page Modèles compatibles.
  9. Cliquez sur CRÉER pour créer vos ressources.

Créer une VM Cloud TPU à l'aide de curl

La commande suivante crée un TPU à l'aide de curl.

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

Champs obligatoires

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

Exécuter un script de démarrage

Vous pouvez exécuter un script de démarrage sur chaque VM TPU en spécifiant le paramètre --metadata startup-script lors de la création de la VM TPU. La commande suivante crée une VM TPU à l'aide d'un script de démarrage.

$ gcloud compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --metadata startup-script='#! /bin/bash
      pip3 install numpy
      EOF'

Se connecter à un Cloud TPU

Vous pouvez vous connecter à un TPU à l'aide de SSH.

VM TPU

Lorsque vous utilisez des VM TPU, vous devez vous connecter explicitement à votre VM TPU à l'aide de SSH.

  • Connectez-vous à votre VM TPU via SSH à l'aide de la commande gcloud compute tpus tpu-vm ssh.

    Lorsque vous demandez des tranches comportant plus de quatre puces, Cloud TPU crée une VM TPU pour chaque groupe de quatre puces.

    Pour installer les binaires ou exécuter du code, vous pouvez vous connecter à chaque VM TPU à l'aide de tpu-vm ssh command.

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}
    

    Pour accéder à une VM TPU spécifique ou pour installer des binaires sur chaque VM TPU avec SSH, utilisez l'indicateur --worker qui suit un index basé sur 0:

    gcloud compute tpus tpu-vm ssh ${TPU_NAME} --worker=1
    

    Lorsque vous disposez de plusieurs VM TPU, utilisez les options --worker=all et --command pour exécuter une commande sur toutes les VM TPU en même temps. Exemple :

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}  --project ${PROJECT_ID} \
    --zone  ${ZONE} \
    --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'
    

    Pour les multitranches, vous pouvez exécuter une commande sur une seule VM (à l'aide du nom "tpu-name" énuméré) ou utiliser les options --node=all, --worker=all et --command pour exécuter la commande sur toutes les VM TPU de toutes les tranches de la multitranche, avec un champ --batch-size facultatif.

    gcloud alpha compute tpus queued-resources ssh ${QUEUED_RESOURCE_ID} \
    --project ${PROJECT_ID} --zone ${ZONE} --node=all --worker=all \
    --command='pip install "jax[tpu]==0.4.20" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html' --batch-size=4
    
    $ gcloud compute tpus tpu-vm ssh tpu-name --zone=zone
  • Utilisez SSH dans votre navigateur en procédant comme suit:

    1. Dans la console Google Cloud, accédez à la page TPU:

      Accéder aux TPU

    2. Dans la liste des VM TPU, cliquez sur SSH sur la ligne de la VM TPU à laquelle vous souhaitez vous connecter.

Nœuds TPU

Par défaut, la commande gcloud que vous utilisez pour créer des nœuds TPU tente automatiquement de se connecter en SSH à votre nœud TPU. Si vous utilisez des nœuds TPU et que vous n'êtes pas connecté à l'instance Compute Engine par la commande gcloud, vous pouvez vous connecter en exécutant la commande suivante:

$ gcloud compute ssh tpu-name \
  --zone=zone

Une fois la VM TPU créée, vous pouvez afficher les journaux du script de démarrage en vous connectant à la VM TPU à l'aide de SSH et en exécutant la commande suivante:

$ cat /var/log/syslog | grep startup-script

Répertorier les ressources Cloud TPU

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

Répertorier les ressources Cloud TPU à l'aide de gcloud

Les commandes à exécuter varient selon que vous utilisez des VM TPU ou des nœuds TPU. Pour en savoir plus, consultez la page Architecture du système.

VM TPU

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

Nœuds TPU

$ gcloud compute tpus execution-groups list --zone=zone

Cette commande répertorie les ressources Cloud TPU dans la zone spécifiée. Si aucune ressource n'est actuellement configurée, la sortie n'affiche que des tirets pour la VM et le TPU. Si une ressource est active et que l'autre ne l'est pas, un message indiquant que l'état n'est pas opérationnel s'affiche. Vous devez démarrer ou redémarrer la ressource inactive.

Lister vos ressources Cloud TPU dans la console Google Cloud

  1. Accédez à la console Google Cloud.

  2. Dans le menu de navigation, sélectionnez Compute Engine > TPU. La console affiche la page "TPU".

Récupérer des informations sur un Cloud TPU

Vous pouvez récupérer des informations sur un Cloud TPU spécifié.

Récupérer des informations sur un Cloud TPU à l'aide de gcloud

Les commandes à exécuter varient selon que vous utilisez des VM TPU ou des nœuds TPU. Pour en savoir plus, consultez la page Architecture du système.

VM TPU

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

Nœuds TPU

$ gcloud compute tpus execution-groups describe tpu-name \
  --zone=zone

Récupérer des informations sur une ressource Cloud TPU dans la console Google Cloud

  1. Accédez à la console Google Cloud.
  2. Dans le menu de navigation, sélectionnez Compute Engine > TPU. La console affiche la page "TPU".
  3. Cliquez sur le nom de votre Cloud TPU. La page d'informations sur Cloud TPU s'affiche.

Arrêter vos ressources Cloud TPU

Vous pouvez arrêter un seul Cloud TPU pour ne plus encourir de frais sans perdre la configuration et les logiciels de votre VM. Il n'est pas possible d'arrêter des pods TPU ou des TPU alloués via l'API des ressources en file d'attente. Pour arrêter d'engendrer des frais pour les TPU alloués via l'API des ressources en file d'attente, vous devez supprimer le TPU.

Arrêter un Cloud TPU à l'aide de gcloud

Les commandes que vous utilisez pour arrêter un Cloud TPU varient selon que vous utilisez des VM ou des nœuds TPU. Pour en savoir plus, consultez la page Architecture du système.

VM TPU

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

Nœuds TPU

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

Arrêter un Cloud TPU dans la console Google Cloud

  1. Accédez à la console Google Cloud.

  2. Dans le menu de navigation, sélectionnez Compute Engine > TPU. La console affiche la page "TPU".

  3. Cochez la case située à côté de votre Cloud TPU, puis cliquez sur Arrêter.

Démarrer des ressources Cloud TPU

Vous pouvez démarrer un Cloud TPU lorsqu'il est arrêté.

Démarrer un Cloud TPU à l'aide de gcloud

Vous pouvez démarrer un Cloud TPU arrêté pour recommencer à l'utiliser.

La commande à utiliser pour démarrer un Cloud TPU arrêté varie selon que vous utilisez des VM ou des nœuds TPU. Pour en savoir plus, consultez la page Architecture du système.

VM TPU

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

Nœuds TPU

$ gcloud compute tpus start tpu-name --zone=zone

Démarrer un Cloud TPU dans la console Google Cloud

  1. Accédez à la console Google Cloud.

  2. Dans le menu de navigation, sélectionnez Compute Engine > TPU. La console affiche la page "TPU".

  3. Cochez la case située à côté de votre Cloud TPU, puis cliquez sur Démarrer.

Supprimer votre VM TPU

La commande à utiliser varie selon que vous utilisez des VM TPU ou des nœuds TPU. Pour en savoir plus, consultez la page Architecture du système.

VM TPU

Supprimez vos tranches de VM TPU à la fin de votre session.

 gcloud compute tpus tpu-vm delete ${TPU_NAME} --project=${PROJECT_ID}
 --zone=${ZONE} --quiet

Description des options de commande

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

Nœuds TPU

$ gcloud compute tpus execution-groups delete tpu-name \
  --zone=zone

Description des options de commande

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

Supprimer un Cloud TPU dans la console Google Cloud

  1. Accédez à la console Google Cloud.

  2. Dans le menu de navigation, sélectionnez Compute Engine > TPU. La console affiche la page "TPU".

  3. Cochez la case située à côté de votre Cloud TPU, puis cliquez sur Supprimer.

Configurations avancées

Ressources réseau personnalisées

Lorsque vous créez le TPU, vous pouvez choisir de spécifier le réseau et/ou un sous-réseau. Pour ce faire, envoyez une commande gcloud ou un appel curl.

Pour spécifier le réseau ou le sous-réseau dans la CLI gcloud, utilisez:

--network [NETWORK] --subnetwork [SUBNETWORK]

Pour spécifier le réseau ou le sous-réseau dans un appel curl, utilisez:

network_config: {network: '[NETWORK]', subnet: '[SUBNETWORK]', enable_external_ips: true}

Réseau

Vous pouvez éventuellement spécifier le réseau à utiliser pour le TPU. S'il n'est pas spécifié, le réseau default est utilisé.

Formats de réseau valides:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-id}/global/networks/{network}
compute/{version}/projects/{proj-##}/global/networks/{network}
projects/{proj-id}/global/networks/{network}
projects/{proj-##}/global/networks/{network}
global/networks/{network}
{network}

Sous-réseau

Vous pouvez spécifier que le sous-réseau doit utiliser un sous-réseau spécifique. Le sous-réseau spécifié doit se trouver dans la même région que la zone dans laquelle le TPU est exécuté.

Formats valides:

https://www.googleapis.com/compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
compute/{version}/projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-id}/regions/{region}/subnetworks/{subnetwork}
projects/{proj-##}/regions/{region}/subnetworks/{subnetwork}
regions/{region}/subnetworks/{subnetwork}
{subnetwork}

Accès privé à Google

Pour vous connecter en SSH aux VM TPU, vous devez soit ajouter des configurations d'accès pour les VM TPU, soit activer l'accès privé à Google pour le sous-réseau auquel les VM TPU sont connectées.

Pour ajouter des configurations d'accès, vous devez définir enable_external_ips. Lorsque vous créez un TPU, enable_external_ips est défini par défaut. Si vous souhaitez désactiver cette fonctionnalité, spécifiez la commande suivante:

--internal-ips

Ou effectuez un appel curl:

network_config: {enable_external_ips: true}

Après avoir configuré l'accès privé à Google, connectez-vous à la VM via SSH.

Compte de service personnalisé

Chaque VM TPU est associée à un compte de service qu'elle utilise pour envoyer des requêtes API en votre nom. Les VM TPU utilisent ce compte de service pour appeler des API Cloud TPU, accéder à Cloud Storage et à d'autres services. Par défaut, votre VM TPU utilise le compte de service Compute Engine par défaut.

Vous pouvez spécifier un compte de service personnalisé lors de la création d'une VM TPU à l'aide de l'option --service-account. Le compte de service doit être défini dans le projet Google Cloud dans lequel vous créez votre VM TPU. Les comptes de service personnalisés utilisés pour les VM TPU doivent disposer du rôle Lecteur TPU pour appeler l'API Cloud TPU. Si le code exécuté dans votre VM TPU appelle d'autres services Google Cloud, il doit disposer des rôles nécessaires pour accéder à ces services.

Lorsque vous créez un TPU, vous pouvez choisir de spécifier un compte de service personnalisé à l'aide de l'option --service-account. Pour en savoir plus sur les comptes de service, consultez la page Comptes de service.

Utilisez les commandes suivantes pour spécifier un compte de service personnalisé.

Créer une VM TPU à l'aide de la CLI gcloud

$ gcloud alpha compute tpus tpu-vm create tpu-name \
    --zone=us-central2-b \
    --accelerator-type=tpu-type \
    --version=tpu-vm-tf-2.16.1-pjrt \
    --service-account=your-service-account

Créer une VM TPU à l'aide de curl

$ curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -d "{accelerator_type: 'v4-8', \
  runtime_version:'tpu-vm-tf-2.16.1-pjrt', \
  network_config: {enable_external_ips: true}, \
  shielded_instance_config: { enable_secure_boot: true }}" \
  service_account: {email: 'your-service-account'} \
  https://tpu.googleapis.com/v2/projects/project-id/locations/us-central2-b/nodes?node_id=node_name

Pour utiliser un compte de service personnalisé, vous devez l'autoriser pour vos buckets Google Cloud Storage. Pour en savoir plus, consultez la section Se connecter à des buckets Cloud Storage.

Méthodes SSH de VM personnalisées

  1. Configurez 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 CLI compute firewall-rules create \
    --network=network allow-ssh \
    --allow=tcp:22
    
  2. Connectez-vous en SSH aux VM TPU.

    $ gcloud compute tpus tpu-vm ssh tpu-name \
    --zone=us-central2-b \
    --project=project-id
    

    Champs obligatoires

    • tpu-name: nom du nœud TPU.
    • zone: emplacement du nœud TPU. Actuellement, seul us-central2-b est accepté.
    • project-id: projet que vous avez créé ci-dessus

    Pour obtenir la liste des champs facultatifs, consultez la documentation de l'API gcloud.