MLflow e Azure Machine Learning
SI APPLICA A:Estensione ML dell'interfaccia della riga di comando di Azure v2 (corrente)Python SDK azure-ai-ml v2 (corrente)
Questo articolo descrive le funzionalità di MLflow, un framework open source progettato per gestire il ciclo di vita di apprendimento automatico completo. MLflow usa un set coerente di strumenti per eseguire il training e gestire modelli su piattaforme diverse. È possibile usare MLflow indipendentemente dal fatto che gli esperimenti siano in esecuzione in locale o in una destinazione di calcolo remota, in una macchina virtuale o in un'istanza di ambiente di calcolo di Azure Machine Learning.
Le aree di lavoro di Azure Machine Learning sono compatibili con MLflow, il che significa che è possibile usare un'area di lavoro di Azure Machine Learning nello stesso modo in cui si usa un server MLflow. Questa compatibilità presenta i vantaggi seguenti:
- Azure Machine Learning non ospita istanze del server MLflow, ma può usare direttamente le API MLflow.
- È possibile usare un'area di lavoro di Azure Machine Learning come server di rilevamento per qualsiasi codice MLflow, indipendentemente dal fatto che venga eseguito in Azure Machine Learning o no. È sufficiente configurare MLflow in modo che punti all'area di lavoro in cui deve verificarsi il rilevamento.
- È possibile eseguire qualsiasi routine di training che usa MLflow in Azure Machine Learning senza alcuna modifica.
Suggerimento
A differenza di Azure Machine Learning SDK v1, non esiste alcuna funzionalità di registrazione in Azure Machine Learning v2 SDK. È possibile usare la registrazione di MLflow per assicurarsi che le routine di training siano indipendenti dal cloud, portabili e non abbiano dipendenze da Azure Machine Learning.
Che cos'è il rilevamento
Quando si lavora con i processi, Azure Machine Learning tiene automaticamente traccia di alcune informazioni sugli esperimenti, ad esempio codice, ambiente e dati di input e output. Tuttavia, i modelli, i parametri e le metriche sono specifici dello scenario, pertanto i generatori di modelli devono configurare il rilevamento.
I metadati di rilevamento salvati variano in base all'esperimento e possono includere:
- Codice
- Dettagli dell'ambiente, ad esempio la versione del sistema operativo e i pacchetti Python
- Dati di input
- Configurazioni dei parametri
- Modelli
- Metriche di valutazione
- Visualizzazioni di valutazione, ad esempio matrici di confusione e tracciati di importanza
- Risultati della valutazione, incluse alcune stime di valutazione
Vantaggi del rilevamento di esperimenti
Indipendentemente dal fatto che si esegui il training dei modelli con processi in Azure Machine Learning o in modo interattivo nei notebook, il rilevamento degli esperimenti consente di:
- Organizzare tutti gli esperimenti di Machine Learning in un'unica posizione. È quindi possibile cercare e filtrare gli esperimenti ed eseguire il drill-down per visualizzare i dettagli sugli esperimenti precedenti.
- Confrontare facilmente esperimenti, analizzare i risultati e eseguire il debug del training del modello.
- Riprodurre o rieseguire esperimenti per convalidare i risultati.
- Migliorare la collaborazione, perché è possibile visualizzare le operazioni eseguite da altri colleghi, condividere i risultati dell'esperimento e accedere ai dati dell'esperimento a livello di codice.
Rilevamento con MLflow
Le aree di lavoro di Azure Machine Learning sono compatibili con MLflow. Questa compatibilità consente di usare MLflow per tenere traccia di esecuzioni, metriche, parametri e artefatti nelle aree di lavoro senza dover modificare le routine di training o inserire una sintassi specifica del cloud. Per informazioni su come usare MLflow per tenere traccia degli esperimenti e delle esecuzioni nelle aree di lavoro di Azure Machine Learning, vedere Tenere traccia di esperimenti e modelli con MLflow.
Azure Machine Learning usa il rilevamento MLflow per registrare le metriche e archiviare gli artefatti per gli esperimenti. Quando si è connessi ad Azure Machine Learning, tutto il rilevamento di MLflow si materializza nell'area di lavoro in cui si lavora.
Per informazioni su come abilitare la registrazione per monitorare le metriche di esecuzione in tempo reale con MLflow, vedere Metriche, parametri e file di log con MLflow. È anche possibile eseguire query e confrontare esperimenti ed esecuzioni con MLflow.
MLflow in Azure Machine Learning consente di centralizzare il rilevamento. È possibile connettere MLflow alle aree di lavoro di Azure Machine Learning anche quando si lavora in locale o in un cloud diverso. L'area di lavoro di Azure Machine Learning offre una posizione centralizzata, sicura e scalabile per archiviare le metriche e i modelli di training.
MLflow in Azure Machine Learning può:
- Tenere traccia di esperimenti e modelli di Machine Learning in esecuzione in locale o nel cloud.
- Tenere traccia degli esperimenti di Machine Learning di Azure Databricks.
- Tenere traccia degli esperimenti di Machine Learning di Azure Synapse Analytics.
Rilevamento con MLflow in R
Il supporto di MLflow in R presenta le limitazioni seguenti:
- Il rilevamento MLflow è limitato al rilevamento di metriche, parametri e modelli dell'esperimento nei processi di Azure Machine Learning.
- Il training interattivo in RStudio, Posit (in precedenza RStudio Workbench) o nei notebook di Jupyter con kernel R non è supportato.
- La gestione e la registrazione dei modelli non sono supportate. Usare l'interfaccia della riga di comando di Azure Machine Learning o dello studio di Azure Machine Learning per la registrazione e la gestione dei modelli.
Per esempi dell'uso del client di rilevamento di MLflow con modelli R in Azure Machine Learning, vedere Eseguire il training dei modelli R usando l'interfaccia della riga di comando di Azure Machine Learning (v2).
Rilevamento con MLflow in Java
Il supporto di MLflow in Java presenta le limitazioni seguenti:
- Il rilevamento MLflow è limitato al rilevamento di metriche e parametri dell'esperimento nei processi di Azure Machine Learning.
- Non è possibile tenere traccia degli artefatti e dei modelli. Usare invece il metodo
mlflow.save_model
con la cartellaoutputs
nei processi per salvare modelli o artefatti da acquisire.
Per un esempio Java che usa il client di rilevamento di MLflow con il server di rilevamento di Azure Machine Learning, vedere azuremlflow-java.
Notebook di esempio per il rilevamento di MLflow
- Training e rilevamento di un classificatore XGBoost con MLflow: illustra come usare MLflow per tenere traccia degli esperimenti, registrare i modelli e combinare più versioni in pipeline.
- Training e rilevamento di un classificatore XGBoost con MLflow tramite l'autenticazione dell'entità servizio: illustra come usare MLflow per tenere traccia degli esperimenti da un ambiente di calcolo in esecuzione all'esterno di Azure Machine Learning. L'esempio illustra come eseguire l'autenticazione nei servizi di Azure Machine Learning usando un'entità servizio.
- Ottimizzazione degli iperparametri tramite HyperOpt e le esecuzioni annidate in MLflow: illustra come usare le esecuzioni figlio per eseguire l'ottimizzazione degli iperparametri per i modelli usando la libreria comune HyperOpt. L'esempio mostra come trasferire metriche, parametri e artefatti da esecuzioni figlio a esecuzioni padre.
- Modelli di registrazione con MLflow: illustra come usare il concetto di modelli, anziché artefatti, con MLflow. L'esempio mostra anche come costruire modelli personalizzati.
- Gestire esecuzioni e esperimenti con MLflow: illustra come usare MLflow per eseguire query su esperimenti, esecuzioni, metriche, parametri e artefatti da Azure Machine Learning.
Registrazione dei modelli con MLflow
Azure Machine Learning supporta MLflow per la gestione dei modelli. Questo supporto è un approccio pratico per gli utenti che hanno familiarità con il client MLflow per gestire l'intero ciclo di vita del modello. Per altre informazioni su come gestire i modelli usando l'API MLflow in Azure Machine Learning, vedere Gestire i registri di modelli in Azure Machine Learning con MLflow.
Notebook di esempio per la registrazione dei modelli di MLflow
Gestione dei modelli con MLflow: illustra come gestire i modelli nei registri.
Distribuzione del modello con MLflow
È possibile distribuire modelli di MLflow in Azure Machine Learning per sfruttare un'esperienza migliorata. Azure Machine Learning supporta la distribuzione di modelli MLflow sia in tempo reale che in endpoint batch senza dover specificare un ambiente o uno script di assegnazione dei punteggi.
MLflow SDK, l'interfaccia della riga di comando di Azure Machine Learning, Azure Machine Learning SDK per Python e lo studio di Azure Machine Learning supportano la distribuzione modello di MLflow. Per altre informazioni sulla distribuzione di modelli di MLflow in Azure Machine Learning sia per l'inferenza in tempo reale sia per l'inferenza batch, vedere Linee guida per la distribuzione di modelli di MLflow.
Notebook di esempio per la distribuzione modello di MLflow
- Distribuire MLflow negli endpoint online: illustra come distribuire modelli di MLflow in endpoint online usando MLflow SDK.
- Implementazione progressiva delle distribuzioni di MLflow: illustra come distribuire modelli di MLflow in endpoint online usando MLflow SDK con implementazione progressiva dei modelli. L'esempio mostra anche la distribuzione di più versioni di un modello nello stesso endpoint.
- Distribuire modelli di MLflow nei servizi Web legacy: illustra come distribuire modelli di MLflow nei servizi Web legacy (Istanze di Azure Container o servizio Azure Kubernetes v1) usando MLflow SDK.
- Eseguire il training di modelli in Azure Databricks e distribuirli in Azure Machine Learning: illustra come eseguire il training di modelli in Azure Databricks e distribuirli in Azure Machine Learning. L'esempio illustra anche gli esperimenti di rilevamento con l'istanza di MLflow in Azure Databricks.
Training con progetti di MLflow (anteprima)
Avviso
Il supporto per i file di MLproject
(MLflow Projects) in Azure Machine Learning verrà ritirato completamente a settembre 2026. MLflow è ancora completamente supportato ed è comunque il modo consigliato per tenere traccia dei carichi di lavoro di Machine Learning in Azure Machine Learning.
Man mano che si continua a usare MLflow, è consigliabile passare da file di MLproject
a Processi Azure Machine Learning, usando l'interfaccia della riga di comando di Azure o Azure Machine Learning SDK per Python (v2). Per altre informazioni sui processi di Azure Machine Learning, vedere Tenere traccia degli esperimenti e dei modelli di Machine Learning con MLflow.
Importante
Questa funzionalità è attualmente in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio, pertanto se ne sconsiglia l’uso per i carichi di lavoro in ambienti 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.
È possibile inviare processi di training ad Azure Machine Learning usando progetti di MLflow. È possibile inviare processi in locale con il rilevamento di Azure Machine Learning o eseguire la migrazione dei processi nel cloud tramite ambiente di calcolo di Azure Machine Learning.
Per informazioni su come inviare processi di training che usano progetti di MLflow alle aree di lavoro di Azure Machine Learning per il rilevamento, vedere Eseguire il training con progetti di MLflow in Azure Machine Learning (anteprima).
Notebook di esempio per progetti di MLflow
- Eseguire il training con progetti di MLflow nell'ambiente di calcolo locale.
- Eseguire il training con progetti MLflow nell'ambiente di calcolo di Azure Machine Learning.
Funzionalità degli strumenti client di MLflow e Azure Machine Learning
La tabella seguente illustra le operazioni del ciclo di vita di apprendimento automatico possibili con MLflow SDK e gli strumenti client di Azure Machine Learning.
Funzionalità | MLflow SDK | Interfaccia della riga di comando di Azure Machine Learning e SDK v2 | Studio di Azure Machine Learning |
---|---|---|---|
Tenere traccia e registrare metriche, parametri e modelli | ✓ | ||
Recuperare metriche, parametri e modelli | ✓ | È possibile scaricare solo artefatti e modelli. | ✓ |
Inviare processi di training | Possibile usando progetti di MLflow (anteprima). | ✓ | ✓ |
Inviare processi di training con asset di dati di Azure Machine Learning | ✓ | ✓ | |
Inviare processi di training con pipeline di Machine Learning | ✓ | ✓ | |
Gestire esperimenti ed esecuzioni | ✓ | ✓ | ✓ |
Gestire i modelli MLflow | Alcune operazioni potrebbero non essere supportate.1 | ✓ | ✓ |
Gestire modelli non MLflow | ✓ | ✓ | |
Distribuire modelli di MLflow in Azure Machine Learning (online e batch) | La distribuzione di modelli di MLflow per l'inferenza batch non è attualmente supportata.2 | ✓ | ✓ |
Distribuire modelli non MLflow in Azure Machine Learning | ✓ | ✓ |
1 Per altre informazioni, vedere Gestire i registri di modelli in Azure Machine Learning con MLflow.
2 Per un'alternativa, vedere Distribuire ed eseguire modelli di MLflow nei processi Spark.