MLOps in Microsoft Azure | Operazioni ML su Microsoft Azure

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati

Flussi di lavoro di apprendimento. L'apprendimento automatico è una parola d'ordine in questi giorni. Tutti sembrano voler saltare nel ML in questi giorni. Molte startup e startup implementano progetti di machine learning in molti modi. Ma solo una parte di questi prodotti può funzionare e mantenersi a lungo termine.

Cos'è DevOps?

Il software deve essere creato ed eseguito correttamente. Quindi, Com'è il ciclo di vita completo di un prodotto software??

Bene, DevOps rende l'intero processo operativo del software senza soluzione di continuità. Consiste in un insieme di pratiche e processi che lavorano insieme per automatizzare e integrare l'intero processo di sviluppo del software.

43170devops-3746085

Fonte immagine

DevOps unifica il processo di sviluppo del software (Dev) e funzionamento del software (Ops). DevOps semplifica l'automazione, il monitoraggio e il buon funzionamento della creazione, lo sviluppo, l'integrazione, test, l'implemento, il lancio, Manutenzione, ridimensionamento, la manutenzione e la gestione dell'infrastruttura software.

Alcuni obiettivi chiave di DevOps sono cicli di sviluppo brevi, fluido e veloce, implementazione veloce, rilasci stabili e seguire correttamente gli obiettivi di business. I sostenitori e i professionisti di DevOps usano l'arte del ciclo infinito (sopra) per rappresentare il ciclo DevOps e mostrare come ogni processo si relaziona con l'altro. Questo mostra anche come lo sviluppo e le operazioni del software siano un ruolo costante.. Hai bisogno di collaborazione e miglioramento costanti durante tutto il ciclo.

La corretta implementazione di DevOps consente alle organizzazioni di fare di più. Integrazione continua (CI) e consegna continua (cd) aiutare le organizzazioni a vedere uno sviluppo più efficiente e una maggiore frequenza di distribuzione. I tempi di riparazione sono ridotti, i difetti di sicurezza informatica possono essere facilmente rilevati e facilitare la sperimentazione e il test.

Perciò, possiamo dire che DevOps rende l'intero processo di ingegneria del software più facile da implementare e mantenere.

MLOps: DevOps per l'apprendimento automatico

MLOps prende in prestito molti dei principi di DevOps nel tentativo di rendere l'intero ciclo ML più efficiente e più facile da usare.. L'obiettivo principale di MLOps è creare pipeline ML automatizzate e tenere traccia dei tempi e di altre metriche. Le pipeline verranno utilizzate per più iterazioni durante il ciclo di vita del progetto AA.

35182mlops-1563661

Fonte immagine

MLOps consiste di:

  1. Design
  2. Modello di sviluppo
  3. Operazioni

La fase di progettazione consiste nell'ingegneria dei requisiti, Priorità dei casi d'uso ML, controllo della disponibilità dei dati e altri passaggi.

Lo sviluppo del modello include l'ingegneria dell'apprendimento automatico, modellazione, ingegneria dei dati e test e convalida dei modelli.

Le operazioni si occupano dell'implementazione dei modelli, Condutture CI / Monitoraggio e manutenzione di CD e modelli.

Vediamo ora come appare lo scenario generale MLOps per Azure MLOps.

Microsoft Azure MLOps

Azure MLOps segue gli obiettivi di:

  • Sviluppo e sperimentazione di modelli più rapidi
  • Implementazione più rapida dei modelli in produzione
  • Controllo di qualità e tracciamento del lignaggio dall'inizio alla fine

Gli strumenti MLOps aiutano a tenere traccia delle modifiche all'origine dati o alle pipeline di dati, il codice, Modelli SDK, eccetera. Il ciclo di vita diventa più semplice ed efficiente con l'automazione, flussi di lavoro ripetibili e risorse che possono essere riutilizzate più e più volte.

I servizi di Azure Machine Learning ci consentono di creare pipeline di Machine Learning riproducibili. Anche gli ambienti software per l'addestramento e la distribuzione dei modelli sono riutilizzabili. Queste pipeline ci consentono di aggiornare i modelli, testare nuovi modelli e implementare continuamente nuovi modelli AA.

Il tipico processo AA

Il tipico processo di Machine Learning consiste in:

1. Raccolta dati

2. Modello di allenamento

3. Imballare il modello

4. Convalida il modello

5. Distribuisci modello

6. Modello del monitor

7. Riqualificare il modello

Ma in molti casi, il processo ha bisogno di più perfezionamento. Sono disponibili nuovi dati e il codice è cambiato. Sono in esecuzione più processi, ognuno dei quali coinvolge una grande quantità di dati.

Generalmente, la maggior parte dei dati è disorganizzata. Anche i dati grezzi devono essere condizionati.

In che modo MLOps può aiutare??

MLOps è costituito da diversi elementi. Alcuni elementi degni di nota sono l'automazione della distribuzione, monitoraggio, test del telaio, controllo della versione dei dati, eccetera. MLOps cerca di prendere i concetti di DevOps e migliorare l'intero processo di apprendimento automatico.

Tutta l'architettura di Azure Machine Learning ha questo aspetto:

74542modello-integrato-mlops-1309921

Fonte immagine

MLOps dovrebbe eseguire un processo coordinato che può facilitare il flusso dell'intero processo e supportare anche gli ambienti CI / CD di grandi dimensioni.

MLOps può aiutare con l'automazione, facilitare le implementazioni del codice. La convalida è anche facilitata dalle migliori pratiche di controllo della qualità di SWE. Nel caso della formazione del modello, se pensiamo che il nostro modello abbia bisogno di una riqualificazione, possiamo sempre tornare indietro e fare una riqualificazione del modello.

Azure Machine Learning ha molti modelli pre-addestrati specifici del dominio, come:

Visione, parla, linguaggio, ricerca, eccetera.

Se parliamo di, che cos'è esattamente Azure ML Services?, è una suite di servizi cloud di Azure insieme a un kit di sviluppo software Python / R, che ci permette di preparare i dati, costruire modelli, gestire i modelli, modellini di treni, monitorare gli esperimenti e implementare i modelli.

Ci sono molti elementi coinvolti, vediamone qualcuna.

Set di dati: registrare i dati

esperimenti: Gare di allenamento

Condutture: Flusso di lavoro di formazione

Modelli: Modelli registrati

Punti finali: modelli distribuiti ed endpoint del flusso di lavoro di formazione

Calcolare: Computing Gestito

Ambienti: Ambienti definiti di formazione e inferenza.

I servizi di Azure sono costruiti in modo tale da essere conformi a DevOps e far funzionare tutto correttamente.

Gestire il ciclo di vita del machine learning con MLOps è un gioco da ragazzi. I modelli devono essere monitorati e riqualificati. I processi MLOps facilitano risultati di business reali e, così, consentire un time-to-market e un'implementazione più rapidi per le soluzioni basate su ML. Aumentano anche la collaborazione e l'allineamento tra i team.

Azure MLOps

Azure Machine Learning ha le seguenti funzionalità MLOps.

Crea pipeline ML riproducibili

Possiamo definire tubi riutilizzabili e ripetibili. Tutti i passaggi che comprendono la raccolta dei dati e la valutazione del modello possono essere riutilizzati.

Ambienti software riutilizzabili

Le dipendenze software dei nostri progetti possono essere tracciate e riprodotte secondo necessità.

Registrati, impacchetta e distribuisci modelli da qualsiasi luogo

La registrazione del modello rende i passaggi precedenti molto facili da implementare. I modelli hanno nome e versione.

Acquisisci i dati di governance per un ciclo di vita di machine learning end-to-end

Azure ML può integrarsi con Git per tenere traccia del nostro codice. Possiamo controllare da quale filiale / il repository viene dal nostro codice. Possiamo anche tracciare, profilo e versione i nostri dati.

Avvisi e notifiche per eventi nel ciclo di vita AA

Azure Machine Learning elenca le pietre miliari in Azure EventGrid, che può essere utilizzato per vari scopi.

Monitorare i problemi operativi

Possiamo comprendere i dati che vengono inviati al nostro modello e le previsioni che vengono restituite. In modo che possiamo capire come si sta comportando il modello.

Automatizza il ciclo di vita degli AA

Azure Pipelines e Github possono essere usati per creare un'integrazione continua e autonoma che addestra un modello. La maggior parte delle fasi del ciclo di vita AA può essere automatizzata.

Quindi, come pensiero generale, possiamo capire che MLOps è un concetto in cui utilizziamo varie risorse per rendere l'intero viaggio ML fluido ed efficiente.

Quindi, pensando a un ipotetico flusso di lavoro MLOps, primo, il team di data science e il team di sviluppo dell'applicazione collaboreranno per creare l'applicazione e anche addestrare il modello. Dopo, l'applicazione sarà testata. parallelo, il modello sarà validato. Dopo, il modello sarà implementato e l'applicazione sarà lanciata.

L'applicazione e il modello saranno monitorati. Dal processo generale di gestione dei modelli e delle applicazioni, possiamo eseguire analisi delle prestazioni. A seconda delle esigenze, possiamo anche riqualificare il modello.

Diamo un'occhiata a un progetto di Machine Learning di esempio in Azure DevOps.

53703campione1-1910462

I vari argomenti di cui abbiamo discusso sono visibili qui.

16891campione2-9055568

Quando si entra in Repos, possiamo controllare il codice e altri file.

Per quanto riguarda i tubi, vediamo una pipeline eseguita con successo.

37058campione3-6569374

Possiamo vedere che tutti i lavori sono stati eseguiti correttamente.

Per il progetto AA di un campione particolare, possiamo vedere i requisiti.

76125campione4-3444962

Possiamo implementare i requisiti.

pip install azure-cli==2.0.69
pip install --upgrade azureml-sdk[cli]
pip install -r requisiti.txt

Codice per addestrare il modello:

Inizia importando le cose necessarie.

importare sottaceti
da azureml.core import Workspace
da azureml.core.run import Esegui
importare il sistema operativo
da sklearn.datasets import load_diabetes
da sklearn.linear_model import Ridge
da sklearn.metrics import mean_squared_error
da sklearn.model_selection import train_test_split
da sklearn.externals importa joblib
importa numpy come np
import json
sottoprocesso di importazione
dalla digitazione import Tuple, Elenco
# run_history_name="devops"
# the.makedirs('./uscite', exist_ok=Vero)
# #ws.get_details()
# Inizia a registrare i risultati su AML
# run = Run.start_logging(spazio di lavoro = ws, history_name = run_history_name)
run = Run.get_submitted_run()

Ottenere i dati.

X, y = carico_diabete(return_X_y=Vero)
colonne = ["età", "Genere", "bmi", "bp", "s1", "s2", "s3", "s4", "s5", "s6"]
X_treno, X_test, y_train, y_test = train_test_split(X, e, test_size=0.2, stato_casuale=0)
dati = {"treno": {"X": X_treno, "e": y_train}, "test": {"X": X_test, "e": y_test}}

Prossimo, addestramento.

# Immagine a caso alfa
alfa = np.arange(0.0, 1.0, 0.05)
alfa = alfa[np.random.choice(alfa.forma[0], 1, sostituisci=Falso)][0]
Stampa(alfa)
run.log("alfa", alfa)
reg = cresta(alfa = alfa)
reg.fit(dati["treno"]["X"], dati["treno"]["e"])
preds = reg.predict(dati["test"]["X"])
run.log("mse", mean_squared_error(pred, dati["test"]["e"]))
# Salva il modello come parte della cronologia della corsa
nome_modello = "sklearn_regression_model.pkl"
# nome_modello = "."
con aperto(nome del modello, "wb") come file:
    joblib.dump(valore=reg, nome file=nome_modello)
# carica il file del modello esplicitamente negli artefatti
run.upload_file(nome="./uscite/" + nome del modello, path_or_stream=nome_modello)
Stampa("Caricato il modello {} sperimentare {}".formato(nome del modello, run.experiment.name))
dirpath = os.getcwd()
Stampa(dirpath)
# registra il modello
# run.log_model(nome_file = nome_modello)
# Stampa('Registrato il modello {} per eseguire la storia {}'.formato(nome del modello, run.history.name))
Stampa("Vengono caricati i seguenti file ")
Stampa(run.get_file_names())
esegui.completo()

Ci sono molte differenze significative nel modo in cui operiamo qui.

Me, essere uno studente, Non avevo esattamente un business case o le risorse monetarie per lavorare su un progetto di machine learning completo in Azure DevOps. Il lavoro di cui sopra viene svolto prendendo come riferimento.

Visita questo repository per riferimento: DevOpsForAI

conclusione

MLOps può risolvere molti problemi legati al ciclo di vita del machine learning. Perciò, anche molte delle sfide generali sono risolte.

MLOps è una proposta molto interessante per le aziende per eseguire i propri modelli ML. MLOps rende il lavoro tra i team super facile e diretto.

Questi sono alcuni dei riferimenti che ho usato per raccogliere conoscenze per questo articolo. Buona lettura.

Riferimenti:

1.https://docs.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment#create-reproducible-ml-pipelines

2. https://docs.microsoft.com/en-us/learn/modules/start-ml-lifecycle-mlops/1-introduction

3. https://docs.microsoft.com/en-us/azure/architecture/example-scenario/mlops/mlops-technical-paper

4. https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/ai/mlops-python

A proposito di me:

Prateek Majumder

Scienza dei dati e analisi | Specialista in marketing digitale | SEO | Creazione di contenuti

Connettiti con me su Linkedin.

I miei altri articoli su DataPeaker: Collegamento.

Grazie.

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.