Retour
ML & IA
Octobre 2021

Auto-sklearn sur Qarnot Cloud

AutoML est une technologie qui automatise les tâches les plus chronophages d'un projet de Machine Learning afin que les scientifiques des données puissent consacrer plus de temps aux problèmes métier et aux scénarios pratiques. Elle permet également à tout le monde, et pas seulement à un petit groupe de personnes, d'utiliser la technologie de l'apprentissage automatique.

Voici un guide rapide et étape par étape pour vous aider à former Auto-sklearn, un framework d'AutoML, 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 commencer un calcul avec le SDK Python, quelques étapes sont nécessaires :

Remarque : en plus du SDK Python, Qarnot fournit des SDK C# et Node.js, ainsi qu'une ligne de commande.

Cas de test

Les données présentées dans ce tutoriel sont celles du jeu de données electricity. Ces données ont été collectées sur le marché de l'électricité de la Nouvelle-Galles du Sud en Australie, où les prix de l'électricité sont fixés toutes les cinq minutes en fonction de l'offre et de la demande. Avec ces données historiques, nous devons prédire si les prix de l'électricité vont monter ou baisser. Il s'agit d'un problème de classification binaire, et nos étiquettes de classe sont "UP" (vers le haut) et "DOWN" (vers le bas).

Nous voulons construire le meilleur modèle possible en utilisant Auto-sklearn dans un laps de temps donné. La meilleure façon d'y parvenir est de former plusieurs modèles en parallèle pour augmenter les chances de construire des modèles performants. Cela est bien adapté au service HPC de Qarnot, que nous utiliserons pour paralléliser le calcul d'Auto-sklearn sur plusieurs nœuds d'un cluster. Ce cas de test montrera comment former Auto-sklearn pendant 15 minutes sur un cluster Qarnot de 4 nœuds.

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

Avant de continuer, vous devez configurer votre environnement de travail pour qu'il contienne les fichiers suivants :

Lancement du cas de test

Une fois que votre environnement de travail est correctement configuré, vous êtes presque prêt à démarrer. 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.

#!/usr/bin/env python

# Import the Qarnot SDK
import qarnot

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

# Create a task
task = conn.create_task('Hello World - Auto-Sklearn', 'auto-sklearn-cluster', 4)

# Create a resource bucket and add input files
input_bucket = conn.create_bucket('auto-sklearn-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('auto-sklearn-out')

# Basic Constants
task.constants['TARGET_COL'] = 'class' # Target column for classification
task.constants['TOTAL_TIME_LIMIT'] = '15' # Total training time limit in minutes
task.constants['PER_RUN_TIME_LIMIT'] = '5' # Per iteration training time limit in minutes

# Optional Constants
task.constants['N_CV_FOLDS'] = '3' # Number of cross validation folds
task.constants['ENSEMBLE_SIZE'] = '50' # Maximum number of models added to the ensemble
# If None, all possible estimators are used.
# Otherwise, specifies a set of estimators to include/exlude.
task.constants['INCLUDE_ESTIMATORS'] = 'None'
task.constants['EXCLUDE_ESTIMATORS'] = 'None'
# If None, all possible preprocessors are used.
# Otherwise, specifies a set of preprocessors to include/exclude.
task.constants['INCLUDE_PREPROCESSORS'] = 'None'
task.constants['EXCLUDE_PREPROCESSORS'] = 'None'

# Keep only the contents of outputs/ in the output bucket
task.results_whitelist = 'outputs'

# Submit the task to the API, that will launch it on the cluster
task.run(output_dir = ".")

Pour lancer ce script, copiez simplement le code ci-dessus dans un script Python et exécutez la commande suivante dans votre terminal : python3 auto-sklearn.py &.

Résultats

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

Une fois l'entraînement terminé, l'état de la tâche passera au vert. Vous pouvez alors consulter le bucket de sortie de la tâche, auto-sklearn-out. Vous y trouverez différents fichiers comme un journal d'entraînement, le modèle enregistré, la matrice de confusion des prédictions et un graphique de la précision au fil du temps.

Conclusion

Et voilà ! Si vous avez des questions, veuillez contacter qlab@qarnot.com et nous vous aiderons avec plaisir !Si vous êtes curieux et souhaitez en savoir plus sur ce cas d'utilisation et sur d'autres, vous pouvez consulter notre article de blog qui entre dans beaucoup plus de détails.

Retour

Nos articles