Il deep learning è un sottoinsieme del machine learning su cui vengono fatti sempre maggiori investimenti. Strutture di deep learning, ovvero reti neurali profonde, sono alla base di complessi sistemi che trovano una varietà di applicazioni, dalla traduzione automatizzata al riconoscimento delle immagini.

Il deep learning, o apprendimento profondo, rappresenta una grande promessa per l’analisi di dati non strutturati. Al momento ci sono tre ostacoli da superare: il deep learning è difficile, richiede grandi quantità di dati e impegna molta potenza di elaborazione. Naturalmente, grandi menti sono al lavoro per superare queste sfide.

Ciò che sta succedendo in questo spazio non è solo uno scontro tra frameworks di deep learning di diversi competitor, come TensorFlow di Google e il progetto Paddle di Baidu. La concorrenza tra framework software è un dato di fatto in tutti i segmenti IT.

Gli sviluppi più recenti riguardano la sfida hardware versus software. I prossimi grandi progressi nell’apprendimento profondo verranno da hardware dedicato progettato ad hoc? O da algoritmi migliori, più intelligenti ed efficienti, che permetteranno di sfruttare il deep learning senza la necessità di supporto hardware? Infine, il deep learning diventerà accessibile a (quasi) tutti, o questa tecnologia richiederà sempre personale altamente specializzato?

Microsoft Cognitive Toolkit vs TensorFlow

Ogni volta che emerge una nuova, grande tecnologia tutti i big dell’IT cercano di conquistare una fetta di mercato. È successo con NoSQL, con Hadoop e con Spark, e ora sta succedendo con i framework per il deep learning. Google TensorFlow è stato proposto come una soluzione potente e generale, ma anche come un modo per collegare applicazioni di deep learning al cloud e all’accelerazione hardware di Google.

Sul fronte deep learning Microsoft ha risposto a Google con Cognitive Toolkit (CNTK). La versione 2.0 di CNTK sfida TensorFlow su più fronti. CNTK fornisce ora un’API Java, che consente un’integrazione più diretta con i framework di elaborazione, quali Spark, e supporta il codice scritto per la libreria per reti neurali Keras, che è essenzialmente un front end per TensorFlow. In questo modo gli utenti Keras possono passare in modo fluido dalla soluzione di Google verso quella di Microsoft.

Ma la sfida più diretta e significativa di Microsoft contro TensorFlow era rendere CNTK più veloce e più preciso, e fornire API Python che offrono funzionalità sia di basso livello che di alto livello. Microsoft ha persino formulato un elenco di motivi per cui vale la pena passare da TensorFlow a CNTK, e questi vantaggi sono i primi della lista.

La velocità e l’accuratezza non sono gli unici fattori che fanno la differenza. Se il sistema Microsoft è di default più veloce di TensorFlow, significa che gli utenti possono scegliere tra più opzioni, oltre alla possibilità di utilizzare più hardware: per esempio, l’accelerazione hardware di TensorFlow tramite processori TPU (Tensor Processing Unit) personalizzati e proprietari di Google. Significa anche che progetti di terze parti che si interfacciano sia con TensorFlow che CNTK, come Spark, ne trarranno beneficio. TensorFlow e Spark già lavorano insieme, per concessione di Yahoo, ma se CNTK e Spark offrono maggiori vantaggi con meno lavoro, CNTK diventa un’opzione interessante negli ambiti che Spark ha già conquistato.

Graphcore e Wave Computing: due startup che puntano sull’hardware

Uno svantaggio delle TPU di Google è che sono disponibili solo nel cloud di Google. Per chi ha già investito nella Google Cloud Platform questo non è un problema, ma per tutti gli altri, e questi altri sono tanti, è un potenziale ostacolo. Sono comunque disponibili componenti dedicate per il deep learning, come le GPU general purpose di Nvidia.

Molte aziende hanno recentemente presentato silicio specializzato che offre prestazioni superiori alle GPU per applicazioni di deep learning. La startup Graphcore propone un processore progettato per elaborare i dati utilizzati nelle reti neurali. La sfida, secondo la società, è sviluppato hardware ottimizzato in grado di eseguire reti ricorrenti o che si collegano tra loro e con altre reti.

Graphcore ha aumentato le prestazioni mantenendo il modello della rete più vicino possibile al silicio ed evitando i viaggi di andata e ritorno verso la memoria esterna. Evitare il movimento dei dati quando è possibile è un approccio comune per accelerare l’apprendimento automatico, ma Graphcore sta portando tale approccio a un livello superiore.

Wave Computing è un’altra startup che offre hardware specializzato per l’apprendimento profondo. Come Graphcore, la società ritiene che le GPU abbiano limitazioni intrinseche per le applicazioni di deep learning. Il piano di Wave Computing prevede la creazione di “appliance per il flusso dati”, sistemi rackmount che utilizzano hardware personalizzato che può fornire 2,9 petaop di potenza di calcolo (“petaop” è l’unità di misura utilizzata per operazioni a punti fissi, mentre “petaflop” si usa per operazioni in virgola mobile). Per fare un confronto tra le velocità, le TPU di Google raggiungono 92 teraop.

Affermazioni di questo tipo devono essere ancora sottoposte a test indipendenti, e non è chiaro se il prezzo per petaop sarà competitivo con altre soluzioni. Ma Wave assicura che gli utenti saranno ben supportati. TensorFlow dovrebbe essere il primo framework supportato dal prodotto, con CNTK, MXNet di Amazon e altri a seguire.

Brodmann17: un modello più piccolo e più veloce

Mentre Graphcore e Wave Computing puntano sullo sviluppo hardware TPU, altri ritengono che il miglioramento del deep learning sia legato a framework e algoritmi.

Google ha accennato all’ottimizzazione di TensorFlow per i dispositivi mobili. La startup Brodmann17 sta studiando la possibilità di fornire applicazioni di deep learning su hardware di livello smartphone utilizzando “il 5% delle risorse (calcolo, memoria e dati di apprendimento)” rispetto ad altre soluzioni.

Come ha spiegato Adi Pinhas, CEO e co-fondatore di Brodmann17, l’approccio della società è partire da modelli esistenti di reti neurali per creare un modello molto più piccolo. Pinhas ha affermato che i modelli più piccoli richiedono “meno del 10% dei dati per la formazione, rispetto ad altre architetture di deep learning”, ma con la stessa quantità di tempo necessaria per la formazione. Il risultato finale è un piccolo compromesso tra precisione e tempi di previsione più veloci, ma anche un minor consumo energetico e una minore quantità di memoria necessaria.

Brodmann17 non renderà disponibili i suoi risultati in modalità open source, almeno non in un primo momento. Il modello di business della società è fornire un’API per soluzioni cloud e un SDK per il computing locale.

Spark e i framework di deep learning

All’inizio di quest’anno, InfoWorld aveva previsto l’ampliamento del supporto nativo per Spark tra i framework di deep learning. Yahoo ha già reso disponibile Spark per TensorFlow, ma il principale provider commerciale di Spark, Databricks, sta ora offrendo un proprio pacchetto open source per integrare i framework di deep learning con Spark.

Il progetto “Deep Learning Pipelines” adotta un approccio all’integrazione tra deep learning e Spark in linea con quello delle ML Pipelines di Spark. I flussi di lavoro di Spark possono richiamare librerie come TensorFlow e Keras (e, presumibilmente, ora anche CNTK). I modelli per quei framework possono essere istruiti su scala allo stesso modo in cui Spark esegue altre operazioni su scala e attraverso le metafore proprie di Spark per la gestione sia di dati che di modelli di deep learning.

Deep learning per tutti?

Un aspetto comune a molti di questi annunci è il modo in cui sono presentati. Riferendosi al suo progetto Databricks ha dichiarato che permette di “democratizzare l’intelligenza artificiale”. Microsoft ha parlato di CNTK 2.0 come “parte di un’iniziativa più ampia di Microsoft per rendere la tecnologia AI accessibile a tutti, ovunque”.

La complessità intrinseca del deep learning non è l’unico ostacolo da superare. L’intero flusso di lavoro per deep learning rimane una creazione ad hoc. C’è un vuoto da riempire, e i team commerciali dietro tutte le piattaforme, i framework e i cloud si sforzano di riempirlo con qualcosa che assomiglia a una soluzione end-to-end.

Il prossimo passo importante non è individuare il vero e unico sistema di deep learning. Da questo punto di vista, c’è spazio per diverse opzioni. Il punto è trovare un unico flusso di lavoro coerente di cui possono essere parte diversi framework di deep learning – ovunque vengano eseguiti e da chiunque siano proposti.