Data Science Notebook Life-Hacks, die ich von Ploomber gelernt habe
Gesponserter Beitrag
Ich, ein Datenwissenschaftler, und Jupyter-Notebooks. Nun, unsere Beziehung begann damals, als ich anfing, Python zu lernen. Jupyter-Notebooks waren meine Zuflucht, als ich sicherstellen wollte, dass mein Code funktioniert. Heutzutage unterrichte ich Programmieren und mache mehrere datenwissenschaftliche Projekte und noch immer sind Notizbücher die besten Werkzeuge für interaktives Programmieren und Experimentieren. Leider kann es beim Versuch, Notebooks in Data-Science-Projekten zu verwenden, schnell außer Kontrolle geraten. Durch Experimente entstehen monolithische Notizbücher, die schwer zu warten und zu ändern sind. Und ja, es ist sehr zeitaufwändig, zweimal zu arbeiten: zu experimentieren und dann Ihren Code in Python-Skripte umzuwandeln. Ganz zu schweigen davon, dass es mühsam ist, solchen Code zu testen, und auch die Versionskontrolle ist ein Problem. An diesem Punkt müssen Sie denken: Es muss einen besseren Weg geben! Zum Glück liegt die Antwort nicht darin, meine geliebten Jupyter-Notizbücher zu meiden.
Folgen Sie mir und lernen Sie einige tolle Ideen von Eduardo Blancas und sein Projekt namens Ploomber auf wie man bessere Data-Science-Projekte durchführt und wie man Jupyter-Notebooks sinnvoll nutzt und erstellt, auch in der Produktion.
Beliebte Jupyter-Notizbücher
Jupyter ist ein kostenloses Open-Source-Webtool, mit dem man Code in Zellen schreiben kann, der dann an den Back-End-„Kernel“ gesendet wird und Sie sofort die Ergebnisse erhalten . Einer meiner Kollegen sagt, es sei wie eine altmodische Messenger-Anwendung mit Code. Die Popularität des Jupyter-Notebooks ist in den letzten Jahren explosionsartig gestiegen, dank der Möglichkeit, Softwarecode, Rechenausgabe, erklärenden Text und Multimedia-Ressourcen in einem einzigen Dokument zu kombinieren [1]. Notebooks könnten unter anderem für wissenschaftliches Rechnen, Datenexploration, Tutorials und interaktive Handbücher verwendet werden. Darüber hinaus können Notebooks Dutzende Sprachen sprechen (der Name stammt von Julia, Python und R). Eine Analyse der Code-Sharing-Site GitHub zählte mehr als 7,5 Millionen öffentliche Jupyter Notebooks im Januar 2022. Als Datenwissenschaftler verwende ich Jupyter-Notebooks hauptsächlich für die Datenverarbeitung mit Python und R und unterrichte Schüler auch über Jupyter-Notebooks in Python-Grundlagen.
Was ist das Problem mit Notizbüchern?
Trotz ihrer Beliebtheit haben viele Datenwissenschaftler (einschließlich mir) Probleme mit Jupyter-Notebooks [2]. Ich könnte es nicht besser zusammenfassen, deshalb zitiere ich die Worte von Joel Grus, der erläuterte einige Probleme mit Notebooks [1].
„Ich habe gesehen, dass Programmierer frustriert waren, wenn sich Notebooks nicht wie erwartet verhielten, meist weil sie versehentlich Codezellen in der falschen Reihenfolge ausführen. Jupyter-Notebooks begünstigen auch schlechte Codierungspraktiken, da sie es schwierig machen, Code logisch zu organisieren, ihn in wiederverwendbare Module aufzuteilen und Tests zu entwickeln, um sicherzustellen, dass der Code ordnungsgemäß funktioniert. ”
Notebooks sind schwer zu debuggen und zu testen, und ich habe in meiner Karriere auch viel Zeit damit verbracht, den Code in einige Skripte umzuwandeln, Funktionen, die in der Produktion verwendet werden können. Es gibt auch Probleme mit der Versionskontrolle, da es sich bei Notebooks um JSON-Dateien handelt und Git einen unleserlichen Vergleich zwischen Versionen ausgibt, was es schwierig macht, die vorgenommenen Änderungen nachzuvollziehen [2]. Hier finden Sie eine ausführlichere Zusammenfassung und Erklärung zu den Problemen von Jupyter-Notebooks .
Das Streben nach Modularisierung
Die oben aufgeführten Probleme hätten ausreichen können, um mich dazu zu bringen, Ploomber< zu finden span style="font-weight: 400;">, aber ich habe dieses großartige Projekt durch meine Suche nach Modularisierung entdeckt. Was ich brauchte, war ein Tool, mit dem ich ganz einfach Aufgaben oder Codefragmente in der definierten Reihenfolge erstellen und ausführen konnte, ohne meine Dateningenieur-Kollegen um Hilfe bitten zu müssen. Was ich brauchte, heißt Pipeline. Mit einer Pipeline kann man Aufgaben auf kleinere Komponenten aufteilen und diese automatisieren. Pipelines gibt es in vielen Formen und Größen. Man kann Pipelines sogar in Sklearn und Pandas erstellen [3].
Ploomber ist ein von Eduardo Blancas initiiertes Open-Source-Projekt zur Erstellung von Python-Pipelines. Ich empfand es als benutzerfreundliches Tool, mit dem ich meine Aufgaben schnell mit der Ausführungsreihenfolge definieren und meine Analyse in modulare Teile aufteilen konnte. Ploomber enthält mehrere Beispielprojekte, in denen Sie tolle Beispiele des Tools finden können. Ich teile meine Experimente mit Ploomber auch in diesem Repo. Was mir an Ploomber besonders gefällt, ist der Blog und der < span style="font-weight: 400;">Community auf Slack, wo ich alles zu diesem Projekt fragen konnte.
Lifehacks von Eduardo Blancas
Okay, ich habe ein großartiges Projekt zur Modularisierung meiner Data-Science-Projekte gefunden, aber wie hat es mir bei meinem ständigen Kampf mit Notizbüchern geholfen?
Nun, Ploomber kommt mit Jupytext, ein Paket, das es uns ermöglicht, Notizbücher als py-Dateien zu speichern, aber mit ihnen als Notizbücher zu interagieren. Das Problem mit der Versionskontrolle wurde gelöst.
Dann kommt das Refactoring- und Modularisierungsproblem. Man muss nicht auf Notebooks verzichten, da Ploomber Notebooks als Pipeline-Einheiten handhaben kann. Auf diese Weise muss ich nur meine Notebooks bereinigen und mir Zeit nehmen, sie in eine völlig andere Codestruktur und -architektur umzuwandeln. Es ist auch möglich, Notebooks und Skripte in Pipeline-Aufgaben zu mischen. Es gibt eine Blogpost-Serie darüber, wie man monolithische Notizbücher in kleinere Teile zerlegt. Was ich den Schülern und auch Eduardo immer sage, ist, Ihr Notizbuch so zu schreiben, dass Sie Ihren Kernel immer neu starten und Ihren gesamten Code von oben nach unten ausführen können. Manchmal dauert die Ausführung eines Notebooks mit vielen Daten lange. Legen Sie dann einfach einen Beispielparameter fest, um eine Teilmenge zu erhalten, mit der Sie testen können, ob Ihr Code ausgeführt wird.
Neben den Life-Hacks zur Modularisierung noch eine weitere sehr wichtige Erkenntnis, die ich auf Ploombers Blog< gelesen habe span style="font-weight: 400;"> und mich bei der Arbeit anwenden, besteht darin, die Abhängigkeiten des Projekts zu sperren und es zu verpacken, um Code aus anderen Notebooks importieren zu können. Ich bin bisher bei einigen Projekten auf Probleme mit der Paketversion gestoßen, daher kann ich Ihnen versichern, dass es Ihnen einige Stunden ersparen kann.
Ein Projekt mit mehreren kürzeren, übersichtlicheren Notizbüchern anstelle einiger monolithischer Notizbücher erleichtert die Reproduktion, das Verständnis und die Änderung des Codes. Darüber hinaus ermöglicht es auch die Entwicklung einer Teststrategie zum Testen von ML-Codes . In mehreren Beiträgen darüber, warum maschinelle Lernprojekte scheitern, wird die Schwierigkeit erwähnt, den Code zu aktualisieren und die zeitraubenden Wartungsprobleme. Mit kürzerem, saubererem Code, gesperrten Abhängigkeiten und angemessener Versionskontrolle werden Wartung und Zusammenarbeit einfacher und schneller.
Zusammenfassung
Die oben genannten Ideen sind nur einige Hauptgedanken, die ich auf Ploombers Blog nützlich fand. Seitdem habe ich einen Werkzeugkasten, wie man Notebooks in modulare Teile aufteilt und diese in kleineren Projekten verwendet und in eine Pipeline umwandelt. Ich teile und lehre gerne Ideen, wie man bessere Notizbücher und Code erstellt, und diese Codierungspraktiken sind eine Überlegung wert.
Wenn Sie an weiteren Details zu Ploomber und der effizienteren Arbeit mit Notebooks interessiert sind, schauen Sie sich unbedingt den Vortrag von Eduardo Blanca über sein Projekt auf der Reinforce AI Conference diesen März! Wer könnte uns mehr sagen als der CEO und Mitbegründer von Ploomber selbst?
Referenzen
[1] Jeffrey M. Perkel 400;"> (2018). Warum Jupyter das Rechennotizbuch der Wahl von Datenwissenschaftlern ist. Natur 563, 145-146.
[2] Eduardo Blancas (2021). Warum (und wie) Notizbücher in Produktion gehen. Ploomber.io-Blog.
[3] Anouk Dutrée (2021). Datenpipelines: Was, warum und welche. Auf dem Weg zum Data Science-Blog.