Jupyter-Tutorial

Contributors License Docs


Einführung

Motivation

Jupyter-Notebooks erfreuen sich bei Datenwissenschaftlern wachsender Beliebtheit und wurden zum De-facto-Standard für schnelles Prototyping und explorative Analysen. Sie beflügeln nicht nur Experimente und Innovationen enorm, sie machen auch den gesamten Forschungsprozess schneller und zuverlässiger. Zudem entstehen viele zusätzliche Komponenten, die die ursprünglichen Grenzen ihrer Nutzung erweitern und neue Verwendungsmöglichkeiten ermöglichen.

Zielgruppe

Die Nutzer von Jupyter-Notebooks sind vielfältig von Daten-Wissenschaftlern über -Ingenieure und -Analysten bis hin zu System-Ingenieuren. Dabei sind ihre Fähigkeiten und Arbeitsabläufe sehr unterschiedlich. Eine der großen Stärken von Jupyter-Notebooks ist jedoch, dass sie eine enge Zusammenarbeit dieser unterschiedlichen Experten in funktionsübergreifenden Teams ermöglichen.

  • Daten-Wissenschaftler führen Experimente mit verschiedenen Koeffizienten durch und fassen die Ergebnisse zusammen.

  • Daten-Ingenieure überprüfen die Qualität des Codes und machen ihn robuster, effizienter und skalierbar.

  • Daten-Analysten führen systematische Untersuchungen der Daten durch, wobei sie den von Dateningenieuren bereitgestellten Code verwenden.

  • System-Ingenieure erstellen das Hub, die Kernel, Erweiterungen etc. und gewährleisten den möglichst reibungslosen Betrieb dieser Infrastruktur.

In diesem Tutorial wenden wir uns zunächst vor allem an System-Ingenieure, die eine Plattform auf Basis von Jupyter-Notebooks aufbauen und betreiben wollen. In der Folge erläutern wir dann, wie diese Plattform effektiv von Datenwissenschaftlern, -Ingenieuren und -Analysten genutzt werden kann.

Use Cases

Wenn wir uns einen typischen Workflow genauer anschauen, können wir sehen, wie die verschiedenen Aufgaben ineinandergreifen:

  1. Datenexploration kann die tabellarische Ansicht von Beispieldaten, explorative Analysen und das Visualisieren von Daten umfassen.

  2. Datenaufbereitung ist eine iterative Aufgabe, die das Bereinigen, Standardisieren, Transformieren, Denormalisieren und Aggregieren von Daten umfassen.

  3. Datenvalidierung ist eine wiederkehrende Aufgabe, die die Ansicht von Beispieldaten, aggregierte Analysen sowie die Visualisierung von Daten umfasst.

  4. Produktrealisierung findet erst zu einem späten Zeitpunkt des Projekts statt und stellt z.B. Software-Pakete für die Produktion oder Schulungsmodelle bereit.

Warum Jupyter?

Wie können nun diese vielfältigen Aufgaben vereinfacht werden? Es wird sich kaum ein Werkzeug finden, das all diese Aufgaben abdeckt und selbst für einzelne Aufgaben sind häufig mehrere Werkzeuge notwendig. Daher suchen wir auf einer abstrakteren Ebene allgemeinere Muster für Tools und Sprachen, mit denen Daten analysiert und visualisiert sowie ein Projekt dokumentiert und präsentiert werden kann. Genau dies wir mit dem Project Jupyter angestrebt.

Das Projekt Jupyter startete 2014 mit dem Ziel, ein konsistentes Set von Open-Source-Tools für wissenschaftliche Forschung, reproduzierbare Workflows, Computational Narratives und Datenanalyse zu erstellen. Bereits 2017 wurde Jupyter dann mit dem ACM Software Systems Award ausgezeichnet - eine prestigeträchtige Auszeichnung, die es u.a. mit Unix und dem Web teilt.

Um zu verstehen, warum Jupyter-Notebooks so erfolgreich sind, schauen wir uns die Kernfunktionen einmal genauer an:

Jupyter Notebook Format

Jupyter Notebooks sind ein offenes, auf JSON basierendes Dokumentenformat mit vollständigen Aufzeichnungen der Sitzungen des Benutzers und des enthalten Code.

Interactive Computing Protocol

Das Notebook kommuniziert mit Rechenkernel über das Interactive Computing Protocol, einem offenen Netzwerkprotokoll basierend auf JSON-Daten über ZMQ und WebSockets.

Kernels

Kernel sind Prozesse, die interaktiven Code in einer bestimmten Programmiersprache ausführen und die Ausgabe an den Benutzer zurückgeben.

Jupyter-Infrastruktur

Eine Plattform für die oben genannten Use Cases erfordert eine umfangreiche Infrastruktur, die nicht nur die Bereitstellung der Kernel sowie die Parametrisierung, Zeitsteuerung und Parallelisierung von Notebooks erlaubt, sondern darüberhinaus auch die gleichmäßige Bereitstellung der Ressourcen.

Es würde jedoch den Rahmen dieses Tutorials sprengen, wenn ich umfassend auf unsere Datenplattform mit Streaming Pipelines und Domain Driven Data Stores eingehen würde. Ich werde mich daher darauf beschränken, wie Nutzer in ihrem Home-Verzeichnis Notebooks erstellen und ausführen können. Auf diese Datei kann der Nutzer dann sowohl mit Jupyter Notebook wie auch mit dem Terminal zugreifen.