Quali sono le competenze più richieste a un Machine Learning Engineer? In questo blogpost, rispondiamo esattamente a questa domanda!
Seguimi e presta attenzione.
Non sarà il solito elenco puntato di parole, ma un breve viaggio, simpatico e interessante, alla scoperta delle skill più richieste a un Machine Learning Engineer.
Come forse già saprai, in questo blog trattiamo temi di Data Science, Machine Learning, AI con un approccio omnicomprensivo.
Questo significa che non ci occupiamo solo di teoria.
Anzi.
Trattiamo anche l’aspetto umano, caratteriale e tecnico, necessario per affrontare con successo queste professioni.
Ed eccoci qui.
Oggi, esploriamo quelle che sono le competenze più richieste a un Machine Learning Engineer!
Il Machine Learning Engineer
Quella del Machine Learnign Engineer è una professione molto richiesta oltreoceano, dove i salari raggiungono i 140K annuali.
In Italia… la questione è un po’ differente.
E quando mai…
Il problema è chiaro: le aziende italiane sono troppo ignoranti per riconoscere il valore reale di questa figura.
Il motivo? E’ un ruolo molto più definito rispetto al blasonato data scientist, appellativo oggi associato a chiunque traffichi con i dati.
Usi Google analytics? Allora sei un data scientist. No non lo sei.
Sfatiamo questo mito.
Le aziende che ricercano un Machine Learning Engineer in gnere hanno due caratteristiche:
- una chiara idea di come e perché vogliano usare il machine learning
- diversi data scientist operativi, quindi hanno definito una distinzione di ruoli.
Possiamo allora delineare il profilo standard di un machine learning engineer attraverso queste note salienti:
- gestisce esperimenti di machine learning conoscendo uno o più linguaggi, e librerie software
- rilascia soluzioni di machine learning in produzione
- ottimizza le perfomance e la scalabilità delle soluzioni esistenti
- analizza dati per scoprire nuovi use case (sovrapposizione con data scientist)
- assicura il corretto flow dei dati tra database e back-end (sovrapposizione con data engineer)
Approfondiamo ulteriormente la figura.
From Development to Production
Il solo sviluppo di un modello di machine learning può essere assimilato al piccolo pezzo di un puzzle molto ampio.
Quando usciamo dall’ambiente protetto del nostro amato Google Colab le sfide si complicano.
Teniamo presente una cosa.
Non importa infatti quanto piccolo o banale possa essere un problema di machine learning: l’effort richiesto per renderlo utile e profittevole è tremendo.
E quando si parla di aziende, del mondo reale, questo effort costituisce un investimento, di risorse e denaro, che deve produrre un ritorno economico.
Un modello ha bisogno di generare valore affinché produca un effettivo ROI, e questo spesso significa disporre di un ecosistema di sostentamento costituito da diversi livelli:
- Sicurezza
- User Interface (e.g. un sito web, un chat bot, etc)
- API per contattare il modello
- ETL di gestione dati
- Database
- Scheduler
- Sistema di Log e Performance Monitoring
Ci dovrà pur essere qualcuno a sovraintendere questo intricato assieme di parti…
Ecco il Machine Learning Engineer.
A questo punto potresti pensare che il Data Scientist sia il rigoroso ricercatore, che sintetizza complesse funzioni matematiche, in un’ordinata e linda cleanroom, mentre il nostro amico ML Engineer si sporchi le mani a fare il lavoro duro.
Chiaramente non è esattamente così, anche se mi piaceva l’idea del team work distribuito in questo modo.
Consideriamo però una cosa.
Esistono diverse variabili che determinano una sfumatura più nebulosa tra le due figure professionali, ad esempio: grandezza dell’azienda, caratteristiche e complessità del progetto, etc.
Ciò detto, in linea generale possiamo considerare vera l’affermazione precedente.
Il ML Engineer cura le prestazioni del modello e si prende cura di lui durante l’intero ciclo di vita, attivandosi prontamente qualora ci fossero cali di performance.
Failures
Diversi fattori contribuiscono a rendere la vita di un modello difficile, e quella del Machine Leanring Engineer un vero calvario.
Vediamoli insieme.
Il database potrebbe rifiutare la connessione, una funzione smettere di operare su un dataset di dimensioni superiori, e il bucket usato per lo storage dei dati (una sorta di cartella in cloud ad alte prestazioni) potrebbe esaurire lo spazio.
Aspetta. Aspetta. C’è del’altro.
Alcuni algoritmi potrebbero infatti rifiutare la combinazione di parametri fornita dall’utente tramite un’interfaccia priva di controlli adeguati, drogando i dati e riducendo le prestazioni.
O ancora…
Una colonna potrebbe smettere di esistere.
Beh se poi ci appoggiassimo a un servizio esterno di terze parti, invece che le credenziali di accesso potremmo ricevere un fantastico errore di Timeout Exception.
Tutte cose che fanno dormire tranquilli i neonati, e chiunque altro lavori in azienda, fuorché il ML Engineer.
Visivamente, ecco dunque dove si coccola un ML Engineer:
Qualora tu volessi saperne di più, ti invito a dare un’occhiata a questo corso di AWS.
Hard Skills: Il CV del Machine Learning Engineer
Qualora ti stessi chiedendo quali debbano essere le competenze tecniche e pratiche di un machine learning engineer, sappi allora che questa lista è sufficientemente esaustiva:
- Python
- Data Structure
- ML Algorithms
- ML Best Practice
- (No)SQL
- Version Control / Git
- REST API / Flask
- Virtualization / Docker / Kubernetes
- Distributed Computing / Spark / Dask
- Workflow Management / Airflow / Kubeflow
- Unit tests / Integration tests
Per il momento è tutto.
Per aspera, ad astra.
Un caldo abbraccio, Andrea.