UNA GUIDA PER PRINCIPIANTI ALLE TPU

Google ha introdotto Tensor Processing Unit o TPU nel 2016. Le TPU, a differenza delle GPU, sono state progettate su misura per gestire operazioni come la moltiplicazione delle matrici nell’addestramento delle reti neurali. È possibile accedere alle TPU di Google in due forme: cloud TPU e edge TPU. Le TPU cloud sono accessibili dal blocco note di Google Colab, che fornisce agli utenti pod TPU che si trovano nei data center di Google. Considerando che, Edge TPU è un kit di sviluppo personalizzato che può essere utilizzato per creare applicazioni specifiche. Nella prossima sezione vedremo il funzionamento dei TPU e dei suoi componenti chiave.

Componenti chiave delle TPU
Prima di entrare nelle TPU funzionanti, ecco un vocabolario ad esso correlato:

Tensor

I tensori sono matrici o matrici multidimensionali. I tensori sono unità fondamentali che possono contenere punti dati come pesi di un nodo in una rete neurale in un formato di riga e colonna. Le operazioni matematiche di base vengono eseguite sui tensori, tra cui addizione, moltiplicazione degli elementi e moltiplicazione delle matrici.

bfloat

I FLOP (operazioni in virgola mobile al secondo) sono unità di misura della prestazione di un’operazione computazionale. Il formato personalizzato in virgola mobile, nel caso di TPU di Google, è chiamato “Brain Floating Point Format”, o “bfloat16” in breve. bfloat16 viene posizionato con cura all’interno di array sistolici per accelerare l’allenamento della rete neurale. Maggiore è la gamma di FLOP, maggiore è la potenza di elaborazione.

Matrice sistolica

tramite HT Kung, CMU
Un array systolic è una rete di processori responsabili dell’esecuzione dei calcoli e del passaggio dei risultati attraverso il sistema. Consiste in un gran numero di elementi di elaborazione (PE) che sono disposti in matrici, come illustrato sopra. Questi array hanno un alto grado di parallelismo e sono favorevoli al calcolo parallelo.

Operazioni matematiche tramite documenti Google Cloud
Tensor Processing Unit (TPU), un ASIC personalizzato, costruito appositamente per l’apprendimento automatico – e realizzato su misura per TensorFlow, è in grado di gestire massicce moltiplicazioni e aggiunte per reti neurali, a grandi velocità, riducendo al contempo l’uso di troppa potenza e spazio sul pavimento.

I TPU eseguono 3 passaggi principali:

Innanzitutto, i parametri vengono caricati dalla memoria nella matrice di moltiplicatori e additivi.
Quindi, i dati vengono caricati dalla memoria.
Dopo ogni operazione di moltiplicazione, i risultati vengono passati ai moltiplicatori successivi tenendo contemporaneamente la somma (prodotto punto). Può essere visto nell’animazione sopra. L’output viene quindi fornito come la somma di tutti i risultati di moltiplicazione tra dati e parametri.
Un TPU cloud tipico ha due array sistolici di dimensioni 128 x 128, che aggregano 32.768 ALU (unità logiche aritmetiche) per valori a virgola mobile a 16 bit in un singolo processore. Migliaia di moltiplicatori e additivi sono collegati tra loro direttamente per formare una grande matrice fisica di operatori, che forma un’architettura di matrice sistolica come discusso sopra.

Il TPU consente al chip di essere più tollerante alla riduzione della precisione computazionale, il che significa che richiede meno transistor per operazione. Grazie a questa funzione, un singolo chip può gestire relativamente più operazioni al secondo.

Poiché le TPU sono costruite su misura per la gestione di operazioni come la moltiplicazione delle matrici e l’accelerazione della formazione, le TPU potrebbero non essere adatte alla gestione di altri tipi di carichi di lavoro.

Limitazioni delle TPU cloud:

È improbabile che carichi di lavoro basati su moltiplicazione non matriciale funzionino bene su TPU
Se un carico di lavoro richiede un’aritmetica di alta precisione, i TPU non sono la scelta migliore
I carichi di lavoro della rete neurale che contengono operazioni TensorFlow personalizzate scritte in C ++ non sono adatti

I TPU sono stati utilizzati nel famoso AlphaGo di DeepMind, dove gli algoritmi sono stati utilizzati per battere il miglior giocatore al mondo Lee Sedol. Era anche usato nel sistema AlphaZero, che produceva programmi di gioco di scacchi, Shogi e Go. Google ha anche utilizzato TPU per i suoi servizi di elaborazione del testo di Street View ed è stato in grado di trovare tutto il testo nel database di Street View in meno di cinque giorni. Nel caso di Google Foto, i TPU ora consentono di elaborare oltre 100 milioni di foto al giorno. Soprattutto, i TPU sono stati utilizzati anche per il cervello dietro i risultati di ricerca di Google: RankBrain.

Di ihal