Skip to content

Commit

Permalink
Merge pull request #36 from InseeFrLab/improve-20231214
Browse files Browse the repository at this point in the history
ajustements
  • Loading branch information
avouacr authored Dec 14, 2023
2 parents afe8061 + 4e8386c commit a04e09b
Show file tree
Hide file tree
Showing 13 changed files with 663 additions and 645 deletions.
14 changes: 7 additions & 7 deletions slides/fr/applications/_application0.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
:::::{.nonincremental}
1. Créez un compte sur le [SSP Cloud](https://datalab.sspcloud.fr/home) en utilisant votre adresse e-mail professionnelle.
2. Lancez un service `MLflow` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/automation/mlflow?autoLaunch=true).
3. Lancez un service `Jupyter-python` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/ide/jupyter-python?autoLaunch=true&init.personalInit=%C2%ABhttps%3A%2F%2Fraw.githubusercontent.com%2FInseeFrLab%2Fformation-mlops%2Fmain%2Finit.sh%C2%BB).
4. Ouvrez le service `Jupyter-python` et saisissez le mot de passe du service.
3. Lancez un service `VSCode-python` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/ide/vscode-python?autoLaunch=true&init.personalInit=%C2%ABhttps%3A%2F%2Fraw.githubusercontent.com%2FInseeFrLab%2Fformation-mlops%2Fmain%2Finit.sh%C2%BB).
4. Ouvrez le service `VSCode-python` et saisissez le mot de passe du service.
5. Vous êtes prêt !
:::::
::::
Expand All @@ -21,12 +21,12 @@


:::::{.nonincremental}
1. On suppose que vous possédez un compte `Github` et que vous avez déjà créé un token. *Forkez* le repo de la formation en cliquant [ici](https://github.com/InseeFrLab/formation-mlops/fork).
2. Créez un compte sur le [SSP Cloud](https://datalab.sspcloud.fr/home) en utilisant votre adresse e-mail professionnelle.
1. Si ce n'est pas déjà fait, [créez un compte `Github`](https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home). Créez une copie du dépôt de la formation dans votre espace personnel en [*forkant*](https://github.com/InseeFrLab/formation-mlops/fork) le dépôt.
2. Si ce n'est pas déjà fait, créez un compte sur le [SSP Cloud](https://datalab.sspcloud.fr/home) en utilisant votre adresse e-mail professionnelle.
3. Lancez un service `MLflow` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/automation/mlflow?autoLaunch=true).
4. Lancez un service `Jupyter-python` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/ide/jupyter-python?autoLaunch=true).
5. Ouvrez le service `Jupyter-python` et saisissez le mot de passe du service.
6. Dans Jupyter, ouvrez un terminal et *clonez* votre dépôt que vous venez de fork (modifiez les deux premières lignes) :
4. Lancez un service `VSCode-python` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/ide/vscode-python?autoLaunch=true&git.cache=«172800»).
5. Ouvrez le service `VSCode-python` et saisissez le mot de passe du service.
6. Dans `VSCode`, ouvrez un terminal et *clonez* le dépôt que vous venez de fork (modifiez les deux premières lignes) :

```{.sh code-line-numbers="1,2"}
GIT_REPO=formation-mlops
Expand Down
5 changes: 3 additions & 2 deletions slides/fr/applications/_application1.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
## Introduction aux concepts de MLflow

:::{.incremental}
1. Dans `JupyterLab`, ouvrez le notebook situé à l'emplacement `formation-mlops/notebooks/mlflow-introduction.ipynb`.
2. Exécutez le notebook cellule par cellule. Si vous avez terminé plus tôt, explorez l'interface utilisateur de `MLflow` et essayez de créer vos propres expériences à partir du code d'exemple fourni dans le notebook.
1. Dans `VSCode`, ouvrez le notebook situé à l'emplacement `formation-mlops/notebooks/mlflow-introduction.ipynb`.
2. Exécutez le notebook cellule par cellule.
3. Si vous avez terminé plus tôt, explorez l'interface utilisateur de `MLflow` et essayez de créer vos propres expérimentations à partir du code d'exemple fourni dans le notebook. Par exemple, essayez d'ajouter d'autres hyperparamètres à la procédure de *grid-search*.
:::

:::
96 changes: 29 additions & 67 deletions slides/fr/applications/_application2.qmd
Original file line number Diff line number Diff line change
@@ -1,66 +1,27 @@
::: {.panel-tabset}
## Sans Git

::::{.callout-tip collapse="true" icon=false}
## Partie 1 : Des notebooks à un projet de type package

:::::{.nonincremental}

1. Lancez un service `VSCode` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/ide/vscode-python?autoLaunch=true&init.personalInit=%C2%ABhttps%3A%2F%2Fraw.githubusercontent.com%2FInseeFrLab%2Fformation-mlops%2Fmain%2Finit.sh%C2%BB&kubernetes.role=%C2%ABadmin%C2%BB). Ouvrez le service et saisissez le mot de passe du service.

2. Tous les scripts liés à notre modèle personnalisé sont stockés dans le dossier `src`. Consultez-les. Regardez également le fichier `MLproject`.

3. Exécutez un entraînement du modèle à l'aide de MLflow. Pour ce faire, ouvrez un terminal ({{< iconify ph list-bold >}} `-> Terminal -> New Terminal`) et exécutez la commande suivante :

```sh
export MLFLOW_EXPERIMENT_NAME="nace-prediction"
mlflow run ~/work/formation-mlops/ --env-manager=local \
-P remote_server_uri=$MLFLOW_TRACKING_URI \
-P experiment_name=$MLFLOW_EXPERIMENT_NAME
```

4. Dans l'interface de `MLflow`, examinez les résultats de votre exécution précédente :

* `Experiments -> nace-prediction -> <nom_run>`

5. Vous avez entraîné le modèle avec certains paramètres par défaut. Dans le fichier `MLproject`, vérifiez les paramètres disponibles. Ré-entraînez un modèle avec différents paramètres (par exemple, `dim = 25`).

<details>
<summary>
<font size=\"3\" color=\"darkgreen\"><b>Cliquez pour voir la commande </b></font>
</summary>

```sh
mlflow run ~/work/formation-mlops/ --env-manager=local \
-P remote_server_uri=$MLFLOW_TRACKING_URI \
-P experiment_name=$MLFLOW_EXPERIMENT_NAME \
-P dim=25
```

</details>

:::{.nonincremental}
:::: {.callout-tip collapse="true" icon=false}
## Partie 1 : Utilisation d'un modèle personnalisé

6. Dans `MLflow`, comparez les 2 modèles en traçant l'exactitude par rapport à un paramètre que vous avez modifié (par exemple `dim`)
* `Sélectionnez les 2 expériences -> Compare -> Scatter Plot -> Select your X and Y axis`

:::::
1. Tous les scripts liés à notre modèle personnalisé sont stockés dans le dossier `src`. Consultez-les. En particulier, le script `train.py` est responsable de l'entraînement du modèle. Quelles sont les principales différences avec l'application 1 ?
2. Pourquoi pouvons-nous dire que le modèle `MLflow` intègre le *preprocessing* ?
::::
:::


## Avec Git

::::{.callout-tip collapse="true" icon=false}
## Partie 1 : Des notebooks à un projet de type package

:::::{.nonincremental}
## Application 2 {.scrollable}

1. Lancez un service `VSCode` en cliquant sur [cette URL](https://datalab.sspcloud.fr/launcher/ide/vscode-python?autoLaunch=true&kubernetes.role=«admin»). Ouvrez le service et saisissez le mot de passe du service.
:::{.nonincremental}
::::{.callout-tip collapse="true" icon=false}
## Partie 2 : Des notebooks à un projet de type package

2. Dans VSCode, ouvrez un terminal ({{< iconify ph list-bold >}} `-> Terminal -> New Terminal`) et réalisez les étapes 6 et 7 de [l'application 0](#app0) (clone et installation de packages).
1. Le script `train.py` est également responsable du *logging* des expérimentations dans `MLFlow`. Notez la manière dont les paramètres de chaque expérimentation vont être passés à la fonction d'entraînement à l'appel du script.

3. Tous les scripts liés à notre modèle personnalisé sont stockés dans le dossier `src`. Consultez-les. Regardez également le fichier `MLproject`.
2. Afin de rendre la procédure d'entraînement d'un modèle plus reproductible, `MLFlow` met à disposition la commande `mlflow run`. Le fichier `MLproject` spécifie la commande et les paramètres qui vont lui être passées. Inspectez ce fichier.

4. Exécutez un entraînement du modèle à l'aide de MLflow. Dans un terminal, exécutez la commande suivante :
3. Exécutez un entraînement du modèle à l'aide de `MLFlow`. Pour ce faire, ouvrez un terminal ({{< iconify ph list-bold >}} `-> Terminal -> New Terminal`) et exécutez la commande suivante :

```sh
export MLFLOW_EXPERIMENT_NAME="nace-prediction"
Expand All @@ -69,11 +30,11 @@ mlflow run ~/work/formation-mlops/ --env-manager=local \
-P experiment_name=$MLFLOW_EXPERIMENT_NAME
```

5. Dans l'interface de `MLflow`, examinez les résultats de votre exécution précédente :
4. Dans l'interface de `MLflow`, examinez les résultats de votre exécution précédente :

* `Experiments -> nace-prediction -> <nom_experience>`
* `Experiments -> nace-prediction -> <nom_run>`

6. Vous avez entraîné le modèle avec certains paramètres par défaut. Dans le fichier `MLproject`, vérifiez les paramètres disponibles. Ré-entraînez un modèle avec différents paramètres (par exemple, `dim = 25`).
5. Vous avez entraîné le modèle avec certains paramètres par défaut. Dans le fichier `MLproject`, vérifiez les paramètres disponibles. Ré-entraînez un modèle avec différents paramètres (par exemple, `dim = 25`).

<details>
<summary>
Expand All @@ -90,23 +51,24 @@ mlflow run ~/work/formation-mlops/ --env-manager=local \
</details>


7. Dans `MLflow`, comparez les 2 modèles en traçant l'exactitude par rapport à un paramètre que vous avez modifié (par exemple `dim`)
6. Dans `MLflow`, comparez les 2 modèles en traçant la métrique *accuracy* par rapport à un paramètre que vous avez modifié (par exemple `dim`)
* `Sélectionnez les 2 expériences -> Compare -> Scatter Plot -> Select your X and Y axis`

:::::

7. Enregistrez le modèle avec la meilleure *accuracy* en tant que `fasttext` pour le rendre facilement interrogeable depuis `Python`.

::::
:::




## Application 2 {.scrollable}

:::{.nonincremental}
:::: {.callout-tip collapse="true" icon=false}
## Partie 2 : Distribution et interrogation d'un modèle personnalisé
::::{.callout-tip collapse="true" icon=false}
## Partie 3 : Requêtage du modèle entraîné en local

1. Explorez attentivement le fichier `src/train.py`. Quelles sont les principales différences avec l'application 1 ?
2. Pourquoi pouvons-nous dire que le modèle `MLflow` intègre le *preprocessing* ?
3. Dans `MLflow`, enregistrez votre dernier modèle en tant que `fasttext` pour le rendre facilement interrogeable depuis l'API `Python`.
4. Créez un script `predict_mlflow.py` dans le dossier `src` du projet. Ce script doit :
1. Créez un script `predict_mlflow.py` dans le dossier `src` du projet. Ce script doit :
a. Charger la version 1 du modèle `fasttext`
b. Utiliser le modèle pour prédire les codes NACE d'une liste donnée de descriptions d'activité (par exemple, `["vendeur d'huitres", "boulanger"]`).

Expand Down Expand Up @@ -135,7 +97,7 @@ print(results)
```
</details>

5. Exécutez votre script `predict_mlflow.py`.
3. Exécutez votre script `predict_mlflow.py`.

<details>
<summary>
Expand All @@ -148,7 +110,7 @@ python formation-mlops/src/predict_mlflow.py

</details>

6. Assurez-vous que les deux descriptions suivantes donnent la même prédiction principale : `"COIFFEUR"` et `"coiffeur, & 98789"`.
7. Modifiez la valeur du paramètre `k` et essayez de comprendre comment la structure de la sortie a changé en conséquence.
4. Assurez-vous que les deux descriptions suivantes donnent la même prédiction principale : `"COIFFEUR"` et `"coiffeur, & 98789"`.
5. Modifiez la valeur du paramètre `k` et essayez de comprendre comment la structure de la sortie a changé en conséquence.
::::
:::
Loading

0 comments on commit a04e09b

Please sign in to comment.