Preparing API coding
This commit is contained in:
parent
7bc037441f
commit
972da6f83b
1 changed files with 84 additions and 0 deletions
84
deployment/README.md
Normal file
84
deployment/README.md
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
# 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.).
|
||||
|
||||
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).
|
||||
Un déploiement sur cloud grand public pourra éventuellement être effectué en fonction des demandes du jury du projet.
|
||||
|
||||
Exemple de build et run :
|
||||
```bash
|
||||
docker build -t air-paradis-api .
|
||||
docker run -p 8000:8000 --env-file ../.env air-paradis-api
|
||||
|
||||
---
|
||||
|
||||
## 🔁 Intégration continue
|
||||
|
||||
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).
|
||||
|
||||
Les tests seront définis dans `test_api.py`, avec des cas simples de requêtes POST sur `/predict`.
|
||||
Loading…
Add table
Reference in a new issue