MLOps: gestione dei modelli, distribuzione, derivazione e monitoraggio con Azure Machine Learning v1

SI APPLICA A:Estensione ml dell'interfaccia della riga di comando di Azure v1Python SDK azureml v1

Questo articolo illustra come applicare 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.

Importante

Gli elementi in questo articolo contrassegnati come "anteprima" sono attualmente in anteprima pubblica. La versione di anteprima viene messa a disposizione senza contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.

Che cos'è MLOps?

Machine Learning Operations (MLOps) si basa su principi e procedure DevOps che aumentano l'efficienza dei flussi di lavoro. Ad esempio, integrazione, recapito e distribuzione continui. MLOps applica questi principi al processo di Machine Learning, con questi obiettivi:

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

MLOps in Azure Machine Learning

Azure Machine Learning offre le funzionalità MLOps seguenti:

  • Creare pipeline di Machine Learning riproducibili. Le pipeline di Machine Learning consentono di definire passaggi ripetibili e riutilizzabili per i processi di preparazione, training e assegnazione dei punteggi dei dati.
  • Creare ambienti software riutilizzabili per il training e la distribuzione di modelli.
  • Registrare, creare pacchetti e distribuire modelli da qualsiasi posizione. È anche possibile tenere traccia dei metadati associati necessari per usare il modello.
  • Acquisire i dati di governance per il ciclo di vita di Ml end-to-end. Le informazioni di derivazione registrate possono includere chi pubblica modelli, perché sono state apportate modifiche e quando i modelli sono stati distribuiti o usati nell'ambiente di produzione.
  • Notificare e avvisare gli eventi nel ciclo di vita di Machine Learning. Ad esempio, il completamento dell'esperimento, la registrazione del modello, la distribuzione del modello e il rilevamento della deriva dei dati.
  • Monitorare le applicazioni ml per individuare i problemi operativi e correlati a ML. Confrontare gli input del modello tra training e inferenza, esplorare le metriche specifiche del modello e fornire monitoraggio e avvisi sull'infrastruttura di Machine Learning.
  • Automatizzare il ciclo di vita end-to-end di Machine Learning con Azure Machine Learning e Azure Pipelines. L'uso delle pipeline consente di aggiornare frequentemente modelli, testare nuovi modelli e implementare continuamente nuovi modelli di Machine Learning insieme ad altre applicazioni e servizi.

Per altre informazioni su MLOps, vedere Machine Learning DevOps (MLOps).

Creare pipeline di Machine Learning riproducibili

Usare le pipeline di Machine Learning di Machine Learning per unire tutti i passaggi coinvolti nel processo di training del modello.

Una pipeline di Machine Learning può contenere passaggi dalla preparazione dei dati all'estrazione delle funzionalità all'ottimizzazione degli iperparametri alla valutazione del modello. Per altre informazioni, vedere Pipeline di Machine Learning.

Se si usa il Designer per creare le pipeline di Machine Learning, è possibile fare clic su "..." in alto a destra nella pagina Designer e quindi selezionare Clona. La clonazione della pipeline consente di scorrere la progettazione della pipeline senza perdere le versioni precedenti.

Creare ambienti software riutilizzabili

Gli ambienti di Azure Machine Learning consentono di tenere traccia e riprodurre le dipendenze software dei progetti man mano che si evolvono. Gli ambienti consentono di garantire che le compilazioni siano riproducibili senza configurazioni software manuali.

Gli ambienti descrivono le dipendenze pip e Conda per i progetti e possono essere usati sia per il training che per la distribuzione di modelli. Per altre informazioni, vedere Informazioni sugli ambienti di Azure Machine Learning.

Registrare, creare pacchetti e distribuire modelli da qualsiasi posizione

Registrare e tenere traccia dei modelli di Machine Learning

Con la registrazione dei modelli è possibile archiviare i modelli e creare le relative versioni nel cloud di Azure, all'interno della propria area di lavoro. Il registro dei modelli consente di organizzare i modelli sottoposti a training e tenerne traccia con facilità.

Suggerimento

Un modello registrato è un contenitore logico per uno o più file che costituiscono il modello. Se, ad esempio, si dispone di un modello archiviato in più file, è possibile registrarli 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 registrati.

I modelli registrati sono identificati dal nome e dalla versione. Ogni volta che si registra un modello con lo stesso nome di uno esistente, il registro incrementa la versione. Durante la registrazione è possibile specificare tag di metadati aggiuntivi. Questi tag vengono quindi usati durante la ricerca di un modello. Azure Machine Learning supporta qualsiasi modello che può essere caricato con Python 3.5.2 o versione successiva.

Suggerimento

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

Non è possibile eliminare un modello registrato usato in una distribuzione attiva. Per altre informazioni, vedere la sezione relativa alla registrazione di un modello nell'articolo Distribuire modelli.

Importante

Quando si usa l'opzione Filtra per Tags nella pagina Modelli di Azure Machine Learning Studio, anziché usare TagName : TagValue i clienti devono usare TagName=TagValue (senza spazio)

Creare pacchetti ed eseguire il debug di modelli

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

Se si verificano problemi con la distribuzione, è possibile eseguire la distribuzione nell'ambiente di sviluppo locale per la risoluzione dei problemi e il debug.

Per altre informazioni, vedere Distribuire modelli e risoluzione dei problemi relativi alle distribuzioni.

Convertire e ottimizzare i modelli

La conversione del modello in Open Neural Network Exchange (ONNX) può migliorare le prestazioni. In media, la conversione in ONNX può produrre un aumento delle prestazioni 2 volte.

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

Usare i modelli

I modelli di Machine Learning con training vengono distribuiti come servizi Web nel cloud o in locale. Le distribuzioni usano array di gate programmabili a campo, GPU o CPU (FPGA) per l'inferenza. È anche possibile usare modelli da Power BI.

Quando si usa un modello come servizio Web, vengono forniti gli elementi seguenti:

  • I modelli usati per assegnare un punteggio ai dati inviati al servizio o al dispositivo.
  • Uno script di avvio. Questo script accetta le richieste, usa i modelli per assegnare un punteggio ai dati e restituire una risposta.
  • Un ambiente di Azure Machine Learning che descrive le dipendenze pip e Conda richieste dai modelli e dallo script di immissione.
  • Eventuali asset aggiuntivi, ad esempio testo, dati e così via. 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 durante la distribuzione in servizio Azure Kubernetes.

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.

Assegnazione dei punteggi batch

L'assegnazione dei punteggi batch è supportata tramite le pipeline di Machine Learning. Per altre informazioni, vedere Stime batch su Big Data.

Servizi Web in tempo reale

È possibile usare i modelli nei servizi Web con le destinazioni di calcolo seguenti:

  • Istanza di contenitore di Azure
  • Servizio Azure Kubernetes
  • Ambiente di sviluppo locale

Per distribuire il modello come servizio Web, è necessario specificare gli elementi seguenti:

  • Modello o insieme di modelli.
  • Dipendenze necessarie per usare il modello. Ad esempio, uno script che accetta le richieste e richiama il modello, le dipendenze conda e così via.
  • Configurazione della distribuzione che descrive come e dove distribuire il modello.

Per altre informazioni, vedere Distribuire modelli.

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 (anteprima).

Acquisire i dati di governance necessari per MLOps

Azure Machine Learning offre la possibilità di tenere traccia dell'audit trail end-to-end di tutti gli asset di Machine Learning usando i metadati.

  • Azure Machine Learning si integra con Git per tenere traccia delle informazioni da cui proviene il repository, il ramo o il commit del codice.
  • I set di dati di Azure Machine Learning consentono di tenere traccia, profilatura e versione dei dati.
  • L'interpretazione consente di spiegare i modelli, soddisfare la conformità alle normative e comprendere in che modo i modelli arrivano a un risultato per un determinato input.
  • La cronologia di esecuzione 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 ( che ha eseguito il training dell'esperimento, in cui viene distribuito, se le distribuzioni sono integre).
  • L'integrazione con Azure consente di agire sugli eventi nel ciclo di vita di Machine Learning. Ad esempio, la registrazione del modello, la distribuzione, la deriva dei dati e gli eventi di training (esecuzione).

Suggerimento

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

L'associazione di un set di dati a un modello registrato è un passaggio facoltativo. Per informazioni sul riferimento a un set di dati durante la registrazione di un modello, vedere le informazioni di riferimento sulla classe Model .

Notificare, automatizzare e inviare avvisi sugli 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, vedere questo documento.

Monitorare i problemi di Machine Learning operativo &

Il monitoraggio consente di comprendere quali dati vengono inviati al modello e le stime restituite.

Queste informazioni consentono di comprendere come viene usato il modello. I dati di input raccolti possono essere utili anche per il training delle versioni future del modello.

Per altre informazioni, vedere Come abilitare la raccolta dei dati dei modelli.

Ripetere il training del modello sui nuovi dati

Spesso, è necessario convalidare il modello, aggiornarlo o persino ripetere il training da zero, man mano che si ricevono nuove informazioni. In alcuni casi, la ricezione di nuovi dati è una parte prevista del dominio. In altri casi, come illustrato in Rilevare la deriva dei dati (anteprima) nei set di dati, le prestazioni del modello possono peggiorare di fronte a elementi quali modifiche a un particolare sensore, modifiche ai dati naturali, ad esempio effetti stagionali o funzionalità che cambiano in relazione ad altre funzionalità.

Non esiste una risposta universale a "Ricerca per categorie sapere se è necessario ripetere il training?" ma gli strumenti di monitoraggio e eventi di Azure Machine Learning descritti in precedenza sono buoni punti di partenza per l'automazione. Dopo aver deciso di ripetere il training, è necessario:

  • Pre-elaborare i dati usando un processo ripetibile e automatizzato
  • Eseguire il training del nuovo modello
  • Confrontare gli output del nuovo modello con quelli del modello precedente
  • Usare criteri predefiniti per scegliere se sostituire il modello precedente

Un tema dei passaggi precedenti è che la ripetizione del training deve essere automatizzata, non ad hoc. Le pipeline di Azure Machine Learning rappresentano una buona risposta per la creazione di flussi di lavoro relativi alla preparazione, al training, alla convalida e alla distribuzione dei dati. Leggere Ripetere il training dei modelli con la finestra di progettazione di Azure Machine Learning per vedere in che modo le pipeline e la finestra di progettazione di Azure Machine Learning rientrano in uno scenario di ripetizione del training.

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 Scienziato dei dati controlla una modifica nel repository Git per un progetto, Azure Pipeline avvierà un'esecuzione di training. I risultati dell'esecuzione 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 Azure Machine Learning semplifica l'uso di Azure Pipelines. Offre i miglioramenti seguenti ad Azure Pipelines:

  • Abilita la selezione dell'area di lavoro durante la definizione di una connessione al servizio.
  • Consente l'attivazione delle pipeline di versione da parte di modelli sottoposti a training creati in una pipeline di training.

Per altre informazioni sull'uso di Azure Pipelines con Azure Machine Learning, vedere i collegamenti seguenti:

È anche possibile usare Azure Data Factory per creare una pipeline di inserimento dati che prepara i dati da usare con il training. Per altre informazioni, vedere Pipeline di inserimento dati.

Passaggi successivi

Per altre informazioni, leggere ed esplorare le risorse seguenti: