Introduzione a Cloud TPU
Le TPU (Tensor Processing Unit) sono circuiti integrati per applicazioni specifiche (ASIC) sviluppati da Google e utilizzati per accelerare i carichi di lavoro di machine learning. Per informazioni più dettagliate sull'hardware TPU, consulta Architettura TPU. Cloud TPU è un servizio web che rende disponibili le TPU come risorse di calcolo scalabili su Google Cloud.
Le TPU addestrano i modelli in modo più efficiente utilizzando hardware progettato per eseguire operazioni su matrici di grandi dimensioni, spesso presenti negli algoritmi di machine learning. Le TPU dispongono di memoria on-chip ad alta larghezza di banda (HBM) che ti consente di utilizzare modelli e dimensioni di batch più grandi. Le TPU possono essere collegate in gruppi chiamati slice che scalano i carichi di lavoro con poche o nessuna modifica al codice.
Il codice eseguito sulle TPU deve essere compilato dal compilatore XLA (algebra lineare dell'acceleratore). XLA è un compilatore just-in-time che prende il grafo emesso da un'applicazione del framework ML e compila i componenti di algebra lineare, perdita e gradiente del grafo in codice macchina TPU. Il resto del programma viene eseguito sulla macchina host TPU. Il compilatore XLA fa parte dell'immagine VM TPU che viene eseguita su una macchina host TPU.
Quando utilizzare le TPU
Le Cloud TPU sono ottimizzate per carichi di lavoro specifici. In alcuni casi, potresti voler utilizzare GPU o CPU su istanze Compute Engine per eseguire i carichi di lavoro di machine learning. In generale, puoi decidere quale hardware è più adatto al tuo carico di lavoro in base alle seguenti linee guida:
CPU
- Prototipazione rapida che richiede la massima flessibilità
- Modelli semplici che non richiedono molto tempo per l'addestramento
- Modelli di piccole dimensioni con dimensioni dei batch efficaci ridotte
- Modelli che contengono molte operazioni TensorFlow personalizzate scritte in C++
- Modelli limitati dall'I/O disponibile o dalla larghezza di banda di rete del sistema di destinazione
GPU
- Modelli con un numero significativo di operazioni PyTorch/JAX personalizzate che devono essere eseguite almeno parzialmente su CPU
- Modelli con operazioni TensorFlow non disponibili su Cloud TPU (vedi l'elenco delle operazioni TensorFlow disponibili)
- Modelli di medie e grandi dimensioni con dimensioni di batch effettive più grandi
TPU
- Modelli in cui predominano i calcoli matriciali
- Modelli senza operazioni PyTorch/JAX personalizzate all'interno del loop di addestramento principale
- Modelli che vengono addestrati per settimane o mesi
- Modelli di grandi dimensioni con grandi dimensioni di batch effettive
- Modelli con embedding di grandi dimensioni comuni nei workload di ranking e consigli avanzati
Le Cloud TPU non sono adatte ai seguenti carichi di lavoro:
- Programmi di algebra lineare che richiedono frequenti ramificazioni o contengono molte operazioni algebriche elementari
- Carichi di lavoro che richiedono operazioni aritmetiche ad alta precisione
- Carichi di lavoro di reti neurali che contengono operazioni personalizzate nel loop di addestramento principale
TPU in Google Cloud
Puoi utilizzare le TPU tramite le VM Cloud TPU, Google Kubernetes Engine e Vertex AI. La tabella seguente elenca le risorse per ogni Google Cloud servizio.
Google Cloud servizio | Risorse |
---|---|
Cloud TPU | Iniziare a utilizzare le VM Cloud TPU |
Google Kubernetes Engine | |
Vertex AI |
Best practice per lo sviluppo del modello
Un programma il cui calcolo è dominato da operazioni non matriciali come addizione, trasformazione o concatenazione probabilmente non raggiungerà un elevato utilizzo di MXU. Di seguito sono riportate alcune linee guida per aiutarti a scegliere e creare modelli adatti per Cloud TPU.
Layout
Il compilatore XLA esegue trasformazioni del codice, inclusa la suddivisione di una moltiplicazione di matrici in blocchi più piccoli, per eseguire in modo efficiente i calcoli sull'unità di matrice (MXU). Il compilatore XLA utilizza la struttura dell'hardware MXU, un array sistolica 128x128, e il design del sottosistema di memoria delle TPU, che preferisce dimensioni che sono multipli di 8, per l'efficienza del tiling. Di conseguenza, alcuni layout sono più adatti alla suddivisione in riquadri, mentre altri richiedono l'applicazione di modifiche alla forma prima di poter essere suddivisi in riquadri. Le operazioni di ricreazione della forma sono spesso vincolate dalla memoria su Cloud TPU.
Forme
Il compilatore XLA compila un grafo ML just in time per il primo batch. Se i batch successivi hanno forme diverse, il modello non funziona. (La ricomposiz ione del grafico ogni volta che la forma cambia è troppo lenta.) Pertanto, qualsiasi modello con tensori con forme dinamiche non è adatto alle TPU.
Spaziatura interna
Un programma Cloud TPU ad alte prestazioni è un programma in cui il calcolo intensivo può essere suddiviso in blocchi di 128 x 128. Quando un calcolo della matrice non può occupare un'intera MXU, il compilatore completa i tensori con zeri. Esistono due svantaggi per la spaziatura interna:
- I tensori riempiti con zeri sottoutilizzano il core TPU.
- Il padding aumenta la quantità di spazio di archiviazione in memoria on-chip richiesta per un tensore e può portare a un errore di memoria insufficiente nei casi estremi.
Sebbene il padding venga eseguito automaticamente dal compilatore XLA, se necessario, è possibile determinare la quantità di padding eseguita tramite lo strumento op_profile. Puoi evitare il padding scegliendo dimensioni dei tensori ben adatte alle TPU.
Dimensioni
La scelta di dimensioni dei tensori adeguate è fondamentale per ottenere il massimo delle prestazioni dall'hardware TPU, in particolare dall'unità MXU. Il compilatore XLA tenta di utilizzare la dimensione del batch o una dimensione della funzionalità per utilizzare al meglio l'unità MXU. Pertanto, uno di questi deve essere un multiplo di 128. In caso contrario, il compilatore aggiungerà un a capo a uno di questi fino a 128. Idealmente, le dimensioni del batch e le dimensioni delle funzionalità devono essere multipli di 8, il che consente di estrarre prestazioni elevate dal sottosistema di memoria.
Inizia a utilizzare Cloud TPU
- Configura un Google Cloud account
- Attiva l'API Cloud TPU
- Concedere a Cloud TPU l'accesso ai bucket Cloud Storage
- Eseguire un calcolo di base su una TPU
- Addestra un modello di riferimento su una TPU
- Analizzare il modello
Richiesta di assistenza
Contatta l'assistenza Cloud TPU. Se hai un progetto Google Cloud attivo, preparati a fornire le seguenti informazioni:
- Il tuo Google Cloud ID progetto
- Il nome della TPU, se esistente
- Altre informazioni che vuoi fornire
Passaggi successivi
Vuoi saperne di più su Cloud TPU? Le seguenti risorse potrebbero esserti utili: