TP3 : synthese (reponses aux questions) + README

This commit is contained in:
Johan LEROY
2026-07-22 11:22:50 +02:00
parent b0bd6cdb07
commit e063effc5d
2 changed files with 227 additions and 0 deletions

View File

@@ -56,3 +56,49 @@ Resultats et comparaisons : https://mlflow.192-168-122-143.nip.io (experience `t
## Livrable
Synthese des resultats et reponses aux questions : `SYNTHESE.md`.
---
# TP03 - Exposer un modele via une API REST (Model Registry + FastAPI)
Prolonge le TP02 : on enregistre le meilleur modele dans le **MLflow Model Registry**, on le
**promeut via un alias**, puis on l'expose par une **API REST FastAPI**.
## Prerequis (en plus du TP02)
`.env` complete avec les creds S3 Garage (voir `.env.example`) : `AWS_ACCESS_KEY_ID`,
`AWS_SECRET_ACCESS_KEY`, `MLFLOW_S3_ENDPOINT_URL`. Necessaires pour `log_model` (upload de
l'artefact) et pour le chargement du modele par l'API (download depuis `s3://mlflow-artifacts`).
## Enregistrer et promouvoir (Partie 1)
```bash
set -a; source .env; set +a
py -m lab.modeling.cli full --register # v1 -> Registry (champion vise)
py -m lab.modeling.cli mixed --register # v2 -> Registry (comparaison)
py -m lab.registry.cli versions # lister versions + alias
py -m lab.registry.cli promote --version 1 --alias champion
```
`log_model` est appele a **chaque** run (artefact sauvegarde) ; `--register` empile en plus une
version dans le Registry sous le nom `electricity-consumption`.
## Servir l'API (Parties 2 a 4)
```bash
./serve.sh # uvicorn 0.0.0.0:8000, charge models:/...@champion
curl -s localhost:8000/health # {"status":"ok"}
curl -s -X POST localhost:8000/predict \
-H 'content-type: application/json' -d '{"client_id":"MT_124"}'
curl -s -X POST localhost:8000/predict/batch \
-H 'content-type: application/json' -d '{"client_ids":["MT_124","MT_158"]}'
```
- Endpoints : `GET /health`, `POST /predict`, `POST /predict/batch`, Swagger `GET /docs`.
- Feature store **simule** par un dictionnaire (`lab/serving/features.py`) ; client inconnu -> **404**.
- Depuis le poste (cert ENI de confiance) : **https://api.192-168-122-143.nip.io/docs**
(reverse-proxy Caddy vers uvicorn). Unite systemd transitoire : `sudo systemctl status tp03-api`.
## Livrable TP03
Reponses aux questions et recap : `SYNTHESE_TP03.md`.