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:
- Utilizzo delle risorse in coda:
gcloud alpha compute tpus queued-resources create
- 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 # Optionaldove
${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
Vai alla pagina TPU:
Fai clic su CREA NODO TPU.
Nella casella Nome, digita un nome di istanza TPU.
Nella casella Zona, seleziona la zona in cui creare la TPU.
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.
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.
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:
Nella console Google Cloud, vai alla pagina TPU:
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
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
Vai alla pagina TPU:
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
Vai alla pagina TPU:
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.
- 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
Vai alla pagina TPU:
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
Vai alla pagina TPU:
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
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
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
.