MLOps: Gestione dei modelli, distribuzione, derivazione e monitoraggio con Azure Machine Learning v1
SI APPLICA A:estensione di Machine Learning dell'interfaccia della riga di comando (CLI) di Azure v1Python SDK azuremlv1
Questo articolo illustra come applicare le procedure di MLOps (Machine Learning Operations, operazioni per l'apprendimento automatico) in Azure Machine Learning per gestire il ciclo di vita dei modelli. Le procedure di MLOps possono migliorare la qualità e la coerenza delle soluzioni di apprendimento automatico.
Importante
Gli elementi in questo articolo contrassegnati come anteprima sono attualmente in anteprima pubblica. La versione in anteprima viene fornita senza un contratto di servizio. Non è consigliabile usare le funzionalità in anteprima per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate.
Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
Che cos'è MLOps?
MLOps (operazioni per l'apprendimento automatico), basato sui principi e sulle procedure di DevOps, aumenta l'efficienza dei carichi di lavoro. Ad esempio, integrazione, recapito e distribuzione continui. MLOps applica questi principi al processo di apprendimento automatico con l'obiettivo di:
- Sperimentazione e sviluppo dei modelli più veloci
- Distribuzione più rapida dei modelli nell'ambiente di produzione
- Verifica della qualità e tracciamento della derivazione end-to-end
MLOps in Azure Machine Learning
Azure Machine Learning offre le funzionalità di MLOps seguenti:
- Creare pipeline di apprendimento automatico 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 i modelli, inserirli in pacchetti e distribuirli da qualsiasi posizione. È possibile anche tenere traccia dei metadati associati necessari per usare il modello.
- Acquisire i dati di governance per il ciclo di vita dell'apprendimento automatico end-to-end. Le informazioni sulla derivazione dei dati registrate possono includere chi pubblica i modelli, perché sono state apportate modifiche e quando i modelli sono stati distribuiti o usati nell'ambiente di produzione.
- Inviare notifiche e avvisi riguardo agli eventi nel ciclo di vita dell'apprendimento automatico. Per esempio, il completamento dell'esperimento, la registrazione del modello, la distribuzione del modello e il rilevamento della deriva dei dati.
- Monitorare le applicazioni di apprendimento automatico per rilevare problemi operativi e relativi all'apprendimento automatico. Confrontare gli input del modello tra training e inferenza, esplorare le metriche specifiche del modello e offrire monitoraggio e avvisi nell'infrastruttura di apprendimento automatico.
- Automatizzare il ciclo di vita dell'apprendimento automatico end-to-end con Azure Machine Learning e Azure Pipelines. Con le pipeline è possibile aggiornare spesso i modelli, testare nuovi modelli e implementare continuamente nuovi modelli di Machine Learning insieme ad altre applicazioni e servizi.
Per altre informazioni su MLOps, vedere MLOps (operazioni per l'apprendimento automatico).
Creare pipeline di apprendimento automatico riproducibili
Usare le pipeline di apprendimento automatico di Azure Machine Learning per unire tutti i passaggi necessari per il processo di training del modello.
Una pipeline di apprendimento automatico 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 Azure Machine Learning.
Se si usa la Finestra di progettazione per creare le pipeline di apprendimento automatico, selezionare i puntini di sospensione (...) nella parte superiore destra della pagina della finestra di progettazione e quindi selezionare Clona. La clonazione della pipeline consente di eseguire l'iterazione della progettazione della pipeline senza perdere le versioni precedenti.
Creare ambienti software riutilizzabili
Azure Machine Learning consente di usare ambienti software per tenere traccia delle dipendenze software dei progetti e riprodurle durante l'evoluzione. 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. Gli ambienti possono essere usati sia per il training che per la distribuzione di modelli. Per altre informazioni, vedere Che cosa sono gli ambienti di Azure Machine Learning.
Registrare i modelli, inserirli in pacchetti e distribuirli da qualsiasi posizione.
È possibile registrare i modelli, inserirli in pacchetti e distribuirli da qualsiasi posizione.
Registrare e tenere traccia dei modelli di Machine Learning
Con la registrazione dei modelli è possibile archiviare i modelli e controllarne la versione nell'area di lavoro cloud di Azure. 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.
Il nome e la versione identificano i modelli registrati. Ogni volta che si registra un modello con lo stesso nome di uno esistente, il registro incrementa la versione. È possibile specificare altri tag di metadati durante la registrazione. Questi tag vengono quindi usati durante la ricerca di un modello. Azure Machine Learning supporta qualsiasi modello che possa essere caricato con Python 3.5.2. o versione successiva.
Suggerimento
È anche possibile registrare modelli sottoposti a training all'esterno di Azure Machine Learning.
Non è possibile eliminare un modello registrato in uso in una distribuzione attiva. Per altre informazioni, vedere Registrare il modello.
Importante
Quando si usa l'opzione di filtro tramite Tags
nella pagina Modelli dello studio di Azure Machine Learning, invece di usare TagName : TagValue
è necessario usare TagName=TagValue
(senza spazio).
Creare pacchetti ed eseguire il debug di modelli
Prima della distribuzione nell'ambiente di produzione, il modello 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 di Machine Learning in Azure e Risoluzione dei problemi relativi alla distribuzione di modelli remoti.
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ò aumentare raddoppiare le prestazioni.
Per altre informazioni, vedere ONNX e Azure Machine Learning.
Usare i modelli
I modelli di Machine Learning sottoposti a training vengono distribuiti come servizi Web nel cloud o in locale. Le distribuzioni usano la CPU o la GPU per l'inferenza. È anche possibile usare modelli da Power BI.
Quando si usa un modello come servizio Web, fornire 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 restituisce una risposta.
- Un ambiente di Azure Machine Learning che descrive le dipendenze Pip e Conda richieste dai modelli e dallo script di immissione.
- Qualsiasi altro asset, ad esempio testo o dati, richiesto 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 nel 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 in batch è supportata tramite pipeline di apprendimento automatico. Per altre informazioni, vedere Esercitazione: Creare una pipeline di Azure Machine Learning per la classificazione delle immagini.
Servizi Web in tempo reale
È possibile usare i modelli nei servizi Web con le destinazioni di calcolo seguenti:
- Azure Container Instance
- Servizio Azure Kubernetes
- Ambiente di sviluppo locale
Per distribuire il modello come servizio Web, è necessario fornire 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 o le dipendenze Conda.
- Configurazione della distribuzione che descrive come e dove distribuire il modello.
Per altre informazioni, vedere Distribuire modelli di Machine Learning in Azure.
Analisi
Microsoft Power BI supporta l'uso di modelli di Machine Learning per l'analisi dei dati. Per altre informazioni, vedere Intelligenza artificiale con flussi di dati.
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 apprendimento automatico usando i metadati.
- Azure Machine Learning si integra con Git per tenere traccia delle informazioni relative a repository, ramo e commit di provenienza del codice.
- I set di dati di Azure Machine Learning consentono di tenere traccia dei dati, profilarli e creare versioni.
- L'interpretazione consente di spiegare i modelli, soddisfare la conformità alle normative e comprendere in che modo i modelli arrivano a un risultato per l'input specificato.
- 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. Questi metadati includono l'esperimento usato per il training, la posizione in cui viene distribuito e se le distribuzioni sono integre.
- L'integrazione con Azure consente di agire sugli eventi nel ciclo di vita di apprendimento automatico. Ad esempio, la registrazione del modello, la distribuzione, la deriva dei dati e gli eventi di training (esecuzione).
Suggerimento
Alcune informazioni sui modelli e sui 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 il riferimento alla classe Model.
Inviare notifiche e avvisi e automatizzare gli eventi nel ciclo di vita di apprendimento automatico
Azure Machine Learning pubblica eventi chiave in Griglia di eventi di Azure, che può essere usato per notificare e automatizzare gli eventi nel ciclo di vita di apprendimento automatico. Per altre informazioni, vedere Attivare applicazioni, processi o flussi di lavoro CI/CD basati su eventi di Azure Machine Learning.
Monitorare i problemi operativi e di apprendimento automatico
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 Raccogliere dati dai modelli nell'ambiente di produzione.
Ripetere il training del modello sui nuovi dati
Spesso si vuole solo convalidare il modello, aggiornarlo o anche 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 altre situazioni le prestazioni del modello possono peggiorare a causa di modifiche apportate a un particolare sensore, cambiamenti dei dati naturali, ad esempio effetti stagionali o funzionalità che cambiano rispetto ad altre funzionalità. Per altre informazioni, vedere Rilevare la deriva dei dati (anteprima) nei set di dati.
Non esiste una risposta universale a "Come è possibile sapere se è necessario ripetere il training?" ma gli strumenti di monitoraggio ed eventi di Azure Machine Learning illustrati in precedenza sono ottimi 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 improvvisata. 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 Usare i parametri della pipeline per ripetere il training dei modelli nella finestra di progettazione 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 apprendimento automatico
È 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 uno scienziato dei dati controlla una modifica nel repository Git per un progetto, la pipeline di Azure avvia un'esecuzione di training. È possibile esaminare i risultati dell'esecuzione 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 per Azure Pipelines:
- Abilita la selezione dell'area di lavoro durante la definizione di 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 Azure Machine Learning, vedere le risorse seguenti:
- Integrazione continua e distribuzione di modelli di Machine Learning con Azure Pipelines
- Repository MLOps di Azure Machine Learning
- Repository MLOpsPython di Azure Machine Learning
È 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 DevOps per una pipeline di inserimento dati.
Contenuto correlato
Per altre informazioni, leggere ed esplorare le risorse seguenti:
- Distribuire modelli di Machine Learning in Azure
- Esercitazione: Eseguire il training di un modello di classificazione immagini e distribuirlo con un notebook Jupyter di esempio
- Repository di esempi di MLOps
- Usare Azure Pipelines con Azure Machine Learning
- Utilizzare un modello di Azure Machine Learning distribuito come servizio Web
- Design dell'architettura dell'intelligenza artificiale
- Esempi, architetture di riferimento e procedure consigliate