
Pourquoi je passe aux carnets Marimo
Depuis que j’utilise Jupyter Lab, j’ai déplacé la plupart de mon travail vers les notebooks Marimo, un nouveau type de notebook Python qui résout de nombreux problèmes de longue date par rapport aux notebooks traditionnels. Cet article couvre les raisons de ma transition et comment marimo s’intègre naturellement dans mon flux de travail actuel, avec toute ma gratitude envers le projet Jupyter pour avoir construit l’écosystème de notebooks qui a façonné la science des données, la recherche et l’éducation.
Un peu de contexte
J’ai passé des années dans des cahiers. Pendant longtemps, ma configuration était un mélange de Jupyter Notebooks/Lab pour les expériences locales et de Google Colab pour le travail cloud ou GPU, grâce à leur option de niveau gratuit. J’ai même écrit de nombreux blogs sur la façon de tirer le meilleur parti de ces cahiers, dans lesquels j’ai partagé des conseils pour aller au-delà de la manière normale de les utiliser.
Cela dit, ces ordinateurs portables traditionnels ont rencontré certains problèmes, le plus important étant la réactivité (ou plutôt son manque). L’état caché, l’exécution dans le désordre et les réexécutions manuelles étaient quelques-uns de mes problèmes avec ces cahiers.
Cela a changé quand j’ai découvert marimoune alternative open source aux notebooks Jupyter dans laquelle vous pouvez exécuter des cellules, effectuer des calculs et créer des tracés comme vous le feriez dans Jupyter. Mais en dessous, cela fonctionne très différemment et résout de nombreux problèmes de longue date. La principale différence est qu’un notebook Marimo n’est qu’un fichier Python, ce qui en fait à la fois un meilleur notebook et un meilleur environnement de codage pour quiconque utilise Python. Dans cet article, je partage dix raisons qui ont motivé mon changement et pourquoi travailler avec des ordinateurs portables a été beaucoup plus fluide pour moi depuis que j’ai migré vers Marimo.
Si vous souhaitez suivre, installez marimo comme indiqué ci-dessous. Cette commande lance l’éditeur marimo et ouvre le notebook dans mode bac à sablequi fonctionne comme un environnement virtuel léger qui maintient votre ordinateur portable isolé du reste de votre système. Vous pouvez également utiliser
marimo.newpour démarrer un nouveau cahier dans le terrain de jeu en ligne. Pour des instructions détaillées, reportez-vous au documentation.
pip install marimo
marimo edit --sandbox notebook.py
1. Une réactivité qui résout enfin les problèmes d’état cachés
Les notebooks traditionnels ne sont pas réactifs. Cela signifie que si je modifie quelque chose dans une cellule, rien d’autre ne se met à jour tout seul. Je finis souvent par les réexécuter juste pour garder les résultats cohérents. Par exemple, considérons le Jupyter Notebook ci-dessous où, à gauche, je définis deux variables, a et badditionnez-les pour obtenir une troisième variable cpuis affichez la valeur de cce qui est 30.

Maintenant, si je devais changer a à 20 comme indiqué à droite, c montrerait toujours 30 à moins que je n’ai réexécuté la cellule. Cette inadéquation entre le code et la sortie constitue le problème classique des états cachés.
Marimo corrige ce problème avec exécution réactive, où chaque cellule fait partie d’un graphe de dépendance (DAG). Les modifications apportées à une cellule déclenchent automatiquement des mises à jour dans les cellules dépendantes. Alors, quand a changements, marimo réévalue toutes les cellules dépendantes. Voyez comment c se met à jour automatiquement lorsque la valeur de a est changé.

Cela maintient mon code et mes sorties parfaitement synchronisés et cela signifie que je peux partager mes blocs-notes avec d’autres sans me soucier de l’ordre dans lequel ils s’exécutent.
Mais chaque cellule devrait-elle se mettre à jour automatiquement ? Pas toujours. Certaines cellules sont coûteuses à exploiter, comme celles impliquant une formation ML ou un traitement de données lourd. La bonne nouvelle est que marimo prend en charge exécution paresseusequi vous permet de désactiver les mises à jour automatiques et de déclencher ces cellules uniquement en cas de besoin.
2. L’ordre des cellules n’interrompt plus mon flux de travail
Étant donné que les cahiers Marimo exécutent des cellules en fonction de relations variables et non de leur ordre sur la page, cela me donne la liberté d’organiser mon code d’une manière qui me semble logique. Par exemple, je peux placer toutes mes importations et fonctions d’assistance en bas pour garder l’espace de travail propre.
Cela ouvre également des cas d’utilisation amusants. J’ai utilisé cela pour créer de petits quiz à notation automatique où le corrigé se trouve au bas du cahier. Le quiz fonctionne toujours correctement car l’ordre des cellules n’a pas d’importance et les réponses ne sont pas immédiatement visibles par la personne qui répond au quiz. (Et oui, Marimo est également livré avec un mode sombre 😃.)

3. Il s’agit essentiellement d’un fichier Python sous le capot
Étant donné que chaque notebook Marimo est stocké sous forme de fichier Python pur, cela résout mon problème de longue date avec la gestion des versions dans Git. Je peux enfin suivre les modifications proprement sans avoir à gérer des différences JSON compliquées. Le portable devient également beaucoup plus flexible. Je peux le réutiliser comme script, l’exécuter depuis la ligne de commande ou même le transformer en une petite application interactive sans rien changer.
Ci-dessous, le côté droit montre la vue du notebook Marimo, tandis que le côté gauche montre le même notebook ouvert comme un fichier Python normal dans un éditeur.

4. Je peux facilement transformer mes ordinateurs portables en applications
Transformer un carnet Marimo en une application interactive est également simple. Je peux basculer entre Mode édition et Vue de l’application d’un simple clic, et je n’ai jamais besoin de réécrire mon code ou d’ajouter quoi que ce soit de plus.
Voici un exemple de carnet qui convertit les températures de Celsius à Fahrenheit. Le même carnet peut être consulté dans Mode application en utilisant la disposition verticale par défaut.

Cette fonctionnalité est particulièrement utile pour créer des blogs interactifs, des didacticiels et des parcours pédagogiques destinés aux bibliothèques. Si vous avez déjà lu Explorables par l’IAvous connaissez le sentiment de s’engager dans un contenu plutôt que de simplement le lire. Marimo donne une sensation similaire et le Disposition de la grille le rend encore meilleur puisque je peux faire glisser et déposer des sorties pour organiser l’application comme je le souhaite.

5. Gestionnaire de packages efficace, donc plus de problèmes de dépendance
Marimo est livré avec un gestionnaire de paquets intégré qui me permet d’installer les bibliothèques manquantes directement depuis le bloc-notes. Si un module n’est pas disponible, marimo affiche une petite invite et je peux l’installer en un clic. Cela supprime les allers-retours habituels avec les terminaux.

Marimo s’occupe également de la reproductibilité pour moi. Quand j’exécute un ordinateur portable avec le --sandbox flag, il suit tous les packages et leurs versions exactes et les enregistre dans le fichier notebook en tant que commentaire de niveau supérieur. Il n’est pas nécessaire d’avoir un requirements.txt fichier car le portable contient déjà tout ce dont il a besoin.

6. Utilitaires intégrés pour travailler avec des DataFrames.
Si vous passez beaucoup de temps à explorer les données, c’est l’une de ces fonctionnalités qui ressemble immédiatement à une aubaine. Lorsque vous affichez un dataFrame dans marimo, la vue par défaut est entièrement interactive et est livrée avec plusieurs outils utiles prêts à l’emploi, comme le défilement, la pagination, les histogrammes automatiques pour les colonnes numériques, ainsi qu’un tri et un filtrage simples à partir des en-têtes de colonnes. Cela accélère pour moi le processus EDA, car l’exploration visuelle donne souvent de meilleures informations.

Marimo me permet également de transformer un DataFrame en un élément d’entrée interactif. En utilisant mo.ui.table,Je peux sélectionner des lignes et utiliser ces sélections dans les calculs en aval. Les sélections sont mises à jour de manière réactive, ce qui signifie que le reste de mon bloc-notes est également mis à jour automatiquement.

Si je souhaite partager un carnet avec une partie prenante de l’entreprise, marimo inclut un Éditeur de trames de données de l’interface utilisateur cela leur permet de glisser-déposer des agrégations et des transformations sans écrire de code. Il génère même le code Python équivalent pour chaque étape.

Et attendez, ce n’est pas tout. Il y a aussi un Explorateur de données utilitaire qui me permet de créer des visualisations rapides directement à partir du DataFrame.

Tout cela rend l’exploration des données à un stade précoce beaucoup plus rapide. Au lieu de jongler avec des bibliothèques ou d’écrire du code passe-partout juste pour comprendre un ensemble de données, je peux commencer à analyser et à visualiser immédiatement dans le bloc-notes.
7. Consultez la documentation au fur et à mesure que vous tapez
L’une des fonctionnalités les plus sous-estimées des carnets Marimo est pour moi le panneau Live Docs. Je peux voir les docstrings de fonctions, les paramètres et les exemples sans appeler les utilitaires d’aide.
Le panneau est également interactif, ce qui me permet de faire défiler de longues chaînes de documentation, de vérifier des exemples et de copier des extraits dans mon bloc-notes. Si la docstring contient des exemples formatés, marimo les détecte et me permet de les copier directement dans une nouvelle cellule, ce qui s’est avéré très pratique lors de l’apprentissage de nouvelles bibliothèques.

8. SQL dans le bloc-notes
Marimo prend en charge parfaitement SQL. Je peux rester dans un seul notebook et mélanger SQL et Python de manière très naturelle. Je peux écrire une requête SQL dans une cellule SQL, l’exécuter et obtenir la même vue de table propre que celle fournie par Marimo pour les DataFrames.
Je peux également exécuter SQL sur des fichiers locaux via DuckDB. Un simple select * from "file.csv" ça marche juste. Si je veux me connecter à une vraie base de données, je peux le faire depuis le panneau latéral. Marimo me permet d’ajouter différentes sources de données, et une fois ajoutées, les tableaux apparaissent directement dans le notebook.

9. Molab : des carnets marimo dans le cloud
Molab est pour les notebooks Marimo, ce que Google Colab est pour les notebooks Jupyter. Vous bénéficiez de tous les avantages des carnets Marimo dans le cloud. Vous pouvez ouvrir Molab à molab.marimo.iocréez de nouveaux blocs-notes ou ouvrez ceux que vous avez créés précédemment. C’est une excellente option lorsque je souhaite faire tourner un ordinateur portable rapidement ou éviter d’exécuter des tâches sur ma machine. De nombreux packages Python populaires sont préinstallés, les blocs-notes disposent d’un stockage persistant et je peux les partager, les télécharger ou les télécharger facilement.

Une autre fonctionnalité intéressante est l’intégration de GitHub. Vous pouvez accéder à l’URL Molab et remplacer molab.marimo.io/notebooks avec molab.marimo.io/github et il vous permettra d’ouvrir n’importe quel notebook, Jupyter ou marimo, hébergé sur GitHub dans Molab. Cependant, il n’y a pas de support GPU pour l’instant, comme dans Colab, mais je suis sûr que c’est quelque chose sur lequel l’équipe travaillera.
10. Intégration de LLM personnalisables
Marimo intègre également des fonctionnalités de codage assistées par IA très utiles, qui m’ont été très utiles. Pour être honnête, Jupyter dispose également d’une extension JupyterLab pour les fonctionnalités d’IA appelée JupyterAI (et oui, j’ai écrit à ce sujet aussi), mais le fait d’avoir le support de l’IA intégré à marimo supprime beaucoup de frictions pour moi.
J’utilise l’IA dans Marimo principalement pour deux choses. La première consiste à générer de nouveaux blocs-notes lorsque je souhaite essayer une nouvelle bibliothèque ou faire une démonstration rapide. Cela me fait gagner du temps puisque je n’ai pas besoin de rechercher des ensembles de données de jouets ou de tout configurer à partir de zéro.

La seconde est la refactorisation et le débogage. L’assistant IA de Marimo dispose du contexte complet de mon bloc-notes, il peut donc lire mon code et m’aider à le réparer ou à le nettoyer directement dans le bloc-notes.

J’aime aussi pouvoir choisir différents modèles de discussion et d’édition, et définir mes propres règles sur la façon dont je souhaite que le code soit écrit. Et si je veux éviter les modèles propriétaires, Ollama fonctionne également très bien en tant que fournisseur.
Conclusion
Je ne suis pas connecté à l’équipe marimo et ce n’est pas un article payant, mais mon expérience de son utilisation dans des projets réels. C’est une longue lecture car je voulais partager comment Marimo a rendu mon ordinateur portable plus fluide dans la pratique. Je n’évoque que les parties qui m’ont le plus aidé. Les documents vont beaucoup plus loin et constituent le meilleur endroit pour explorer tout ce que Marimo a à offrir.



