Gérer les ressources TPU

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

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 la 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 les Cloud TPU

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

Avec gcloud, il existe deux méthodes de provisionnement des TPU:

  1. Utilisation de 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

Il est recommandé de provisionner les 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 une 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 prévoyez d'utiliser des multisegments, consultez l'introduction aux multitranches pour plus d'informations.

Lorsque vous utilisez des tranches multislices, 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 une instance Cloud TPU à l'aide de l'API Create Node

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

Pour déterminer le logiciel de VM TPU à utiliser, consultez la page Images de VM TPU.

Vous pouvez spécifier des configurations de TPU en termes de TensorCores ou de puces TPU. Pour en savoir plus, consultez la section concernant la version de TPU que vous utilisez dans Architecture du 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 votre 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)
Spécifie que le démarrage sécurisé est activé pour les instances TPU. Cela en fait implicitement des 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 votre 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 page Versions de TPU.
topology
Consultez la section Topologie pour connaître les topologies compatibles.
version
Version logicielle du TPU que vous souhaitez utiliser. Pour en savoir plus, consultez la section Versions du logiciel TPU

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

Créer une ressource 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 le champ 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 logicielle 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 utilise curl pour créer un TPU.

$ 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 du 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 installer des binaires sur chaque VM TPU à l'aide de SSH, utilisez l'option --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 en une seule opération, 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=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 tranches multiples, vous pouvez exécuter une commande sur une VM unique en utilisant le nom TPU énuméré, chaque préfixe de tranche et le numéro qui y 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 facultatif --batch-size.

  $ 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
  

Pour utiliser SSH dans le navigateur, procédez 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 de Cloud TPU s'affiche.

Arrêter vos ressources Cloud TPU

Vous pouvez arrêter un seul Cloud TPU afin d'arrêter la facturation de frais, sans perdre la configuration et le logiciel de votre VM. L'arrêt des pods TPU ou des TPU alloués via l'API de ressources en file d'attente n'est pas pris en charge. Pour éviter que des frais ne soient facturés pour les TPU alloués via l'API de ressources en file d'attente, vous devez supprimer le TPU.

Arrêter une instance 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 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, puis cliquez sur DÉMARRER dans la barre de menu en haut de la page.

Démarrer une instance Cloud TPU à l'aide de gcloud

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

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

Démarrer une instance 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, puis cliquez sur START dans la barre de menu en haut de l'écran.

Supprimer une ressource 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 ressource Cloud TPU.

Supprimer une ressource 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, vous pouvez envoyer 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 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 le sous-réseau pour 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 d'exécution du TPU.

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

Vous pouvez également effectuer 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 qui lui permet d'envoyer des requêtes API en votre nom. Les VM TPU utilisent ce compte de service pour appeler les 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 même projet Google Cloud que celui 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 section 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 page Se connecter à des buckets Cloud Storage.

Méthodes SSH de VM personnalisées

  1. 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 vous avez modifié les paramètres réseau par défaut, 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. Se connecter 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.