attenzione: contenuto vagamente nerd

Può Il deep learning essere considerato oggi alla stregua di un altro tool a disposizione degli sviluppatori? Forse non ancora. Forse richiede ancora competenze specifiche su classificazione, reti neurali, statistica etc. che non tutti gli sviluppatori hanno. Tuttavia nel corso degli ultimi anni la quantità e la qualità dei framework per scrivere il proprio modello predittivo sono aumentate notevolmente, e si sa, uno inizia con la pratica, brancola nel buio per un po’, ma se è determinato prima o poi impara anche la teoria.

Nel caso opposto, a studiare la teoria per anni senza mai metterla in pratica si rischia di annoiarsi o peggio, di diventare un guru.

In fondo la figura del data scientist che cos’è? Visto da uno statistico il data scientist è uno sviluppatore che sa poco e male di statistica, visto da uno sviluppatore un data scientist è uno statistico che sa un po’ di Python. Visto da un recruiter, un data scientist è uno che sa usare Hadoop, Spark e ha lavorato con i Big data (senza precisare quanto big).

screenshot-2016-11-16-20-55-53

Nel mio percorso, guidato da curiosità intellettuale e necessità di imparare ed aggiornarmi mi sono trovato a voler e dover cercare un framework per il deep learning. Se volete sapere cos’è il deep learning vi consiglio un mio precedente articolo. Per la mia investigazione mi sono rivolto a tre framework: TensorFlow, MXNet e H2O. Perché questi e non anche Caffe, Torch, Theano e tutti gli altri che vi possono venire in mente? Perché TensorFlow, MXNet e H2O hanno una decente capacità di lavorare con il linguaggio R. Non che questo sia indispensabile per fare deep learning, ma insomma, quando si manipolano dati e numeri è moooolto scomodo ritornare a Python o Java dopo che si è usato R.

Premetto, quella che segue è una classifica molto personale, non scientifica e soprattutto non quantitativa. Una serie di opinioni insomma. Se volete un confronto più strutturato e ragionato leggete questo su wikipedia.

https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Quindi alla luce dei miei criteri opinabili nonché segreti quale dei tre framework alla fine preferisco? Beh, ci sono pro e contro ma alla fine per me il vincente è TensorFlow. Vediamo perché.

TensorFlow è ben documentato, molto aggiornato (c’è Google che finanzia), la community sembra in crescita ed è facile trovare aiuto. L’interfaccia in R è ottima e documentata. Supporta le GPU e in futuro immagino le TPU (cosa sono?). Comincia a diventare keyword anche per i recruiter. Difetti: l’installazione è comunque un incubo. Sì, lo so che conta poco ma a me le piccole fastidiose bazzecole come versioni di Numpy , compilazioni infinite e dipendenze un po’ sparse possono far perdere la pazienza e tempo. Rivolto a Google dico: fate un installer decente per tutte le piattaforme! Grosso problema poi se vuoi installare il supporto GPU su Mac. Io ho desistito. Quando vedi che parte una compilazione di codice sorgente che poi si blocca è un brutto segno. Troppo prematuro per chi non vuole perdere tempo.

MXNet sembra un progettino di due studentelli, la company che ci lavora si chiama DMCL, e in questo momento il loro sito non risponde! 😮  Invece guardando bene c’è tanto lavoro dietro e un’ottima reputazione per questo progetto open source. Il pregio principale per me è che supporta CPU e GPU in modo molto immediato. Difetti: purtroppo non una grande community, la documentazione per R abbastanza incompleta e  le API sono ridotte rispetto a TensorFlow.

H2O viene da una startup che ha raccolto un bel po’ di fondi e di attenzione in Silicon Valley. Il prodotto è bello, basato su Java ed è molto facile installarlo e partire con qualche modello. Ha tuttavia alcune limitazioni secondo me inaccettabili. Primo problema: non supporta le GPU. Secondo problema non supporta le reti ConvNet (perché sono importanti?). Ho posto la domanda direttamente a uno dei loro ingegneri che presentava il prodotto in una fiera e mi ha risposto che volendo H2O può integrare MXNet o TensorFlow nel backend e ottenere anche le loro funzionalità 😮 Beh, ma allora perché installare H2O e non direttamente TensorFlow.

Annunci