Architettura di sistema

Le TPU (Tensor Processing Unit) sono circuiti integrati per applicazioni specifiche (ASIC) progettati da Google per accelerare i carichi di lavoro di machine learning. Cloud TPU è un servizio Google Cloud che rende disponibili le TPU come risorsa scalabile.

Le TPU sono progettate per eseguire rapidamente operazioni sulle matrici, il che le rende ideali per i carichi di lavoro di machine learning. È possibile eseguire carichi di lavoro di machine learning sulle TPU utilizzando framework come TensorFlow, Pytorch e JAX.

Termini di Cloud TPU

Se non hai mai utilizzato Cloud TPU, consulta la home page della documentazione di TPU. Le sezioni seguenti spiegano i termini e i concetti correlati utilizzati in questo documento.

Inferenza batch

L'inferenza batch o offline si riferisce all'esecuzione dell'inferenza al di fuori delle pipeline di produzione, in genere su un insieme di input. L'inferenza batch viene utilizzata per attività offline come l'etichettatura dei dati e anche per la valutazione del modello addestrato. Gli SLO di latenza non sono una priorità per l'inferenza batch.

Chip TPU

Un chip TPU contiene uno o più TensorCore. Il numero di TensorCore dipende dalla versione del chip TPU. Ogni TensorCore è costituito da una o più unità di moltiplicazione a matrice (MXU), un'unità vettoriale e un'unità scalare.

Un'unità MXU è composta da accumulatori di moltiplicazione 256 x 256 (TPU v6e) o 128 x 128 (versioni TPU precedenti alla v6e) in un array sistolica. Le MXU forniscono la maggior parte della potenza di calcolo in un Tensor Core. Ogni MXU è in grado di eseguire 16 K operazioni di moltiplicazione e accumulo per ciclo. Tutte le moltiplicazioni accettano input bfloat16, ma tutte le accumulazioni vengono eseguite in formato numerico FP32.

L'unità di vettore viene utilizzata per calcoli generali come attivazioni e softmax. L'unità scalare viene utilizzata per il flusso di controllo, il calcolo degli indirizzi di memoria e altre operazioni di manutenzione.

Cube TPU

Una topologia 4x4x4. Questo vale solo per le topologie 3D (a partire dalla versione TPU v4).

Inferenza

L'inferenza è il processo di utilizzo di un modello addestrato per fare previsioni su nuovi dati. Viene utilizzato dal processo di pubblicazione.

Multislice e singolo slice

Multislice è un gruppo di sezioni che estende la connettività delle TPU oltre le connessioni inter-chip (ICI) e sfrutta la rete del data center (DCN) per trasmettere i dati oltre una sezione. I dati all'interno di ogni segmento vengono comunque trasmessi dall'ICI. Grazie a questa connettività ibrida, Multislice consente il parallelismo tra le slice e ti permette di utilizzare un numero maggiore di core TPU per un singolo job rispetto a quanto può supportare una singola slice.

Le TPU possono essere utilizzate per eseguire un job su un singolo slice o su più slice. Per ulteriori dettagli, consulta la Introduzione a Multislice.

Resilienza dell'ICI di Cloud TPU

La resilienza dell'ICI contribuisce a migliorare la tolleranza agli errori dei link ottici e degli interruttori di circuiti ottici (OCS) che collegano le TPU tra i cubetti. (le connessioni ICI all'interno di un cubo utilizzano cavi in rame non interessati). La resilienza dell'ICI consente di instradare le connessioni ICI attorno ai guasti dell'OCS e dell'ICI ottico. Di conseguenza, migliora la disponibilità di pianificazione delle sezioni TPU, con il compromesso del degrado temporaneo delle prestazioni dell'ICI.

Come per Cloud TPU v4, la resilienza ICI è abilitata per impostazione predefinita per le sezioni v5p di almeno un cubo:

  • v5p-128 quando si specifica il tipo di acceleratore
  • 4x4x4 quando specifichi la configurazione dell'acceleratore

Risorsa in coda

Una rappresentazione delle risorse TPU, utilizzata per mettere in coda e gestire una richiesta per un ambiente TPU a un solo o più slice. Per ulteriori informazioni, consulta la Guida dell'utente per le risorse in coda.

Pubblicazione

La pubblicazione è il processo di implementazione di un modello di machine learning addestrato in un ambiente di produzione in cui può essere utilizzato per fare previsioni o prendere decisioni. La latenza e la disponibilità a livello di servizio sono importanti per la pubblicazione.

Host singolo, multi host e host secondario

Un host TPU è una VM in esecuzione su un computer fisico collegato all'hardware TPU. I carichi di lavoro TPU possono utilizzare uno o più host.

Un carico di lavoro a singolo host è limitato a una VM TPU. Un carico di lavoro multi-host distribuisce l'addestramento su più VM TPU. Un carico di lavoro del sottohost non utilizza tutti i chip di una VM TPU.

Sezioni

Una sezione di pod è una raccolta di chip tutti all'interno dello stesso pod di TPU connessi da interconnessioni interchip ad alta velocità (ICI). Le sezioni sono descritte in termini di chip o TensorCore, a seconda della versione della TPU.

Forma del chip e topologia del chip si riferiscono anche alle forme delle sezioni.

SparseCore

SparseCore sono processori di dataflow che accelerano i modelli basati sugli incorporamenti trovati nei modelli di consigli. La versione v5p include quattro SparseCore per chip e la versione v6e include due SparseCore per chip.

pod di TPU

Un pod di TPU è un insieme contiguo di TPU raggruppate in una rete specializzata. Il numero di chip TPU in un pod di TPU dipende dalla versione della TPU.

VM o worker TPU

Una macchina virtuale con sistema operativo Linux che ha accesso alle TPU sottostanti. Una VM TPU è nota anche come worker.

TensorCores

I chip TPU hanno uno o due TensorCore per eseguire la moltiplicazione di matrici. Per ulteriori informazioni sui Tensor Core, consulta questo articolo ACM.

Worker

Consulta la sezione VM TPU.

Versioni TPU

L'architettura esatta di un chip TPU dipende dalla versione della TPU utilizzata. Ogni versione di TPU supporta anche dimensioni e configurazioni diverse delle sezioni. Per maggiori informazioni sull'architettura di sistema e sulle configurazioni supportate, consulta le seguenti pagine:

Architetture TPU

Esistono due architetture TPU che descrivono il modo in cui una VM è collegata fisicamente al dispositivo TPU: nodo TPU e VM TPU. Il nodo TPU era l'architettura TPU originale per le versioni TPU v2 e v3. Con la versione 4, la VM TPU è diventata l'architettura predefinita, ma entrambe le architetture erano supportate. L'architettura dei nodi TPU è deprecata e viene supportata solo la VM TPU. Se utilizzi i nodi TPU, consulta la sezione Passaggio dall'architettura del nodo TPU all'architettura VM TPU per convertire l'architettura del nodo TPU in quella della VM TPU.

Architettura VM TPU

L'architettura VM TPU ti consente di connetterti direttamente alla VM collegata fisicamente al dispositivo TPU tramite SSH. Hai accesso come utente root alla VM, quindi puoi eseguire codice arbitrario. Puoi accedere ai log di debug e ai messaggi di errore del compilatore e di runtime.

immagine

Architettura del nodo TPU

L'architettura del nodo TPU è costituita da una VM utente che comunica con l'host TPU tramite gRPC. Quando utilizzi questa architettura, non puoi accedere direttamente all'host TPU, il che rende difficile il debug dell'addestramento e degli errori TPU.

immagine

Passaggio dall'architettura del nodo TPU a quella della VM TPU

Se hai TPU che utilizzano l'architettura dei nodi TPU, segui questi passaggi per identificarle, eliminarle e eseguirne il nuovo provisioning come VM TPU.

  1. Vai alla pagina TPU:

    Vai alle TPU

    1. Individua la TPU e la relativa architettura nella sezione Architettura. Se l'architettura è"VM TPU", non devi fare nulla. Se l'architettura è "Nodo TPU", devi eliminare e eseguire nuovamente il provisioning della TPU.
  2. Elimina e esegui nuovamente il provisioning della TPU.

    Consulta la sezione Gestione delle TPU per le istruzioni sull'eliminazione e sul riprovisioning delle TPU.

Passaggi successivi