oc-p07-sentiment-api/deployment
2025-07-07 15:13:01 +02:00
..
api Docker correctly configured 2025-07-07 15:13:01 +02:00
README.md Fixes 2025-07-07 12:41:42 +02:00

Déploiement de l'API - Projet Air Paradis

Ce dossier contient le code et la configuration nécessaires pour déployer l'API de prédiction de sentiments.

🎯 Objectif

Déployer une API REST qui permet de:

  • prédire le sentiment d’un tweet (positif ou négatif) en s’appuyant sur un modèle LSTM entraîné à partir d’embeddings (Word2Vec ou GloVe).
  • reporter les erreurs de prédictions

L’API utilise le modèle le plus performant, enregistré sur MLflow, et le met à disposition via FastAPI.


📦 Architecture Globale

┌──────────────────────────────┐
│  Utilisateur final (UI)      │
│  (interface Streamlit)       │
└────────────┬─────────────────┘
             │
  [Appel HTTP à /predict]
             │
┌────────────▼─────────────┐
│       API FastAPI        │
│  (serveur lancé via      │
│   Uvicorn)               │
└────────────┬─────────────┘
             │
Chargement du modèle depuis MLflow
             │
   Prétraitement du tweet
             │
     Prédiction (inférence)
             │
    Retour du sentiment (JSON)

🧪 Fonctionnement de l’API

  1. Chargement du modèle

    • Le modèle le plus performant est enregistré dans MLflow sous un nom fixe (SentimentAnalysisLSTM) et une étape (stage) Production.
    • L’API récupère ce modèle au démarrage grâce à une URI stable :
      models:/SentimentAnalysisLSTM/Production
      
  2. Prétraitement du texte

    • Le texte envoyé par l’utilisateur est nettoyé, tokenisé, lemmatisé et transformé en vecteurs (embeddings).
  3. Prédiction

    • Le modèle LSTM (chargé depuis MLflow) effectue l’inférence.
    • Le résultat (positif ou négatif) est renvoyé en réponse JSON.
  4. Interface utilisateur (optionnelle)

    • Une interface Streamlit permet d’interagir avec l’API de manière visuelle.

🐳 Déploiement avec Docker

Un Dockerfile est fourni pour faciliter le déploiement de l’API sur n’importe quel hôte compatible Docker (NAS, cloud, etc.).

Ce docker devra être déploigné sur DockerHub à chaque versionning validé (voir section CI/CD ci-dessous)

Dans un souci de souveraineté des données, le déploiement sera préférentiellement déployé sur un NAS équippé d'un processeur Intel N100 (peu énergivore, mais probablement suffisant pour un calcul d'inférence LSTM).


🔁 Intégration continue / Déploiement Continu

Un pipeline GitHub Actions (CI/CD) est prévu pour :

  • Lancer automatiquement les tests unitaires à chaque push sur le dépôt GitHub.
  • Garantir la stabilité de l’API avant tout déploiement (NAS ou cloud).
  • Mettre à jour le Dockerfile et le pousser sur DockerHub.

Les tests unitaires seront définis dans ./deployment/api/tests/