Récupérer la branche du TP :
git checkout 7_start_tp_change_model
Les nouveautés sont :
predict est maintenant /v1/predictpredict 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 :
ModelsCreate Modelcustomer (ce nom correspond au nom utilisé dans le mlflow.pyfunc.load_model)createcustomer qui apparaît à l'écran.
Le modèle étant vide, nous allons enregistrer le résultat du dernier entraînement comme modèle associé :
Experimentstrain dans le Swagger)Artifacts, cliquer sur Register ModelcustomerregisterModels 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 1stage cliquer sur le menu déroulant, choisir transition to ProductionokNous 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 customerModels 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.
incomev2/predict qui n'accepte pas l'argument incomeLes instructions du TP suivant sont ici