Effectuer l’apprentissage et le suivi des modèles dans des notebooks

Effectué

En tant que scientifique des données, vous utilisez des notebooks pour effectuer des expériences et l’apprentissage des modèles. Pour regrouper les résultats de l’apprentissage du modèle, vous allez utiliser des expériences. Pour suivre les métriques du modèle avec MLflow lors de l’apprentissage d’un modèle dans un notebook, vous pouvez utiliser les fonctionnalités de journalisation de MLflow.

Créer une expérience MLflow

Vous pouvez créer une expérience MLflow, ce qui permet de regrouper des exécutions. Si vous ne créez pas d’expérience, MLflow se rapporte à l’expérience par défaut avec le nom Default.

Pour créer une expérience, exécutez la commande suivante dans un notebook :

import mlflow

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

Résultats des journaux avec MLflow

Vous êtes maintenant prêt à effectuer l’apprentissage de votre modèle. Pour démarrer une exécution suivie par MLflow, vous allez utiliser start_run(). Pour suivre le modèle, vous pouvez ensuite :

  • Activer la journalisation automatique.
  • Utiliser la journalisation personnalisée.

Activer la journalisation automatique

MLflow prend en charge la journalisation automatique pour les bibliothèques de Machine Learning populaires. Si vous utilisez une bibliothèque prise en charge par la journalisation automatique, MLflow indique à l’infrastructure que vous utilisez de consigner l’ensemble des métriques, paramètres, artefacts et modèles qu’elle considère comme pertinents.

Vous pouvez activer la journalisation automatique à l’aide de la méthode autolog de l’infrastructure que vous utilisez. Pour activer la journalisation automatique par exemple pour les modèles XGBoost, vous pouvez utiliser mlflow.xgboost.autolog().

Une cellule de notebook qui effectue l’apprentissage et le suivi d’un modèle de classification à l’aide de la journalisation automatique peut ressembler à l’exemple de code suivant :

from xgboost import XGBClassifier

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

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

Dès que mlflow.xgboost.autolog() est appelé, MLflow démarre une exécution au sein d’une expérience dans Azure Machine Learning pour commencer le suivi de l’exécution de l’expérience.

Une fois le travail terminé, vous pouvez passer en revue l’ensemble des métriques journalisées dans le studio.

Screenshot of overview page of MLflow experiment with autologging in Azure Machine Learning studio.

Utiliser la journalisation personnalisée

En outre, vous pouvez enregistrer votre modèle manuellement avec MLflow. La journalisation manuelle des modèles est utile quand vous souhaitez consigner des informations supplémentaires ou personnalisées qui ne le sont pas via la journalisation automatique.

Notes

Vous pouvez utiliser uniquement la journalisation personnalisée ou utiliser la journalisation personnalisée en combinaison avec la journalisation automatique.

Voici les fonctions courantes utilisées avec la journalisation personnalisée :

  • mlflow.log_param() : consigne un paramètre clé-valeur unique. Utilisez cette fonction pour un paramètre d’entrée que vous souhaitez consigner.
  • mlflow.log_metric() : consigne une métrique clé-valeur unique. La valeur doit être un nombre. Utilisez cette fonction pour toute sortie que vous souhaitez stocker avec l’exécution.
  • mlflow.log_artifact() : journalise un fichier. Utilisez cette fonction pour tout tracé que vous souhaitez consigner et enregistrer en tant que fichier image avant.
  • mlflow.log_model() : journalise un modèle. Utilisez cette fonction pour créer un modèle MLflow, qui peut inclure une signature personnalisée, un environnement et des exemples d’entrée.

Conseil

Découvrez plus en détail la procédure pour effectuer le suivi des modèles avec MLflow en consultant la documentation MLflow officielle ou la documentation Azure Machine Learning

Pour utiliser la journalisation personnalisée dans un notebook, démarrez une exécution et consignez les métriques de votre choix :

from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score

with mlflow.start_run():
    model = XGBClassifier(use_label_encoder=False, 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 journalisation personnalisée offre plus de flexibilité, mais elle entraîne également un travail supplémentaire, car vous devez définir l’ensemble des paramètres, métriques et artefacts que vous souhaitez journaliser.

Une fois le travail terminé, vous pouvez passer en revue l’ensemble des métriques journalisées dans le studio.

Screenshot overview page of MLflow experiment run with only custom logging in Azure Machine Learning studio.