Tenere traccia delle metriche con MLflow
Quando si esegue il training di un modello con uno script, è possibile includere MLflow negli script per tenere traccia di qualsiasi parametro, metrica e artefatto. Quando si esegue lo script come processo in Azure Machine Learning, è possibile esaminare tutti i parametri di input e gli output per ogni esecuzione.
Informazioni su MLflow
MLflow è una piattaforma open source progettata per gestire il ciclo di vita completo di Machine Learning. Poiché è open source, può essere usato durante il training di modelli su piattaforme diverse. In questa unità viene illustrato come integrare MLflow con i processi di Azure Machine Learning.
Sono disponibili due opzioni per tenere traccia dei processi di Machine Learning con MLflow:
- Abilitare la registrazione automatica usando
mlflow.autolog() - Usare le funzioni di registrazione per tenere traccia delle metriche personalizzate usando
mlflow.log_*
Prima di poter usare una di queste opzioni, è necessario configurare l'ambiente per l'uso di MLflow.
Includere MLflow nell'ambiente
Per usare MLflow durante il processo di training, è necessario installare i mlflow pacchetti e azureml-mlflow pip nel calcolo che esegue lo script. Pertanto, è necessario includere questi due pacchetti nell'ambiente. È possibile creare un ambiente facendo riferimento a un file YAML che descrive l'ambiente Conda. Nell'ambito dell'ambiente Conda, è possibile includere questi due pacchetti.
Ad esempio, in questo ambiente personalizzato, mlflow e azureml-mlflow vengono installati usando pip.
name: mlflow-env
channels:
- conda-forge
dependencies:
- python=3.10
- pip
- pip:
- numpy
- pandas
- scikit-learn
- matplotlib
- mlflow
- azureml-mlflow
Dopo aver definito e registrato l'ambiente, assicurarsi di fare riferimento all'ambiente quando si invia l'attività.
Abilitare la registrazione automatica
Quando si utilizza una delle librerie più comuni per l'apprendimento automatico, è possibile abilitare l'autologging in MLflow. Registrazione automatica di parametri, metriche e artefatti del modello senza la necessità di specificare cosa deve essere registrato.
L'autologging è supportato per le seguenti librerie:
- Scikit-learn
- TensorFlow e Keras
- XGBoost
- LightGBM
- Spark
- Fastai
- Pytorch
Per abilitare l'autologging, aggiungere il seguente codice allo script di training:
import mlflow
mlflow.autolog()
Registrare le metriche con MLflow
Nello script di training è possibile decidere la metrica personalizzata da registrare con MLflow.
A seconda del tipo di valore da registrare, usare il comando MLflow per archiviare la metrica con l'esecuzione dell'esperimento:
-
mlflow.log_param(): Registra un singolo parametro chiave-valore. Usare questa funzione per un parametro di input che si vuole registrare. -
mlflow.log_metric(): registra una singola metrica chiave-valore. Il valore deve essere un numero. Usare questa funzione per qualsiasi output da archiviare con l'esecuzione. -
mlflow.log_figure(): registrare una figura matplotlib direttamente come artefatto. Usare questa funzione per registrare i tracciati senza salvarli prima su disco. -
mlflow.log_image(): registrare un oggetto immagine numpy o PIL come artefatto. Usare questa funzione per registrare le immagini direttamente senza salvarle prima su disco.
Per aggiungere MLflow a uno script di training esistente, è possibile aggiungere il codice seguente:
import mlflow
reg_rate = 0.1
mlflow.log_param("Regularization rate", reg_rate)
Suggerimento
Per una panoramica completa dell'uso di MLflow Tracking, leggere la documentazione di MLflow.
Inviare il lavoro
Infine, è necessario inviare lo script di training come job in Azure Machine Learning. Quando si usa MLflow in uno script di training, tutti i parametri, le metriche e gli artefatti rilevati vengono archiviati con l'esecuzione del processo. Puoi esaminarli dopo aver inviato l'attività per ogni esecuzione.
Configura il job come di consueto. È sufficiente assicurarsi che l'ambiente a cui si fa riferimento nel processo includa i pacchetti necessari e lo script descrive le metriche da registrare.