Gradio: fare demo di Machine Learning, quick and not even dirty!
Un progetto semplice ed utilissimo per dotare qualsiasi algoritmo predittivo di un'interfaccia utente pulita e veloce
Intro
Avete presente quei data scientist che oltre ad essere esperti di machine learning, sanno anche configurare un webserver e sono pure appassionati di UI/UX1?
Beh, io no! Credo molto nella multidisciplinarietà, ma certe combinazioni sono davvero improbabili. Mi sembrano un po’ come quegli esseri metà uomo e metà… qualcos’altro: sono creature mitologiche che non esistono nel mondo reale.
Eppure quando si vuol fare una demo di un modello di Machine Learning, avere una semplice interfaccia per fare delle prove live ha tantissimi vantaggi:
Aiuta un cliente o un collega meno tecnico a capire di cosa si sta parlando quando si usano parole magiche come Artificial Intelligence
Agevola alcuni test e verifiche sul campo
Più in generale, permette di creare un ponte tra chi vive nel mondo di dati / algoritmi / codice sorgente, e chi è abituato ad avere delle comode interfacce visuali.
Gradio è una libreria di cui si sentiva la mancanza: permette in pochissime2 righe di codice di creare una UI semplice e funzionale per esporre un algoritmo predittivo.
Sporchiamoci le mani
Una volta tanto, vorrei mettere in pratica il motto di Linus Torvalds:
Talk is cheap, show me the code!
Solo per dare una bussola, riassumo i passi che ho seguito:
Trovare un dataset comune e pubblico: ho scelto alcuni dati storici sui prezzi medi della case nei vari distretti della California
Costruire un banalissimo modello di ML con Xgboost (zero enfasi sulle performance del modello in sé)
Usare Gradio per sviluppare una semplice GUI per richiamare il modello ed effettuare lo scoring3 di nuovi record
Trovate tutto su questo Colab.
Tutto qui? No…
Chi si è preso la briga di aprire il notebook potrebbe aver pensato… “tutto qui?”
Ed effettivamente sì, sono davvero pochissime le righe di codice che servono per usare Gradio. Ma il risultato - come potrà apprezzare soprattutto chi ha un po’ di esperienza - è veramente notevole: una GUI pulita, funzionante e subito ready to use.
Sono due gli altri aspetti che trovo favolosi in Gradio.
Il primo punto è che nell’esempio ho usato dati tabellari… ma Gradio permette di importare un’ampia gamma di file, ad esempio immagini e testo libero. Volete fare una demo di un nuovo classificatore di immagini, oppure testare l’ultimo algoritmo di NLP? Il getting started di Gradio è un buon punto di partenza.
L’altro punto di forza è l’integrazione con HuggingFace Spaces, disponibile da pochi mesi. In poche parole: potete pubblicare gratuitamente il vostro modello di machine learning con la relativa GUI fatta con Gradio e rendere il tutto visibile al mondo intero4. Ovviamente non mi sono potuto esimere, trovate qui la versione pubblicata e interattiva del modello precedente.
Ora, ammettiamo che non siate interessati al mercato immobiliare californiano degli anni ‘90 (chissà perché), ma vogliate provare DALL-E, l’incredibile motore di OpenAI in grado di generare immagini a fronte di una frase qualsiasi… beh, trovate su HF Spaces un modello esposto tramite Gradio, precisamente qui.
Se vi piace questo effetto cartoonish, c’è da divertirsi!
Conclusioni
Per chi non lo avesse ancora messo a fuoco: Gradio è un game changer, specialmente in combinazione con HuggingFace Spaces.
Sono rimasto sbalordito dalla semplicità e linearità della libreria, oltre che dalla facilità di utilizzo anche per chi non scrive Python dalla mattina alla sera5. E l’integrazione in HF Spaces? È un gioiellino: perfettamente spiegata, integrata con CI/CD, gratuita.
Nella pratica, ho impiegato di più a scrivere questo articolo che a:
Trovare il dataset da usare
Scrivere qualche riga di codice su Colab e usare Gradio per la prima volta
Fare un account su HF e pubblicare il modello (ovviamente con un errore di build al primo tentativo)
E scrivo (articoli) abbastanza velocemente… ho pure scritto un libro!
Chiudo con un parere personale: lo confesso, adoro dati e algoritmi, mentre tendo a snobbare tutto ciò che è UI/UX. Ma essere in grado di mostrare un modello di machine learning dall’inizio alla fine, con anche una piccola interfaccia grafica per essere testato da chiunque… ha il suo perché!
User Interface / User Experience
"Pochissime” è un po’ troppo vago per un data scientist: diciamo meno di 10 (almeno per il caso che prendo in esempio).
O l’inferenza, la predizione… chiamatelo come preferite!
Per chi ama volare basso
Sì perché è vero che le competenze tecniche per un leader sono fondamentali, ma il tempo scarseggia e le attività (anche non tecniche) sono tante!