Introduzione a Cloud TPU
Le Tensor Processing Unit (TPU) sono circuiti integrati specifici per le applicazioni (ASIC) sviluppati da Google e utilizzati per accelerare i carichi di lavoro di machine learning. Per saperne di più sull'hardware TPU, consulta Architettura TPU. Cloud TPU è un servizio web che rende le TPU disponibili come risorse di computing scalabili su Google Cloud.
Le TPU addestrano in modo efficiente i tuoi modelli utilizzando hardware progettato per eseguire operazioni con matrici di grandi dimensioni spesso presenti negli algoritmi di machine learning. Le TPU hanno una memoria ad alta larghezza di banda (HBM) sul chip che ti consente di utilizzare modelli e dimensioni dei batch più grandi. Le TPU possono essere collegate in gruppi chiamati slice che scalano i tuoi carichi di lavoro con modifiche al codice minime o nulle.
Il codice eseguito sulle TPU deve essere compilato dal compilatore Accelerator Linear Algebra (XLA). XLA è un compilatore just-in-time che prende il grafico emesso da un'applicazione framework ML e compila i componenti di algebra lineare, perdita e gradiente del grafico in codice macchina TPU. Il resto del programma viene eseguito sulla macchina host TPU. Il compilatore XLA fa parte dell'immagine VM TPU in esecuzione su una macchina host TPU.
Per saperne di più sulle Tensor Processing Unit, consulta Come pensare alle 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 tuoi carichi di lavoro di machine learning. In generale, puoi decidere quale hardware è più adatto al tuo workload in base alle linee guida riportate di seguito.
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 piccole ed efficaci
- Modelli che contengono molte operazioni TensorFlow personalizzate scritte in C++
- Modelli limitati dalle operazioni di I/O disponibili o dalla larghezza di banda di rete del sistema host
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 medie e grandi dimensioni con dimensioni di batch effettive maggiori
TPU
- Modelli dominati da 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 incorporamenti molto grandi comuni nei workload avanzati di ranking e consigli
Le Cloud TPU non sono adatte ai seguenti carichi di lavoro:
- Programmi di algebra lineare che richiedono ramificazioni frequenti o contengono molte operazioni algebriche elemento per elemento
- Workload che richiedono operazioni aritmetiche di alta precisione
- Carichi di lavoro di rete neurale che contengono operazioni personalizzate nel ciclo 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 servizio Google Cloud.
| ServizioGoogle Cloud | Risorse |
|---|---|
| Cloud TPU | Inizia 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 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à matrice (MXU). La struttura dell'hardware MXU, un array sistolico 128x128, e la progettazione del sottosistema di memoria delle TPU, che preferisce dimensioni che siano multipli di 8, vengono utilizzate dal compilatore XLA per l'efficienza del tiling.
Di conseguenza, alcuni layout sono più adatti all'affiancamento, mentre altri richiedono rimodellamenti prima di poter essere affiancati. Le operazioni di rimodellamento 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. (Ricompilare il grafico ogni volta che la forma cambia è troppo lento.) Pertanto, qualsiasi modello che contiene 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 della matrice non può occupare un'intera MXU, il compilatore riempie i tensori con zeri. L'imbottitura presenta due svantaggi:
- I tensori riempiti con zeri sottoutilizzano il core della TPU.
- Il padding aumenta la quantità di spazio di archiviazione della memoria on-chip richiesta per un tensore e, nel caso estremo, può causare un errore di memoria insufficiente.
Sebbene il padding venga eseguito automaticamente dal compilatore XLA quando necessario, è possibile determinare la quantità di padding eseguita tramite lo strumento op_profile. Puoi evitare il padding scegliendo dimensioni del tensore adatte alle TPU.
Dimensioni
La scelta di dimensioni del tensore adatte è fondamentale per ottenere le massime prestazioni dall'hardware TPU, in particolare dall'MXU. Il compilatore XLA tenta di utilizzare le dimensioni del batch o una dimensione della funzionalità per utilizzare al massimo l'MXU. Pertanto, uno di questi deve essere un multiplo di 128. In caso contrario, il compilatore riempirà uno dei due valori fino a 128. Idealmente, le dimensioni del batch e delle funzionalità devono essere multipli di 8, il che consente di ottenere prestazioni elevate dal sottosistema di memoria.
Introduzione a Cloud TPU
- Configurare un account Google Cloud
- Attiva l'API Cloud TPU
- Concedi a Cloud TPU l'accesso ai tuoi bucket Cloud Storage
- Eseguire un calcolo di base su una TPU
- Addestra un modello di riferimento su una TPU
- Analizzare il modello
Richiedere assistenza
Per ricevere aiuto, contatta l'assistenza Cloud TPU. Se hai un progetto Google Cloud attivo, preparati a fornire le seguenti informazioni:
- Il tuo ID progetto Google Cloud
- Il nome della tua TPU, se esistente
- Altre informazioni che vuoi fornire
Passaggi successivi
Vuoi saperne di più su Cloud TPU? Le seguenti risorse possono esserti utili: