Vue d'ensemble
AI Product Photo Detector est un système MLOps complet -- bien plus qu'un simple modèle, c'est un pipeline de production intégral pour la classification binaire d'images réelles vs générées par IA. Construit autour d'EfficientNet-B0 avec explicabilité Grad-CAM, entraîné sur le dataset CIFAKE (images réelles CIFAR-10 vs images générées par Stable Diffusion). Le projet couvre chaque étape du cycle de vie ML : versionnage des données, entraînement multi-environnement, suivi d'expériences, registre de modèles, serving conteneurisé, infrastructure-as-code, automatisation CI/CD et monitoring en production.Résultats
| Métrique | Valeur |
|---|
| Accuracy | 92.8% |
| F1-Score | 93.1% |
| Precision | 92.5% |
| Recall | 93.7% |
| Latence d'inférence | 131ms |
Le modèle le plus performant (Run 3, lr=3e-4) a été promu en production via le registre de modèles MLflow. Un quality gate impose des seuils minimaux d'accuracy ≥ 0.85 et de F1 ≥ 0.80 avant tout déploiement.Fonctionnalités Clés
| Fonctionnalité | Description |
|---|
| Modèle ML | EfficientNet-B0 avec explicabilité Grad-CAM pour des prédictions interprétables |
| API | FastAPI avec authentification JWT, rate limiting, endpoints batch et explain |
| Entraînement | 3 modes : Local/Docker, Google Colab et Vertex AI |
| Monitoring | Prometheus + Grafana avec 20+ métriques, 13 règles d'alerte et détection de dérive |
| Infrastructure | Terraform (5 modules, 2 environnements) + Docker (5 services) + Cloud Run |
| CI/CD | GitHub Actions avec 5 workflows et quality gates automatisés |
| Tests | 316 tests, 70%+ de couverture sur 3 niveaux (unitaire, intégration, E2E) |
Architecture Système
Le pipeline suit un flux linéaire de la donnée au monitoring en production :
Données (DVC + GCS) → Entraînement (PyTorch) → Registre (MLflow) → Packaging (Docker) → Infra (Terraform) → CI/CD (GitHub Actions) → Déploiement (Cloud Run) → Serving (FastAPI) → Monitoring (Prometheus + Grafana)
Chaque étape est automatisée et versionnée. DVC suit les versions du dataset dans Google Cloud Storage, MLflow enregistre chaque run d'entraînement, Docker package le modèle et l'API, Terraform provisionne l'infrastructure cloud, GitHub Actions orchestre les tests et le déploiement, et Prometheus collecte les métriques de production.Architecture du Modèle
Le pipeline de classification repose sur EfficientNet-B0 avec transfer learning :
- Modèle de Base -- EfficientNet-B0 pré-entraîné sur ImageNet (5.3M paramètres)
- Tête Personnalisée -- Dropout (0.3) + couche linéaire pour la classification binaire
- Explicabilité -- Grad-CAM génère des heatmaps visuelles mettant en évidence les régions déterminantes pour chaque prédiction
Configuration d'Entraînement
| Paramètre | Valeur |
|---|
| Dataset | CIFAKE (CIFAR-10 + Stable Diffusion) |
| Architecture | EfficientNet-B0 |
| Optimiseur | AdamW (weight decay) |
| Scheduler | CosineAnnealingLR |
| Meilleur Learning Rate | 3e-4 (Run 3) |
| Paramètres | 5.3M (transfer learning) |
Pipeline MLOps
Versionnage des Données
DVC (Data Version Control) gère les versions du dataset avec un stockage distant sur Google Cloud Storage. Les modifications du dataset sont suivies aux côtés du code dans Git, garantissant une reproductibilité totale.
Suivi des Expériences
MLflow gère le cycle de vie complet des expériences :
- Journalisation des Métriques -- Loss, accuracy, F1-score, precision, recall par époque
- Registre de Modèles -- Contrôle de version avec promotion staging/production
- Stockage d'Artefacts -- Poids du modèle, matrices de confusion, courbes d'entraînement, échantillons Grad-CAM
- Suivi des Hyperparamètres -- Learning rate, taille de batch, configuration de l'augmentation, paramètres de l'optimiseur
Modes d'Entraînement
| Mode | Environnement | Cas d'usage |
|---|
| Local / Docker | Machine locale ou conteneur Docker | Développement et itérations rapides |
| Google Colab | Notebook cloud avec GPU gratuit | Prototypage avec accélération GPU |
| Vertex AI | Entraînement managé Google Cloud | Entraînement de production à grande échelle |
Explicabilité Grad-CAM
Chaque prédiction peut inclure une heatmap Grad-CAM via l'endpoint /predict/explain, montrant quelles régions de l'image ont le plus contribué à la décision de classification.API et Serving
FastAPI sert le modèle avec une architecture d'endpoints de niveau production :
| Endpoint | Méthode | Description |
|---|
| /predict | POST | Classification d'une image avec score de confiance |
| /predict/batch | POST | Prédiction par lots pour plusieurs images |
| /predict/explain | POST | Prédiction avec heatmap Grad-CAM |
| /health | GET | Vérification de l'état de santé et statut du modèle |
| /metrics | GET | Métriques compatibles Prometheus |
L'API intègre un pipeline d'authentification JWT et un rate limiting configurable pour prévenir les abus en production.Infrastructure
L'infrastructure est définie en code à travers 5 modules gérant 2 environnements (dev et prod) :
| Module | Fonction |
|---|
| Cloud Run | Déploiement serverless de conteneurs |
| IAM | Comptes de service et permissions |
| Monitoring | Politiques d'alerte et canaux de notification |
| Networking | VPC et règles de pare-feu |
| Storage | Buckets GCS pour les données et artefacts |
Docker Compose
Le stack de développement local fait tourner 5 services :
| Service | Port | Fonction |
|---|
| FastAPI | 8000 | API d'inférence |
| MLflow | 5000 | Interface de suivi des expériences |
| Streamlit | 8501 | Interface web de prédiction |
| Prometheus | 9090 | Collecte de métriques |
| Grafana | 3000 | Tableaux de bord de monitoring |
Déploiement Cloud Run
Le déploiement en production cible Google Cloud Run avec auto-scaling, HTTPS et configuration de domaine personnalisé. Le coût total de l'infrastructure est maintenu sous 0.50$/mois grâce à la capacité de scale-to-zero de Cloud Run et une allocation efficace des ressources.CI/CD
GitHub Actions automatise l'intégralité du cycle build-test-deploy avec 5 workflows :
Pipeline CI
- Ruff -- Linting et vérification du formatage Python
- mypy -- Vérification statique des types
- pytest -- 316 tests couvrant les niveaux unitaire, intégration et E2E
- CodeQL -- Analyse de vulnérabilités de sécurité
- Docker -- Build et validation du conteneur
Pipeline CD
- Déploiement automatique -- Déclenché lors du merge sur main après validation CI
- Smoke Test -- Validation post-déploiement de la santé et des prédictions
- Rollback -- Retour automatique en cas d'échec des smoke tests
- Quality Gate -- Accuracy du modèle ≥ 0.85 et F1 ≥ 0.80 imposées avant déploiement
Monitoring
Métriques Prometheus
20+ métriques personnalisées suivies en production :
- Métriques de requêtes -- Histogrammes de latence, compteurs de débit, taux d'erreur
- Métriques du modèle -- Distribution de confiance des prédictions, équilibre des classes
- Métriques système -- Utilisation mémoire, requêtes actives, profondeur de file
- Métriques de dérive -- Changements de distribution des features détectés via des tests statistiques
Règles d'Alerte
13 règles d'alerte configurées dans plusieurs catégories :
- Disponibilité -- Service hors service, échecs de health check
- Performance -- Pics de latence, seuils de taux d'erreur
- Modèle -- Dérive des prédictions, anomalies de confiance
- Infrastructure -- Saturation des ressources, redémarrages de conteneurs
Tableaux de Bord Grafana
Tableaux de bord préconfigurés pour la performance API, le comportement du modèle et la santé de l'infrastructure avec alertes automatiques via les canaux de notification.Gestion des Coûts
L'ensemble du déploiement en production fonctionne à moins de 0.50$/mois :
| Ressource | Coût |
|---|
| Cloud Run | ~0.00$ (scale-to-zero, offre gratuite) |
| GCS Storage | ~0.01$ (dataset et artefacts de petite taille) |
| Container Registry | ~0.10$ (stockage des images) |
| Monitoring | ~0.00$ (offre gratuite) |
| Total | < 0.50$/mois |
Stack Technique
| Catégorie | Technologies |
|---|
| ML / DL | PyTorch, EfficientNet-B0, torchvision, Grad-CAM |
| API | FastAPI, Uvicorn, Pydantic, authentification JWT |
| MLOps | MLflow, DVC, Model Registry, Vertex AI |
| Monitoring | Prometheus, Grafana, structlog, détection de dérive |
| Frontend | Streamlit |
| Infrastructure | Terraform, Docker, Docker Compose, Google Cloud Run |
| CI/CD | GitHub Actions (5 workflows), CodeQL, quality gates |
| Tests | pytest (316 tests), Ruff, mypy, 70%+ de couverture |
| Cloud | Google Cloud Platform (GCS, Cloud Run, Vertex AI, IAM) |
| Dataset | CIFAKE (CIFAR-10 + Stable Diffusion) |