logo aosis

5 tips pour ses travaux de Data Science avec Databricks

Databricks est une plateforme web permettant la réalisation de toutes sortes de travaux liés à l’univers de la Data, allant de la BI jusqu’au Machine Learning. Fondé en 2013 par les créateurs d’Apache Spark, Databricks repose principalement sur du Spark avec son architecture innovante, le Data Lakehouse, combinaison efficace des atouts des data lakes et des data warehouse. Disponible via les plus gros hébergeurs cloud (AWS, Azure et GCP), Databricks est aujourd’hui une référence en termes d’outil de Data Science.

Je vous propose dans cet article une présentation de 5 fonctionnalités pouvant faciliter la réalisation de travaux de Data Science avec Databricks. Avant toute chose, il faut bien penser à créer et démarrer, à chaque utilisation, son cluster, ensemble de ressources et de configurations de calculs sur lequel s’exécutera les charges de travail. La tarification de Databricks, en mode pay-as-you-go, va d’ailleurs être directement lié au paramétrage de votre cluster et votre hébergeur cloud.

Notebook multi-langages

Databricks propose dans ses 2 environnements de travail Data Science & Engineering et Machine Learning des notebooks collaboratifs, semblables aux notebooks Jupyter. Au moment de la création du notebook, l’utilisateur choisit un langage par défaut pour un notebook, entre les 4 langages de programmation à disposition dans Databricks :

  • Python
  • SQL
  • Scala
  • R

Les notebooks dans Databricks sont cependant complètement multi-langages. Il est possible de changer localement de langage au sein d’une même cellule, en précédant son code de la commande magique %, suivi du langage souhaité, en minuscules. Par exemple, on peut, au sein d’un même notebook, afficher une base de données grâce à une requête SQL, la charger en Python, puis passer sur R si on préfère réaliser ses graphiques avec la librairie ggplot2. La commande %md permet de basculer la cellule au format Markdown, pour pouvoir ajouter des titres, des listes ou juste du texte brut au notebook. Ce changement de langage peut également se faire en mode clique-bouton dans le paramétrage local de la cellule, et le langage par défaut du notebook peut également être modifié à tout moment.

Cette fonctionnalité peut être un gain de temps précieux pour les personnes compétentes sur plusieurs langages de programmation. Plus besoin de chercher comment traduire une tâche spécifique de tel langage à tel langage, ou comment utiliser une telle librairie dans un tel langage, etc,…

La commande display()

La commande display() du module dbruntime interne à Databricks propose de visualiser des graphiques ou des données en output de la cellule. Cette commande améliore surtout la visualisation d’un dataframe (Pandas, Spark, Koalas ou Pyspark.Pandas) par rapport aux fonctions print() ou show(), en affichant les données dans un format tabulaire pouvant aller jusqu’à 10 000 lignes. Ce tableau peut être ensuite facilement trié selon une variable, par ordre croissant ou décroissant, en cliquant sur la variable.

Les autres atouts de cette sortie se retrouvent en cliquant sur le bouton +, on accède alors à différentes fonctionnalités. On peut tout d’abord créer une visualisation graphique hautement personnalisable des données via la même UI présente dans la partie BI de Databricks. On peut également générer un résumé statistique de la table en cliquant sur Data Profile. Chaque variable de la table sera alors affichée différemment selon le type de la variable :

Pour les variables numériques, un résumé statistique avec le nombre, la moyenne, l’écart-type, le minimum, la médiane et le maximum, accompagné du pourcentage de valeurs manquantes et de valeurs nulles et d’un petit histogramme de la distribution de la variable.

Pour les variables catégorielles, d’autres informations avec notamment le nombre, le nombre de valeurs uniques, le mode, la fréquence du mode, le pourcentage de valeurs manquantes et un barplot.

Il est possible par la suite de personnaliser un peu son Data Profile, en choisissant l’ordre d’affichage des variables ou le type de graphe.

Cette fonctionnalité permet donc de réaliser une première approche de statistiques descriptives et d’exploration de données, étapes primordiales en Data Science, sans avoir à fournir plus de code que la simple commande display(). Il faut cependant s’assurer avant que toutes les variables aient bien le type attendu, pour une précision optimale.

Apache Spark

Apache Spark est un moteur open source d’analyse unifié et ultra-rapide pour le traitement de Big Data. Créé en 2009, son architecture composée d’un nœud pilote répartissant les tâches à effectuer en parallèle sur plusieurs exécuteurs a battu des records de performance sur le tri de données à grande échelle ces dernières années. A tel point qu’aujourd’hui, Apache Spark est le plus grand projet open source de Big Data, avec plus de 1200 contributeurs, venant d’entreprises comme Intel, Facebook ou IBM, et est très utilisé chez Netflix, Yahoo ou Ebay par exemple.

Développé par les mêmes équipes, Databricks facilite grandement l’utilisation d’Apache Spark. En effet, les librairies Python, Scala et R d’Apache Spark sont déjà préinstallées sur les clusters Databricks et n’ont plus qu’à être chargées. De plus, pour la librairie pyspark, la session Spark, point d’entrée pour programmer en Spark et normalement créée avec la commande SparkSession.builder(), est déjà instanciée dans la plupart des notebooks de Databricks dans l’objet spark. Il est également possible de surveiller l’état et la consommation des ressources du cluster Spark avec Spark UI, après chaque exécution engendrant une tâche Spark dans un notebook, en cliquant sur « Spark Jobs » puis « View », juste après la cellule concernée.

Le recours à Apache Spark via Databricks permet donc une nouvelle fois d’économiser du temps en rendant totalement transparentes les étapes préparatoires à son utilisation, notamment les différentes installations requises, qui sont parfois compliquées à mettre en œuvre sur d’autres outils.

Les UI de MLflow

MLflow est un package open source développé par les équipes d’Apache Spark. Il permet de gérer le cycle de vie d’un projet de Machine Learning en désignant une problématique de Data Science comme une expérience et toutes les tentatives pour y répondre comme des runs. MLflow est composé principalement de 4 fonctionnalités :

  • MLflow Tracking pour le suivi et l’enregistrement des expériences (paramètres des modèles, métriques d’évaluation, …)
  • MLflow Models pour la gestion et le déploiement de modèles provenant d’une variété de bibliothèques (Scikit-learn, SparkML, XGBoost, LightGBM, …)
  • MLflow Model Registry pour l’enregistrement de modèle MLflow dans un emplacement central et collaboratif
  • MLflow Projects pour le packaging de code réutilisable et reproductible

Databricks, contrairement à d’autres outils de Data Science, dispose d’interfaces utilisateur très claire pour utiliser MLflow le plus efficacement possible. Ainsi, en se plaçant dans l’environnement de travail Machine Learning, on peut naviguer dans l’onglet Experiments pour retrouver toutes les expériences et tous les runs de chaque expérience trackée avec MLflow, au format tabulaire et graphique. Dans l’onglet Models, on retrouve tous les modèles trackés et enregistrés dans le MLflow Model Registry, et propose un suivi historique des différentes versions et une classification selon l’utilisation du modèle (Staging, Production ou Archived). Pour finir, dans l’onglet Serving, il est possible de déployer un modèle MLflow en tant que point de terminaison d’une API REST. Ces 3 onglets communiquent entre eux : il est possible en seulement quelques clics de créer un modèle dans Models depuis un run enregistré dans Experiments et de le déployer dans Serving.

Ces interfaces fluidifient totalement l’utilisation de MLflow dans ses projets de Machine Learning. Il n’est plus nécessaire d’utiliser du code pour, par exemple, visualiser les résultats de la recherche d’hyperparamètre d’un modèle ou pour enregistrer un modèle. Tout est clairement transposé dans les différents onglets, tous très ergonomiques.

AutoML

Databricks AutoML est une librairie interne à Databricks permettant d’appliquer et de tester automatiquement des modèles de Machine Learning à un jeu de données. Cette fonctionnalité est disponible pour les problématiques de régression, de classification et de prévision.

Pour utiliser AutoML, il suffit seulement de renseigner au minimum une base de données et une variable cible, mais il est possible également de paramétrer la métrique à utiliser pour sélectionner le meilleur modèle, le temps maximum d’exécution ou encore le nombre maximum d’essais. AutoML va alors dans un premier temps effectuer une analyse exploratoire de la base de données et va ensuite tester plusieurs algorithmes des principales librairies de Machine Learning (Scikit-learn, SparkML, XGBoost, LightGBM,…) pour modéliser la problématique énoncée. En sortie du processus, AutoML fournit un notebook Python avec les résultats de l’analyse exploratoire et une expérience stockée dans l’onglet Experiments avec tous les modèles testés enregistrés avec MLflow. Pour chacun de ces runs, il est également possible de générer un notebook avec le code source reproduisant à l’identique le modèle associé.

AutoML peut être utile pour économiser du temps de programmation ou pour tester rapidement quels algorithmes semblent le mieux marcher pour la base de données testée. Il donne cependant l’effet d’une boîte noire et ne garantit pas de déterminer le meilleur modèle et ne peut donc pas remplacer l’expertise d’un Data Scientist.

Conclusion

Databricks est un outil relié à la Data, et notamment la Data Science, qui séduit de plus en plus d’utilisateurs depuis sa création il y a 10 ans. Dans cet article, je vous ai présenté quelques fonctionnalités inhérentes à Databricks, pouvant vous permettre de gagner en efficacité sur vos travaux de Data Science, que ce soit au niveau du code pur, de la visualisation de table de données ou de projets de Machine Learning. En complément de cet article, si vous êtes débutants, je vous conseille de jeter un œil aux nombreux notebooks tutoriels disponibles dans la documentation en ligne de l’outil, ou de vous créer un compte sur leur plateforme académique, qui propose du contenu de qualité et gratuit pour se former.

Article écrit par Quentin – Data Scientist

Pour suivre nos aventures sur LinkedIn :