TensorFlow: Google apre il framework per il deep learning

Google Brain rilascia TensorFlow sotto licenza Apache 2.0: grafi computazionali statici, esecuzione su CPU e GPU, distribuzione su cluster e visualizzazione con TensorBoard.

Open SourceAI Open SourceTensorFlowDeep LearningAIGoogleMachine Learning

Da DistBelief a TensorFlow

Google utilizza il deep learning internamente da anni. Il predecessore si chiama DistBelief, un sistema progettato per addestrare reti neurali di grandi dimensioni distribuendo il calcolo su migliaia di macchine. DistBelief funziona, ma la sua architettura è rigida: aggiungere nuovi tipi di layer o sperimentare con architetture diverse richiede interventi profondi nel codice del sistema. Il team di Google Brain decide di riprogettare il framework da zero, con l’obiettivo di creare un sistema flessibile, performante e — decisione inedita per Google — pubblico.

Nel novembre 2015 TensorFlow viene rilasciato sotto licenza Apache 2.0. Il framework che Google utilizza internamente per Search, Gmail, Google Translate e il riconoscimento vocale diventa disponibile a chiunque.

Grafi computazionali statici

L’architettura di TensorFlow si basa sul concetto di grafo computazionale statico. Il programmatore definisce un grafo di operazioni — somme, moltiplicazioni matriciali, convoluzioni, funzioni di attivazione — che descrive l’intero flusso di calcolo della rete neurale. I nodi del grafo rappresentano operazioni, gli archi rappresentano i tensori (array multidimensionali) che fluiscono tra un’operazione e l’altra.

Il grafo viene definito in una prima fase (define) e poi eseguito in una seconda fase (run) all’interno di una sessione. Questa separazione permette al sistema di analizzare l’intero grafo prima dell’esecuzione, applicare ottimizzazioni — fusione di operazioni, allocazione efficiente della memoria, parallelizzazione — e distribuire il calcolo su dispositivi diversi.

CPU, GPU e cluster

TensorFlow astrae il dispositivo di esecuzione: lo stesso grafo può essere eseguito su CPU, su GPU tramite CUDA di NVIDIA, o distribuito su un cluster di macchine. Lo sviluppatore annota quali operazioni devono essere eseguite su quale dispositivo, e il runtime si occupa della comunicazione e della sincronizzazione.

L’addestramento distribuito permette di scalare su dataset di dimensioni che una singola macchina non potrebbe gestire. I parameter server coordinano l’aggiornamento dei pesi della rete tra i diversi worker, mentre il calcolo dei gradienti viene parallelizzato.

TensorBoard e strumenti

TensorBoard è lo strumento di visualizzazione integrato: permette di ispezionare la struttura del grafo computazionale, monitorare l’andamento delle metriche durante l’addestramento — loss, accuracy, distribuzioni dei pesi — e visualizzare embedding in spazi ad alta dimensionalità. Per i team che addestrano modelli complessi per giorni o settimane, la capacità di osservare l’evoluzione dell’addestramento in tempo reale è fondamentale per diagnosticare problemi e ottimizzare gli iperparametri.

TensorFlow rende accessibile a ricercatori, startup e aziende lo stesso livello di infrastruttura per il deep learning che fino a quel momento era disponibile solo all’interno dei grandi laboratori di ricerca.

Link: tensorflow.org

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi