Addestrare e monitorare i modelli nei notebook

Completato

I data scientist usano notebook per sperimentare ed eseguire il training dei modelli. Per raggruppare i risultati dell'addestramento del modello, si utilizzano esperimenti. Per tenere traccia delle metriche del modello con MLflow durante il training di un modello in un notebook, è possibile usare le funzionalità di registrazione di MLflow.

Creare un esperimento MLflow

È possibile creare un esperimento MLflow, che consente di raggruppare le esecuzioni. Se non si crea un esperimento, MLflow presuppone l'esperimento predefinito con il nome Default.

Per creare un esperimento, eseguire il comando seguente in un notebook:

import mlflow

mlflow.set_experiment(experiment_name="heart-condition-classifier")

Risultati del log con MLflow

Ora, si è pronti per addestrare il modello. Per avviare un'esecuzione rilevata da MLflow, usare start_run(). Successivamente, per tenere traccia del modello, è possibile:

  • Abilitare l’autologging.
  • Usare la registrazione personalizzata.

Abilitare la registrazione automatica

MLflow supporta la registrazione automatica per le librerie di Machine Learning più diffuse. Quando si abilita l'assegnazione automatica dei tag, MLflow indica al framework di registrare automaticamente metriche, parametri, artefatti e modelli. Non è necessario specificare cosa registrare, poiché è il framework a decidere ciò che è rilevante.

È possibile attivare l'autologging chiamando mlflow.autolog() prima del codice di allenamento. È anche possibile usare il metodo specifico del framework, ad esempio mlflow.xgboost.autolog(), per un controllo più granulare.

Una cella del notebook che addestra e tiene traccia di un modello di classificazione utilizzando l'autologging può essere simile all'esempio di codice seguente:

from xgboost import XGBClassifier

with mlflow.start_run():
    mlflow.autolog()

    model = XGBClassifier(eval_metric="logloss")
    model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)

Non appena mlflow.xgboost.autolog() viene chiamato, MLflow avvia un'esecuzione all'interno di un esperimento in Azure Machine Learning per iniziare a tenere traccia dell'esecuzione dell'esperimento.

Al termine del processo, è possibile esaminare tutte le metriche registrate in Studio.

Screenshot della pagina di panoramica dell'esperimento MLflow con autologging in Azure Machine Learning studio.

Usare la registrazione personalizzata

Inoltre, è possibile registrare manualmente il modello con MLflow. La registrazione manuale dei modelli è utile quando si desidera registrare informazioni supplementari o personalizzate che non vengono registrate tramite la registrazione automatica.

Annotazioni

È possibile scegliere di usare solo la registrazione personalizzata o di usare la registrazione personalizzata in combinazione con la registrazione automatica.

Le funzioni comuni usate con la registrazione personalizzata sono:

  • 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(): registra una figura matplotlib direttamente come artefatto.
  • mlflow.log_image(): Registra un'immagine in formato numpy o PIL come artefatto.
  • mlflow.log_artifact(): registra qualsiasi file esistente come artefatto.
  • mlflow.log_model(): registra un modello. Usare questa funzione per creare un modello MLflow, che può includere una firma personalizzata, un ambiente e esempi di input.

Suggerimento

Altre informazioni su come tenere traccia dei modelli con MLflow esplorando la documentazione ufficiale di MLflow o la documentazione di Azure Machine Learning

Per usare la registrazione personalizzata in un notebook, avviare un'esecuzione e registrare qualsiasi metrica desiderata:

from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score

with mlflow.start_run():
    model = XGBClassifier(eval_metric="logloss")
    model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
    y_pred = model.predict(X_test)

    accuracy = accuracy_score(y_test, y_pred)
    mlflow.log_metric("accuracy", accuracy)

La registrazione personalizzata offre maggiore flessibilità, ma crea anche più lavoro, perché è necessario definire qualsiasi parametro, metrica o artefatto che si vuole registrare.

Al termine del processo, è possibile esaminare tutte le metriche registrate in Studio.

Screenshot della pagina di panoramica dell'esperimento MLflow eseguito con solo la registrazione personalizzata in Azure Machine Learning Studio.