Come sono diversi i progetti di intelligenza artificiale

Differenze nei progetti di intelligenza artificiale

Michael Dziedzic su Unsplash

Mi viene spesso chiesto dai potenziali clienti di spiegare il processo del software di intelligenza artificiale (AI) e di recente mi è stato chiesto da manager con esperienza estesa nello sviluppo software e nella scienza dei dati che desideravano implementare MLOps.

Questo articolo è inteso come un’illustrazione delle principali differenze piuttosto che una discussione completa sul tema del processo del software di AI.

Background

Un progetto di AI è di natura sperimentale, quindi diverse o molte parti del programma software possono essere sostituite o modificate nel tempo. Pertanto, i cambiamenti sono di solito il risultato di risultati vari passi nel processo anziché dei requisiti del cliente/sistema, quindi è importante progettare il sistema in modo tale che non richieda una ricostruzione totale se i risultati sperimentali suggeriscono un approccio diverso. Infatti, la scrittura del codice scientifico ha due proprietà uniche: errori matematici e natura sperimentale.

Gli errori nei calcoli sono spesso difficili da individuare, specialmente quando il codice è semanticamente corretto. Non vengono trovati bug. Nessuna eccezione viene sollevata. Tutto sembra buono, ma il risultato (numerico) è chiaramente errato. Quando si implementano modelli probabilistici, i risultati possono sembrare buoni a seconda di alcune condizioni iniziali o di un fattore casuale.

Teorema del pranzo gratis: Due algoritmi sono equivalenti quando le loro prestazioni vengono mediate su tutti i possibili problemi.

Ci saranno sempre parti sperimentali che cambieranno costantemente. Pertanto, la chiave è progettare ogni componente in modo che la maggior parte del lavoro possa rimanere e servire come base per la prossima fase di sviluppo.

Pertanto, molti articoli, come [3], si concentrano su pattern di progettazione che possono aiutare a creare codice più robusto e riutilizzabile con meno bug.

Il processo MLOps

Possiamo vedere alcune delle differenze con MLOps che è un insieme di metodi e tecniche per implementare e mantenere modelli di apprendimento automatico (ML) in produzione in modo affidabile ed efficiente. MLOps è l’intersezione di Machine Learning, DevOps e Data Engineering.

Figura 1: SDLC del modello ML [4]

In generale, il processo MLOps prevede otto fasi:

  1. Preparazione dei dati
  2. Ingegneria delle feature
  3. Progettazione del modello
  4. Addestramento e ottimizzazione del modello
  5. Valutazione del modello
  6. Implementazione del modello
  7. Servizio del modello
  8. Monitoraggio del modello

Ogni passo nel ciclo di vita di MLOps è costruito sul proprio sistema ma richiede un’interconnessione che sono i requisiti minimi necessari per scalare le applicazioni di ML.

Senza addentrarci in una discussione su MLOps, possiamo identificare alcune idee chiave sulle differenze dei progetti:

  • Necessità di versionare il codice, i dati e i modelli
  • Consegna continua e addestramento continuo
  • Tracciamento degli esperimenti del modello
  • Gestione delle caratteristiche di apprendimento automatico
  • Monitoraggio dei modelli in produzione

Tracciamento degli esperimenti del modello

A differenza del ciclo di sviluppo del software tradizionale, il paradigma del ciclo di sviluppo del modello ha due differenze principali: Gestione delle Caratteristiche e Monitoraggio dei Modelli.

Gestione delle caratteristiche di apprendimento automatico

I feature store affrontano alcune sfide operative chiave: forniscono un insieme coerente di dati tra addestramento e inference; evitano qualsiasi distorsione dei dati o perdita accidentale di dati; offrono capacità personalizzate di scrivere trasformazioni delle caratteristiche (sia su dati batch che dati in streaming) durante il processo di estrazione delle caratteristiche durante l’addestramento; consentono l’aggiunta di richieste con dati storici all’inference, che è comune in modelli di rilevamento di frodi e anomalie di grandi dimensioni, nonché nei sistemi di raccomandazione.

Monitoraggio dei modelli in produzione

Esistono diversi tipi di problemi che le applicazioni di apprendimento automatico possono incontrare nel tempo [4]:

  • Deriva dei dati: cambiamenti improvvisi nei valori delle caratteristiche o cambiamenti nella distribuzione dei dati.
  • Deriva del modello/concetto: come, perché e quando cambia la performance del modello.
  • Malfunzionamento dei modelli nel tempo: i modelli falliscono per motivi inspiegabili (malfunzionamento del sistema, cattiva connessione di rete, sovraccarico del sistema, input errato o richiesta corrotta), quindi è importante rilevare in anticipo la causa principale o la sua frequenza.
  • Outlier: la necessità di tracciare i risultati e le performance di un modello in caso di outlier o situazioni non pianificate.
  • Qualità dei dati: garantire che i dati ricevuti in produzione vengano elaborati allo stesso modo dei dati di addestramento.
  • Prestazioni del sistema: pipeline di addestramento che falliscono o richiedono molto tempo per l’esecuzione, latenza molto alta, ecc.
  • Degradazione dei sistemi: È anche importante monitorare costantemente la salute dei server o del servizio del modello.

Conclusion

Chiaramente, la natura sperimentale dei progetti di intelligenza artificiale è una differenza chiave rispetto allo sviluppo di software tradizionale. Possiamo anche identificare alcune importanti differenze nei progetti di intelligenza artificiale nel contesto di MLOps: la necessità di versionare il codice, i dati e i modelli; il tracciamento degli esperimenti sui modelli; il monitoraggio dei modelli in produzione.

Riferimenti

[1] E. Alpaydin, Introduzione all’apprendimento automatico, 3a ed., MIT Press, ISBN: 978–0262028189, 2014.

[2] S. Russell e P. Norvig, Intelligenza artificiale: un approccio moderno, 4a ed., Upper Saddle River, NJ: Prentice Hall, ISBN: 978–0–13–604259–4, 2021.

[3] O. Zero, “Come scrivere un codice scientifico migliore in Python,” Towards Data Science, 15 febbraio 2022.

[4] M. Galarnyk, “Considerazioni per il deployment di modelli di apprendimento automatico in produzione,” Towards Data Science, 19 novembre 2021.