Files
ENI-ml-mlops/README.md

59 lines
2.0 KiB
Markdown

# TP02 - Comparer et tracer des experimentations ML (DVC + MLflow)
Fil rouge : prediction de la consommation electrique. Ce module compare des strategies
de features et de split, en versionnant les datasets avec **DVC** (remote S3 = Garage de la VM)
et en tracant les experiences avec **MLflow** (serveur de la VM).
## Prerequis (sur la VM)
- venv : `/opt/venvs/mlops`
- donnees source : `/data/modelling/features.parquet` + `target.parquet`
- `.env` renseigne (voir `.env.example`), puis :
```bash
cd /home/user/tp
set -a; source .env; set +a
alias py=/opt/venvs/mlops/bin/python
alias dvc=/opt/venvs/mlops/bin/dvc
```
## Package
- `lab/constants.py` : strategies de split (`full_history`, `recent_history`), strategies de
features (`short_memory`, `seasonality`, `tendency`, `mixed`, `full`), `RIDGE_ALPHAS`.
- `lab/split/cli.py` : lit `/data/modelling`, ecrit `data/{train,validation,test}.parquet`
selon `CHOSEN_SPLIT_STRATEGY`.
- `lab/modeling/cli.py` : `py -m lab.modeling.cli <strategy>` -> regression lineaire -> MLflow.
- `lab/modeling_ridge/cli.py` : `py -m lab.modeling_ridge.cli [--strategy <s>]` -> Ridge sur `RIDGE_ALPHAS`.
## Versionner un dataset avec DVC
```bash
py -m lab.split.cli
dvc add data/train.parquet data/validation.parquet data/test.parquet
git add data/*.dvc data/.gitignore lab .gitignore
git commit -m "split <strategie>"
git tag dataset-<version>
dvc push
```
Restaurer une version anterieure du dataset :
```bash
git checkout dataset-v1-full-history -- data/train.parquet.dvc data/validation.parquet.dvc data/test.parquet.dvc
dvc checkout
```
## Entrainements
```bash
for s in short_memory seasonality tendency mixed; do py -m lab.modeling.cli $s; done # Parties 1 et 2
py -m lab.modeling_ridge.cli --strategy mixed # Partie 3
```
Resultats et comparaisons : https://mlflow.192-168-122-143.nip.io (experience `tp02_electricity_consumption`).
## Livrable
Synthese des resultats et reponses aux questions : `SYNTHESE.md`.