Récupérer la branche du TP :
git checkout 7_start_tp_change_model
Les nouveautés sont :
predict
est maintenant /v1/predict
predict
requiert un query parameter model
qui doit être soit production
, soit staging
.Jusqu'à maintenant, le code d'inférence chargeait un model sauvegardé localement, le code de chargement est le suivant :
try:
model = mlflow.pyfunc.load_model(model_uri=f"models:/customer/{model}")
logging.info('Successfully loaded model from MLflow')
return model
except MlflowException:
logging.info('Failed to load model from MLflow, loading default model')
return joblib.load(MODEL_PATH)
Si le code ne parvient pas à charger le modèle, il charge le modèle local.
Nous allons configurer MLflow, pour qu'il puisse charge le modèle actuel :
Models
Create Model
customer
(ce nom correspond au nom utilisé dans le mlflow.pyfunc.load_model
)create
customer
qui apparaît à l'écran.Le modèle étant vide, nous allons enregistrer le résultat du dernier entraînement comme modèle associé :
Experiments
train
dans le Swagger)Artifacts
, cliquer sur Register Model
customer
register
Models
et cliquer sur customer
, apparaît alors une version du modèle :Maintenant qu'une version du modèle existe, nous allons le promouvoir en Production
:
version 1
stage
cliquer sur le menu déroulant, choisir transition to Production
ok
Nous avons alors un modèle en production, vérifions que cela fonctionne :
Rappel : pour les visualiser en flux, taper dans un terminal la commande :
tail -f /home/jovyan/api_logfile.log
Nous allons entraîner un nouveau modèle, puis le mettre en staging pour le valider.
/train
pour faire un entraînementExperiments
trouver cette expérimentation, enregistrer le modèle sur customer
Models
promouvoir le nouveau modèle en staging
/predict
avec pour modèle staging
pour vérifier que le modèle estEn attendant le reste du groupe, explorer comment réaliser un changement de contrat d'interface.
Constatant que la variable income
est peu impactante, le métier nous demande de mettre à jour le modèle et l'API pour
ne plus utiliser cette variable.
income
v2/predict
qui n'accepte pas l'argument income
Les instructions du TP suivant sont ici