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 saperne di più sull'hardware TPU, consulta la sezione Architettura TPU.
Le TPU addestrano i modelli in modo efficiente utilizzando hardware progettato per eseguire operazioni su matrici di grandi dimensioni che si trovano spesso negli algoritmi di machine learning. Le TPU hanno una memoria a larghezza di banda elevata (HBM) sul chip che consente di utilizzare modelli e dimensioni dei batch più grandi. Le TPU possono essere collegate in gruppi chiamati slice che fanno lo scale up dei carichi di lavoro con poche o nessuna modifica del codice.
Il codice eseguito sulle TPU deve essere compilato dal compilatore di algebra lineare accelerata (XLA). XLA è un compilatore just-in-time che prende il grafico emesso da un'applicazione del framework ML e compila i componenti di algebra lineare, perdita e gradiente del grafico nel codice macchina TPU. Il resto del programma viene eseguito sulla macchina host TPU. Il compilatore XLA fa parte dell'immagine della VM TPU eseguita su una macchina host TPU.
Per saperne di più sulle Tensor Processing Unit, consulta la sezione Come considerare le TPU.
Quando utilizzare le TPU
Le Cloud TPU sono ottimizzate per carichi di lavoro specifici. In alcune situazioni, 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 effettive ridotte
- Modelli che contengono molte operazioni TensorFlow personalizzate scritte in C++
- Modelli limitati dalla larghezza di banda I/O o di rete del sistema host disponibile
GPU
- Modelli con un numero significativo di operazioni PyTorch/JAX personalizzate che devono essere eseguite almeno parzialmente sulle CPU
- Modelli con operazioni TensorFlow non disponibili su Cloud TPU (consulta l'elenco delle operazioni TensorFlow disponibili)
- Modelli di dimensioni medio-grandi con dimensioni dei batch effettive più grandi
TPU
- Modelli dominati da calcoli matriciali
- Modelli senza operazioni PyTorch/JAX personalizzate all'interno del ciclo di addestramento principale
- Modelli che si addestrano per settimane o mesi
- Modelli di grandi dimensioni con dimensioni dei batch effettive elevate
- Modelli con incorporamenti di dimensioni molto grandi comuni nei carichi di lavoro di ranking e raccomandazione avanzati
Le Cloud TPU non sono adatte ai seguenti carichi di lavoro:
- Programmi di algebra lineare che richiedono ramificazioni frequenti o contengono molte operazioni di algebra elementare
- Carichi di lavoro che richiedono un'aritmetica di alta precisione
- Carichi di lavoro di reti neurali che contengono operazioni personalizzate nel ciclo di addestramento principale
TPU in Google Cloud
Puoi utilizzare le TPU tramite Compute Engine, Google Kubernetes Engine e Vertex AI. L'API Cloud TPU è obsoleta. Per saperne di più, consulta la sezione Eseguire la migrazione dall'API Cloud TPU. La tabella seguente elenca le risorse per ciascun Google Cloud servizio.
| Google Cloud Servizio | Risorse |
|---|---|
| Compute Engine | Risorse TPU in Compute Engine |
| Google Kubernetes Engine |
Eseguire il deployment dei carichi di lavoro GKE Cloud TPU in Cluster Toolkit |
| Vertex AI |
Best practice per lo sviluppo di modelli
Un programma il cui calcolo è dominato da operazioni non matriciali come add, reshape o concatenate, probabilmente non raggiungerà un elevato utilizzo di MXU. Di seguito sono riportate alcune linee guida per aiutarti a scegliere e creare modelli adatti a 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à matriciale (MXU). La struttura dell'hardware MXU, una matrice sistolica 128x128 systolic array, e la progettazione del sottosistema di memoria TPU, che preferisce le dimensioni che sono multipli di 8, vengono utilizzate dal compilatore XLA per l'efficienza della suddivisione.
Di conseguenza, alcuni layout sono più adatti alla suddivisione, mentre altri richiedono l'esecuzione di reshape prima di poter essere suddivisi. Le operazioni di reshape sono spesso vincolate alla memoria su Cloud TPU.
Forme
Il compilatore XLA compila un grafico ML appena in tempo per il primo batch. Se i batch successivi hanno forme diverse, il modello non funziona. (La ricompilazione 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 è quello in cui il calcolo denso può essere suddiviso in blocchi 128x128. Quando un calcolo matriciale non può occupare un'intera MXU, il compilatore riempie i tensori con zeri. Esistono due svantaggi per la spaziatura interna:
- I tensori riempiti con zeri utilizzano in modo insufficiente il core TPU.
- La spaziatura interna aumenta la quantità di spazio di archiviazione della memoria sul chip richiesta per un tensore e, nel caso estremo, può causare un errore di esaurimento della memoria.
Sebbene la spaziatura interna venga eseguita automaticamente dal compilatore XLA quando necessario, è possibile determinare la quantità di spaziatura interna eseguita tramite lo op_profile. Puoi evitare la spaziatura interna scegliendo dimensioni dei tensori adatte alle TPU.
Dimensioni
La scelta di dimensioni dei tensori adatte è fondamentale per estrarre le massime prestazioni dall'hardware TPU, in particolare dall'MXU. Il compilatore XLA tenta di utilizzare le dimensioni del batch o delle funzionalità per utilizzare al massimo l'MXU. Pertanto, una di queste deve essere un multiplo di 128. In caso contrario, il compilatore ne riempirà una fino a 128. Idealmente, le dimensioni del batch e delle funzionalità devono essere multipli di 8, il che consente di estrarre prestazioni elevate dal sottosistema di memoria.
Inizia a utilizzare Cloud TPU
Per iniziare a utilizzare le TPU con Compute Engine, segui questi passaggi:
- Per configurare il progetto, attivare l'API Compute Engine e ottenere le autorizzazioni richieste, segui i passaggi descritti in Configurare un Google Cloud progetto.
- Per saperne di più sulle versioni, le configurazioni, le quote e i prezzi delle TPU, consulta la sezione Pianificare le risorse Cloud TPU.
- Per iniziare a utilizzare le TPU, consulta la sezione Guida rapida: creare un'istanza TPU. Per saperne di più sulla creazione di TPU, consulta la sezione Panoramica della creazione di TPU.
Richiedere assistenza
Per ricevere assistenza, contatta l'assistenza Cloud TPU. Se hai un progetto attivo, preparati a fornire le seguenti informazioni: Google Cloud
- L'ID progetto Google Cloud
- Il nome della TPU, se esiste
- Altre informazioni che vuoi fornire