DéploiementMLOpsProductionDevOps

Déployer des modèles d'IA en production : Guide complet

212AY Team·2026-05-20·16 min

Déployer des modèles d'IA en production est différent de leur entraînement. Ce guide couvre l'ensemble du pipeline de déploiement.

Le pipeline de déploiement

  1. Export du modèle : Convertir au format optimisé
  2. Conteneurisation : Empaqueter avec les dépendances
  3. Développement d'API : Créer un point de terminaison d'inférence
  4. Déploiement : Déployer dans le cloud ou sur site
  5. Surveillance : Suivre les performances et la dérive
  6. Passage à l'échelle : Gérer l'augmentation de charge
  7. Étape 1 : Export du modèle

    Exportez votre modèle entraîné vers un format optimisé :

    # PyTorch vers TorchScript
    import torch
    model.eval()
    example_input = torch.randn(1, 3, 224, 224)
    traced_model = torch.jit.trace(model, example_input)
    traced_model.save("model.pt")
    
    # Ou utilisez ONNX pour le multi-plateforme
    import torch.onnx
    torch.onnx.export(model, example_input, "model.onnx")
    

    Étape 2 : Conteneurisation

    FROM python:3.10-slim
    
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY model.pt .
    COPY app.py .
    
    EXPOSE 8000
    CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
    

    Étape 3 : Développement d'API (FastAPI)

    from fastapi import FastAPI, File, UploadFile
    import torch
    from PIL import Image
    import io
    
    app = FastAPI()
    model = torch.jit.load("model.pt")
    model.eval()
    
    @app.post("/predict")
    async def predict(file: UploadFile = File(...)):
        image = Image.open(io.BytesIO(await file.read()))
        # Prétraiter et prédire
        tensor = preprocess(image)
        with torch.no_grad():
            output = model(tensor)
        return {"prediction": postprocess(output)}
    
    @app.get("/health")
    async def health():
        return {"status": "healthy"}
    

    Étape 4 : Options de déploiement

    Serverless : Utilisez AWS Lambda, Google Cloud Run ou Vercel pour les modèles légers.

    Instances GPU : Utilisez AWS SageMaker, GCP AI Platform ou des serveurs GPU dédiés.

    Déploiement edge : Utilisez TensorFlow Lite, ONNX Runtime ou CoreML pour le mobile.

    Étape 5 : Surveillance

    # Suivre les métriques clés
    import time
    import logging
    
    def predict_with_monitoring(input_data):
        start = time.time()
        result = model.predict(input_data)
        latency = time.time() - start
        
        logging.info(f"Prédiction : {result}, Latence : {latency:.3f}s")
        
        # Vérifier la dérive des données
        check_drift(input_data)
        
        return result
    

    Étape 6 : Passage à l'échelle

    • Mise à l'échelle horizontale : Ajoutez plus d'instances derrière un équilibreur de charge
    • Quantification du modèle : Réduisez la taille du modèle pour une inférence plus rapide
    • Traitement par lots : Traitez plusieurs requêtes ensemble
    • Mise en cache : Mettez en cache les résultats pour les entrées courantes

    Optimisation des coûts

    • Utilisez des instances spot pour le traitement par lots
    • Mettez en cache les prédictions fréquemment demandées
    • Quantifiez les modèles pour réduire la mémoire GPU
    • Utilisez la distillation de modèles pour les tâches simples

    Exemple concret

    Une fintech marocaine a déployé un modèle de détection de fraude IA :

    • Conteneurisé avec Docker
    • Déployé sur AWS ECS avec auto-scaling
    • Traite plus de 10 000 transactions par minute
    • 99,9% de disponibilité avec déploiement multi-AZ
    • Moins de 100 ms de latence par prédiction

    Prochaines étapes

    Notre programme « Build with LLMs » enseigne le déploiement en production d'applications IA.