Cos’è MLOps

MLOps' è l'abbreviazione di 'Machine Learning Operations', una pratica che combina sviluppo di software e operazioni per gestire e implementare modelli di intelligenza artificiale in produzione.

Pietro Jeng su Unsplash

MLOps è un insieme di metodi e tecniche per distribuire e mantenere modelli di machine learning (ML) in produzione in modo affidabile ed efficiente. Pertanto, MLOps rappresenta l’intersezione tra Machine Learning, DevOps e Data Engineering (Figura 1).

Figura 1: Diagramma di Venn che mostra la relazione tra i campi correlati a MLOps [Wikipedia].

Background

Dire che MLOps è in uno stato di transizione sarebbe un eufemismo [7]. Il miglior consiglio che potrei dare su MLOps sarebbe quello di cercare di assumere qualcuno in grado di vedere il “quadro generale”. Qualsiasi ingegnere del software competente può imparare come utilizzare una piattaforma MLOps specifica, poiché non richiede un diploma avanzato. Pertanto, un errore comune durante i colloqui di lavoro è concentrarsi sui dettagli di una piattaforma specifica (AWS, GCP, Databricks, MLflow, ecc.). L’ingegnere MLOps ideale avrebbe esperienza con diverse piattaforme MLOps e/o DevOps. Infatti, avere troppa esperienza con una singola piattaforma potrebbe essere problematico in futuro, poiché la maggior parte delle aziende raramente si attiene a una singola piattaforma cloud nel tempo e attualmente non esistono standard per MLOps.

Un problema principale con MLOps è la mancanza di standard, il che significa che ogni piattaforma tende a utilizzare una terminologia diversa. Speriamo che SEI o IEEE pubblichino presto una guida di Ingegneria AI per standardizzare la terminologia, simile a SWEBOK. Per ora, consiglierei di imparare MLflow poiché è open-source e sembra essere molto popolare.

Molte persone utilizzano il termine “pipeline” in MLOps, il che può essere confuso poiché “pipeline” è un termine informatico che si riferisce a una sequenza lineare con un singolo input/output. Una definizione migliore farebbe uso del grafo aciclico diretto (DAG) poiché potrebbe non essere un processo lineare. Pertanto, il termine “workflow” è una migliore descrizione dei molti tipi di processi che potrebbero essere coinvolti in qualsiasi fase dello SDLC di MLOps.

Il Processo del Modello di Machine Learning

In generale, il processo del modello di ML coinvolge otto fasi (Figure 2 e 3) che possono includere la raccolta dei dati e/o l’etichettatura dei dati [1]:

  1. Preparazione dei dati
  2. Ingegneria delle caratteristiche
  3. Progettazione del modello
  4. Addestramento e ottimizzazione del modello
  5. Valutazione del modello
  6. Deployment del modello
  7. Servizio del modello
  8. Monitoraggio del modello
Figura 2: Fasi del SDLC del modello di ML [2]
Figura 3: SDLC del modello di ML che include il monitoraggio [2]

Al contrario, ModelOps si concentra sulla gestione dell’intero ciclo di vita dello sviluppo del software (SDLC) di una varietà di modelli di intelligenza artificiale, inclusi modelli di machine learning, knowledge graph, regole, ottimizzazione, linguaggio naturale e modelli basati su agenti (Figura 4).

Figura 4: Il processo ModelOps [Wikipedia]

Il Workflow del Machine Learning

Il machine learning richiede di sperimentare con una vasta gamma di set di dati, preparazione dei dati e algoritmi per costruire un modello che massimizzi alcuni metriche obiettivo. Una volta che un modello è stato costruito, il passo successivo sarebbe distribuire il modello finale su un sistema di produzione, monitorare le prestazioni del modello e continuamente riformare il modello sui nuovi dati e confrontarlo con modelli alternativi.

Pertanto, essere produttivi con l’apprendimento automatico per applicazioni reali può essere impegnativo per diverse ragioni [3]:

  • È difficile tenere traccia degli esperimenti. Quando si lavora con file sul proprio computer o con un notebook, come possiamo capire quali dati, codice e parametri sono stati utilizzati per ottenere un risultato specifico?
  • È difficile riprodurre il codice. Anche se teniamo traccia delle versioni del codice e dei parametri, è comunque necessario catturare l’intero ambiente (come le dipendenze delle librerie) per riprodurre gli stessi risultati. Questo è ancora più impegnativo quando si lavora in team o se vogliamo eseguire lo stesso codice su un’altra piattaforma (come il cloud) in modo scalabile.
  • Non esiste un modo standard per confezionare e distribuire modelli. Ogni team di scienziati dei dati sviluppa il proprio approccio per ciascuna libreria di apprendimento automatico utilizzata, quindi il collegamento tra il modello, il codice e i parametri spesso viene perso.
  • Non esiste un archivio centrale per gestire i modelli (versioni e transizioni di fase). Senza un luogo centrale per collaborare e gestire il ciclo di vita del modello, i team di scienziati dei dati incontreranno difficoltà nella gestione delle fasi del modello.

Anche se le singole librerie di apprendimento automatico forniscono soluzioni per alcuni di questi problemi (come il servizio di modelli), di solito si desidera provare più librerie di apprendimento automatico per ottenere i migliori risultati. Uno strumento MLOps consente di addestrare, riutilizzare e distribuire modelli con qualsiasi libreria e di confezionarli in passaggi riproducibili che altri scienziati dei dati possono utilizzare come una “scatola nera” senza bisogno di sapere quali librerie si stanno utilizzando.

Tenete presente che cercare di adattare o applicare MLOps pezzo per pezzo è una concezione errata comune e sarebbe considerato un antipattern di progettazione del software [5][6]. Sorprendentemente, alcune aziende come Nvidia stanno cercando attualmente di farlo su larga scala in tutti i loro progetti di sviluppo del software, il che non è fattibile e probabilmente si rivelerà problematico.

Pertanto, una piattaforma MLOps deve fornire almeno cinque funzionalità per aiutare a gestire il flusso di lavoro dell’apprendimento automatico [3]:

  • Tracciamento: un’API per registrare i parametri, le versioni del codice, le metriche e gli artifact durante l’esecuzione del codice di apprendimento automatico e successivamente visualizzare i risultati.
  • Progetti: un formato standard per la confezione del codice di apprendimento automatico riutilizzabile.
  • Modelli: una convenzione per la confezione di modelli di apprendimento automatico in più varianti e una varietà di strumenti per aiutare nella distribuzione.
  • Registro: un archivio centrale per i modelli, un insieme di API e un’interfaccia utente per gestire in modo collaborativo l’intero ciclo di vita di uno o più modelli di apprendimento automatico.
  • Scalabilità: progettato per gestire grandi set di dati, file di output di grandi dimensioni e un gran numero di esperimenti.

Conclusioni

MLOps è un insieme di metodi e tecniche per distribuire e mantenere modelli di apprendimento automatico (ML). Tuttavia, attualmente MLOps non ha standard definiti, quindi è importante tenerlo presente. Pertanto, è importante vedere il “quadro generale”, che comprende la comprensione dei concetti chiave, delle fasi, delle caratteristiche e delle sfide con MLOps.

Riferimenti

[1] J. S. Damji e M. Galarnyk, “Considerazioni per la distribuzione di modelli di apprendimento automatico in produzione,” Towards Data Science, 19 novembre 2021.

[2] B. Rogojan, “Cos’è MLOps e perché il tuo team dovrebbe implementarlo,” SMB Lite, 25 novembre 2020.

[3] “Concetti di MLflow,” Documentazione di MLflow, ultimo accesso: 19 agosto 2022.

[4] L. Visengeriyeva, A. Kammer, I. Bär, A. Kniesz e M. Plöd, “Principi di MLOps,” ultimo accesso: 19 agosto 2022.

[5] P. P. Ippolito, “Pattern di progettazione nell’apprendimento automatico per MLOps,” Towards Data Science, 12 gennaio 2022.

[6] Abhijith C, “Come (non) fare MLOps,” Towards Data Science, 10 gennaio 2022.

[7] M. Eric, “MLOps è un disastro ma è normale,” VoAGI, 25 marzo 2022.

[8] “Guida introduttiva di MLflow,” Documentazione di MLflow, ultimo accesso: 19 agosto 2022.

[9] Kedion, “Gestire i cicli di vita dell’apprendimento automatico con MLflow,” VoAGI, 25 gennaio 2022.

J. Demsar, T. Curk, A. Erjavec, C. Gorup, T. Hocevar, M. Milutinovic, M. Mozina, M. Polajnar, M. Toplak, A. Staric, M. Stajdohar, L. Umek, L. Zagar, J. Zbontar, M. Zitnik e B. Zupan, “Orange QuickStart”, Documentazione di Orange, Ultimo accesso: 19 ago 2022.

Y. Prakash, “Una guida rapida al monitoraggio degli esperimenti di ML – con Weights & Biases”, Towards Data Science, 7 mar 2022.

wallaroo.ai, “Come valutare diverse soluzioni di distribuzione di Machine Learning”, VoAGI, 3 mar 2022.

A. Lamberti, “4 strumenti di MLOps per distribuire il tuo modello di Machine Learning”, Artificialis, 5 gen 2022.