Introduzione a Cloud TPU
Le Tensor Processing Unit (TPU) sono le unità specifiche ASIC (integrati circuiti) utilizzati per accelerare i carichi di lavoro di machine learning. Per per informazioni più dettagliate sull'hardware TPU, consulta la pagina relativa all'architettura di sistema. Cloud TPU è un servizio web che rende le TPU disponibili come computing scalabile 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 hanno la memoria on-chip ad alta larghezza di banda (HBM) che consente di usare modelli dimensioni. Le TPU possono essere collegate in gruppi chiamati pod che scalano i carichi di lavoro con poche o nessuna modifica al codice.
Come funziona?
Per capire come funzionano le TPU, è utile capire in che modo altri acceleratori risolvono le sfide computazionali dell'addestramento dei modelli di ML.
Come funziona una CPU
Una CPU è un processore generico basato sull'architettura di Von Neumann. Ciò significa che una CPU funziona con software e memoria come questi:
Il principale vantaggio delle CPU è la loro flessibilità. Puoi caricare qualsiasi tipo di su una CPU per molti tipi diversi di applicazioni. Ad esempio, puoi utilizzare una CPU per l'elaborazione di testi su un PC, il controllo dei motori a razzo, l'esecuzione transazioni bancarie o classificazione delle immagini con una rete neurale.
Una CPU carica i valori dalla memoria, esegue un calcolo sui valori e memorizza nuovamente il risultato nella memoria per ogni calcolo. L'accesso alla memoria è lento rispetto alla velocità di calcolo e può limitare il throughput totale delle CPU. Questo è spesso indicato come collo di bottiglia di von Neumann.
Come funziona una GPU
Per ottenere una velocità effettiva più elevata, le GPU contengono migliaia di unità logiche aritmetiche (ALU) in un unico processore. Una GPU moderna di solito contiene tra 2500 e 5000 ALU. L'elevato numero di processori ti consente di eseguire contemporaneamente migliaia di moltiplicazioni e addizioni.
Questa architettura GPU funziona bene su applicazioni con un elevato parallelismo, come come operazioni delle matrici in una rete neurale. Infatti, in un tipico carico di lavoro di addestramento per il deep learning, una GPU può fornire un throughput di un ordine di grandezza superiore rispetto a una CPU.
Tuttavia, la GPU è ancora un processore per uso generico che deve supportare molte applicazioni e software diversi. Pertanto, le GPU hanno lo stesso problema delle CPU. Per ogni calcolo nelle migliaia di ALU, una GPU deve accedere ai registri o alla memoria condivisa per leggere gli operandi e memorizzare i risultati intermedi del calcolo.
Come funziona una TPU
Google ha progettato le Cloud TPU come processori a matrice specializzato per le reti neurali carichi di lavoro con scale out impegnativi. Le TPU non possono eseguire elaboratori di testi, controllare i motori a razzo o eseguire transazioni bancarie, ma sono in grado di gestire enormi operazioni sulle matrici reti a velocità elevate.
Il compito principale delle TPU è l'elaborazione delle matrici, ovvero una combinazione di operazioni di moltiplicazione e accumulo. Le TPU contengono migliaia di multi-accumulatore direttamente collegati tra loro per formare una grande una matrice fisica. Questo è chiamato array sistolica dell'architettura. Cloud TPU v3, contiene due array sistolici ALU 128 x 128, su un singolo processore.
L'host TPU esegue lo streaming dei dati in una coda infeed. La TPU carica i dati coda infeed e li archivia nella memoria HBM. Al termine del calcolo, la TPU carica i risultati nella coda di outfeed. L'host della TPU legge quindi i risultati dalla coda di uscita e li archivia nella memoria dell'host.
Per eseguire le operazioni sulla matrice, la TPU carica i parametri dalla memoria HBM nella Matrix Multiplication Unit (MXU).
Quindi, la TPU carica i dati dalla memoria HBM. Quando viene eseguita ogni moltiplicazione, il risultato viene passato all'accumulatore di moltiplicazioni successivo. L'output è la somma di tutti i risultati delle moltiplicazioni tra dati e parametri. Non è richiesto alcun accesso alla memoria durante il processo di moltiplicazione delle matrici.
Di conseguenza, le TPU possono raggiungere una velocità di calcolo elevata per i calcoli delle reti neurali.
Compilatore XLA
Il codice eseguito sulle TPU deve essere compilato dal compilatore XLA (algebra lineare dell'acceleratore). XLA è un modello just-in-time che prende il grafico emesso da un'applicazione del framework ML 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. XLA il compilatore fa parte dell'immagine VM TPU in esecuzione su una macchina host TPU.
Quando utilizzare le TPU
Le Cloud TPU sono ottimizzate per carichi di lavoro specifici. In alcune situazioni, vuoi utilizzare GPU o CPU sulle istanze di Compute Engine per eseguire la tua macchina carichi di lavoro di machine learning. In generale, puoi decidere quale hardware è il migliore per il 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 piccoli con batch di dimensioni ridotte ed effettive
- 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 TensorFlow/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 dei batch effettive più grandi
TPU
- Modelli dominati dai calcoli matriciali
- Modelli senza operazioni TensorFlow/PyTorch/JAX personalizzate all'interno dell'istanza principale loop di addestramento
- Modelli che si addestrano per settimane o mesi
- Modelli di grandi dimensioni con grandi dimensioni di batch effettive
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 accedono alla memoria in modo sparso
- Carichi di lavoro che richiedono aritmetica di alta precisione
- Carichi di lavoro della rete neurale che contengono operazioni personalizzate nell'addestramento loop
Best practice per lo sviluppo del modello
Un programma il cui calcolo è dominato da operazioni non matriciali come aggiungere, rimodellare o concatenare, è probabile che non otterranno una MXU elevata all'utilizzo delle risorse. 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, tra cui l'assegnazione di riquadri a una matrice moltiplicarli in blocchi più piccoli, per eseguire in modo efficiente calcoli matrix unit (MXU). La struttura dell'hardware MXU, un modello sistolica di dimensioni 128x128" di rete e la progettazione delle TPU di memoria, che preferisce dimensioni multipli di 8, vengono utilizzate il compilatore XLA 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 rimodellamento sono spesso legate alla memoria su Cloud TPU.
Forme
Il compilatore XLA compila un grafico ML appena in tempo per il primo batch. Se presente i batch successivi hanno forme diverse, il modello non funziona. (Ricompilazione il grafico ogni volta che la forma viene modificata è 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 affiancato in blocchi di 128 x 128. Quando un calcolo della matrice non può occupare un'intera MXU, il compilatore completa i tensori con zeri. Ci sono due svantaggi alla spaziatura interna:
- I tensori riempiti con zeri sottoutilizzano il core TPU.
- Il Padding aumenta la quantità di spazio di archiviazione sulla memoria on-chip richiesta per un tensore e, in caso estremo, può causare un errore di esaurimento della memoria.
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 adatte alle TPU.
Dimensioni
La scelta di dimensioni tensoriali adatte è fondamentale per estrarre il massimo dell'hardware TPU, in particolare dell'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. Altrimenti, il compilatore ne eseguirà il pad 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.
Integrazione dei Controlli di servizio VPC
I Controlli di servizio VPC di Cloud TPU consentono di definire i perimetri di sicurezza le tue risorse Cloud TPU e controllare il movimento dei dati attraverso il perimetro confine. Per scoprire di più sui Controlli di servizio VPC, consulta Panoramica dei Controlli di servizio VPC. Per scoprire le limitazioni nell'utilizzo di Cloud TPU con i Controlli di servizio VPC, consulta Prodotti supportati e limitazioni.
Edge TPU
I modelli di machine learning addestrati nel cloud hanno sempre più bisogno di eseguire l'inferenza "a livello perimetrale", ovvero sui dispositivi che operano sul bordo IoT (Internet of Things). Questi dispositivi includono sensori e altri smart device che raccolgono dati in tempo reale, prendono decisioni intelligenti e agiscono o comunicare le proprie informazioni ad altri dispositivi o al cloud.
Poiché questi dispositivi devono funzionare con un'alimentazione limitata (inclusa l'alimentazione a batteria), Google ha progettato il coprocessore Edge TPU per accelerare l'inferenza ML su dispositivi a basso consumo energetico. Un singolo Edge TPU può eseguire 4 trilioni di operazioni al secondo (4 TOPS) utilizzando solo 2 watt di potenza, in altre parole, hai 2 TOPS per watt. Ad esempio, Edge TPU può eseguire modelli di visione artificiale mobile all'avanguardia come MobileNet V2 a quasi 400 frame al secondo e in modo efficiente dal punto di vista energetico.
Questo acceleratore ML a bassa potenza incrementa Cloud TPU e da Cloud IoT forniscono un'infrastruttura end-to-end (cloud-to-edge, hardware e software) che che facilitano le soluzioni basate sull'AI.
Edge TPU è disponibile per i tuoi dispositivi di prototipazione e produzione in diversi fattori di forma, tra cui un computer a scheda singola, un system-on-module, una scheda PCIe/M.2 e un modulo montato sulla superficie. Per ulteriori informazioni sui Edge TPU e tutti i prodotti disponibili, visita il sito coral.ai.
Introduzione a Cloud TPU
- Configura 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
- Addestrare un modello di riferimento su una TPU
- Analizzare il modello
Richiesta di assistenza
Contatta l'assistenza per Cloud TPU. Se hai un progetto Google Cloud attivo, preparati a fornire le seguenti informazioni:
- L'ID del tuo 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 potrebbero esserti utili: