Operazioni di Machine Learning (MLOps) con Azure Machine Learning

MLOps con Azure Machine Learning

Le operazioni di Machine Learning (MLOps) possono accelerare significativamente il modo in cui i data scientist e gli ingegneri di ML soddisfano le esigenze organizzative. Un processo MLOps ben implementato non solo accelera la transizione dalla fase di test alla produzione, ma offre anche proprietà, lineage e dati storici sugli artefatti di ML utilizzati all’interno del team. Il team di data science è ora tenuto ad essere dotato di competenze di CI/CD per sostenere un’infusione continua con cicli di riallenamento e rilasci automatizzati dei modelli. Molti professionisti di ML sono ancora costretti a eseguire manualmente MLOps e questo riduce il tempo che possono dedicare all’aggiunta di maggior valore al business.

Per affrontare questi problemi, molte persone e gruppi hanno sviluppato acceleratori e materiali di formazione specifici per soddisfare le proprie esigenze individuali o quelle dei propri clienti. Ciò ha portato ad un gran numero di acceleratori, repository di codice o addirittura prodotti completi che sono stati costruiti utilizzando o sopra Azure Machine Learning (Azure ML). Abbiamo raccolto ed valutato oltre 20 acceleratori di soluzioni MLOps e basi di codice provenienti da tutta l’organizzazione. Nel tempo, la mancanza di manutenzione in alcuni di questi repository “popolari” ha portato ad esperienze frustranti per vari motivi. I repository presentavano una vasta varietà di pattern di codifica o facevano uso di esempi che riproducevano solo una piccola parte del carico di lavoro di produzione reale.

Sulla base della nostra analisi di questi acceleratori, abbiamo identificato pattern di design e codice che potevamo sfruttare.

Abbiamo riunito oltre 30 risorse provenienti da diversi paesi e funzioni, inclusi il team di prodotto e ingegneria di Azure ML, per allineare gli sforzi e sviluppare l’acceleratore MLOps v2, in sintonia con lo sviluppo della piattaforma Azure Machine Learning v2, CLI e SDK. Ora abbiamo una base di codice che contiene workflow e pattern ripetibili, automatizzati e collaborativi che includono le migliori pratiche per il rilascio di modelli di machine learning in produzione.

Per il cliente, ciò li aiuta a ridurre il tempo necessario per avviare un nuovo progetto di data science e portarlo in produzione. Il nostro acceleratore fornisce modelli che possono essere riutilizzati per stabilire un approccio standardizzato che può funzionare con vari pattern di implementazione. L’acceleratore incorpora le decisioni chiave di MLOps come i componenti del repository, la struttura del repository, il collegamento tra lo sviluppo del modello e l’implementazione del modello e le scelte tecnologiche per ogni fase del processo di Data Science. Attualmente supportiamo 24 diversi pattern di implementazione. L’acceleratore offre al cliente flessibilità, sicurezza, modularità e scalabilità insieme a facilità d’uso che li aiuta a passare dallo sviluppo alla produzione ad alta velocità.

Architettura dell’Acceleratore di Soluzioni

Il pattern architetturale MLOps v2 è composto da quattro elementi modulari che rappresentano le fasi del ciclo di vita MLOps per uno scenario di data science specifico, le relazioni e il flusso di processo tra questi elementi e le figure coinvolte nella gestione di questi elementi. Di seguito è riportata l’architettura MLOps v2 per uno scenario di Machine Learning classico su dati tabulari insieme a una spiegazione di ciascun elemento.

Figura 1: Architettura MLOps per il Machine Learning Classico utilizzando AML

1. Data Estate: Questo elemento rappresenta il patrimonio dati dell’organizzazione, le possibili fonti e destinazioni dei dati per un progetto di data science. Gli Ingegneri dei Dati sono i principali responsabili di questo elemento del ciclo di vita MLOps v2. Le piattaforme dati di Azure in questo diagramma non sono né esaustive né prescrittive. Tuttavia, verranno evidenziate le fonti e le destinazioni dei dati che rappresentano le migliori pratiche consigliate in base ai casi d’uso dei clienti e le loro relazioni con gli altri elementi dell’architettura.

2. Admin/Setup: Questo elemento avvia la distribuzione dell’Acceleratore MLOps v2. Comprende tutte le attività relative alla creazione e alla gestione delle risorse e dei ruoli associati al progetto. Queste possono includere, ma non sono limitate a:

a. Creazione di repository di codice sorgente del progetto. b. Creazione di spazi di lavoro di Azure Machine Learning per il progetto. c. Creazione/modifica di set di dati e risorse di calcolo utilizzati per l’esperimentazione e il rilascio del modello. d. Definizione degli utenti del team del progetto, dei loro ruoli e dei controlli di accesso ad altre risorse. e. Creazione di pipeline di CI/CD (Continuous Integration and Continuous Delivery). f. Creazione di monitor per la raccolta e la notifica delle metriche del modello e dell’infrastruttura.

Le figure associate a questa fase possono essere principalmente il Team di Infrastruttura, ma possono includere anche tutti gli Ingegneri dei Dati, gli Ingegneri di Machine Learning e i Data Scientist.

3. Sviluppo del modello (Ciclo interno): L’elemento del ciclo interno consiste nel tuo flusso di lavoro iterativo per la scienza dei dati. Un tipico flusso di lavoro è illustrato qui, dall’acquisizione dei dati, all’EDA (Analisi Esplorativa dei Dati), sperimentazione, sviluppo e valutazione del modello, fino alla registrazione di un modello candidato per la produzione. Questo elemento modulare, implementato nell’acceleratore MLOps v2, è agnostico e adattabile al processo che il tuo team può utilizzare per lo sviluppo dei modelli. 

Le persone associate a questa fase includono i Data Scientist e gli Ingegneri di Machine Learning.

4. Deployment (Ciclo esterno): La fase del ciclo esterno consiste nei test di deployment pre-produzione, nel deployment di produzione e nel monitoraggio di produzione, attivati dalle pipeline di integrazione continua al momento della registrazione di un modello di produzione candidato da parte del team del ciclo interno. Le pipeline di Continuous Deployment promuoveranno il modello e le risorse correlate attraverso la produzione e il monitoraggio di produzione, a condizione che siano soddisfatti i test appropriati all’organizzazione e al caso d’uso. Il monitoraggio negli ambienti di staging/test e di produzione facilita la raccolta di dati e l’azione su problemi legati alle prestazioni del modello, alla deriva dei dati e alle prestazioni dell’infrastruttura, potenzialmente richiedendo una revisione umana, il riallenamento automatico e la rivalutazione del modello, o la ripresa del ciclo di sviluppo o dell’Amministrazione/Configurazione per lo sviluppo di nuovi modelli o la modifica delle risorse infrastrutturali. Le persone associate a questa fase sono principalmente gli Ingegneri di Machine Learning.

Il repository include anche un’architettura specificamente progettata per i casi d’uso di Computer Vision (CV) e Natural Language Processing (NLP). Ulteriori architetture personalizzate per Azure ML + Spark e scenari IoT (Internet of Things) Edge sono in fase di sviluppo.

Implementazione Tecnica

Il repository MLOps contiene le migliori pratiche che abbiamo raccolto per consentire agli utenti di passare dallo sviluppo alla produzione con il minimo sforzo. Ci siamo anche assicurati di non essere vincolati a una singola tecnologia o a esempi codificati duramente. Tuttavia, abbiamo comunque cercato di rendere gli esempi facili da utilizzare ed estendibili quando necessario. Il repository MLOps include la seguente matrice di tecnologie dello stack. Gli utenti saranno in grado di scegliere qualsiasi combinazione di elementi dello stack per soddisfare le loro esigenze.

Il repository Azure/mlops-v2: Accelaratori di soluzione Azure MLOps (v2). (github.com) è un mono-repo che gli utenti possono configurare con uno dei pattern architetturali per iniziare. Gli utenti possono selezionare un elemento da ogni colonna per configurare un repository personalizzato per le loro esigenze. Ad esempio, possono selezionare l’infrastruttura che può essere creata usando Terraform mentre utilizzano GitHub come piattaforma CI/CD. Il data scientist può scegliere il suo problema di ML e come vuole distribuire la sua pipeline nel linguaggio di sua scelta.

Tabella 1: Pattern Architetturali

Gli elementi in grassetto sono disponibili ora.

Questi pattern possono essere distribuiti sia in modalità online che batch (scoring). Possono essere distribuiti in modo sicuro o non sicuro, che può includere uno o più workspace di Azure Machine Learning. I workspace multipli spesso trovano posto in alcuni clienti per separare i carichi di lavoro di sviluppo, test e produzione. Per quest’ultimo, mostriamo anche esempi di come la promozione del modello e/o del codice possa avvenire come parte del flusso di lavoro di controllo delle sorgenti o possa essere configurata come passaggio di approvazione facoltativo nella pipeline di deployment.

L’acceleratore MLOps v2 include blocchi di costruzione aggiuntivi che possono essere configurati facoltativamente per essere inclusi nel flusso di lavoro. Questi includono:

1. Responsabile AI: Anche se fanno parte del normale workspace di Azure ML, ora includiamo questi componenti come un passaggio che può essere revisionato da un umano. Questo passaggio manuale può garantire che il modello sviluppato aderisca ai principi di responsabile AI.

2. Sicurezza: Abbiamo incluso passaggi e migliori pratiche dalla scansione avanzata della sicurezza di GitHub e dalla scansione delle credenziali (disponibili anche in Azure DevOps) che possono essere incorporate nel flusso di lavoro. Ad esempio, c’è un esempio su come lavorare con conda.yml e requirements.txt per abilitare le scansioni di sicurezza sui pacchetti Python installati. Questo non sarebbe stato possibile con il modo attuale in cui abbiamo configurato l’ambiente e i container di inferenza. Abbiamo documentazione su come gli utenti di GitHub possono configurare il repository per eseguire la scansione dei pacchetti in modo tempestivo per prevenire problemi di sicurezza che potrebbero impedire il deployment del modello in produzione.

La sicurezza è una preoccupazione primaria e per garantirla, abbiamo introdotto il supporto per i workspace sicuri. Questo aiuterà i team a mantenere la riservatezza dei loro progetti e dei dati. Inoltre, comprendiamo l’importanza di convalidare rapidamente i concetti. Pertanto, abbiamo creato esempi di deploy veloci con Azure DevOps (ADO), GitHub e Microsoft Learn per aiutarti a testare le tue idee nel minor tempo possibile.

Figura 2: Un esempio di configurazione degli avvisi Dependabot di GitHub nel repository

3. Integrazione di Feathr Feature Store: Siamo entusiasti di annunciare l’integrazione di Feathr come un feature store su scala enterprise nelle architetture estese di MLOps V2. La distribuzione di Feathr viene facilitata utilizzando uno script Terraform e forniamo un semplice esempio di machine learning classico per guidarti nella sua implementazione.

4. Registrazione di Diverse Raccolte di Dati e Supporto per Contenitori di Terze Parti: In risposta alle richieste degli utenti, abbiamo incorporato la possibilità di registrare diverse raccolte di dati nell’acceleratore MLOps V2. Crediamo che questo aggiungerà molta flessibilità ai data scientist e agli ingegneri di machine learning per lavorare con diverse raccolte di dati per i loro progetti. Inoltre, abbiamo aggiunto il supporto per i contenitori di terze parti o esterni. Abbiamo persino aggiunto il supporto per la scansione affidabile dei pacchetti Python tramite pip install in un contenitore Docker.

5. Monitoraggio del Modello: Per essere efficaci nel monitorare e identificare la deriva del modello e dei dati, è necessario avere un modo per acquisire e analizzare i dati, specialmente dal sistema di produzione. Abbiamo implementato Azure Data Explorer (ADX) come piattaforma per l’ingestione e l’analisi dei dati. Lo score.py tipico viene modificato per inviare i dati a ADX.

6. Deriva del Modello e dei Dati: Abbiamo due modelli per la deriva del modello e dei dati. Uno dei modelli si basa su ADX, mentre l’altro si basa sulle calcoli effettuati come parte delle Azure ML Pipelines. La scelta dell’implementazione si basa sulle preferenze del cliente. Entrambi gli approcci includono vari test statistici per stimare la deriva tra l’obiettivo e le previsioni. Inoltre, abbiamo in programma di espandere l’analisi per includere la correlazione e altri test statistici come la divergenza di Jensen-Shannon, ecc. per raccolte di dati più grandi (ma con pochi valori obiettivo unici).

7. Contenitori: I modelli inclusi dimostrano anche come gli utenti possono utilizzare i propri contenitori nello spazio di lavoro di Azure ML per la formazione e l’elaborazione delle inferenze che sono contenitori costruiti al di fuori del Azure Container Repository (ACR). Siamo in discussioni con i team di prodotto e ingegneria per portare esempi basati su DeepSpeed e ONNX che aiutano gli utenti finali a formare e inferire i loro modelli più velocemente.

Funzionalità Aggiuntive

Il repository contiene esempi su come lavorare efficacemente con i modelli MLFlow che consentono la distribuzione di API senza codice non solo per modelli tabulari, ma anche per modelli di deep learning come quelli di computer visione.

Il repository è strutturato in modo che l’organizzazione del cliente possa promuovere la coerenza e il riutilizzo dei modelli in tutta l’organizzazione. Per fare ciò, abbiamo creato un repository separato che contiene i singoli passaggi, ad esempio per installare Azure CLI o distribuire il modello. Questi possono quindi essere assemblati nella pipeline del repository principale come blocchi di costruzione che possono essere adattati secondo necessità. Questo aiuta anche a rendere la pipeline leggibile, garantendo che i passaggi includano i modelli che sono comuni (e approvati) in tutta l’organizzazione.

Repo Principale: Azure/mlops–project–template (github.com)

Repo del Modello: Azure/mlops–templates (github.com)

Esempio: I due esempi di codice dimostrano come un modello può essere riutilizzato nella pipeline del repository.

Con il supporto del team di Microsoft Learn, abbiamo contenuti che offrono contenuti online a ritmo libero e pratici per familiarizzare con le varie tecnologie coinvolte. Abbiamo sviluppato contenuti OpenHack, di cui è stata svolta una versione pilota internamente nel giugno 2022. Attualmente stiamo incorporando i feedback dalla sessione e migliorando i contenuti, che sono previsti per essere rilasciati all’inizio dell’anno prossimo.

Conclusioni

L’acceleratore MLOps v2 è la soluzione MLOps predefinita di Microsoft per il futuro. Man mano che l’acceleratore continua a evolversi, rimarrà un punto di riferimento per i clienti per iniziare con Azure. L’acceleratore MLOps v2 offre flessibilità, scalabilità, modularità, facilità d’uso e sicurezza per passare rapidamente dalla fase di sviluppo alla produzione ed è un must per qualsiasi progetto di intelligenza artificiale/machine learning su Azure. MLOps v2 non solo unifica MLOps in Microsoft, ma stabilisce nuovi standard per qualsiasi carico di lavoro di intelligenza artificiale che verrà eseguito su Azure.

Ringraziamenti

Lo sviluppo dell’acceleratore è un’opera di squadra a livello mondiale che ha contribuito in molti modi al repository.

Informazioni sugli autori

Scott Donohoo: Leader tecnico in Data Science e MLOps focalizzato nell’aiutare le organizzazioni di data science a ottenere valore commerciale dall’operazionalizzazione dei loro modelli di machine learning. Oltre vent’anni di esperienza in IT in loco e cloud, big data, machine learning e analisi e ingegneria del software aziendale.

Setu Chokshi: Sono un leader tecnico senior, innovatore e specialista in machine learning e intelligenza artificiale. Sono anche un leader che si è guadagnato il rispetto del mio team attraverso l’ascolto attivo e la delega delle attività allineate ai talenti. La mia esperienza si è sviluppata organicamente, poiché i trionfi tecnici hanno portato a maggiori opportunità. Ho avuto la fortuna di lavorare con giganti del settore come General Electric e Nielsen.