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.

Cloud TPU ha due architetture VM: Nodo TPU e VM TPU. Le due architetture VM sono descritte in Architettura di sistema. Puoi utilizzare i comandi gcloud descritti in questo documento con entrambe le configurazioni TPU. I comandi gcloud che utilizzi dipendono dalla configurazione TPU in uso. Ogni comando gcloud è visualizzato in una sezione a schede. Scegli la scheda relativa alla configurazione TPU che vuoi utilizzare e la pagina web mostrerà il comando gcloud appropriato. Se non sai di dover utilizzare i nodi TPU, ti consigliamo di utilizzare le VM TPU. Per Cloud TPU v4 e versioni successive, è supportata solo l'architettura delle VM TPU.

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

La best practice prevede il provisioning con 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

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.

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

Nodi 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

Descrizioni flag comando

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

tf-version
La versione di Tensorflow che il comando gcloud viene installata sulla tua VM.

machine-type
Il tipo di macchina della VM di Compute Engine da creare.

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.

Creazione di una Cloud TPU nella console Google Cloud

  1. Vai alla console Google Cloud.
  2. Dal menu di navigazione, seleziona Compute Engine > TPU.
  3. Fai clic su CREA NODO TPU.
  4. Nella casella Nome, digita un nome di istanza TPU.
  5. Nella casella Zona, seleziona la zona in cui creare la TPU.
  6. In Impostazioni TPU, seleziona Architettura VM TPU o Architettura dei nodi TPU. La configurazione TPU determina se la TPU viene creata come VM TPU o Nodo TPU. Per ulteriori informazioni, consulta Architettura di sistema.
  7. Per Tipo TPU, seleziona il tipo TPU che vuoi creare.
  8. 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 un nodo Cloud TPU, la versione software TPU consente di scegliere il framework ML installato sulla VM del nodo. Non sono necessarie altre impostazioni. Per ulteriori informazioni, vedi Modelli supportati.
  9. 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

Puoi connetterti a una TPU tramite SSH.

VM TPU

Se utilizzi le VM TPU, devi connetterti in modo esplicito alla VM TPU tramite SSH.

  • Connettiti alla VM TPU su SSH utilizzando il comando gcloud compute tpus tpu-vm ssh.

    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 eseguire codice, puoi connetterti a ogni VM TPU utilizzando tpu-vm ssh command.

    gcloud compute tpus tpu-vm ssh ${TPU_NAME}
    

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

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

    Se hai più di una VM TPU, 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 ${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) o utilizzare i flag --node=all, --worker=all e --command per eseguire il comando su tutte le VM TPU di tutte le sezioni del multislice, con un campo --batch-size facoltativo.

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

Nodi TPU

Per impostazione predefinita, il comando gcloud che utilizzi per creare nodi TPU tenta automaticamente di connettersi tramite SSH al nodo TPU. Se utilizzi nodi TPU e non sei connesso all'istanza di Compute Engine tramite il comando gcloud, puoi connetterti eseguendo questo comando:

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

Dopo aver creato la VM TPU, puoi visualizzare i log dello script di avvio connettendoti alla VM TPU tramite SSH ed eseguendo:

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

Elenco delle risorse Cloud TPU

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

Elenco delle risorse Cloud TPU utilizzando gcloud

I comandi da utilizzare dipendono dall'utilizzo di VM TPU o nodi TPU. Per ulteriori informazioni, consulta Architettura di sistema.

VM TPU

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

Nodi TPU

$ gcloud compute tpus execution-groups 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

  1. Vai alla console Google Cloud.

  2. Dal menu di navigazione, seleziona Compute Engine > TPU. Nella console viene visualizzata la pagina delle TPU.

Recupero delle informazioni su Cloud TPU

Puoi recuperare informazioni su una Cloud TPU specificata.

Recupera le informazioni su una Cloud TPU utilizzando gcloud

I comandi da utilizzare dipendono dall'utilizzo di VM TPU o nodi TPU. Per ulteriori informazioni, consulta Architettura di sistema.

VM TPU

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

Nodi TPU

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

Recupera le informazioni su una Cloud TPU nella console Google Cloud

  1. Vai alla console Google Cloud.
  2. Dal menu di navigazione, seleziona Compute Engine > TPU. Nella console viene visualizzata la pagina delle TPU.
  3. 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

I comandi da utilizzare per arrestare una Cloud TPU dipendono dall'utilizzo o meno di VM TPU o nodi TPU. Per ulteriori informazioni, consulta Architettura di sistema.

VM TPU

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

Nodi TPU

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

Arresto di una Cloud TPU nella console Google Cloud

  1. Vai alla console Google Cloud.

  2. Dal menu di navigazione, seleziona Compute Engine > TPU. Nella console viene visualizzata la pagina delle TPU.

  3. Seleziona la casella di controllo accanto alla Cloud TPU e fai clic su Arresta.

Avvio delle risorse Cloud TPU

Puoi avviare una Cloud TPU quando è arrestata.

Avvio di una Cloud TPU utilizzando gcloud

Puoi avviare una Cloud TPU arrestata per riprendere a utilizzarla.

Il comando da utilizzare per avviare una Cloud TPU arrestata dipende dall'utilizzo o meno di VM TPU o nodi TPU. Per ulteriori informazioni, consulta Architettura di sistema.

VM TPU

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

Nodi TPU

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

Avvio di una Cloud TPU nella console Google Cloud

  1. Vai alla console Google Cloud.

  2. Dal menu di navigazione, seleziona Compute Engine > TPU. Nella console viene visualizzata la pagina delle TPU.

  3. Seleziona la casella di controllo accanto alla Cloud TPU e fai clic su Avvia.

Elimina la VM TPU

Il comando da utilizzare varia a seconda che tu stia utilizzando VM TPU o nodi TPU. Per ulteriori informazioni, consulta Architettura di sistema.

VM TPU

Elimina le sezioni di VM TPU alla fine della sessione.

 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.

Nodi TPU

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

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 console Google Cloud.

  2. Dal menu di navigazione, seleziona Compute Engine > TPU. Nella console viene visualizzata la pagina delle TPU.

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

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 se le impostazioni di rete predefinite sono state modificate, 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. SSH nelle VM TPU.

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

    Campi obbligatori

    • tpu-name: nome del nodo TPU.
    • zone: la posizione del nodo TPU. Al momento è supportato soltanto l'ID us-central2-b.
    • project-id: il progetto creato prima.

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