Tenere traccia delle metriche con MLflow

Completato

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.