AWS SageMaker MLOps : déployer des modèles ML en production sur AWS
← Retour au blogAWS & IA

AWS SageMaker MLOps : déployer des modèles ML en production sur AWS

25 octobre 202511 min de lectureAWSSageMakerMLOps

SageMaker est la plateforme ML d'AWS, de l'entraînement au déploiement. Pipelines MLOps, Model Registry, endpoints d'inférence, monitoring de dérive : le guide complet pour la production.

Pourquoi SageMaker pour le MLOps ?

Le machine learning en production va bien au-delà de l'entraînement d'un modèle dans un notebook. Il faut gérer les pipelines de données, versionner les modèles, automatiser l'entraînement, déployer avec des SLAs de disponibilité, monitorer la dérive des données et des performances. SageMaker adresse l'ensemble de ce cycle de vie avec une intégration AWS native.

Les composants clés de SageMaker MLOps

  • SageMaker Pipelines : orchestration des workflows ML (prétraitement, entraînement, évaluation, déploiement)
  • Model Registry : versioning et gouvernance des modèles, avec approbation manuelle avant déploiement
  • Feature Store : stockage et réutilisation des features entre équipes et modèles
  • Model Monitor : surveillance de la dérive des données et des performances en production
  • Clarify : détection de biais et explicabilité des modèles

Pipeline MLOps de référence

from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.steps import ProcessingStep, TrainingStep, ModelStep
from sagemaker.workflow.conditions import ConditionGreaterThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep

# Étape 1 : Prétraitement
preprocessing_step = ProcessingStep(
    name="PreprocessData",
    processor=SKLearnProcessor(
        framework_version="1.2-1",
        instance_type="ml.m5.large",
        instance_count=1
    ),
    inputs=[ProcessingInput(source=raw_data_uri, destination="/opt/ml/processing/input")],
    outputs=[ProcessingOutput(source="/opt/ml/processing/output", destination=processed_data_uri)],
    code="preprocessing.py"
)

# Étape 2 : Entraînement
training_step = TrainingStep(
    name="TrainModel",
    estimator=XGBoost(
        entry_point="train.py",
        framework_version="1.7-1",
        instance_type="ml.m5.xlarge",
        hyperparameters={"max_depth": 6, "n_estimators": 100}
    ),
    inputs={"train": TrainingInput(s3_data=processed_data_uri)}
)

# Étape 3 : Évaluation + condition
evaluation_step = ProcessingStep(name="EvaluateModel", ...)
condition_step = ConditionStep(
    name="CheckAccuracy",
    conditions=[ConditionGreaterThanOrEqualTo(left=accuracy_metric, right=0.85)],
    if_steps=[register_step],
    else_steps=[]
)

pipeline = Pipeline(
    name="churn-prediction-pipeline",
    steps=[preprocessing_step, training_step, evaluation_step, condition_step]
)
pipeline.upsert(role_arn=role)

Model Registry : gouvernance et traçabilité

Le Model Registry centralise tous les modèles entraînés avec leurs métriques, paramètres et artefacts. Le workflow de gouvernance :

  1. Le pipeline d'entraînement enregistre automatiquement le modèle en statut PendingManualApproval
  2. Un data scientist ou ML engineer valide les métriques et approuve le modèle
  3. Un EventBridge rule détecte l'approbation et déclenche le déploiement automatique
  4. Le modèle est déployé sur un SageMaker Endpoint ou exporté vers Lambda/ECS

Endpoints d'inférence

SageMaker propose plusieurs modes de déploiement selon les besoins :

  • Real-time Endpoint : latence <100ms, auto-scaling, ideal pour les APIs ML synchrones
  • Serverless Inference : scale-to-zero, facturation à la requête, latence variable (cold start) — pour les charges intermittentes
  • Async Inference : pour les inférences longues (>1 min), résultats dans S3
  • Batch Transform : scoring par batch sur des datasets S3, sans endpoint permanent
# Déploiement avec auto-scaling
predictor = model.deploy(
    initial_instance_count=1,
    instance_type="ml.m5.large",
    endpoint_name="churn-prediction-v2"
)

# Auto-scaling policy
client.register_scalable_target(
    ServiceNamespace="sagemaker",
    ResourceId=f"endpoint/churn-prediction-v2/variant/AllTraffic",
    ScalableDimension="sagemaker:variant:DesiredInstanceCount",
    MinCapacity=1,
    MaxCapacity=10
)

Model Monitor : détecter la dérive

Un modèle en production se dégrade inévitablement au fil du temps — la distribution des données d'entrée change (data drift), les relations entre features et target évoluent (concept drift). Model Monitor automatise cette surveillance :

  • Data quality monitor : compare la distribution des features en production avec la baseline d'entraînement (KL-divergence, chi-square)
  • Model quality monitor : compare les prédictions aux labels réels (nécessite un feedback loop)
  • Bias drift monitor : surveillance du biais sur des groupes démographiques

Les violations génèrent des alertes CloudWatch qui peuvent déclencher un re-training automatique via EventBridge → Lambda → Pipeline.

Intégration CI/CD avec GitHub Actions

name: MLOps Pipeline
on:
  push:
    paths: ["ml/**"]
    branches: [main]

jobs:
  trigger-pipeline:
    runs-on: ubuntu-latest
    steps:
      - uses: aws-actions/configure-aws-credentials@v6
        with:
          role-to-assume: arn:aws:iam::ACCOUNT_ID:role/MLOpsRole
          aws-region: eu-west-1
      - name: Start SageMaker Pipeline
        run: |
          aws sagemaker start-pipeline-execution             --pipeline-name churn-prediction-pipeline             --pipeline-execution-display-name "ci-${GITHUB_SHA::8}"

Coûts et optimisation

  • Utilisez les instances Spot pour l'entraînement (jusqu'à 90 % moins cher) — SageMaker gère les checkpoints et la reprise automatique
  • Préférez Serverless Inference pour les modèles peu sollicités (<1000 req/j)
  • SageMaker Savings Plans pour les endpoints en production permanente
  • Activez le chiffrement S3 et les VPC endpoints pour les données sensibles

Conclusion

SageMaker fournit une plateforme MLOps complète, de l'ingestion des données au monitoring en production. La clé est d'adopter une approche pipeline dès le début — pas de modèles entraînés manuellement dans des notebooks sans traçabilité. Move2Cloud accompagne les équipes data dans la mise en place de ces pipelines MLOps sur AWS.

← Retour au blog