Tipi e topologie TPU
Panoramica
Quando crei una configurazione TPU, devi specificare un tipo e delle dimensioni TPU oppure un tipo e una topologia TPU (una disposizione logica del chip).
Esistono due modi per eseguire questa operazione in un'operazione gcloud create
:
- Crea una singola stringa
accelerator-type
che specifichi il tipo (v2, v3 o v4) e il numero di TensorCore richiesti - Specifica il parametro TPU
type
insieme al flagtopology
.
Consulta i tipi di TPU per esempi di creazione di TPU mediante la stringa accelerator-type
o i flag type
e topology
.
Ulteriori informazioni sulle diverse versioni e topologie di Cloud TPU sono disponibili nel documento System Architecture,
Tipi di TPU
Utilizza il flag "accelerator-type" del comando gcloud
per specificare una configurazione TPU. Una configurazione TPU è composta da una versione TPU e dal numero di TensorCore. Ad esempio, il seguente comando gcloud
crea una TPU di v3
con 128 TensorCore:
$ gcloud compute tpus tpu-vm create tpu-name
--zone=zone
--accelerator-type=v3-128
--version=tpu-vm-tf-2.11.0
Puoi anche specificare la configurazione TPU come numero di chip TPU e disposizione logica (la topologia). Per ulteriori informazioni, consulta la pagina relativa alle configurazioni di TPU basate su chip.
Configurazioni TPU basate su TensorCore
Per tutti i tipi di TPU, la versione è seguita dal numero di TensorCore (ad es. 8, 32, 128).
Ad esempio, --accelerator-type=v2-8
specifica un'istanza TPU di tipo v2
con 8 TensorCore e v3-1024
specifica una TPU di v3
con 1024 TensorCore (una sezione di un pod di v3
).
Configurazioni TPU basate su chip
Le configurazioni v4 vengono specificate con una versione TPU e una topologia. La topologia è specificata con tre tuple che descrivono il modo in cui sono disposti i chip. Ad esempio, la configurazione 32-TensorCore può essere rappresentata nei chip come 2 x 2 x 4 (16 chip, ognuno con 2 TensorCore). La tripla specifica solo la topologia, non la configurazione, che richiede una versione TPU.
La rappresentazione di una topologia v4 è AxBxC dove A<=B<=C e A,B,C sono tutti <=4 o tutti i numeri interi interi di 4. I valori A, B e C sono i conteggi dei chip delle tre dimensioni. Le topologie in cui 2A=B=C o 2A=2B=C hanno anche varianti ottimizzate per la comunicazione complessiva, ad esempio 4×4×8, 8×8×16 e 12×12×24.
Per ulteriori informazioni sulle topologie v4, consulta Configurazioni TPU v4.
Creazione di topologie basate su chip-topology (v4)
La versione 4 mostra dispositivi anziché TensorCore, un dispositivo per chip. Per specificare le topologie basate su chipologia, la versione 4 ha introdotto i formati di topologia tridimensionale (ad esempio, 4 x 4 x 4) e un flag --topology
per l'operazione di creazione di TPU di tipo gcloud
. Le tabelle mostrate in Varianti di topologia includono esempi di altre topologie basate su chip-topologia supportate.
Puoi specificare un tipo e una topologia v4 utilizzando i flag type
e topology
per l'operazione di creazione gcloud
. Ad esempio, il seguente comando gcloud
crea una TPU v4
con 64 chip in una topologia cubo 4x4x4.
$ gcloud alpha compute tpus tpu-vm create tpu-name
--zone=zone
--type=v4
--topology=4x4x4
--version=tpu-vm-tf-2.11.0
Il valore supportato per --type
è v4
.
Varianti di topologia
La topologia standard associata a un determinato TensorCore o numero di chip è la più simile a un cubo (vedi Forme di topologia). Questa forma rende probabilmente la scelta migliore per l'addestramento ML parallelo di dati. Altre topologie possono essere utili per carichi di lavoro con più tipi di parallelismo (ad esempio parallelismo di modelli e dati o partizionamento spaziale di una simulazione). Questi carichi di lavoro hanno un rendimento migliore se la forma della porzione viene abbinata al parallelismo utilizzato. Ad esempio, posizionando il parallelismo del modello a 4 vie sull'asse X e il parallelismo dei dati a 256 vie sulle dimensioni Y e Z corrisponde a una topologia 4x16x16.
I modelli con più dimensioni di parallelismo hanno un rendimento migliore: le dimensioni di parallelismo vengono mappate a quelle di Torus. Si tratta in genere di modelli DDM (data-model parallelo) per modelli di grandi dimensioni. Ad esempio, per una porzione di pod TPU v4 con topologia 8x16x16, le dimensioni di torus sono 8, 16 e 16. È più efficiente utilizzare il parallelismo dei modelli a 8 o 16 vie (associato a una delle dimensioni del torso fisico). Un parallelismo del modello a 4 vie sarebbe non ottimale con questa topologia, poiché non è in linea con alcuna dimensione torus, ma sarebbe ottimale con una topologia 4x16x32 sullo stesso numero di chip.
Piccole topologie v4
Cloud TPU supporta le seguenti sezioni TPU v4 di dimensioni inferiori a 64 chip, un cubo 4x4x4. Puoi creare queste piccole topologie v4 utilizzando il nome basato su TensorCore (ad esempio v4-32) o la loro topologia (ad esempio 2x2x4):
Nome (in base al conteggio di TensorCore) | Numero di chip | Topologia |
versione 4-8 | 4 | 2x2x1 |
versione 4-16 | 8 | 2x2x2 |
v4-32 | 16 | 2x2x4 |
versione 4-64 | 32 | 2x4x4 |
Topologie v4 di grandi dimensioni
Le sezioni TPU v4 sono disponibili in incrementi di 64 chip, con forme che sono multipli di 4 in tutte e tre le dimensioni. Anche le dimensioni devono essere in ordine crescente. Di seguito sono riportati diversi esempi. Alcune di queste topologie sono topologie "personalizzate" che possono essere lanciate solo utilizzando l'API topology perché hanno lo stesso numero di chip di una topologia denominata più comunemente usata.
Nome (in base al conteggio di TensorCore) | Numero di chip | Topologia |
versione 4-128 | 64 | 4x4x4 |
versione 4-256 | 128 | 4x4x8 |
versione 4-512 | 256 | 4x8x8 |
Consulta la pagina relativa all'API Topology | 256 | 4x4x16 |
versione 4-1024 | 512 | 8x8x8 |
versione 4-1536 | 768 | 8x8x12 |
versione 4-2048 | 1024 | 8x8x16 |
Consulta la pagina relativa all'API Topology | 1024 | 4x16x16 |
versione 4-4096 | 2048 | 8x16x16 |
… | … | … |
API Topology
Per creare sezioni del pod di Cloud TPU con topologia personalizzata,
puoi utilizzare l'API TPU gcloud
come segue:
$ gcloud alpha compute tpus tpu-vm create tpu-name \
--zone=us-central2-b \
--subnetwork=tpusubnet \
--type=v4 \
--topology=4x4x16 \
--version=runtime-version
Forme di topologia
L'immagine seguente mostra tre possibili forme di topologia e le relative impostazioni di flag topology
associate.
Compatibilità con i tipi di TPU
Puoi cambiare il tipo di TPU con un altro tipo con lo stesso numero di TensorCore o chip (ad esempio, v3-128
e v4-128
) ed eseguire il tuo script di addestramento senza modifiche al codice.
Tuttavia, se passi a un tipo TPU con un numero maggiore o minore di chip o TensorCore, dovrai eseguire ottimizzazioni e ottimizzazioni significative.
Per ulteriori informazioni, consulta Formazione sui pod TPU.
Passaggi successivi
- Scopri di più sull'architettura TPU nella pagina Architettura del sistema.
- Consulta la pagina Quando utilizzare le TPU per saperne di più sui tipi di modelli adatti a Cloud TPU.