Acces direct a la mission PDF: documentation/MissionDataEngineeringCEBSeattle.pdf
Ce projet couvre un pipeline ML complet: preparation des donnees, feature engineering, entrainement, puis exposition d une API de prediction avec BentoML.
- Python 3.11
- Git
- pip ou Poetry
Verification rapide:
python --version
git --versionpython -m venv .venvActivation:
- Windows PowerShell
.venv\Scripts\Activate.ps1- macOS / Linux
source .venv/bin/activatePuis:
pip install -r requirements.txtpip install poetry
poetry install
poetry shellExecuter les notebooks dans cet ordre:
- notebooks/00_exploratory_analysis.ipynb
- notebooks/01_clean_data.ipynb
- notebooks/02_feature_engineering.ipynb
- notebooks/03_train_model.ipynb
- notebooks/04_run_service.ipynb
- notebooks/05_test_api.ipynb
BentoML est un framework de mise en production de modeles ML.
L idee principale:
- ton notebook entraine un modele,
- BentoML enregistre ce modele,
- puis BentoML l expose comme une API HTTP,
- enfin BentoML permet de packager le tout pour un deploiement stable.
Pourquoi c est utile:
- eviter de recoder une API manuellement autour du modele
- standardiser le passage de experimentation a production
- garder le meme comportement entre local, Docker et serveur
- versionner les modeles (ex: random_forest_energy:latest)
Concretement, BentoML sert a:
- enregistrer le modele entraine dans un model store local
- exposer des endpoints API (ex: /predict, /ping)
- packager le service avec sa configuration dans un artefact deployable (un Bento)
- faciliter la containerisation et le deploiement
Dans ce projet:
- le service API est defini dans src/seattle_energy/service.py
- la configuration Bento est dans bento/bentofile.yaml
- le conteneur est defini dans bento/Dockerfile
Cycle de vie BentoML dans ce repo:
- entrainer le modele
- sauvegarder le modele dans BentoML
- lancer l API avec bentoml serve
- construire un Bento avec bentoml build
- deployer en Docker
Schema rapide du flux BentoML:
flowchart LR
A[Notebook 03 train model] --> B[Modele enregistre dans BentoML]
B --> C[Service API seattle_energy.service:EnergyService]
C --> D[bentoml serve en local]
C --> E[bentoml build via bento/bentofile.yaml]
E --> F[Image Docker via bento/Dockerfile]
Avant toute commande BentoML, active ton environnement:
- venv: .venv\Scripts\Activate.ps1 (Windows)
- ou poetry shell
bentoml --version
bentoml models listpython -c "from seattle_energy.model_training import train_and_save; train_and_save()"Cette etape doit creer le modele random_forest_energy:latest dans BentoML.
bentoml serve seattle_energy.service:EnergyService --reloadAPI locale:
Dans un second terminal (environnement active):
python old_scripts/test_api.pyDepuis la racine du projet:
bentoml build --bentofile bento/bentofile.yamlLe Dockerfile est maintenant dans bento/Dockerfile.
Build image:
docker build -f bento/Dockerfile -t seattle-energy-service .Run container:
docker run -p 3000:3000 seattle-energy-servicedataprojet6/
├── bento/
│ ├── bentofile.yaml
│ └── Dockerfile
├── data/
│ ├── raw/
│ └── processed/
├── notebooks/
├── src/
│ └── seattle_energy/
│ ├── data_processing.py
│ ├── model_training.py
│ └── service.py
├── tests/
├── documentation/
├── pyproject.toml
└── requirements.txt
Le dossier documentation est versionne dans ce depot.
Document present:
- documentation/MissionDataEngineeringCEBSeattle.pdf
- Aucun resultat numerique final n est fourni: il faut executer le pipeline.
- Si bentoml serve echoue, verifier d abord que le modele est bien enregistre avec bentoml models list.