Skip to content

RandomFab/futurisys-ml-api-deployment

Repository files navigation

title Futurisys
emoji 🚀
colorFrom blue
colorTo indigo
sdk docker
app_file Dockerfile
pinned false

Python FastAPI PostgreSQL Docker CI/CD HF Spaces


Logo

🚀 FUTURISYS — Déploiement d’un modèle de Machine Learning V2.1.0

Projet pédagogique et pré-commercial de déploiement d’un modèle de Machine Learning via FastAPI et Docker.
→ Voir l’API en ligne sur Hugging Face Spaces »

Exemples d'utilisation · Tests · Feuille de route · Contact


Sommaire

  1. À propos du projet
  2. Structure du projet
  3. Installation
  4. Utilisation
  5. Détails techniques du modèle
  6. Tests
  7. CI/CD et déploiement
  8. Base de données et traçabilité
  9. Technologies utilisées
  10. Feuille de route
  11. Licence
  12. Contact

À propos du projet

⬆️ Revenir au sommaire

FUTURISYS est une entreprise innovante souhaitant rendre ses modèles de machine learning accessibles via une API performante.
Ce projet vise à déployer un modèle de classification issu du projet “Classification automatique d’informations”.

Objectifs principaux :

  • Exposer un modèle ML via une API FastAPI.
  • Gérer la traçabilité via PostgreSQL.
  • Mettre en place une pipeline CI/CD GitHub Actions.
  • Déployer sur Hugging Face Spaces via Docker.
  • Documenter et tester entièrement le projet.

Structure du projet

⬆️ Revenir au sommaire

FUTURISYS/
├── app/
│   ├── main.py                # Point d'entrée de l'API FastAPI
│   ├── model/                 # Modèle entraîné + préprocesseur
│   │   ├── model.joblib
│   │   └── preprocessing.joblib
│   ├── utils/                 # Fonctions utilitaires
│   └── tests/                 # Tests unitaires Pytest
├── data/                      # Jeux de données
├── pyproject.toml             # Géré par uv
├── uv.lock
├── .python-version
├── Dockerfile                 # Pour l'initialisation sur huggingface
├── .github/
│   └── workflows/ci.yml       # Pipeline CI/CD (GitHub Actions)
└── README.md

Installation

⬆️ Revenir au sommaire

🔧 Prérequis

💻 Cloner le dépôt

git clone https://github.com/RandomFab/FUTURISYS.git
cd FUTURISYS

📦 Installer les dépendances

uv sync

🚀 Lancer l’application

uvicorn app.main:app --reload

API disponible sur :


Usage

⬆️ Revenir au sommaire

📄 Liste des endpoints

Endpoint Description
/docs Documentation Swagger
/threshold Seuil de classification
/features Liste des features
/model-info Informations du modèle
/predict_from_transformed_data Prédiction avec datas transformées
/predict_from_raw_data Prédiction avec datas brutes
/predict_from_db_employe Prédiction via BDD employés

Exemple Python :

import requests

url = "http://127.0.0.1:8000/predict_from_raw_data"
payload = {
    "heure_supplementaires": 1,
    "age": 35,
    "frequence_deplacement": 1,
    "niveau_education": 1,
    "poste": "Assistant de Direction",
    "statut_marital": "Célibataire",
    "annees_dans_l_entreprise": 5,
    "nombre_experiences_precedentes": 2,
    "annees_dans_le_poste_actuel": 1,
    "annee_experience_totale": 10
}
response = requests.post(url, json=payload)
print(response.json())

Détails techniques du modèle

⬆️ Revenir au sommaire

Description

  • Modèle : HistGradientBoostingClassifier
  • Tâche : Classification binaire (Reste(0) / Quitte(1) l’entreprise)
  • Objectif : Anticiper le départ d’un collaborateur
  • Source : Données internes TECHNOVA

Entraînement :

pipeline = IMBpipeline([
    ('preprocessing', preprocessor),
    ('smote', SMOTE(sampling_strategy=0.2, random_state=42)),
    ('under', RandomUnderSampler(sampling_strategy=0.8, random_state=42)),
    ('model', HistGradientBoostingClassifier(random_state=42))
])

Optimisation : Recall prioritaire pour détecter les départs.
Sauvegarde via joblib.


Tests

⬆️ Revenir au sommaire

uv run pytest --maxfail=1 --disable-warnings -q --cov=. --cov-report=html

Rapport HTML complet dans /htmlcov.


⚡️ Intégration Continue (CI/CD)

⬆️ Revenir au sommaire

Pipeline GitHub Actions :

  • Tests à chaque push ou PR.
  • Rapport de couverture.
  • Déploiement automatique sur Hugging Face Spaces.

CI

Secrets configurés via GitHub.


Base de données et traçabilité

⬆️ Revenir au sommaire

Données de bases importer depuis 3 csv (SIRH, evaluation annuelle, sondage), dans une base postgreSQL locale.

Intégration PostgreSQL pour tracer les inputs et outputs du modèle.

Type de relations :

  • employes - inputs : 1-N
  • inputs - outputs : 1-1

Schema_DB


🧩 Technologies utilisées

⬆️ Revenir au sommaire

Technologie Usage
Python 3.13 Langage principal
FastAPI API
uv Dépendances
scikit-learn / imbalanced-learn ML
SQLAlchemy / psycopg2 ORM / PostgreSQL
pytest / pytest-cov Tests
Docker Conteneurisation
GitHub Actions CI/CD
Hugging Face Spaces Déploiement

Roadmap

⬆️ Revenir au sommaire

  • ✅ Création du dépôt
  • ✅ API FastAPI
  • ✅ PostgreSQL
  • ✅ CI/CD
  • ✅ Déploiement HF
  • ✅ Documentation finale

Licence

⬆️ Revenir au sommaire

📄 Projet pédagogique et commercial — tous droits réservés.
Utilisable à des fins éducatives et démonstratives.
Toute réutilisation commerciale doit mentionner RandomFab.


Contact

⬆️ Revenir au sommaire

👤 Auteur : RandomFab
🌐 Démo : randomfab-futurisys.hf.space

(⬆ Retour en haut)

About

ML classification model served via FastAPI, containerized with Docker and deployed on Hugging Face Spaces — includes PostgreSQL tracing, CI/CD with GitHub Actions, and full pytest coverage

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors