Retour
ML & IA
Décembre 2021

MLflow sur Qarnot Cloud

MLflow est une plateforme qui simplifie le développement de l'apprentissage automatique, notamment en assurant le suivi des expériences, le regroupement du code dans des exécutions reproductibles, ainsi que le partage et le déploiement de modèles. MLflow propose un ensemble d'API légères qui peuvent être utilisées avec n'importe quelle application ou bibliothèque d'apprentissage automatique existante (TensorFlow, PyTorch, XGBoost, etc.), quel que soit l'endroit où vous exécutez votre code ML (par exemple, dans des notebooks, des applications autonomes ou le cloud).

Voici un aperçu rapide, étape par étape, pour vous guider à travers les différentes étapes de l'exécution d'un pipeline MLflow sur Qarnot. Suivez le guide !

Version

Si une autre version vous intéresse, n'hésitez pas à nous envoyer un e-mail à qlab@qarnot.com.

Prérequis

Avant de démarrer un calcul avec le SDK Python, quelques étapes sont nécessaires :

Note : en plus du SDK Python, Qarnot propose des SDK en C#, Node.js et une interface en ligne de commande.

Cas de test

Ce cas de test vous montrera comment entraîner un modèle ElasticNet. C'est un type de régression linéaire régularisée qui combine deux pénalités populaires, à savoir les fonctions de pénalité L1 et L2. Cette combinaison permet d'apprendre un modèle éparse où peu de poids sont non nuls, comme avec Lasso, tout en conservant les propriétés de régularisation de Ridge. Nous contrôlons la combinaison de L1 et L2 à l'aide du paramètre l1_ratio.

Nous utiliserons MLflow pour exécuter deux expériences avec des valeurs différentes d'alpha et de l1_ratio. Dans chaque expérience, nous fixerons l'un des hyperparamètres, ferons varier l'autre et enregistrerons la manière dont les performances du modèle changent.

Les données utilisées ici sont celles de l'ensemble de données sur la qualité du vin. L'objectif est de prédire la qualité du vin (un score entre 0 et 10) en fonction de diverses propriétés (pH, densité, alcool, etc.).

Les fichiers d'entrée nécessaires pour ce tutoriel peuvent être téléchargés ici.

Une fois que vous avez tout téléchargé, votre répertoire de travail doit ressembler à ceci :

Lancement du cas de test

Une fois que tout est prêt, utilisez le script suivant pour lancer le calcul sur Qarnot. Assurez-vous de copier votre jeton d'authentification dans le script (à la place de <<<MY_SECRET_TOKEN>>>) pour pouvoir lancer la tâche sur Qarnot.

Pour lancer ce script, il suffit de copier le code suivant dans un script Python et d'exécuter python3 run-mlflow.py & dans votre terminal.

#!/usr/bin/env python3

# Import the Qarnot SDK
import qarnot

# Connect to the Qarnot platform
conn = qarnot.Connection(client_token='<<<MY_SECRET_TOKEN>>>')

# Create a task
task = conn.create_task('Hello World - MLflow', 'mlflow', 1)

# Create a resource bucket and add input files
input_bucket = conn.create_bucket('mlflow-in')
input_bucket.sync_directory('input/')

# Attach the bucket to the task
task.resources.append(input_bucket)

# Create a result bucket and attach it to the task
task.results = conn.create_bucket('mlflow-out')

# Task constants are the main way of controlling a task's behaviour
task.constants['DOCKER_TAG'] = "v1.21.0"
task.constants['MLFLOW_DRIVER'] = "mlflow_driver.py"

# take a snapshot of the outputs every 5 seconds
task.snapshot(5)

# Submit the task to the API
task.run(output_dir='output')

Résultats

À tout moment, vous pouvez suivre l'état de votre tâche.

Une fois l'entraînement terminé, le statut de la tâche devrait passer au vert et les résultats devraient être téléchargés automatiquement dans un répertoire output. Vous y trouverez tous les fichiers générés par MLflow pour chaque exécution de chaque expérience. Cela inclut : les logs, les métriques, les paramètres, le modèle actuel et plus encore.

Interface utilisateur de MLflow

Vous pouvez visualiser ces résultats dans l'interface utilisateur (UI) intégrée de MLflow.

Pour ce faire, assurez-vous d'avoir mlflow installé sur votre machine en exécutant pip install mlflowChangez de répertoire pour aller dans outputs/ avec cd outputs/Exécutez mlflow ui

Cela lancera l'UI sur localhost:5000 auquel vous pouvez accéder depuis votre navigateur.

À partir de ce tableau de bord, vous avez accès à :

Il est également possible de comparer différentes exécutions d'une même expérience. Par exemple, l'image ci-dessous montre la comparaison de 5 exécutions pour voir l'effet d'alpha. Vous pouvez voir un nuage de points avec alpha sur l'axe des x et le score RMSE sur l'axe des y.

Conclusion

C'est tout ! Si vous avez des questions, veuillez contacter qlab@qarnot.com et nous serons ravis de vous aider !

Retour

Nos articles