Déploiement d'un modèle de Machine Learning avec FastAPI
Python, FastAPI, REST API, PostgreSQL, SQLAlchemy, Pytest, GitHub Actions, CI/CD, Machine Learning, OpenAPI
Déploiement d'un modèle de Machine Learning avec FastAPI
Contexte
Dans le cadre d'un projet de Machine Learning Engineering, j'ai industrialisé un modèle de Machine Learning en développant une API REST sécurisée et documentée. L'objectif était de rendre le modèle exploitable en production tout en appliquant les bonnes pratiques du développement logiciel, des tests automatisés et du déploiement continu.
Objectifs
- Déployer un modèle de Machine Learning sous forme d'API REST.
- Concevoir une architecture de projet professionnelle.
- Mettre en place une base de données PostgreSQL.
- Développer des tests unitaires et fonctionnels.
- Automatiser les tests et le déploiement avec une pipeline CI/CD.
- Documenter l'ensemble du projet.
Architecture
Client
│
▼
FastAPI
│
▼
Validation Pydantic
│
▼
Modèle Machine Learning
│
▼
PostgreSQL
(Input / Output / Historique)
│
▼
Swagger / OpenAPI
Technologies utilisées
- Python
- FastAPI
- Pydantic
- PostgreSQL
- SQLAlchemy
- Pytest
- pytest-cov
- Git
- GitHub Actions
- Hugging Face Spaces
- Swagger / OpenAPI
Réalisations
Industrialisation du modèle
- Déploiement d'un modèle de Machine Learning via une API REST.
- Validation automatique des données entrantes avec Pydantic.
- Gestion des erreurs et réponses normalisées.
- Documentation interactive générée automatiquement avec OpenAPI.
Base de données
- Création d'une base PostgreSQL.
- Modélisation des tables.
- Enregistrement des requêtes utilisateurs.
- Historisation des prédictions.
- Traçabilité complète des échanges entre l'API et le modèle.
Tests
Développement d'une stratégie complète de validation :
- tests unitaires
- tests fonctionnels
- validation des endpoints
- tests des cas limites
- mesure de la couverture de code avec pytest-cov
CI/CD
Automatisation du cycle de développement :
- Git Flow
- GitHub Actions
- exécution automatique des tests
- validation avant fusion
- gestion des environnements
- gestion sécurisée des secrets
Documentation
- README complet
- Documentation technique
- Documentation de l'API
- Swagger / OpenAPI
- Instructions d'installation et de déploiement
Compétences démontrées
Machine Learning Engineering
- Déploiement de modèles ML
- Industrialisation d'un modèle
- API de prédiction
- Validation des données
Backend
- FastAPI
- REST API
- Pydantic
- Gestion des erreurs
- Documentation OpenAPI
Base de données
- PostgreSQL
- SQLAlchemy
- Modélisation relationnelle
- Traçabilité des prédictions
DevOps
- Git
- GitHub
- GitHub Actions
- CI/CD
- Gestion des versions
- Gestion des secrets
Qualité logicielle
- Pytest
- Tests unitaires
- Tests fonctionnels
- Couverture de code
- Architecture logicielle
Résultat
Ce projet m'a permis de transformer un modèle de Machine Learning en une application prête pour la production en développant une API REST robuste, testée et documentée. J'ai également mis en œuvre les bonnes pratiques de Machine Learning Engineering, de DevOps et d'intégration continue afin de garantir la fiabilité, la maintenabilité et la traçabilité de la solution.
Compétences acquises
- Python
- FastAPI
- REST API
- Pydantic
- PostgreSQL
- SQLAlchemy
- Machine Learning
- Pytest
- pytest-cov
- Git
- GitHub
- GitHub Actions
- CI/CD
- Swagger
- OpenAPI
- DevOps
- Hugging Face Spaces
- API Documentation
- Software Engineering