Concetti - Operazioni di Machine Learning (MLOps) per i flussi di lavoro di Intelligenza artificiale e Machine Learning
In questo articolo vengono fornite informazioni sulle operazioni di Machine Learning (MLOps), inclusi i tipi di procedure e gli strumenti coinvolti e su come può semplificare e velocizzare i flussi di lavoro di Intelligenza artificiale e Machine Learning in servizio Azure Kubernetes (servizio Azure Kubernetes).
Che cos'è MLOps?
Le operazioni di Machine Learning (MLOps) includono procedure che facilitano la collaborazione tra data scientist, operazioni IT e stakeholder aziendali, assicurandosi che i modelli di Machine Learning vengano sviluppati, distribuiti e mantenuti in modo efficiente. MLOps applica i principi DevOps ai progetti di Machine Learning, che puntano ad automatizzare e semplificare il ciclo di vita di Machine Learning end-to-end. Questo ciclo di vita include training, creazione di pacchetti, convalida, distribuzione, monitoraggio e ripetizione del training dei modelli.
MLOps richiede più ruoli e strumenti per collaborare in modo efficace. I data scientist si concentrano sulle attività correlate al training del modello, noto come ciclo interno. I tecnici di Machine Learning e i team delle operazioni IT gestiscono il ciclo esterno, in cui applicano le procedure DevOps per creare pacchetti, convalidare, distribuire e monitorare i modelli. Quando il modello richiede l'ottimizzazione o la ripetizione del training, il processo torna al ciclo interno.
Pipeline MLOps
La pipeline MLOps può sfruttare vari strumenti e microservizi distribuiti in sequenza o in parallelo. Di seguito sono riportati alcuni esempi di componenti chiave nella pipeline che traggono vantaggio dall'implementazione delle procedure consigliate seguenti per ridurre il sovraccarico e consentire un'iterazione più rapida:
- Archivio dati non strutturato per il flusso di nuovi dati nell'applicazione
- Database vettoriale per archiviare ed eseguire query su dati strutturati e pre-elaborati
- Framework di inserimento e indicizzazione dei dati
- Inserimento vettoriale e/o ripetizione del training dei flussi di lavoro del modello
- Strumenti di raccolta e avvisi delle metriche (rilevamento delle prestazioni del modello, volume di dati inseriti e così via)
- Strumenti di gestione del ciclo di vita
DevOps e MLOps
DevOps è una combinazione di strumenti e procedure che consentono di creare applicazioni affidabili e riproducibili. L'obiettivo dell'uso di DevOps è offrire rapidamente valore agli utenti finali. La creazione, la distribuzione e il monitoraggio di modelli affidabili e riproducibili per offrire valore agli utenti finali è l'obiettivo principale di MLOps.
Esistono tre processi essenziali per MLOps:
- Carichi di lavoro di Machine Learning per i quali un data scientist è responsabile, tra cui l'analisi esplorativa dei dati (EDA), la progettazione delle funzionalità e il training e l'ottimizzazione dei modelli.
- Procedure di sviluppo software, tra cui pianificazione, sviluppo, test e creazione di pacchetti del modello per la distribuzione.
- Aspetti operativi della distribuzione e della gestione del modello nell'ambiente di produzione, tra cui il rilascio, la configurazione delle risorse e il monitoraggio del modello.
Principi DevOps che si applicano a MLOps
MLOps sfrutta diversi principi di DevOps per migliorare il ciclo di vita di Machine Learning, ad esempio l'automazione, l'integrazione continua e il recapito (CI/CD), il controllo del codice sorgente, la pianificazione Agile e l'infrastruttura come codice (IaC).
Automation
Automatizzando le attività, è possibile ridurre gli errori manuali, aumentare l'efficienza e garantire la coerenza nel ciclo di vita di Machine Learning. L'automazione può essere applicata a varie fasi, tra cui raccolta dati, training del modello, distribuzione e monitoraggio. Grazie all'automazione, è anche possibile applicare misure proattive nella pipeline di intelligenza artificiale per garantire la conformità dei dati ai criteri dell'organizzazione.
Ad esempio, la pipeline può automatizzare:
- Ottimizzazione/ripetizione del training dei modelli a intervalli di tempo regolari o quando viene raccolta una determinata quantità di nuovi dati nell'applicazione.
- Rilevamento della riduzione delle prestazioni per avviare l'ottimizzazione o la ripetizione del training in un subset di dati diverso.
- Analisi di vulnerabilità ed esposizione comuni (CVE) sulle immagini del contenitore di base estratte dai registri contenitori esterni per garantire procedure di sicurezza sicure.
Integrazione continua (CI)
L'integrazione continua illustra la creazione e la verifica degli aspetti del processo di sviluppo del modello. L'obiettivo dell'integrazione continua è creare il codice e verificare la qualità del codice e del modello prima della distribuzione. Sono inclusi i test su un intervallo di set di dati di esempio per garantire che il modello esegua le prestazioni previste e soddisfi gli standard di qualità.
In MLOps l'integrazione continua potrebbe comportare:
- Refactoring in script Python o R del codice esplorativo nei notebook di Jupyter.
- Convalida dei nuovi dati di input per i valori mancanti o di errore.
- Test unità e test di integrazione nella pipeline end-to-end.
Per eseguire l'esecuzione di linting e unit test, è possibile usare strumenti di automazione come Azure Pipelines in Azure DevOps o GitHub Actions.
Recapito continuo (CD)
Il recapito continuo prevede i passaggi necessari per distribuire in modo sicuro un modello nell'ambiente di produzione. Il primo passaggio consiste nel creare un pacchetto e distribuire il modello in ambienti di pre-produzione, ad esempio ambienti di sviluppo e test. La portabilità dei parametri, degli iperparametri e degli altri artefatti del modello è un aspetto importante da mantenere man mano che si promuove il codice tramite questi ambienti. Questa portabilità è particolarmente importante quando si tratta di modelli di linguaggio di grandi dimensioni e modelli di diffusione stabili. Dopo che il modello ha superato gli unit test e i test di controllo della qualità (QA), è possibile approvarlo per la distribuzione nell'ambiente di produzione.
Controllo del codice sorgente
Il controllo del codice sorgente, o il controllo della versione, è essenziale per gestire le modifiche apportate al codice e ai modelli. In un sistema di Machine Learning, si riferisce al controllo delle versioni dei dati, al controllo delle versioni del codice e al controllo delle versioni del modello, che consentono ai team interfunzionali di collaborare in modo efficace e tenere traccia delle modifiche nel tempo. L'uso di un sistema di controllo del codice sorgente basato su Git, ad esempio Azure Repos in Azure DevOps o in un repository GitHub, consente di mantenere a livello di codice una cronologia delle modifiche, ripristinare le versioni precedenti e gestire rami per esperimenti diversi.
Pianificazione Agile
La pianificazione Agile prevede l'isolamento del lavoro negli sprint, che sono brevi intervalli di tempo per completare attività specifiche. Questo approccio consente ai team di adattarsi rapidamente alle modifiche e offrire miglioramenti incrementali al modello. Il training dei modelli può essere un processo continuo e la pianificazione Agile può aiutare a definire l'ambito del progetto e a migliorare l'allineamento del team.
Per gestire la pianificazione Agile, è possibile usare strumenti come Azure Boards in Azure DevOps o GitHub.
Infrastruttura come codice (IaC)
L'infrastruttura viene usata come codice per ripetere e automatizzare l'infrastruttura necessaria per eseguire il training, la distribuzione e la gestione dei modelli. In un sistema di Machine Learning IaC semplifica e definisce le risorse di Azure appropriate necessarie per il tipo di processo specifico nel codice e il codice viene mantenuto in un repository. In questo modo è possibile controllare la versione dell'infrastruttura e apportare modifiche per l'ottimizzazione delle risorse, l'efficacia dei costi e così via in base alle esigenze.
Passaggi successivi
Vedere gli articoli seguenti per informazioni sulle procedure consigliate per MLOps nelle applicazioni intelligenti nel servizio Azure Kubernetes:
- Procedure consigliate per le operazioni di Machine Learning nel servizio Azure Kubernetes
- Distribuire un modello di intelligenza artificiale con l'operatore toolchain di intelligenza artificiale
- Procedure consigliate per la gestione delle risorse nel servizio Azure Kubernetes
- Applicare la sicurezza dei pod nel cluster del servizio Azure Kubernetes come sviluppatore di app
Azure Kubernetes Service