Sind Jupyter-Notebooks bereit für die Produktion?¶
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¶
