TP3 Partie 1 : log_model + Model Registry + promotion par alias

This commit is contained in:
Johan LEROY
2026-07-22 11:22:50 +02:00
parent e6a05fbbc7
commit 9a52395c91
6 changed files with 127 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ import logging
import mlflow
import pandas as pd
import typer
from mlflow.models import infer_signature
from sklearn import linear_model
from sklearn import metrics
@@ -17,6 +18,11 @@ logger = logging.getLogger(__name__)
@app.command()
def main(
strategy: constants.ModellingStrategy,
register: bool = typer.Option(
False,
"--register/--no-register",
help="Enregistrer le modele dans le Model Registry (cree une nouvelle version).",
),
):
training_file_path = constants.DATASET_DIR / "train.parquet"
validation_file_path = constants.DATASET_DIR / "validation.parquet"
@@ -72,6 +78,24 @@ def main(
):
mlflow.log_metric(f"coef_{feature_name}", float(coefficient))
# Sauvegarde de l'artefact du modele (poids + signature + environnement
# d'execution : requirements.txt, conda.yaml, MLmodel). --register empile
# une nouvelle version dans le Model Registry pour les meilleures experiences.
signature = infer_signature(X_train, train_predictions)
mlflow.sklearn.log_model(
sk_model=model,
name="model",
signature=signature,
input_example=X_train.iloc[:5],
registered_model_name=(
constants.REGISTERED_MODEL_NAME if register else None
),
)
if register:
logger.info(
f"Model registered as '{constants.REGISTERED_MODEL_NAME}' (nouvelle version)"
)
if __name__ == "__main__":
app()