Quanto è diversa una TPU da una GPU?
Architettonicamente? Molto diversa. Una GPU è un processore a tutti gli effetti, solo uno ottimizzato per il codice numerico vettoriale; le GPU sono il successore spirituale dei classici supercomputer Cray. Una TPU è un coprocessore, non può eseguire codice a sé stante, tutta l'esecuzione del codice avviene sulla CPU che si limita ad alimentare un flusso di microoperazioni alla TPU (vedi Uno sguardo approfondito alla prima Tensor Processing Unit (TPU) di Google | Google Cloud Big Data and Machine Learning Blog | Google Cloud Platform).
Praticamente parlando? La differenza principale è che le TPU sono più economiche e utilizzano molta meno energia, e possono quindi completare lavori di predizione davvero grandi in modo più economico delle GPU, o rendere più semplice l'uso della predizione in un servizio a bassa latenza. L'attuale generazione di TPU non è davvero grande per l'addestramento delle reti, sono più focalizzati sull'esecuzione di previsioni con loro dopo l'addestramento; questo spiega i risultati nella risposta di Dave Salvator a questa domanda.
Non c'è una ragione particolare per cui una TPU non potrebbe eseguire qualcosa di diverso da un modello TensorFlow, è solo che nessuno ha ancora scritto i compilatori per farlo. Sarebbe difficile, perché non è un processore completamente generico, e alcune delle strane restrizioni di TensorFlow sono lì per rendere possibili le TPU.
Le TPU sono un esperimento di Google piuttosto riuscito; Google prova un sacco di cose che sembrano folli, e molte di esse non funzionano meravigliosamente bene. Le TPU funzionano, ma non sostituiranno le GPU per ogni applicazione, o anche per molte applicazioni. Le TPU sono focalizzate solo sul lavoro di apprendimento automatico.