Come sono diversi i progetti di intelligenza artificiale
Differenze nei progetti di intelligenza artificiale
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.
- Incontra Embroid un metodo di intelligenza artificiale per unire un LLM con informazioni di embedding da modelli più piccoli consentendo di correggere automaticamente le previsioni di LLM senza supervisione
- Migliorare l’interoperabilità e l’efficienza del modello con il framework ONNX
- Contenuto generato dall’IA cosa significa per i creatori?
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.
In generale, il processo MLOps prevede otto fasi:
- Preparazione dei dati
- Ingegneria delle feature
- Progettazione del modello
- Addestramento e ottimizzazione del modello
- Valutazione del modello
- Implementazione del modello
- Servizio del modello
- 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.