Unità di elaborazione Cloud Tensor (TPU)

Le unità di elaborazione Tensor (TPU) sono i circuiti integrati (ASIC) specifici per l'applicazione sviluppati da Google, utilizzati per accelerare i carichi di lavoro del machine learning. Le TPU sono progettate da zero con il vantaggio dell'esperienza profonda e della leadership di Google nel machine learning.

Cloud TPU ti consente di eseguire i carichi di lavoro di machine learning sull'hardware acceleratore TPU di Google utilizzando TensorFlow. Cloud TPU è progettato per offrire il massimo livello di prestazioni e flessibilità per aiutare ricercatori, sviluppatori e aziende a creare cluster di calcolo TensorFlow in grado di utilizzare CPU, GPU e TPU. Le API TensorFlow di alto livello ti aiutano a far eseguire modelli in esecuzione sull'hardware Cloud TPU.

Vantaggi delle TPU

Le risorse Cloud TPU accelerano le prestazioni del calcolo dell'algebra lineare, che viene ampiamente utilizzato nelle applicazioni di machine learning. Le TPU ridurre al minimo il tempo di precisione quando addestri modelli di rete neurale complessi e di grandi dimensioni. I modelli che in precedenza richiedevano settimane di addestramento su altre piattaforme hardware possono convergere in ore sulle TPU.

Disponibilità

Le regioni e le zone di Cloud TPU mostrano le località in cui sono disponibili le Cloud TPU.

Modello di programmazione Cloud TPU

Le Cloud TPU sono molto veloci nel eseguire calcoli compatti e a matrice densa. Il trasferimento di dati tra Cloud TPU e la memoria host è lento rispetto alla velocità di calcolo: la velocità del bus PCIe è molto inferiore rispetto a Cloud TPU Interconnect e alla memoria ad alta larghezza di banda (HBM) del chip. Compilazione parziale di un modello, in cui l'esecuzione passa continuamente tra host e dispositivo e la TPU rimane inattivo per la maggior parte del tempo, in attesa che i dati arrivino sul bus PCIe. Per alleviare questa situazione, il modello di programmazione per Cloud TPU è progettato per eseguire gran parte dell'addestramento su TPU, cioè l'intero ciclo di addestramento.

Di seguito sono riportate alcune caratteristiche salienti del modello di programmazione TPU :

  • Tutti i parametri del modello vengono conservati nella memoria a banda elevata su chip.
  • Il costo del lancio di calcoli su Cloud TPU è ammortizzato eseguendo molti passaggi di addestramento in un ciclo.
  • I dati di addestramento di input vengono trasmessi in flussi a una coda di "feed" su Cloud TPU. Un programma in esecuzione su Cloud TPU recupera i batch da queste code durante ogni passaggio di addestramento.
  • Il server TensorFlow in esecuzione sulla macchina host (la CPU collegata al dispositivo Cloud TPU) recupera i dati e li pre-elabora prima di &intinging" all'hardware Cloud TPU.
  • Parallelismo dei dati: i core su una Cloud TPU eseguono un programma identico che risiede nel rispettivo HBM in modo sincrono. Un'operazione di riduzione viene eseguita alla fine di ogni passaggio della rete neurale in tutti i core.

Quando utilizzare le TPU

Le Cloud TPU sono ottimizzate per carichi di lavoro specifici. In alcune situazioni, potresti voler utilizzare GPU o CPU sulle istanze di Compute Engine per eseguire i carichi di lavoro di machine learning. In generale, puoi decidere qual è l'hardware 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 tempi di addestramento
    • Modelli di piccole dimensioni con piccoli batch efficaci
    • Modelli dominati dalle operazioni TensorFlow personalizzate scritte in C++
    • Modelli limitati dall'I/O disponibile o dalla larghezza di banda di rete del sistema host
  • GPU

    • Modelli per i quali l'origine non esiste o è troppo onerosa per essere modificata
    • Modelli con un numero significativo di operazioni TensorFlow personalizzate che devono essere eseguite almeno parzialmente su CPU
    • Modelli con operazioni TensorFlow non disponibili su Cloud TPU (consulta l'elenco delle operazioni TensorFlow disponibili)
    • Modelli di medie e grandi dimensioni con gruppi batch di dimensioni maggiori
  • TPU

    • Modelli dominati dai calcoli a matrice
    • Modelli senza operazioni TensorFlow personalizzate all'interno del ciclo di addestramento principale
    • Modelli che vengono addestrati per settimane o mesi
    • Modelli più grandi e grandi con dimensioni batch efficaci molto grandi

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

  • Programmi di algebra lineari che richiedono frequenti rami o che sono dominati dagli elementi algebra. Le TPU sono ottimizzate per eseguire la moltiplicazione di matrici veloce e ingombrante, pertanto è improbabile che un carico di lavoro non dominato dalla moltiplicazione di matrici abbia un buon rendimento su altre TPU.
  • I carichi di lavoro che accedono alla memoria in modo sparso potrebbero non essere disponibili sulle TPU.
  • Carichi di lavoro che richiedono aritmetica ad alta precisione. Ad esempio, l'aritmetica a doppia precisione non è adatta per le TPU.
  • I carichi di lavoro di rete neurale che contengono operazioni TensorFlow personalizzate scritte in C++. In particolare, le operazioni personalizzate nel corpo del ciclo di addestramento principale non sono adatte per le TPU.

I carichi di lavoro di rete neurale devono essere in grado di eseguire più iterazioni dell'intero loop di addestramento sulla TPU. Sebbene questo non sia un requisito fondamentale delle TPU, questo è uno dei vincoli attuali dell'ecosistema del software TPU richiesto per l'efficienza.

Differenze rispetto alla formazione convenzionale

Un tipico grafico di addestramento di TensorFlow è costituito da diversi sottografici che offrono una serie di funzionalità, tra cui:

  • Operazioni di I/O per leggere i dati di addestramento.
  • Fasi di pre-elaborazione dell'input, spesso collegate tramite code.
  • Variabili di modello.
  • Codice di inizializzazione per queste variabili.
  • Il modello stesso.
  • Perdita funzioni.
  • Codice sfumatura (solitamente generato automaticamente).
  • Operazioni di riepilogo per il monitoraggio dell'addestramento.
  • Salva/Ripristina operazioni per checkpoint.

Su Cloud TPU, i programmi TensorFlow sono compilati dal compilatore just-in-time XLA. Durante l'addestramento su Cloud TPU, l'unico codice che può essere compilato ed eseguito sull'hardware è quello corrispondente alle parti dense dei modelli, alle perdite e ai sottografici in gradiente. Tutte le altre parti del programma TensorFlow vengono eseguite sulle macchine host (server Cloud TPU) nell'ambito di una normale sessione TensorFlow distribuita. Si tratta in genere delle operazioni di I/O che leggono i dati di addestramento, qualsiasi codice di pre-elaborazione (ad esempio: decodifica di immagini compresse, campionamento/ritaglio casuale, assemblaggio di mini batch di addestramento) e tutte le parti di manutenzione del grafico come il salvataggio/il ripristino dei punti di accesso.

Best practice per lo sviluppo di modelli

Un singolo chip Cloud TPU contiene 2 core, ognuno dei quali contiene più unità di matrice (MXU) progettate per accelerare i programmi dominati da moltiplicazioni e convoluzioni di masse densamente (vedi Architettura di sistema). I programmi che utilizzano una notevole quantità di tempo di esecuzione per moltiplicazioni di matrici sono in genere adatti a Cloud TPU. Un programma il cui calcolo è dominato da operazioni non a matrice come aggiunta, riformattazione o concatenazione, probabilmente non raggiungerà un'utilizzo MXU elevato. Di seguito sono riportate alcune linee guida per aiutarti a scegliere e creare modelli adatti a Cloud TPU.

Un singolo dispositivo Cloud TPU è costituito da quattro chip, ognuno dei quali ha due core TPU. Pertanto, per un utilizzo efficiente di Cloud TPU, un programma deve utilizzare ciascuno degli otto core.

Layout

Il compilatore XLA esegue trasformazioni del codice, incluso il piastrelle di una matrice, moltiplicandoli in blocchi più piccoli, per eseguire i calcoli sull'unità a matrice (MXU) in modo efficiente. La struttura dell'hardware MXU, un array sistolico 128 x 128 e il design del sottosistema di memoria TPU, che preferisce dimensioni multiple di 8, vengono utilizzati dal compilatore XLA per l'efficienza della piastrellatura. Di conseguenza, alcuni layout sono più vantaggiosi per il riquadro, mentre altri richiedono l'esecuzione di riforme prima di poter essere incluse nel riquadro. Le operazioni di riformattazione sono spesso associate alla memoria su Cloud TPU.

Forme

Il compilatore XLA compila un grafico TensorFlow giusto 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 lentamente). Pertanto, qualsiasi modello con tensori con forme dinamiche che cambiano al runtime non è adatto alle TPU.

Spaziatura interna

Un programma Cloud TPU ad alte prestazioni è quello in cui il computing denso può essere facilmente incorporato in blocchi di 128 x 128 blocchi. Quando un calcolo a matrice non può occupare un'intera MXU, il compilatore inserisce i tensori con zeri. La spaziatura interna presenta due svantaggi:

  • I Tensor riempiti con zeri sottoutilizzano il core TPU.
  • La spaziatura interna aumenta la quantità di memoria su chip richiesta per un tensore e può causare un errore di memoria insufficiente in caso estremo.

Sebbene la spaziatura interna venga eseguita automaticamente dal compilatore XLA quando necessario, è possibile determinarne la quantità tramite lo strumento op_profile. Puoi evitare la spaziatura interna scegliendo dimensioni dei tensori adatti alle TPU.

Dimensioni

La scelta di dimensioni tensore adeguate consente di estrarre le massime prestazioni dall'hardware TPU, in particolare dagli MXU. Il compilatore XLA tenta di utilizzare la dimensione del batch o la dimensione della funzionalità per utilizzare al meglio l'MXU. Pertanto, uno di questi deve essere un multiplo di 128. In caso contrario, il compilatore ne inserirà uno su 128. Idealmente, le dimensioni dei batch e le dimensioni delle caratteristiche dovrebbero essere multipli di 8, che consentono l'estrazione di prestazioni elevate dal sottosistema memoria.

Operazioni

Consulta l'elenco delle operazioni TensorFlow disponibili.

Integrazione dei controlli di servizio VPC

I Controlli di servizio VPC di Cloud TPU ti consentono di definire i perimetri di sicurezza intorno alle risorse di Cloud TPU e controllare lo spostamento dei dati oltre il perimetro. Per saperne di più sui Controlli di servizio VPC, consulta la Panoramica dei Controlli di servizio VPC. Per scoprire di più sulle limitazioni relative all'utilizzo di Cloud TPU con i Controlli di servizio VPC, vedi Prodotti supportati e limitazioni.

Edge TPU

I modelli di machine learning addestrati nel cloud hanno sempre più bisogno di eseguire l'attacco "a livello perimetrale", ovvero su dispositivi che operano sul perimetro dell'Internet of Things (IoT). Questi dispositivi includono sensori e altri smart device che raccolgono dati in tempo reale, prendono decisioni intelligenti e poi adottano o comunicano le proprie informazioni ad altri dispositivi o al cloud.

Poiché tali dispositivi devono funzionare a potenza limitata (inclusa l'alimentazione a batteria), Google ha progettato il coprocessore Edge TPU per accelerare l'inferenza ML sui dispositivi a basso consumo. Un singolo Edge TPU può eseguire 4 trilioni di operazioni al secondo (4 TOPS), utilizzando solo 2 watt di potenza. In altre parole, vengono forniti 2 TOPS per watt. Ad esempio, Edge TPU può eseguire modelli di visione artificiale mobili all'avanguardia come MobileNet V2 a quasi 400 frame al secondo e in modo efficiente dal punto di vista energetico.

Questo acceleratore ML a basso consumo potenzia Cloud TPU e Cloud IoT per fornire un'infrastruttura end-to-end (cloud-to-edge, hardware + software) che faciliti le tue soluzioni basate su 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 sistema su modulo, una scheda PCIe/M.2 e un modulo montato su superficie. Per ulteriori informazioni sulla TPU TPU e su tutti i prodotti disponibili, visita il sito coral.ai.

Passaggi successivi

  • Leggi la guida rapida di TPU per iniziare a utilizzare le risorse Cloud TPU.
  • Completa uno dei tutorial su Cloud TPU per scoprire come eseguire i carichi di lavoro comuni di machine learning sulle risorse Cloud TPU.