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

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 compute tpus tpu-vm create

La bonne pratique consiste à provisionner des TPU à l'aide de 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 l'introduction à cette fonctionnalité 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
${NODE_COUNT} is the number of slices to create and
${NODE_PREFIX} is the prefix you specify to generate names for each slice.
A number is appended to the prefix for each slice. For example if you set
${NODE_PREFIX} to mySlice, the slices are named: mySlice-0, mySlice-1,
and so on.

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.

Pour déterminer le logiciel de VM TPU à utiliser, consultez la section Images de 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 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
Le type d'accélérateur spécifie la version et la taille de la ressource Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez la section Versions de TPU.
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 avec une topologie spécifique:

$ gcloud 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
Version de la ressource Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les versions de TPU, consultez la section Versions 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 Versions de TPU.

Créer un Cloud TPU dans la console Google Cloud

  1. Accédez à la page TPU:

    Accéder aux TPU

  2. Cliquez sur CRÉER UN NŒUD TPU.

  3. Dans le champ Nom, saisissez un nom d'instance TPU.

  4. Dans le champ Zone, sélectionnez la zone dans laquelle vous souhaitez créer le TPU.

  5. Dans la zone TPU type (Type de TPU), sélectionnez le type d'accélérateur que vous utilisez. Le type d'accélérateur spécifie la version et la taille de la ressource Cloud TPU que vous souhaitez créer. Pour en savoir plus sur les types d'accélérateurs compatibles avec chaque version de TPU, consultez la section Versions de TPU.

  6. 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 Cloud TPU, la version du logiciel TPU vous permet de choisir le framework de ML installé sur la VM TPU. Aucun autre paramètre n'est requis. Pour en savoir plus, consultez la page Modèles compatibles.

  7. 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 devez vous connecter explicitement à votre VM TPU à l'aide de SSH.

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

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 vous connecter à une VM TPU spécifique ou pour installer des binaires sur chaque VM TPU à l'aide de SSH, utilisez l'indicateur --worker qui suit un index basé sur 0:

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

Pour exécuter une commande sur toutes les VM TPU à l'aide d'une seule commande, utilisez les options --worker=all et --command afin d'exécuter une commande sur toutes les VM TPU en même temps. Exemple :

  $ gcloud compute tpus tpu-vm ssh ${TPU_NAME}
    --project=your_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é, de chaque préfixe de tranche et du numéro qui lui est ajouté, ou utiliser les options --node=all, --worker=all et --command pour exécuter la commande sur toutes les VM TPU de toutes les tranches, avec un champ --batch-size facultatif.

  $ gcloud 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
  

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.

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

$ gcloud compute tpus tpu-vm 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

Accéder aux TPU

Tous vos TPU provisionnés s'affichent dans la sortie.

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

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

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

  1. Accédez à la page TPU:

    Accéder aux TPU

  2. 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 arrêter la facturation de frais sans perdre la configuration et le logiciel 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

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

Arrêter un Cloud TPU dans la console Google Cloud

  1. Accédez à la page TPU:

    Accéder aux TPU

  2. Cochez la case en regard de votre Cloud TPU et cliquez sur STOP (ARRÊTER) dans la barre de menu en haut de la page.

Démarrer des ressources Cloud TPU

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

  1. Cochez la case en regard de votre Cloud TPU et cliquez sur DÉMARRER dans la barre de menu en haut de la page.

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

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

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

Démarrer un Cloud TPU dans la console Google Cloud

  1. Accédez à la page TPU:

    Accéder aux TPU

  2. Cochez la case à côté de votre Cloud TPU et cliquez sur START dans la barre de menu en haut de l'écran.

Supprimer un Cloud TPU

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

Supprimer un Cloud TPU à l'aide de gcloud

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

Supprimer un Cloud TPU dans la console Google Cloud

  1. Accédez à la page TPU:

    Accéder aux TPU

  2. 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 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 vous avez modifié les paramètres réseau par défaut, vous devrez peut-être explicitement activer 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 aux VM TPU à l'aide de SSH.

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

    Champs obligatoires

    • tpu-name: nom de la VM TPU.
    • zone: zone dans laquelle vous avez créé la VM TPU.
    • project-id : le nom de votre projet Google Cloud

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