Life-Hacks pour carnet de science des données que j'ai appris de Ploomber
Message sponsorisé
Moi, un data scientist et les notebooks Jupyter. Eh bien, notre relation a commencé à l'époque où j'ai commencé à apprendre Python. Les notebooks Jupyter étaient mon refuge lorsque je voulais m'assurer que mon code fonctionnait. Aujourd'hui, j'enseigne le codage et je réalise plusieurs projets de science des données et pourtant, les cahiers sont les meilleurs outils pour le codage et l'expérimentation interactifs. Malheureusement, lorsque l’on essaie d’utiliser des notebooks dans des projets de science des données, les choses peuvent rapidement devenir incontrôlables. À la suite de l’expérimentation, des cahiers monolithiques émergent, difficiles à entretenir et à modifier. Et oui, cela prend beaucoup de temps de travailler deux fois : expérimenter puis transformer son code en scripts Python. Sans oublier qu’il est pénible de tester un tel code et que le contrôle de version est également un problème. C’est à ce moment-là que vous devez réfléchir : il doit y avoir une meilleure solution ! Heureusement pour moi, la réponse n'est pas d'éviter mes cahiers Jupyter bien-aimés.
Suivez-moi et découvrez quelques idées géniales d'Eduardo Blancas et son projet, appelé Ploomber sur comment réaliser de meilleurs projets de science des données et comment utiliser et créer judicieusement des notebooks Jupyter, même en production.
Carnets Jupyter populaires
Jupyter est un outil Web gratuit et open source, dans lequel on peut écrire du code dans des cellules, qui est ensuite envoyé au « noyau » back-end et vous obtenez immédiatement les résultats. . Un de mes collègues dit que c’est comme une application de messagerie à l’ancienne avec du code. La popularité du notebook Jupyter a explosé au cours des dernières années, grâce à la capacité de combiner le code logiciel, les résultats informatiques, le texte explicatif et les ressources multimédias dans un seul document [1]. Entre autres choses, les cahiers pourraient être utilisés pour le calcul scientifique, l’exploration de données, les didacticiels et les manuels interactifs. De plus, les notebooks peuvent parler des dizaines de langues (ils tirent leur nom de Julia, Python et R). Une analyse du site de partage de code GitHub a dénombré plus de 7,5 millions de Jupyter publics notebooks en janvier 2022. En tant que data scientist, j'utilise principalement les notebooks Jupyter pour gérer les données avec Python et R, et j'enseigne également aux étudiants les bases de Python via les notebooks Jupyter.
Quel est le problème avec les blocs-notes ?
Malgré leur popularité, de nombreux data scientists (dont moi) rencontrent des problèmes avec les notebooks Jupyter [2]. Je ne pourrais pas mieux résumer, c'est pourquoi je cite les mots de Joel Grus, qui a expliqué quelques problèmes avec les notebooks [1].
« J'ai vu des programmeurs être frustrés lorsque les ordinateurs portables ne se comportent pas comme prévu, généralement parce qu'ils exécutent par inadvertance des cellules de code dans le désordre. Les notebooks Jupyter encouragent également de mauvaises pratiques de codage en rendant difficile l'organisation logique du code, sa division en modules réutilisables et le développement de tests pour garantir le bon fonctionnement du code. "
Les ordinateurs portables sont difficiles à déboguer et à tester, et j'ai également passé beaucoup de temps dans ma carrière à refactoriser le code dans certains scripts, fonctions qui peuvent être utilisées en production. Il existe également des problèmes avec le contrôle de version, car les notebooks sont des fichiers JSON et git génère une comparaison illisible entre les versions, ce qui rend difficile le suivi des modifications apportées [2]. Ici vous pouvez trouver un résumé et une explication plus détaillés sur les problèmes des notebooks Jupyter .
La quête de la modularisation
Les problèmes énumérés ci-dessus auraient pu suffire à m'amener à trouver Ploomber< span style="font-weight: 400;">, mais j'ai découvert ce projet génial grâce à ma quête de modularisation. Ce dont j'avais besoin, c'était d'un outil permettant de créer et d'exécuter facilement des tâches ou des extraits de code dans l'ordre défini sans demander de l'aide à mes collègues ingénieurs de données. Ce dont j'avais besoin s'appelle un pipeline. Avec un pipeline, on peut diviser les tâches en composants plus petits et les automatiser. Les pipelines peuvent se présenter sous de nombreuses formes et tailles. On peut créer des pipelines même dans sklearn et pandas [3].
Ploomber est un projet open source initié par Eduardo Blancas pour créer des pipelines Python. J'ai trouvé que c'était un outil facile à utiliser, avec lequel je pouvais définir rapidement mes tâches avec ordre d'exécution et diviser mon analyse en parties modulaires. Ploomber est livré avec plusieurs exemples de projets où vous pouvez trouver d'excellents exemples de l'outil. Je partage également mes expériences avec Ploomber dans ce dépôt. Ce que j'aime particulièrement chez Ploomber, c'est le blog et le < span style="font-weight: 400;">communauté sur Slack, où je pourrais poser des questions sur ce projet.
Hacks de vie d'Eduardo Blancas
D'accord, j'ai trouvé un excellent projet pour modulariser mes projets de science des données, mais en quoi cela m'a-t-il aidé dans ma lutte constante avec les notebooks ?
Eh bien, Ploomber est livré avec Jupytext, un package qui nous permet d'enregistrer des blocs-notes sous forme de fichiers py, mais d'interagir avec eux en tant que blocs-notes. Le problème du contrôle de version a été résolu.
Vient ensuite le problème de refactorisation et de modularisation. Il n'est pas nécessaire de se débarrasser des notebooks car Ploomber peut gérer les notebooks comme des unités de pipeline. De cette façon, je dois juste nettoyer mes cahiers et gagner du temps pour les convertir en une structure et une architecture de code complètement différentes. Il est également possible de mélanger des notebooks et des scripts dans des tâches pipeline. Il existe une série d'articles de blog sur la façon de diviser les cahiers monolithiques en parties plus petites. Ce que je dis toujours aux étudiants et Eduardo suggère également, c'est d'écrire votre cahier de manière à toujours pouvoir redémarrer votre noyau et exécuter tout votre code de haut en bas. Parfois, l'exécution d'un notebook avec beaucoup de données prend beaucoup de temps, il suffit alors de définir un exemple de paramètre pour obtenir un sous-ensemble permettant de tester l'exécution de votre code.
Outre les astuces de modularisation, un autre point très important que j'ai lu sur le blog de Ploomber< span style="font-weight: 400;"> et m'appliquer au travail est de verrouiller les dépendances du projet et de le conditionner pour pouvoir importer du code à partir d'autres notebooks. Jusqu'à présent, j'ai rencontré des problèmes de version de package dans quelques projets, je peux donc vous assurer que cela peut vous épargner quelques heures.
Un projet composé de plusieurs cahiers plus courts et plus propres au lieu de quelques cahiers monolithiques facilite la reproduction, la compréhension et la modification du code. En outre, il permet également de concevoir une stratégie de test pour tester les codes ML . Plusieurs articles expliquant pourquoi les projets d'apprentissage automatique échouent, mentionnent la difficulté de mettre à jour le code et les problèmes de maintenance fastidieux. Avec un code plus court et plus propre, des dépendances verrouillées et un contrôle de version approprié, la maintenance et la collaboration deviennent plus faciles et plus rapides.
Résumé
Les idées ci-dessus ne sont que quelques réflexions principales que j'ai trouvées utiles sur le blog de Ploomber. Depuis lors, je dispose d'une boîte à outils expliquant comment diviser les blocs-notes en parties modulaires et comment les utiliser et les convertir en pipeline dans des projets plus petits. J'aime partager et enseigner des idées sur la façon de créer de meilleurs blocs-notes et de meilleurs codes, et ces pratiques de codage méritent d'être prises en compte.
Si vous êtes intéressé par plus de détails sur Ploomber et comment travailler plus efficacement avec des ordinateurs portables, assurez-vous de consulterEduardo Blancas parle de son projet au Conférence Renforcer l'IA en mars ! Qui pourrait nous en dire plus que le PDG et co-fondateur de Ploomber lui-même ?
Références
[1] Jeffrey M. Perkel (2018). Pourquoi Jupyter est le notebook informatique de choix des data scientists. Nature 563, 145-146.
[2] Eduardo Blancas (2021). Pourquoi (et comment) mettre les notebooks en production. Blog Ploomber.io.
[3] Anouk Dutrée (2021). Pipelines de données : quoi, pourquoi et lesquels. Vers le blog Data Science.