Gestisci risorse TPU

Questa pagina descrive come gestire le risorse Cloud TPU utilizzando:

  • Google Cloud CLI, che fornisce l'interfaccia a riga di comando principale per Google Cloud.
  • La console Google Cloud, che fornisce una console di gestione integrata per le risorse Google Cloud.

Prerequisiti

Prima di eseguire queste procedure, devi installare Google Cloud CLI, creare un progetto Google Cloud e abilitare l'API Cloud TPU. Per le istruzioni, consulta Configurare un progetto e abilitare l'API Cloud TPU.

Se usi Google Cloud CLI, puoi usare Google Cloud Shell, una VM di Compute Engine, oppure installare Google Cloud CLI in locale. Google Cloud Shell ti consente di interagire con le Cloud TPU senza dover installare alcun software. Google Cloud Shell potrebbe disconnettersi dopo un periodo di inattività. Se esegui comandi a lunga esecuzione, ti consigliamo di installare Google Cloud CLI sulla tua macchina locale. Per maggiori informazioni su Google Cloud CLI, consulta la documentazione di riferimento gcloud.

Esegui il provisioning delle Cloud TPU

Puoi eseguire il provisioning di una Cloud TPU utilizzando gcloud, la console Google Cloud o l'API Cloud TPU.

Con gcloud, esistono due metodi per il provisioning delle TPU:

  1. Utilizzo delle risorse in coda: gcloud alpha compute tpus queued-resources create
  2. Utilizzo dell'API Create Node: gcloud compute tpus tpu-vm create

La best practice prevede il provisioning delle TPU utilizzando risorse in coda. Quando richiedi risorse in coda, la richiesta viene aggiunta a una coda gestita dal servizio Cloud TPU. Quando la risorsa richiesta diventa disponibile, viene assegnata al tuo progetto Google Cloud per un uso esclusivo immediato.

Per creare una TPU utilizzando le risorse in coda, consulta Risorse in coda.

Se utilizzerai Multislice, consulta l'introduzione a Multislice per ulteriori informazioni.

Se utilizzi la sezione multisezione, specifica i seguenti parametri aggiuntivi quando richiedi risorse in coda:

export NODE_COUNT=node_count
export NODE_PREFIX=your_tpu_prefix # Optional
dove
${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.

crea una Cloud TPU utilizzando l'API Create Node

Per creare una TPU utilizzando l'API Create Node, esegui il comando gcloud compute tpus tpu-vm create.

Per determinare quale software per VM TPU utilizzare, consulta Immagini VM TPU.

Puoi specificare le configurazioni TPU in termini di TensorCore o chip TPU. Per ulteriori informazioni, consulta la sezione relativa alla versione di TPU che stai utilizzando in Architettura di sistema.

Il comando seguente utilizza una configurazione basata su TensorCore:

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

Descrizioni flag comando

zone
La zona in cui prevedi di creare la Cloud TPU.
accelerator-type
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per maggiori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.
version
La versione del software TPU.
shielded-secure-boot (facoltativo)
Specifica che le istanze TPU vengono create con l'avvio protetto abilitato. Questo le rende implicitamente istanze di Shielded VM. Consulta Cos'è la Shielded VM? per ulteriori informazioni.

Il comando seguente crea una TPU con una topologia specifica:

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

Flag obbligatori

tpu-name
Il nome della VM TPU che stai creando.
zone
La zona in cui stai creando la Cloud TPU.
type
La versione della Cloud TPU che vuoi creare. Per maggiori informazioni sulle versioni TPU, consulta la pagina relativa alle versioni TPU.
topology
Consulta la sezione relativa alla topologia per le topologie supportate.
version
La versione del software TPU che vuoi utilizzare. Per maggiori informazioni, consulta la pagina relativa alle versioni software TPU

Per ulteriori informazioni sui tipi di TPU e le topologie supportati, consulta la pagina relativa alle versioni TPU.

Creazione di una Cloud TPU nella console Google Cloud

  1. Vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic su CREA NODO TPU.

  3. Nella casella Nome, digita un nome di istanza TPU.

  4. Nella casella Zona, seleziona la zona in cui creare la TPU.

  5. Nella casella Tipo TPU, seleziona il tipo di acceleratore che stai utilizzando. Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per ulteriori informazioni sui tipi di acceleratori supportati per ogni versione di TPU, consulta Versioni TPU.

  6. Per Versione software TPU, seleziona la versione software. Quando crei una VM Cloud TPU, la versione software TPU specifica la versione del runtime TPU da installare. Durante la creazione di una Cloud TPU, la versione del software TPU consente di scegliere il framework ML installato sulla VM TPU. Non sono necessarie altre impostazioni. Per ulteriori informazioni, vedi Modelli supportati.

  7. Fai clic su CREA per creare le tue risorse.

Creazione di una VM Cloud TPU utilizzando curl in corso...

Il seguente comando utilizza curl per creare una 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

Campi obbligatori

runtime_version
La versione del runtime Cloud TPU che vuoi utilizzare.
project
Il nome del tuo progetto Google Cloud registrato.
zone
La zona in cui stai creando la Cloud TPU.
node_name
Il nome della VM TPU che stai creando.

Esegui uno script di avvio

Puoi eseguire uno script di avvio su ogni VM TPU specificando il parametro --metadata startup-script durante la creazione della VM TPU. Il seguente comando crea una VM TPU utilizzando uno script di avvio.

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

Connessione a una Cloud TPU

Devi connetterti esplicitamente alla VM TPU tramite SSH.

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

Quando richiedi sezioni con più di 4 chip, Cloud TPU crea una VM TPU per ogni gruppo di 4 chip.

Per installare i programmi binari o l'esecuzione del codice, puoi connetterti a ogni VM TPU utilizzando tpu-vm ssh command.

  $ gcloud compute tpus tpu-vm ssh tpu-name
  

Per connetterti a una VM TPU specifica o per installare programmi binari su ogni VM TPU mediante SSH, utilizza il flag --worker che segue un indice basato su 0:

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

Per eseguire un comando su tutte le VM TPU con un singolo comando, utilizza i flag --worker=all e --command per eseguire un comando contemporaneamente su tutte le VM TPU. Ad esempio:

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

Per il multislice, puoi eseguire un comando su una singola VM utilizzando il nome tpu enumerato, il prefisso di ogni sezione e il numero aggiunto oppure utilizzare i flag --node=all, --worker=all e --command per eseguire il comando su tutte le VM TPU in tutte le sezioni, con un campo --batch-size facoltativo.

  $ 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
  

Utilizza SSH nel browser procedendo nel seguente modo:

  1. Nella console Google Cloud, vai alla pagina TPU:

    Vai alle TPU

  2. Nell'elenco delle VM TPU, fai clic su SSH nella riga della VM TPU a cui vuoi connetterti.

Elenco delle risorse Cloud TPU

Puoi elencare tutte le tue Cloud TPU in una zona specificata.

Elenco delle risorse Cloud TPU utilizzando gcloud

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

Questo comando elenca le risorse Cloud TPU nella zona specificata. Se al momento non sono configurate risorse, l'output mostrerà solo trattini per la VM e la TPU. Se una risorsa è attiva e l'altra non lo è, verrà visualizzato un messaggio che indica che lo stato non è integro. Devi avviare o riavviare qualsiasi risorsa non in esecuzione.

Elenco delle risorse Cloud TPU nella console Google Cloud

Vai alle TPU

Tutte le TPU di cui hai eseguito il provisioning vengono visualizzate nell'output.

Recupero delle informazioni su Cloud TPU

Puoi recuperare informazioni su una Cloud TPU specificata.

Recupero delle informazioni su una Cloud TPU utilizzando gcloud

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

Recupero delle informazioni su una Cloud TPU nella console Google Cloud

  1. Vai alla pagina TPU:

    Vai alle TPU

  2. Fai clic sul nome della tua Cloud TPU. Viene visualizzata la pagina dei dettagli di Cloud TPU.

Arresto delle risorse Cloud TPU

Puoi arrestare una singola Cloud TPU per evitare addebiti senza perdere la configurazione e il software della VM. L'arresto delle TPU o dei pod TPU allocati tramite l'API delle risorse in coda non è supportato. Per interrompere il pagamento di addebiti per le TPU allocate tramite l'API delle risorse in coda, devi eliminare la TPU.

Arresto di una Cloud TPU mediante gcloud

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

Arresto di una Cloud TPU nella console Google Cloud

  1. Vai alla pagina TPU:

    Vai alle TPU

  2. Seleziona la casella di controllo accanto al Cloud TPU e fai clic su INTERROMPI dalla barra dei menu nella parte superiore della pagina.

Avvio delle risorse Cloud TPU

Puoi avviare una Cloud TPU quando è arrestata.

  1. Seleziona la casella di controllo accanto al Cloud TPU e fai clic su AVVIA dalla barra dei menu nella parte superiore della pagina.

Avvio di una Cloud TPU utilizzando gcloud

Puoi avviare una Cloud TPU arrestata per riprendere a utilizzarla.

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

Avvio di una Cloud TPU nella console Google Cloud

  1. Vai alla pagina TPU:

    Vai alle TPU

  2. Seleziona la casella di controllo accanto al tuo Cloud TPU e fai clic su START dalla barra dei menu nella parte superiore dello schermo.

Eliminazione di una Cloud TPU

Elimina le sezioni di VM TPU alla fine della sessione.

Eliminazione di una Cloud TPU utilizzando gcloud

$ gcloud compute tpus tpu-vm delete ${TPU_NAME} \
   --project=project-id
   --zone=zone
   --quiet

Descrizioni flag comando

zone
La zona in cui prevedi di eliminare la Cloud TPU.

Eliminazione di una Cloud TPU nella console Google Cloud

  1. Vai alla pagina TPU:

    Vai alle TPU

  2. Seleziona la casella di controllo accanto alla Cloud TPU e fai clic su Elimina.

Configurazioni avanzate

Risorse di reti personalizzate

Quando crei la TPU, puoi scegliere di specificare la rete e/o una subnet. Puoi farlo inviando un comando gcloud o una chiamata curl.

Per specificare la rete o la subnet nell'interfaccia a riga di comando gcloud, utilizza:

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

Per specificare la rete o la subnet in una chiamata curl, usa:

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

Rete

Facoltativamente, puoi specificare la rete da utilizzare per la TPU. Se non specificata, viene utilizzata la rete default.

Formati di rete validi:

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}

Subnet

Puoi specificare la subnet in modo da utilizzarne una specifica. La subnet specificata deve trovarsi nella stessa regione della zona in cui viene eseguita la TPU.

Formati validi:

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}

Accesso privato Google

Per accedere tramite SSH alle VM TPU, devi aggiungere configurazioni di accesso per le VM TPU o attivare l'accesso privato Google per la subnet a cui sono connesse le VM TPU.

Per aggiungere configurazioni di accesso, è necessario impostare enable_external_ips. Quando crei una TPU, l'impostazione predefinita è enable_external_ips. Se vuoi disattivare questa opzione, specifica il seguente comando:

--internal-ips

Oppure utilizza una chiamata curl:

network_config: {enable_external_ips: true}

Dopo aver configurato l'accesso privato Google, connettiti alla VM tramite SSH.

Account di servizio personalizzato

A ogni VM TPU è associato un account di servizio che utilizza per effettuare richieste API per tuo conto. Le VM TPU utilizzano questo account di servizio per chiamare le API Cloud TPU, accedere a Cloud Storage e ad altri servizi. Per impostazione predefinita, la VM TPU utilizza l'account di servizio predefinito di Compute Engine.

Puoi specificare un account di servizio personalizzato quando crei una VM TPU utilizzando il flag --service-account. L'account di servizio deve essere definito nello stesso progetto Google Cloud in cui crei la VM TPU. Gli account di servizio personalizzati utilizzati per le VM TPU devono avere il ruolo Visualizzatore TPU per chiamare l'API Cloud TPU. Se il codice in esecuzione nella VM TPU chiama altri servizi Google Cloud, deve disporre dei ruoli necessari per accedere a questi servizi.

Quando crei una TPU, puoi scegliere di specificare un account di servizio personalizzato utilizzando il flag --service-account. Per ulteriori informazioni sugli account di servizio, consulta Account di servizio.

Utilizza i comandi seguenti per specificare un account di servizio personalizzato.

Crea una VM TPU utilizzando l'interfaccia a riga di comando 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

Crea una VM TPU utilizzando 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

Per utilizzare un account di servizio personalizzato, devi autorizzarlo per i bucket Google Cloud Storage. Per maggiori informazioni, consulta Connessione ai bucket Cloud Storage.

Metodi SSH per VM personalizzate

  1. Configurare un firewall per SSH.

    La rete predefinita è preconfigurata per consentire l'accesso SSH a tutte le VM. Se non utilizzi la rete predefinita o hai modificato le impostazioni di rete predefinite, potrebbe essere necessario abilitare in modo esplicito l'accesso SSH aggiungendo una regola firewall:

    $ gcloud CLI compute firewall-rules create \
     --network=network allow-ssh \
     --allow=tcp:22
    
  2. Connettiti alle VM TPU tramite SSH.

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

    Campi obbligatori

    • tpu-name: nome della VM TPU.
    • zone: la zona in cui hai creato la VM TPU.
    • project-id: il nome del tuo progetto Google Cloud.

    Per un elenco dei campi facoltativi, consulta la documentazione dell'API gcloud.