Sind Jupyter-Notebooks bereit für die Produktion?

Veit Schiele

18. November 2020

6–8 Minuten

../_images/jupyter.svg

In den letzten Jahren hat die Nutzung von Jupyter-Notebooks rasant zugenommen, s. a. Octoverse: Growth of Jupyter notebooks, 2016-2019. Dabei handelt es sich um eine von Mathematica inspirierte Anwendung, die Text, Visualisierung und Code in einem Dokument kombiniert. Jupyter-Notebooks werden von unseren Kund*innen häufig für Prototyping, Forschungsanalysen und maschinelles Lernen verwendet. Wir haben jedoch auch festgestellt, dass die wachsende Popularität dazu beigetragen hat, dass Jupyter-Notebooks auch in anderen Bereichen der Datenanalyse eingesetzt werden, und dass zusätzliche Tools verwendet werden, um umfangreiche Berechnungen mit ihnen durchzuführen.

Infolgedessen kam es zum ersten Notebook-Krieg, der im Wesentlichen ein Konflikt zwischen Data Scientists und Softwareingenieur*innen war.

Wie lässt sich die Lücke schließen?

Notebooks erfreuen sich unter Data Scientists zunehmender Beliebtheit und werden zum De-facto-Standard für Rapid Prototyping und explorative Analysen. Vor allem aber hat Netflix ein umfangreiches Ökosystem von zusätzlichen Tools und Diensten wie Genie und Metacat geschaffen. Diese Tools vereinfachen die Komplexität und unterstützen ein breiteres Publikum von Analytiker*innen, Wissenschaftler*innen und insbesondere Informatiker*innen. Im Allgemeinen ist jede dieser Rollen auf unterschiedliche Tools und Sprachen angewiesen. Oberflächlich betrachtet scheinen die Arbeitsabläufe unterschiedlich, wenn nicht sogar komplementär zu sein. Auf einer abstrakteren Ebene haben diese Arbeitsabläufe jedoch mehrere sich überschneidende Aufgaben:

Datenexploration

findet in einem frühen Stadium eines Projekts statt

Dies kann die Anzeige von Beispieldaten, statistische Profilerstellung und Datenvisualisierung umfassen

Datenaufbereitung

iterative Aufgabe

kann Bereinigung, Standardisierung, Umwandlung, Denormalisierung und Aggregation von Daten umfassen

Datenvalidierung

wiederkehrende Aufgabe

kann die Anzeige von Beispieldaten, die Durchführung statistischer Profilerstellung und aggregierter Analyseabfragen sowie die Visualisierung von Daten umfassen

Produkterstellung

erfolgt gegen Ende eines Projekts

Dies kann die Bereitstellung von Code für die Produktion, das Training von Modellen und die Planung von Arbeitsabläufen umfassen.

Ein JupyterHub kann hier bereits gute Dienste leisten, um diese Aufgaben so einfach und überschaubar wie möglich zu gestalten. Er ist skalierbar und reduziert die Anzahl der Tools erheblich.

Um zu verstehen, warum Jupyter-Notebooks für uns so überzeugend sind, heben wir ihre Kernfunktionalitäten hervor:

  • Ein Messaging-Protokoll zum Prüfen und Ausführen von sprachunabhängigem Code

  • Ein editierbares Dateiformat zum Schreiben und Erfassen von Code, Codeausgaben und Markdown-Notizen

  • Eine webbasierte Benutzeroberfläche für das interaktive Schreiben und Ausführen von Code und die Visualisierung von Daten

Anwendungsfälle

Von unseren zahlreichen Anwendungen werden Notebooks heute am häufigsten für den Datenzugriff, die Parametrisierung und die Planung von Arbeitsabläufen verwendet.

Datenzugriff

Zunächst haben wir Notebooks zur Unterstützung von Data-Science-Workflows eingeführt. Mit zunehmender Akzeptanz sahen wir eine Möglichkeit, die Vielseitigkeit und Architektur von Jupyter-Notebooks für den allgemeinen Datenzugriff zu nutzen. Mitte 2018 haben wir damit begonnen, unsere Notebooks von einem Nischenprodukt zu einer universellen Datenplattform auszubauen.

Aus der Sicht der Nutzer*innen bieten Notebooks eine bequeme Schnittstelle für die iterative Ausführung von Code, die Suche und die Visualisierung von Daten – alles auf einer einzigen Entwicklungsplattform. Aufgrund dieser Kombination aus Vielseitigkeit, Leistung und Benutzerfreundlichkeit haben wir eine schnelle Akzeptanz der Plattform in vielen Benutzungsgruppen festgestellt.

Parametrisierung

Mit zunehmender Akzeptanz haben wir zusätzliche Funktionen für andere Anwendungsfälle eingeführt. Durch diese Arbeit wurden Notebooks einfach parametrisierbar. Dadurch erhielten unsere User einen einfachen Mechanismus zur Definition von Notebook als wiederverwendbare Vorlagen.

Planung von Arbeitsabläufen

Als weiteren Anwendungsbereich von Notebooks haben wir die Planung von Arbeitsabläufen entdeckt. Sie haben u. a. folgende Vorteile:

  • Zum einen ermöglichen Notebooks interaktives Arbeiten und Rapid Prototyping, zum anderen lassen sie sich nahezu problemlos in die Produktion überführen. Hierfür sind die Notebooks modularisiert und als vertrauenswürdig gekennzeichnet.

  • Ein weiterer Vorteil von Notebooks sind die verschiedenen Kernel, so dass User die richtige Ausführungsumgebung wählen können.

  • Darüber hinaus sind Fehler in Notebooks leichter nachvollziehbar, da sie bestimmten Zellen zugeordnet sind und die Ausgaben gespeichert werden können.

Logging

Um Notebooks nicht nur für das Rapid Prototyping, sondern auch für die langfristige Produktivität nutzen zu können, müssen bestimmte Prozessereignisse protokolliert werden, damit z. B. Fehler leichter diagnostiziert und der gesamte Prozess überwacht werden kann. IPython Notebboks können das Logging-Modul der Standard-Python-Bibliothek oder loguru nutzen, siehe auch Jupyter-Tutorial: Logging.

Testen

Es gab eine Reihe von Ansätzen, um das Testen von Notebooks zu automatisieren, wie z. B. nbval, aber mit ipytest wurde das Schreiben von Tests für Notebooks viel einfacher, siehe auch Jupyter Tutorial: ipytest.

Zusammenfassung

In den letzten Jahren haben wir eine enge Zusammenarbeit zwischen Softwareingenieuren und Datenwissenschaftlern gefördert, um skalierbaren, wartbaren und produktionsreifen Code zu erhalten. Gemeinsam haben wir Lösungen gefunden, die auch für Machine-Learning-Projekte produktionsreife Modelle liefern können.

Verwandte Inhalte

elena international: Webbasiertes Planungstool für Microgrids
elena-international-web-based-planning-tool-for-microgrids.html