MLOps: Gestione dei modelli, distribuzione e monitoraggio con Azure Machine Learning

SI APPLICA A:Estensione Ml dell'interfaccia della riga di comando di Azure v2 (current)Python SDK azure-ai-ml v2 (current)

Questo articolo illustra le procedure di machine learning operations (MLOps) in Azure Machine Learning allo scopo di gestire il ciclo di vita dei modelli. L'applicazione di procedure MLOps può migliorare la qualità e la coerenza delle soluzioni di Machine Learning.

Che cos'è MLOps?

MLOps si basa su principi e procedure DevOps che aumentano l'efficienza dei flussi di lavoro. Questi principi includono l'integrazione continua, il recapito e la distribuzione. MLOps applica questi principi al ciclo di vita di Machine Learning, con l'obiettivo di:

  • Sperimentazione e sviluppo più veloci dei modelli.
  • Distribuzione più rapida dei modelli nell'ambiente di produzione.
  • Controllo della qualità e tracciamento della derivazione end-to-end.

MLOps offre le funzionalità seguenti per il processo di Machine Learning:

  • Creare pipeline di Machine Learning riproducibili. Usare le pipeline di Machine Learning per definire passaggi ripetibili e riutilizzabili per i processi di preparazione, training e assegnazione dei punteggi dei dati.
  • Creare ambienti software riutilizzabili. Usare questi ambienti per il training e la distribuzione di modelli.
  • Registrare i modelli, inserirli in pacchetti e distribuirli da qualsiasi posizione. Tenere traccia dei metadati associati necessari per usare un modello.
  • Acquisire i dati di governance per il ciclo di vita di Machine Learning end-to-end. Le informazioni di derivazione registrate possono includere chi pubblica modelli e perché sono state apportate modifiche. Può anche includere quando i modelli sono stati distribuiti o usati nell'ambiente di produzione.
  • Notificare e avvisare gli eventi nel ciclo di vita di Machine Learning. Gli eventi includono il completamento dell'esperimento, la registrazione del modello, la distribuzione del modello e il rilevamento della deriva dei dati.
  • Monitorare le applicazioni di Machine Learning per problemi operativi e correlati all'apprendimento automatico. Confrontare gli input del modello tra training e inferenza. Esplorare le metriche specifiche del modello. Fornire monitoraggio e avvisi nell'infrastruttura di Machine Learning.
  • Automatizzare il ciclo di vita di Machine Learning end-to-end con Machine Learning e Azure Pipelines. Usare le pipeline per testare e aggiornare frequentemente i modelli. È possibile implementare continuamente nuovi modelli di Machine Learning insieme ad altre applicazioni e servizi.

Per altre informazioni su MLOps, vedere Operazioni di Machine Learning.

Creare pipeline di Machine Learning riproducibili

Usare le pipeline di Azure Machine Learning per unire tutti i passaggi del processo di training del modello. Una pipeline di Machine Learning può contenere passaggi che includono la preparazione dei dati, l'estrazione delle funzionalità, l'ottimizzazione degli iperparametri e la valutazione del modello.

Se si usa la finestra di progettazione di Azure Machine Learning per creare una pipeline di Machine Learning, è possibile clonare la pipeline per scorrere la progettazione senza perdere le versioni precedenti. Per clonare una pipeline in qualsiasi momento nella finestra di progettazione, passare all'angolo superiore destro per selezionare ...>Clonare.

Per altre informazioni sulle pipeline di Azure Machine Learning, vedere Pipeline di Machine Learning.

Creare ambienti software riutilizzabili

Usando gli ambienti di Azure Machine Learning, è possibile tenere traccia e riprodurre le dipendenze software dei progetti man mano che si evolvono. È possibile usare gli ambienti per assicurarsi che le compilazioni siano riproducibili senza configurazioni software manuali.

Gli ambienti descrivono le dipendenze pip e conda per i progetti. È possibile usare gli ambienti per il training e la distribuzione dei modelli. Per altre informazioni sugli ambienti, vedere Che cosa sono gli ambienti di Azure Machine Learning?

Registrare, creare pacchetti e distribuire modelli da qualsiasi posizione

Le sezioni seguenti illustrano come registrare, creare pacchetti e distribuire modelli.

Registrare e tenere traccia dei modelli di Machine Learning

Con la registrazione del modello, è possibile archiviare e versione dei modelli nel cloud di Azure nell'area di lavoro. Il registro dei modelli consente di organizzare i modelli sottoposti a training e tenerne traccia con facilità.

Un modello registrato è un contenitore logico per uno o più file che costituiscono il modello. Ad esempio, se si ha un modello archiviato in più file, è possibile registrare i file come singolo modello nell'area di lavoro di Azure Machine Learning. Dopo la registrazione, è possibile scaricare o distribuire il modello registrato e ricevere tutti i file del componente.

È possibile identificare i modelli registrati in base al nome e alla versione. Ogni volta che si registra un modello con lo stesso nome di un modello esistente, il Registro di sistema incrementa il numero di versione. È possibile fornire tag di metadati durante la registrazione e usare questi tag quando si cerca un modello. Azure Machine Learning supporta qualsiasi modello che può essere caricato usando Python 3.5.2 o versione successiva.

Suggerimento

È anche possibile registrare modelli sottoposti a training all'esterno di Azure Machine Learning.

Importante

  • Quando si usa l'opzione Filtra perTags nella pagina Modelli di studio di Azure Machine Learning, anziché usare TagName : TagValue, usare TagName=TagValue senza spazi.
  • Non è possibile eliminare un modello registrato usato in una distribuzione attiva.

Per altre informazioni su come usare i modelli in Azure Machine Learning, vedere Usare modelli in Azure Machine Learning.

Creare pacchetti ed eseguire il debug di modelli

Prima di distribuire un modello nell'ambiente di produzione, deve essere inserito in un pacchetto in un'immagine Docker. Nella maggior parte dei casi, la creazione di immagini avviene automaticamente in background durante la distribuzione; Tuttavia, è possibile specificare manualmente l'immagine.

È utile prima di tutto eseguire la distribuzione nell'ambiente di sviluppo locale in modo da poter risolvere i problemi ed eseguire il debug prima della distribuzione nel cloud. Questa procedura consente di evitare problemi con la distribuzione in Azure Machine Learning. Per altre informazioni su come risolvere i problemi di distribuzione comuni, vedere Come risolvere i problemi relativi agli endpoint online.

Convertire e ottimizzare i modelli

È possibile convertire il modello in Open Neural Network Exchange (ONNX) per provare a migliorare le prestazioni. In genere, la conversione in ONNX può raddoppiare le prestazioni.

Per altre informazioni su ONNX con Machine Learning, vedere Creare e accelerare i modelli di Machine Learning.

Distribuire i modelli

È possibile distribuire modelli di Machine Learning sottoposti a training come endpoint nel cloud o in locale. Le distribuzioni usano CPU e GPU per l'inferenza.

Quando si distribuisce un modello come endpoint, è necessario fornire gli elementi seguenti:

  • Modello usato per assegnare un punteggio ai dati inviati al servizio o al dispositivo.
  • Script di immissione 1. Questo script accetta le richieste, usa i modelli per assegnare un punteggio ai dati e restituisce una risposta.
  • Ambiente 2 che descrive le dipendenze pip e conda richieste dai modelli e dallo script di immissione.
  • Qualsiasi altro asset, ad esempio testo e dati richiesti dai modelli e dallo script di immissione.

Viene inoltre specificata la configurazione della piattaforma di distribuzione di destinazione. Ad esempio, il tipo di famiglia di macchine virtuali , la memoria disponibile e il numero di core. Quando viene creata l'immagine, vengono aggiunti anche i componenti richiesti da Azure Machine Learning, ad esempio gli asset necessari per eseguire il servizio Web.

1,2 Quando si distribuisce un modello MLflow, non è necessario fornire uno script di immissione, noto anche come script di assegnazione dei punteggi. Non è inoltre necessario fornire un ambiente per la distribuzione. Per altre informazioni sulla distribuzione di modelli MLflow, vedere Linee guida per la distribuzione di modelli MLflow.

Assegnazione dei punteggi batch

L'assegnazione dei punteggi batch è supportata tramite endpoint batch. Per altre informazioni sull'assegnazione dei punteggi batch, vedere Endpoint batch.

Punteggio in tempo reale

È possibile usare i modelli con un endpoint online per l'assegnazione dei punteggi in tempo reale. Gli endpoint online possono usare le destinazioni di calcolo seguenti:

  • Endpoint online gestiti
  • Servizio Azure Kubernetes
  • Ambiente di sviluppo locale

Per distribuire un modello in un endpoint, è necessario specificare gli elementi seguenti:

  • Modello o insieme di modelli.
  • Dipendenze necessarie per usare il modello. Esempi sono uno script che accetta le richieste e richiama il modello e le dipendenze conda.
  • Configurazione della distribuzione che descrive come e dove distribuire il modello.

Per altre informazioni sulla distribuzione per l'assegnazione dei punteggi in tempo reale, vedere Distribuire endpoint online.

Implementazione controllata per gli endpoint online

Quando si esegue la distribuzione in un endpoint online, è possibile usare l'implementazione controllata per abilitare gli scenari seguenti:

  • Creare più versioni di un endpoint per una distribuzione.
  • Eseguire test A/B instradando il traffico a distribuzioni diverse all'interno dell'endpoint.
  • Passare da una distribuzione all'altra aggiornando la percentuale di traffico nella configurazione dell'endpoint.

Per altre informazioni sulla distribuzione tramite un'implementazione controllata, vedere Eseguire l'implementazione sicura delle nuove distribuzioni per l'inferenza in tempo reale.

Analisi

Microsoft Power BI supporta l'uso di modelli di Machine Learning per l'analisi dei dati. Per altre informazioni, vedere Integrazione di Azure Machine Learning in Power BI.

Acquisire i dati di governance necessari per MLOps

Azure Machine Learning offre la possibilità di tenere traccia del audit trail end-to-end di tutti gli asset di Machine Learning usando i metadati. Ad esempio:

  • Gli asset di dati di Azure Machine Learning consentono di tenere traccia dei dati, profilarli e delle versioni.
  • L'interpretazione dei modelli consente di spiegare i modelli, soddisfare la conformità alle normative e comprendere come i modelli arrivano a un risultato per un determinato input.
  • La cronologia dei processi di Azure Machine Learning archivia uno snapshot del codice, dei dati e dei calcoli usati per eseguire il training di un modello.
  • Il Registro modelli di Azure Machine Learning acquisisce tutti i metadati associati al modello. Ad esempio, quale esperimento ha eseguito il training del modello, in cui viene distribuito il modello e se le distribuzioni del modello sono integre.
  • L'integrazione con Azure consente di agire su eventi, ad esempio la registrazione del modello, la distribuzione, la deriva dei dati e gli eventi di training (processo) nel ciclo di vita di Machine Learning.

Suggerimento

Mentre alcune informazioni sui modelli e sugli asset di dati vengono acquisite automaticamente, è possibile aggiungere altre informazioni usando i tag. Quando si cercano modelli registrati e asset di dati nell'area di lavoro, è possibile usare i tag come filtro.

Notificare, automatizzare e avvisare gli eventi nel ciclo di vita di Machine Learning

Azure Machine Learning pubblica gli eventi chiave in Griglia di eventi di Azure, che possono essere usati per notificare e automatizzare gli eventi nel ciclo di vita di Machine Learning. Per altre informazioni su come configurare processi basati su eventi basati su eventi di Azure Machine Learning, vedere Flussi di lavoro personalizzati basati su CI/CD e basati su eventi.

Automatizzare il ciclo di vita di Machine Learning

È possibile usare GitHub e Azure Pipelines per creare un processo di integrazione continua che esegue il training di un modello. In uno scenario tipico, quando un data scientist controlla una modifica nel repository Git di un progetto, Azure Pipelines avvia un processo di training. I risultati del processo possono quindi essere esaminati per visualizzare le caratteristiche delle prestazioni del modello sottoposto a training. È anche possibile creare una pipeline che distribuisce il modello come servizio Web.

L'estensione Machine Learning semplifica l'uso di Azure Pipelines. L'estensione offre i miglioramenti seguenti ad Azure Pipelines:

  • Abilita la selezione dell'area di lavoro quando si definisce una connessione al servizio.
  • Consente di attivare le pipeline di versione tramite modelli sottoposti a training creati in una pipeline di training.

Per altre informazioni sull'uso di Azure Pipelines con Machine Learning, vedere Usare Azure Pipelines con Azure Machine Learning.