Modèles personnalisés

Introduction à MLflow

Weston Bassler

Senior MLOps Engineer

Exemples d'utilisation

  • NLP - Tokenizer(s)

  • Classification - Encodeur d'étiquettes

  • Pré/Posttraitement

  • Pas une saveur intégrée

Différent

1 unsplash.com
Introduction à MLflow

Modèles Python personnalisés

  • Saveur intégrée - python_function

  • mlflow.pyfunc

    • save_model()
    • log_model()
    • load_model()
Introduction à MLflow

Classe de modèle personnalisée

  • Classe de modèle personnalisée

    • MyClass(mlflow.pyfunc.PythonModel)
  • Classe PythonModel

    • load_context() - charge les artéfacts quand mlflow.pyfunc.load_model() est appelé
    • predict() - reçoit l'entrée et effectue l'évaluation définie par l'utilisateur
Introduction à MLflow

Classe Python

# Class
class MyPythonClass:

# Fonction qui affiche Hello! def my_func(): print("Hello!")
# Créer un nouvel objet
x = MyPythonClass()

# Exécuter la fonction my_func x.my_func()
"Hello!"
Introduction à MLflow

Exemple de classe personnalisée

import mlflow.pyfunc

# Définir la classe de modèle
class CustomPredict(mlflow.pyfunc.PythonModel):

# Charger les artéfacts def load_context(self, context): self.model = mlflow.sklearn.load_model(context.artifacts["custom_model"])
# Évaluer l'entrée avec custom_function() def predict(self, context, model_input): prediction = self.model.predict(model_input) return custom_function(prediction)
Introduction à MLflow

Enregistrement et consignation d'un modèle personnalisé

# Enregistrer le modèle dans le système de fichiers local
mlflow.pyfunc.save_model(path="custom_model", python_model=CustomPredict())
# Consigner le modèle dans MLflow Tracking
mlflow.pyfunc.log_model(artifact_path="custom_model", python_model=CustomPredict())
Introduction à MLflow

Chargement de modèles personnalisés

# Charger le modèle depuis le système de fichiers local
mlflow.pyfunc.load_model("local")
# Charger le modèle depuis MLflow Tracking
mlflow.pyfunc.load_model("runs:/run_id/tracking_path")
Introduction à MLflow

Évaluation de modèle

  • mlflow.evaluate() - Performance basée sur un ensemble de données

  • Modèles de régression et de classification

Introduction à MLflow

Exemple d'évaluation

# Données d'entraînement
X_train, X_test, y_train, y_test = \
    train_test_split(X, y,
    train_size=0.7,random_state=0)

# Modèle de régression linéaire lr = LinearRegression() lr.fit(X_train, y_train)
# Ensemble de données
eval_data = X_test
eval_data["test_label"] = y_test

# Évaluer le modèle avec l'ensemble de données mlflow.evaluate( "runs:/run_id/model", eval_data, targets="test_label", model_type="regressor" )
Introduction à MLflow

Interface de suivi

éval

shap

1 shap.readthedocs.io
Introduction à MLflow

Passons à la pratique !

Introduction à MLflow

Preparing Video For Download...