Pour vous connecter sur l'interface de TP Jupyter Hub, l'instructeur vous aura donné
votre identifiant.
Une fois connecté, vous devrez définir votre mot de passe.
Puis, une page de chargement apparaît, pendant que votre environnement de TP est créé :
Cela peut prendre 1 à 2 minutes, mais pas plus. Si votre environment ne démarre pas, vous pouvez essayer d'actualiser
puis faire appel à votre formateur.
Une fois que le serveur est démarré, vous êtes redirigé vers la page principale :
Depuis cette page, vous pouvez ouvrir :
Rendez-vous sur votre environnement de développement.
Ouvrez un terminal afin d'y cloner le repository de code des TPs avec la commande $> git clone https://github.com/octo-technology/Formation-MLOps-3.git;
.
Pour ouvrir un terminal il faut cliquer sur en haut à gauche sur File
puis New
puis Terminal
.
Une fois le repository clôné, un nouveau dossier apparaît.
Rentrer dans ce dossier à l'aide de la commande :
cd Formation-MLOps-3
En tapant la commande git branch
vous pourrez constater que vous êtes sur la branche 0_initial_state
Notre TP se déroulera en changeant de branche à chaque TP.
La commande suivante vous listera l'ensemble des branches du TP :
git branch -a
Ensuite, nous allons créer un environnement de travail Python avec Conda et installer les dépendances :
conda create -yqf python=3.10 --name mlops_3
source activate mlops_3
pip install -r requirements.txt
Avec les formateurs, ou seul, explorer le code existant pour prendre connaissance de l'état du projet.
Pour information, le code de l'API est organisé selon le
pattern d'architecture hexagonale
Dans ce repository, vous avez une API minimaliste de ML :
.
├── .github # Des scripts de CI pour valider automatiquement les TPs (dédiés aux formateurs)
├── config # Différents fichiers de configurations pour faire tourner le TP
├── data # Contient le jeu de donnée brut utilisé pour le TP
├── models # Contient un modèle pré-entraîné
├── source # Contient le code source de l'API
│ ├── api # Les interfaces utilisateurs, ici des routes d'api
│ ├── domain # Le cœur métier
│ │ ├── entities # Des classes métiers
│ │ ├── port # Des classes abstraites pour interagir avec l'infrastructure
│ │ ├── usecase # Des orchestrateurs de tâches
│ ├── infrastructure # Le code pour interagir avec la base de donnée de monitoring et le registre de modèle
├── ... # Différents fichiers de config
├── run.py # Le script pour lancer l'API
Swagger est un langage de description d'interface permettant de décrire des API exprimées à l'aide de JSON.
Swagger est utilisé avec toute une série d'outils logiciels open source pour concevoir, créer, documenter et utiliser
des services Web.
Nous allons accéder à cette interface pour voir les routes d'API et interagir avec elles.
Pour pouvoir y accéder, nous devons faire une configuration liée à l'environnement de TP.
Ouvrir le fichier /home/jovyan/api_conf.ini
, il contient deux sections de configuration :
[server] # Ce qui concerne notre serveur de TP
address = https://lab.aws.octo.training/jupyter/user/admin/swagger/ # TODO Remplacer admin par votre username (visible dans l'url)
python_path = python3 # TODO Insérer le path vers votre env conda (que vous pouvez trouver en tapant which python, le résultat sera sans doute /opt/conda/envs/mlops_3/bin/python)
[api] # Ce qui concerne le TP
run_dot_py_file_path = run.py # TODO Insérer le path vers le fichier run.py du TP soit `Formation-MLOps-3/run.py`
Une fois cela fait, vous pouvez cliquer sur l'icône API dans le launcher, puis ajouter /docs
à l'url pour voir le
swagger.
Tester la route /health
pour vérifier que tout marche bien.
NB : En background, l'API a été lancé en auto reload, ce qui fait que toutes les modifications que l'on apportera
relanceront l'API.
Les logs de l'API sont visibles dans /home/jovyan/api_logfile.log
Pour les visualiser en flux, taper dans un terminal la commande :
tail -f /home/jovyan/api_logfile.log
Comme l'API est lancé en background sur l'environnement de TP avec un port en particulier, kill
l'API requiert
quelques manipulations.
L'autre option est de redémarrer votre server de TP :
Tous les process ont été arrêtés.
Il faut tuer uvicorn
avant ses workers.
Pour cela :
ps -ef | grep python
trouver le processus qui contient python3 Formation-MLOps-3/run.py
kill -9 PID
cela va tuer le processus uvicorn qui va essayer de redémarrer, il n'y arrivera/opt/conda/bin/python3 -c from multiprocessing.spawn import spawn_main;
kill -9 PID
Les instructions du TP suivant sont ici