Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

ML senza codice con TensorFlow e AI Platform

By Gad BenramJul 2, 20193 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

0 ryyk3bja967khyim

I progressi dei framework di AI consentono agli sviluppatori di creare e mettere in produzione modelli di deep learning con la stessa facilità di qualche clic sullo schermo. Grazie a una UI o a un'API basate su TensorFlow Estimators, si possono costruire e servire modelli senza scrivere una sola riga di codice di machine learning.

0 ryyk3bja967khyimFoto di Adi Goldstein su Unsplash

70 anni fa solo una manciata di esperti sapeva scrivere programmi per computer, perché programmare richiedeva una specializzazione teorica e tecnica elevatissima. Nel tempo abbiamo costruito livelli sempre più alti di astrazione e incapsulamento, permettendo anche a personale meno qualificato di realizzare software con strumenti molto semplici (si pensi ad esempio a Wix). Oggi sta accadendo lo stesso con il machine learning, ma a una velocità decisamente maggiore. In questo articolo scriveremo un semplice script capace di generare un'intera pipeline di machine learning.

Davvero senza codice?

L'articolo contiene due tipi di codice. Il primo è una query SQL per generare il dataset: questa parte potrebbe essere sostituita da strumenti come Google Cloud Dataprep. Il secondo riguarda chiamate API effettuate tramite una libreria client Python: tutte queste operazioni sono disponibili anche dalla UI di AI Platform. Quando parlo di "senza codice" intendo che in nessun passaggio sarà necessario importare TensorFlow o altre librerie di ML.

In questa demo userò il dataset open Chicago Taxi Trips di Google BigQuery per prevedere il tempo di percorrenza di una corsa in taxi a partire dal punto di partenza, dalla destinazione e dall'orario di inizio. Il modello sarà addestrato e distribuito tramite i servizi Google Cloud che incapsulano TensorFlow.

L'esempio di codice completo è disponibile in questo repository GitHub.

Estrarre le feature con BigQuery

Partendo da un'EDA illustrata in questo notebook, ho creato una query SQL per generare un dataset di training:

https://gist.github.com/gidutz/86c701c621e48860c8ab135df56a8076

Nel repo si può vedere come eseguo la query con un client Python e la esporto su GCS.

Importante! Affinché AI Platform possa costruire un modello a partire da questi dati, la prima colonna deve essere la variabile target e l'export CSV non deve contenere intestazioni.

Lanciare un job di hyper-parameter tuning e fare il deploy

Una volta ottenuto il dataset con qualche centinaio di migliaia di corse, definisco una semplice architettura di rete neurale basata sull'API TensorFlow Estimator, con uno spazio dei parametri da esplorare. Questa spec crea una rete neurale a 3 hidden layer per risolvere un task di regressione (il tempo di percorrenza atteso) e avvia 50 trial alla ricerca delle impostazioni ottimali per learning rate, fattori di regolarizzazione e numero massimo di step.

https://gist.github.com/gidutz/5408bb93d0e6ab7fe9fc5cb4a82447cc

Con la spec qui sopra, posso usare un client Python per avviare un job di training:

https://gist.github.com/gidutz/f166148d84c4d4beb98bc13b831b6284

Uso il client API per monitorare l'esecuzione del job e, al termine, faccio il deploy del modello e lo metto alla prova.

https://gist.github.com/gidutz/70b126b2a7d561e9d5f7f232d8f754eb

Ed ecco completato il deploy di una pipeline di machine learning utilizzando solo chiamate API.

Ottenere le previsioni

Per ottenere le previsioni, carico in memoria parte dei record del test set e li invio alla versione distribuita per l'inferenza:

https://gist.github.com/gidutz/e786c430c5ea767b1bec01bcee03a863

Vuoi altri contenuti? Dai un'occhiata al nostro blog oppure segui Gad su Twitter.

Si ringrazia Adam Horowitz per la consulenza tecnica