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 maggiori informazioni sull'hardware TPU, consulta Architettura TPU.

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 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 di algebra lineare accelerata (XLA). XLA è un compilatore just-in-time che prende il grafico emesso da un'applicazione del 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 dimensioni medie o grandi 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 Compute Engine, Google Kubernetes Engine e Vertex AI. L'API Cloud TPU è obsoleta. Per maggiori informazioni, consulta la pagina Eseguire la migrazione dall'API Cloud TPU. La tabella seguente elenca le risorse per ogni servizio Google Cloud .

ServizioGoogle Cloud Risorse
Compute Engine Risorse TPU in Compute Engine
Google Kubernetes Engine

Informazioni sulle TPU in GKE

Vertex AI

Addestramento su Vertex AI con le TPU

Utilizzare le TPU per la previsione online su 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 multiple 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 TPU.
  • Il padding aumenta la quantità di spazio di archiviazione della memoria on-chip necessaria per un tensore e, nel caso estremo, può causare un errore di esaurimento della memoria.

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 dei tensori 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 meglio l'MXU. Pertanto, uno di questi deve essere un multiplo di 128. In caso contrario, il compilatore ne riempirà uno 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

Per iniziare a utilizzare le TPU con Compute Engine, segui questi passaggi:

  1. Per configurare il progetto, abilitare l'API Compute Engine e ottenere le autorizzazioni richieste, segui i passaggi descritti in Configurare un progetto. Google Cloud
  2. Per informazioni su versioni, configurazioni, quote e prezzi delle TPU, leggi Pianificare le risorse Cloud TPU.
  3. Per iniziare a utilizzare le TPU, consulta la Guida rapida: crea un'istanza TPU. Per saperne di più sulla creazione di TPU, consulta la panoramica della creazione di TPU.

Richiedere assistenza

Per ricevere assistenza, contatta l'assistenza Cloud TPU. Se hai un progetto Google Cloud attivo, preparati a fornire le seguenti informazioni:

  • Il tuo Google Cloud ID progetto
  • Il nome della TPU, se esistente
  • Altre informazioni che vuoi fornire

Passaggi successivi