AccueilBlogTest technique ML en production : packaging, serving, monitoring
Guide recrutement data

Test technique ML en production : packaging, serving, monitoring

Entraîner un modèle est facile. Le maintenir en production pendant 2 ans sans régression est difficile. En entretien ML Engineer, on évalue la capacité à industrialiser tout le cycle.

Data Builder·Juin 2025·7 min de lecture·Data Scientist · ML Engineer
Sommaire
  1. Packaging de modèles
  2. Model serving
  3. Monitoring des prédictions
  4. Déploiement canary
  5. Retraining automatique
  6. Model registry
  7. Grille

1Packager un modèle pour la production

Question discriminante

Comment packagéz-vous un modèle sklearn pour qu il soit reproductible en production ?

import joblib import json from datetime import datetime from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.ensemble import GradientBoostingClassifier # Pipeline complet : preprocessing inclus pipeline = Pipeline([ ('scaler', StandardScaler()), ('model', GradientBoostingClassifier(n_estimators=100)) ]) pipeline.fit(X_train, y_train) # Sauvegarder avec métadonnées model_package = { 'model': pipeline, 'metadata': { 'version': '2.1.0', 'trained_at': datetime.now().isoformat(), 'features': list(X_train.columns), 'target': 'churn', 'auc_test': 0.87, 'python_version': '3.11', 'sklearn_version': '1.3.0' } } joblib.dump(model_package, 'model_v2.1.0.pkl') # Signature : valider les inputs en production from mlflow.models import infer_signature signature = infer_signature(X_train, pipeline.predict_proba(X_train))

2Model serving : options en 2025

Question discriminante

Quand utilisez-vous FastAPI, BentoML, ou Vertex AI Endpoints pour servir un modèle ?

OptionForcesIdéal pour
FastAPI customContrôle total, simpleÉquipes Python, modèle unique, logique custom
BentoMLAbstraction ML, batching, adaptive batchingPlusieurs modèles, besoin d optimisation throughput
MLflow ServingIntégré MLflow RegistryÉquipes Databricks, déploiement depuis Registry
Vertex AI EndpointsManagé GCP, autoscalingStack GCP, zéro infra à gérer
Seldon CoreK8s natif, A/B testing intégréÉquipes K8s avancées, multi-modèles

3Monitoring des prédictions en production

Question discriminante

Quelles métriques monitorez-vous sur un modèle de classification en production ?

import pandas as pd from evidently.report import Report from evidently.metric_preset import ClassificationPreset, DataDriftPreset # Rapport Evidently : data drift + performance report = Report(metrics=[ DataDriftPreset(), # distributions des features ClassificationPreset() # métriques de classification ]) report.run( reference_data=training_data, # données d entrainement current_data=production_data # dernières prédictions avec labels ) report.save_html('monitoring_report.html') # Métriques clés à monitorer : # - Distribution des scores de prédiction (drift de score) # - Distribution des features d input (data drift) # - AUC/F1 sur les labels reçus (performance drift) # - Taux de prédictions positives (prediction drift)

4Déploiement canary et shadow mode

Question discriminante

Quelle est la différence entre shadow mode et canary deployment pour un modèle ML ?

5Retraining automatique : quand et comment

Question discriminante

Comment décidez-vous qu un modèle doit être réentrainé ? Comment automatisez-vous cela ?

# Stratégies de déclenchement du retraining # 1. Schedule fixe (simple) # Réentrainer chaque semaine, que le modèle soit dégradé ou non @weekly_task def scheduled_retraining(): train_and_evaluate() if new_model_better_than_current(): deploy_new_model() # 2. Basé sur le drift (intelligent) def check_and_retrain(): drift_score = compute_psi(training_data, recent_predictions) if drift_score > 0.2: # PSI > 0.2 = drift significatif trigger_retraining() auc_current = evaluate_on_labeled_data(recent_labeled) if auc_current < baseline_auc * 0.95: # dégradation > 5% trigger_retraining() # PSI = Population Stability Index # Mesure le drift de distribution d une feature

6Model Registry : gouvernance des modèles

Question discriminante

Comment gérez-vous les versions de modèles et les promotions Staging → Production ?

7Grille par niveau

NiveauMaitriseSignal GONO-GO
ConfirméPipeline sklearn, FastAPI serving, MLflow RegistryA déployé un modèle en API FastAPI, utilise MLflow RegistryDéploie un notebook en production
SeniorMonitoring drift, canary deployment, retraining autoA mis en place le monitoring de drift, a fait du canary deploymentN a pas de monitoring sur ses modèles en production

Vous recrutez un ML Engineer ou Data Scientist ?

Premier entretien gratuit. Rapport GO/NO-GO sous 48h.