CI3 : Infrastructures
Ce TP permet aux étudiants de maîtriser les concepts fondamentaux du Machine Learning opérationnel (MLOps) à travers la création d'un pipeline automatisé. Les étudiants utiliseront Apache Airflow pour orchestrer des tâches sous forme de graphes acycliques dirigés (DAGs), Docker pour la conteneurisation et MLflow pour la gestion du cycle de vie des modèles. Enfin, les modèles entraînés seront déployés et servis via une API REST.
Objectifs du TP :
- Mettre en place et utiliser Apache Airflow pour automatiser des workflows complexes de Machine Learning.
- Construire et entraîner plusieurs modèles ML en parallèle.
- Conteneuriser les environnements ML à l'aide de Docker.
- Suivre, gérer et déployer des modèles de ML avec MLflow.
- Déployer des modèles en production en les servant via une API REST.
Mise en place de MLflow et Apache Airflow
Dans cet exercice, nous allons configurer notre environnement de travail afin de pouvoir suivre des expérimentations avec MLflow et orchestrer des flux de travail automatisés grâce à Apache Airflow.
MLflow est un outil open-source très utilisé dans le domaine du Machine Learning pour suivre les expérimentations, gérer les modèles et faciliter leur déploiement. Apache Airflow, quant à lui, permet de définir, planifier et surveiller des flux de travail complexes à l'aide de graphes acycliques orientés (DAG).
Pour installer MLflow et Apache Airflow, utilisez les commandes suivantes :
Vérifiez ensuite l'installation en tapant :
Pour lancer un serveur MLflow en local :
Accédez ensuite à l'adresse http://localhost:5000 depuis votre navigateur web. Vous devriez voir l'interface utilisateur MLflow apparaître correctement.
Créez ensuite un utilisateur administrateur :
Afin qu'Airflow trouve vos DAGs, nous allons modifier les paramètres de configuration d'Airflow ~/airflow/airflow.cfg. Changer les paramètres suivants (à trouver dans le fichier) :
Création d'un pipeline de Machine Learning avec Apache Airflow
Dans cet exercice, vous allez créer un pipeline complexe de Machine Learning comprenant l'ingestion de données, le prétraitement, l'entraînement parallèle de deux modèles différents (Random Forest et Logistic Regression), la validation, et l'enregistrement des résultats avec MLflow. Le pipeline sera orchestré sous forme de DAG avec Apache Airflow.
Pour simplifier, nous utiliserons le jeu de données Iris disponible dans scikit-learn.
train_rf.py
train_lr.py
Depuis l'interface web Airflow (http://localhost:8080), déclenchez manuellement l'exécution du DAG. Après son exécution complète, consultez l'interface MLflow (http://localhost:5000) pour vérifier que les paramètres, métriques et modèles ont été correctement enregistrés.
Conteneurisation du pipeline ML avec Docker
Dans cet exercice, vous allez conteneuriser le pipeline ML que vous avez créé dans l'exercice précédent. Vous utiliserez Docker pour isoler et simplifier la gestion de votre environnement de travail.
Cette section s'adresse surtout aux personnes peu familières avec Docker.
Docker est un outil open-source permettant de créer des environnements reproductibles et isolés sous forme de conteneurs.
À l'intérieur du conteneur, exécutez :
Vérifiez que chaque étape s'exécute correctement sans erreur.
Déploiement et gestion des modèles avec MLflow
Dans cet exercice final, vous apprendrez à déployer et gérer les modèles de Machine Learning en utilisant MLflow. Vous utiliserez les modèles précédemment entraînés avec votre DAG Apache Airflow et enregistrés avec MLflow. Vous servirez ensuite ces modèles via une API REST afin d'effectuer des prédictions.
Remplacez <votre_run_id> par l'ID récupéré depuis l'interface utilisateur MLflow.
Cette commande lance un serveur web servant votre modèle sur le port 1234.
Exemple de requête avec curl :
Vous devriez recevoir la prédiction correspondante en réponse à cette requête.
Accédez à l'interface MLflow (http://localhost:5000) et rendez-vous dans l'onglet « Models ». Vous devriez voir le modèle iris_best_model avec son état actuel et les détails associés.