Ho individuato e raccolto per te le librerie Python (Python Libraries) per Data Science e Machine Learning.
L’articolo sarà in continua evoluzione, così da arricchirlo costantemente di nuovi potenti tool.
L’obiettivo è quello di fornirti validi aiuti nella creazione di modelli di machine learning e nel loro rilascio in produzione.
Parola d’ordine? Open Source.
Python Libraries
Python è tra i linguaggi di programmazione maggiormente impiegati in ambito data science e nella creazione di modelli di machine learning, grazie alla sua semplicità e versatilità.
Da queste premesse muove l’idea di andare alla scoperta di preziosi tool che agevolino e semplifichino la nostra vita, consentendoci di risolvere nuovi problemi.
Basta indugi, iniziamo!
Palladium
La prima delle Python Libraries che esaminiamo è chiamata Palladium.
Si tratta di un progetto relativamente poco noto, sviluppato internamente a OttoGroup, in questo momento una delle più gradi società di e-commerce al mondo.
L’obiettivo era quello di offrire una transizione indolore dall’ambiente di sviluppo a quello di produzione, evitare boilerplate in progetti di machine learning, offrire alta scalabilità e abbattere i costi di licenza.
Così è nato Palladium, un framework per lo sviluppo di soluzioni di machine learning e data science, basato su scikit-learn.
Implementa operazioni comunemente richieste nello sviluppo di un progetto di machine learning come:
- caricamento dataset
- model training e ricerca iperparametri
- web serive
- persistenza dati
In questo modo lasciamo la mente concentrasi sullo sviluppo del modello vero e proprio.
Siamo così in grado di ridurre i costi di sviluppo e mantenimento implementando una soluzione versatile e flessibile.
Attraverso dei file di configurazione, andiamo a definire le specifiche del progetto: la composizione del dataset, le operazioni da eseguire, il modello da creare, etc.
Una delle funzionalità che più mi ha colpito è senza dubbio la possibilità di avviare un web service in pochi secondi, configurando un endpoint per la ricezione delle previsioni: fantastico!
Qui puoi trovare la documentazione completa.
Skorch
La seconda delle Python Libraries di questo post è definita Skorch.
Una valida alternativa a TensorFlow nello sviluppo di reti neurali artificiali è PyTorch.
Ora, consideriamo la situazione in cui tu voglia sfruttare sklearn e PyTorch congiuntamente.
La soluzione si chiama Skorch.
Due elementi che potrebbero tornarti utile a questo proposito sono:
- skorch.callbacks.LRScheduler, che ti permette di adattare il learning rate durante l’allenamento, sulla base di condizioni arbitrarie.
- skorch.callbacks.EarlyStopping, con il quale bloccare il training qualora continuandolo non avremmo miglioramenti.
Dask
Dask è una potente libreria python per il calcolo parallelo (parallel computing)
La libreria si compone di due parti:
- Pianificazione dinamica delle attività (Dynamic task scheduling) ottimizzata per il calcolo. È una cosa simile ad Apache AirFlow, Spotify Luigi, Celery o Make, con la differenza che Dask è ottimizzata per interactive computational workloads.
- Collezioni di Big Data come array paralleli, dataframes, e liste che estendono le interfacce comuni di NumPy, Pandas, o Python iterators superando le limitazioni. Queste collezioni parallele sono gestite dal Dynamic task scheduling.
I motivi per cui scegliere Dask sono molteplici.
Grazie all’interfaccia estremamente familiare, per chi opera quotidianamente con Pandas e Numpy, la curva di apprendimento si appiattisce.
La sua flessibilità ha poi davvero pochi eguali: scala agevolmente da un laptop a un cluster di 100 macchine.
Dask è quindi elastico e a bassa latenza, fondamentale quando si sposta l’esecuzione dalla memoria al disco (o all’SSD).
La documentazione illustra poi nel dettaglio ogni particolarità di questa versatile Python Library per Big data e data science.
Qualora decidessi d’impiegarlo, immagino che questo Dask Cheat Sheet ti possa tornare parecchio utile!
A questo potrebbe essere utile ricorrere a un esempio che ci aiuti a comprendere meglio come Dask si riveli particolarmente efficace.
Consideriamo un’operazione di Grid Search per l’individuazione degli iperparametri migliori:
'grid_search': { 'param_grid': { # 3 * 4 * 4 * 5 = 240 fits! 'net__lr': [0.03, 0.1, 0.3], 'net__max_epochs': [50, 100, 200, 400], 'net__num_units': [5, 10, 20, 40], },
Persino un numero così esiguo di variazioni produce in realtà 240 fits.
Dask consente di parallelizzare il calcolo in cluster e velocizzare la ricerca.
Pe ril momento è tutto!
Un caldo abbraccio, Andrea.
No Comment