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 l'environnement Cloud TPU.

Si vous utilisez la Google Cloud CLI, vous pouvez exécuter des commandes à l'aide de Cloud Shell, d'une VM Compute Engine ou de votre ordinateur local. Cloud Shell vous permet d'interagir avec les Cloud TPU sans avoir à installer de logiciel. Cloud Shell se déconnecte 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.

Il existe deux méthodes de provisionnement des TPU à l'aide de gcloud:

  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 en savoir plus, consultez la section Ressources en file d'attente gérées.

Lorsque vous utilisez des tranches multitranches, vous devez utiliser des ressources en file d'attente et spécifier les paramètres supplémentaires suivants:

export NODE_COUNT=node_count
export NODE_PREFIX=your_tpu_prefix # Optional

où :

  • ${NODE_COUNT} est le nombre de tranches à créer.
  • ${NODE_PREFIX} est le préfixe que vous spécifiez pour générer les noms de chaque tranche. Un numéro est ajouté au préfixe pour chaque secteur. Par exemple, si vous définissez ${NODE_PREFIX} sur mySlice, les tranches sont nommées "mySlice-0" et "mySlice-1", en continuant de manière numérique pour chaque tranche.

Pour en savoir plus sur les multitranches, consultez la section Introduction aux multitranches.

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

Lors de la création d'une ressource Cloud TPU, vous devez spécifier l'image de la VM TPU (également appelée version du logiciel TPU). Pour déterminer l'image de VM à utiliser, consultez la section Images de VM TPU.

Vous devez également spécifier la configuration du 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.

gcloud

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

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 TPU que vous souhaitez utiliser. Pour en savoir plus, consultez la section Versions de TPU.
topology
Disposition physique des puces TPU, spécifiant le nombre de puces dans chaque dimension. Pour en savoir plus sur les topologies compatibles avec chaque version de TPU, consultez la section Versions de TPU.
version
Version logicielle du TPU que vous souhaitez utiliser. Pour en savoir plus, consultez la section Versions du logiciel TPU.

Console

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

    Accéder aux TPU

  2. Cliquez sur Créer un TPU.

  3. Dans le champ Nom, saisissez le nom du 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 un type d'accélérateur. 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 du logiciel TPU, sélectionnez une 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. Pour en savoir plus, consultez la section Images de VM TPU.

  7. Cliquez sur Créer pour créer vos ressources.

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 l'option --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

gcloud

Connectez-vous à votre Cloud TPU à l'aide de SSH:

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

Lorsque vous demandez une tranche plus grande qu'un seul hôte, Cloud TPU crée une VM TPU pour chaque hôte. Le nombre de puces TPU par hôte dépend de la version de TPU.

Pour installer des binaires ou exécuter du code, connectez-vous à 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 à 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 en une seule commande sur toutes les VM TPU, utilisez les options --worker=all et --command:

$ 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 seule VM en utilisant le nom de TPU énuméré, auquel est ajouté le préfixe de tranche et le numéro. Pour exécuter une commande sur toutes les VM TPU de toutes les tranches, utilisez les options --node=all, --worker=all et --command, avec l'option --batch-size facultative.

$ 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

Console

Pour vous connecter à vos TPU dans la console Google Cloud, utilisez "SSH dans le navigateur" :

  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.

Lister vos ressources Cloud TPU

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

gcloud

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

Console

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

Accéder aux TPU

Récupérer des informations sur votre Cloud TPU

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

gcloud

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

Console

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

    Accéder aux TPU

  2. Cliquez sur le nom de votre Cloud TPU. La console affiche la page des détails de Cloud TPU.

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.

gcloud

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

Console

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

    Accéder aux TPU

  2. Cochez la case à côté de votre Cloud TPU.

  3. Cliquez sur Arrêter.

Démarrer vos ressources Cloud TPU

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

gcloud

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

Console

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

    Accéder aux TPU

  2. Cochez la case à côté de votre Cloud TPU.

  3. Cliquez sur Démarrer.

Supprimer un Cloud TPU

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

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.

Console

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

    Accéder aux TPU

  2. Cochez la case à côté de votre Cloud TPU.

  3. Cliquez sur Supprimer.

Configurations avancées

Spécifier des ressources réseau personnalisées

Lorsque vous créez le TPU, vous pouvez choisir de spécifier un réseau ou un sous-réseau.

gcloud

Pour spécifier le réseau ou le sous-réseau à l'aide de la CLI gcloud, utilisez les options de commande suivantes:

--network NETWORK --subnetwork SUBNETWORK

curl

Pour spécifier le réseau ou le sous-réseau dans un appel curl, ajoutez les paramètres suivants au corps de la requête:

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 un sous-réseau spécifique à utiliser pour le TPU. 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}

Activer l'accès privé à Google

Pour vous connecter à des VM TPU à l'aide de SSH, 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é, activez les adresses IP internes:

gcloud

Utilisez l'option --internal-ips lors de la création d'un TPU:

--internal-ips

curl

Ajoutez les paramètres suivants au corps de la requête:

network_config: {enable_external_ips: false}

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

Associer un 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 et accéder à Cloud Storage et à d'autres services. Par défaut, votre VM TPU utilise le compte de service Compute Engine par défaut.

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

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

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

Activer les méthodes SSH 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 compute tpus tpu-vm 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.