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 Architettura di sistema. Cloud TPU è un servizio web che rende le TPU disponibili come computing scalabile su Google Cloud.

Le TPU addestrano i tuoi modelli in modo più efficiente utilizzando hardware progettato 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 fanno lo scale up dei carichi di lavoro con poche o nessuna modifica al codice.

Come funziona?

Per capire come funzionano le TPU, è utile comprendere in che modo gli altri acceleratori le sfide computazionali legate all'addestramento dei modelli ML.

Come funziona una CPU

Una CPU è un processore per uso generico basato sull'architettura di von Neumann. Ciò significa che una CPU funziona con software e memoria come questi:

Illustrazione di come funziona una CPU

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 archivia il risultato in memoria per ogni calcolo. L'accesso alla memoria è lento rispetto alla velocità di calcolo e può limitare la velocità effettiva totale delle CPU. Questo è spesso definito come il 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 le 2500 e le 5000 ALU. L'elevato numero di processori significa che è possibile eseguire migliaia di moltiplicazioni e aggiunte contemporaneamente.

Illustrazione di come funziona una GPU

Questa architettura GPU funziona bene su applicazioni con un elevato parallelismo, come come operazioni delle matrici in una rete neurale. Infatti, in un tipico addestramento per il deep learning, una GPU può fornire un ordine di grandezza anziché una CPU.

Tuttavia, la GPU è ancora un processore per uso generico che deve supportare molte applicazioni e software diversi. Di conseguenza, le GPU hanno lo stesso problema CPU. Per ogni calcolo nelle migliaia di ALU, una GPU deve accedere registri o memoria condivisa per leggere gli operandi e archiviare l'intermedio risultati 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.

L'attività principale delle TPU è l'elaborazione matriciale, 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 trasmette i flussi di dati in una coda in-feed. La TPU carica i dati in coda e li archivia nella memoria HBM. Al termine del calcolo, la TPU carica i risultati nella coda di uscita. 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).

Illustrazione di come una TPU carica i parametri dalla memoria

Quindi, la TPU carica i dati dalla memoria HBM. Man mano che viene eseguita ogni moltiplicazione, il risultato viene passato all'accumulatore di moltiplicazione successivo. L'output è la somma di tutti i risultati delle moltiplicazioni tra dati e parametri. Non è necessario accedere alla memoria durante il processo di moltiplicazione matriciale.

Illustrazione di come una TPU carica i dati dalla memoria

Di conseguenza, le TPU possono raggiungere una velocità effettiva di calcolo elevata sulla rete neurale calcoli.

Compilatore XLA

Il codice eseguito sulle TPU deve essere compilato dall'acceleratore lineare algebra (XLA) compilatore. 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 è meglio 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 scritta in C++
  • I modelli che sono limitati dall'I/O disponibile o dalla larghezza di banda di rete sistema host

GPU

  • Modelli con un numero significativo di operazioni TensorFlow/PyTorch/JAX personalizzate che devono essere eseguiti almeno parzialmente su CPU
  • Modelli con operazioni TensorFlow non disponibili su Cloud TPU (consulta l'elenco delle operazioni di TensorFlow disponibili)
  • Modelli medio-grandi 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 dei batch effettive

Le Cloud TPU non sono adatte ai seguenti carichi di lavoro:

  • Programmi di algebra lineare che richiedono frequenti ramificazioni o che ne contengono molti operazioni di algebra a livello di elementi
  • 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 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ù favorisce il tiling, mentre altre richiedono l'esecuzione di rimodellamenti prima di che possono essere affiancati. 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 ha 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 il calcolo di una matrice non può occupare un intero MXU, il compilatore riempie i tensori di zeri. Ci sono due svantaggi alla spaziatura interna:

  • I tensori imbottiti con zeri sottoutilizzano il core della TPU.
  • Il Padding aumenta la quantità di spazio di archiviazione su chip richiesto per un tensore e, in caso estremo, può causare un errore di esaurimento della memoria.

Mentre la spaziatura interna viene eseguita automaticamente dal compilatore XLA quando necessario, può determinare la quantità di spaziatura interna eseguita tramite op_profile lo strumento a riga di comando gcloud. Puoi evitare la spaziatura interna scegliendo le dimensioni del tensore più 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 caratteristica per utilizzare MXU. Pertanto, uno di questi deve essere un multiplo di 128. Altrimenti, il compilatore ne eseguirà il pad a 128. Idealmente, la dimensione del batch e la caratteristica devono essere multipli di 8, il che consente di estrarre prestazioni 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 saperne di più sui Controlli di servizio VPC, consulta Panoramica dei Controlli di servizio VPC. Per saperne di più sulle limitazioni dell'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 una potenza limitata (inclusa la batteria), Google ha progettato il coprocessore Edge TPU per accelerare l'inferenza ML su dispositivi a basso consumo. Una singola Edge TPU può eseguire 4 trilioni operazioni al secondo (4 TOPS), utilizzando solo 2 watt di potenza, in altre parole, si ottengono 2 TOPS per watt. Ad esempio, Edge TPU può eseguire modelli di visione artificiale mobile 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, Scheda PCIe/M.2 e modulo a parete. Per ulteriori informazioni sui Edge TPU e tutti i prodotti disponibili, visita il sito coral.ai.

Introduzione a Cloud TPU

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: