TP3 : synthese (reponses aux questions) + README
This commit is contained in:
46
README.md
46
README.md
@@ -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`.
|
||||
|
||||
Reference in New Issue
Block a user