[PYTHON] Verwenden Sie Docker und Jupyter als Verteilungsmethode für die Ausführungsumgebung für Workshops zur Datenanalyse und -visualisierung

Einfach zu reproduzierende Datenanalyse- und Visualisierungsumgebung

Ich halte manchmal Vorträge über die Verwendung verschiedener Tools bei der Arbeit, aber das Problem, das mich derzeit verletzt, ist die Verteilung der hier vorbereiteten Beispiel- und Tutorial-Ausführungsumgebung. Normalerweise ist beim Ausführen eines einzelnen Datenanalyse-Workflows selten nur eine einfache Python- oder R-Ausführungsumgebung erforderlich. In vielen Fällen ist Python SciPy / NumPy / Pandas, und Vorlesungen mit R für Biologen sind [Bioconductor](http: //www.bioconductor). Sie müssen ein Standardtool wie org /) installieren und dann zusätzliche Bibliotheken installieren, um die gewünschte Anwendung auszuführen. Natürlich ist es möglich, eine mit allem gepackte Datei der virtuellen Maschine zu verteilen, aber es gibt Probleme wie die Erhöhung der von Ihnen zu verteilenden Füllgröße und das Speichern / Automatisieren der zum Erstellen der virtuellen Maschine erforderlichen Schritte.

Glücklicherweise ist es in letzter Zeit durch die Kombination verschiedener Werkzeuge möglich geworden, die gesamte Umgebung für die Ausführung derart komplizierter Aufgaben zu reproduzieren. Der Zweck dieses Artikels ist es, die experimentelle Methode zu teilen, die ich kürzlich in Tutorial of a Society ausprobiert habe. Wir würden uns freuen, wenn Sie auf Probleme hinweisen und Feedback zu Verbesserungen geben könnten. __ Diese Methode ist für verschiedene Workshops und Tutorials zur Datenanalyse und -visualisierung vorgesehen, kann jedoch mit einigen Änderungen auch als Starter-Kit für Hacker verwendet werden __.

Richten Sie die Umgebung der Teilnehmer aus

Wenn Sie ein Tutorial durchführen möchten, müssen Sie die Umgebung der Teilnehmer vereinheitlichen. Dies ist gut, wenn der Organisator alle Maschinen im Voraus vorbereiten kann. Wenn Sie jedoch Ihre eigenen Maschinen mitbringen, ist dies ein sehr problematisches Problem, wenn die Softwareabhängigkeiten kompliziert sind oder die Installation selbst nicht einfach ist. Am Tag der Veranstaltung kommt es häufig vor, dass "Ich habe an meiner Maschine gearbeitet ...". Um dies zu lösen, haben wir die folgenden Tools kombiniert.

GitHub GitHub wird als Methode zum Verteilen der Umgebung und des Codes verwendet. Bei der Verteilung virtueller Maschinen ist dies aufgrund der Größe der Datei nicht möglich. Sie können dies jedoch vermeiden, indem Sie Docker verwenden, das als Nächstes vorgestellt wird.

Docker

Verwenden Sie Docker für die Umgebungsverteilung zur Analyse und Visualisierung einschließlich Abhängigkeiten. Eine große Anzahl praktischer Umgebungen wird über Docker Hub verteilt, und Sie können sie so verwenden, wie sie sind, aber in Wirklichkeit gibt es einige Abhängigkeiten. Wird hinzugefügt werden. Es ist ein großer Vorteil, durch Vererbung des öffentlichen Umfelds ein neues bauen zu können.

IPython Notebook / Jupyter Dieses Mal habe ich die Visualisierung von Diagrammdaten mit Python eingeführt und daher IPython Notebook als Mittel zum Verteilen von Beispielcode verwendet. Es gibt viele Artikel über IPython Notebook (ab der nächsten Version sind der Notebook-Teil und der Sprachkernel-Teil unabhängig und der Note-Teil heißt Jupyter). Bitte beziehen Sie sich darauf. Darüber hinaus gibt es ein Docker Hub-Repository, das vom IPython-Projekt selbst verwaltet wird, und ein Image mit vorinstalliertem SciPy, NumPy, Pandas usw.. Da scipyserver /) vorbereitet ist, ist die Mindestaddition erforderlich, indem Sie dies als übergeordnetes Element angeben und die Docker-Datei schreiben.

Tatsächliches Verfahren

Zielgruppe

Diesmal standen Menschen, die in Labors und Regierungsbehörden arbeiteten, im Mittelpunkt des Publikums. Mit anderen Worten, Menschen, die als Mittel programmieren, aber keine Vollzeitprogrammierer sind. Wenn Sie sich also an Programmierer wenden, können einige der folgenden Schritte weggelassen werden.

1. Ankündigungen und Softwareinstallationen für Studenten

Um sich auf die wesentlichen Teile der Vorlesung zu konzentrieren und keine Zeit mit der Installation zu verschwenden, wenden Sie sich zunächst an die Teilnehmer, um die erforderliche Software im Voraus auf ihrem Laptop installieren zu lassen. Der Vorteil dieser Methode besteht darin, dass Sie jeden Workflow einfach ausführen können, indem Sie die folgenden beiden installieren.

Git Dies war unvermeidlich, da wir über GitHub das verteilten, was wir brauchten. Dies ist ebenfalls ein Aufwand, aber es ist schwierig, diesen Teil zu vereinfachen. Ich möchte Sie daher bitten, sich daran als Wissen zu erinnern, das in Zukunft verwendet werden kann. Insbesondere wenn Sie das vorhandene GitHub-Repository teilen und klonen können, gibt es vorerst kein Problem.

Github-Konto

Glücklicherweise hatte diesmal jeder ein Konto, so dass es reibungslos verlief, aber ich sollte Ihnen sagen, dass Sie im Voraus ein Konto haben, damit Sie dies nicht vergessen.

Docker und Boot2docker

Die Installation von Docker sollte für alle Benutzer mit Computerkenntnissen einfach sein. Diesmal war der Vortrag auf Englisch, also sagte ich ihm, er solle sich auf dieses Video beziehen. Es wird eine Gebühr erhoben, aber die ersten drei Kapitel, einschließlich Installationsanweisungen, sind kostenlos erhältlich:

Außerdem ist die offizielle Dokumentation umfangreich. Wenn Sie sich also darauf beziehen, sollten Sie sie mit ziemlicher Sicherheit einrichten können. Die meisten Teilnehmer sagen oft Windows oder Mac, daher ist es wichtig, das Beispiel auf drei Plattformen zu testen, einschließlich Linux. Diesmal waren rund 90% der Teilnehmer Macs, daher war es für mich persönlich einfach.

2. Vorbereitung des GitHub-Repositorys für die Verteilung des Beispielcodes

Bereiten Sie zunächst ein GitHub-Repository als Container für alles vor, was Sie für Ihre Vorlesung verwenden, mit Ausnahme großer Datendateien. Packen Sie dort ein, was Sie brauchen.

Im Fall einer Vorlesung wie dieser denke ich, dass die Grundstruktur des Repository wie folgt ist.

~/g/vizbi-2015 git:master ❯❯❯ tree
.
├── Dockerfile
├── LICENSE
├── README.md
├── graph-tool-pub-key.txt
└── tutorials
    ├── Lesson_0_IPython_Notebook_Basics.ipynb
    ├── Lesson_1_Introduction_to_cyREST.ipynb
    ├── Lesson_2_Graph_Libraries.ipynb
    ├── Lesson_3_Visualization.ipynb
    ├── answers
    │   └── Lesson_1_Introduction_to_cyREST_answer.ipynb
    ├── data
    │   ├── galFiltered.gml
    │   ├── sample.dot
    │   └── yeast.json
    └── graph-tool-test.ipynb

3 directories, 13 files

Schauen wir uns den spezifischen Inhalt an.

Dockerfile Es dient zum Einstellen des in der Vorlesung verwendeten Bildes. Genau genommen ist es in Ordnung, das Image ohne Docker Hub bereitzustellen. Wenn die Teilnehmer jedoch später ihr eigenes Image erweitern möchten, können sie sofort selbst einen neuen Build erstellen. Es ist besser, es zusammen mit zu verteilen.

README.md Schreiben Sie zunächst die Schritte bis zu dem Punkt, an dem Sie den Container als Kurzanleitung ausführen können. Sie benötigen außerdem einen Link zur detaillierten Dokumentation. Da dies häufig behoben wird, verwenden Sie das Wiki von GitHub usw. für das Dokument.

Nur-Notizbuch-Verzeichnis (Tutorials)

Es ist eine gute Idee, Ihre .ipynb-Dateien zusammen zu halten, um Ihre Verzeichnisse der obersten Ebene sauber zu halten. Speichern Sie hier die brauchbaren Notizen zur Verwendung in der eigentlichen Werkstatt.

Datenverzeichnis (tutorials / data)

Wenn die im Workshop verwendeten Daten sehr klein sind, legen Sie sie ebenfalls im Repository ab. Ich denke, es gibt verschiedene Meinungen darüber, was es groß macht, aber wenn es um Megabyte an Daten geht, ist es sicherer, eine andere Verteilungsmethode in Betracht zu ziehen, als sie auf GitHub zu verwalten. Bei Gigabyte ist es primitiv, aber sicher, USB-Speicher zu verwenden. Lassen Sie sie vor dem Start einzeln kopieren und drehen.

3. Testen in einer realen Umgebung

Der Schwerpunkt liegt hier auf der Leichtigkeit, mit der mehrere Personen dieselbe Umgebung gemeinsam nutzen können, sodass wir nicht viel über Docker erfahren. Es reicht aus, Ihnen mitzuteilen, dass es sich um eine tragbare und erweiterbare Ausführungsumgebung handelt. Wenn Sie jedoch nicht nur die folgenden Konzepte vermitteln, ist dies verwirrend.

Data Volumes Da davon ausgegangen wird, dass Sie lernen, indem Sie den Inhalt der Notiz selbst neu schreiben, mounten Sie das Datenvolumen des Hosts mit der Option -v und verwenden Sie es. Lesen Sie unbedingt diesen Abschnitt, um zuerst mehr über diese Funktion zu erfahren.

Stellen Sie sicher, dass die Bearbeitung auf der Containerseite und das Hinzufügen von Dateien auf der Hostseite in Echtzeit angezeigt werden, indem Sie sie in das geklonte Verzeichnis eingeben und mit den folgenden Optionen ausführen. Erhalten

-v $PWD:/notebook

__Hinweis: Wenn Sie Boot2Docker verwenden, kann die Option -v nur das Verzeichnis / Users (Mac OSX) oder C: \ Users (Windows) mounten __. Bitte beachten Sie, dass es einige Personen gab, die das aktuelle Verzeichnis nicht durch Angabe anderer Werte bereitstellen konnten. Für Linux gibt es keine Einschränkungen.

Führen Sie dann alle Notebooks aus, um festzustellen, ob Probleme vorliegen. Wenn Sie nach dem Schnellstart arbeiten und fehlerfrei ausführen können, gibt es kein Problem.

4. Am Tag

Ich denke, der Vortrag wird zwischen Folien und Notizbüchern hin und her gehen. Es ist praktisch, einen virtuellen Desktop (Mission Control auf einem Mac) zu verwenden, um zwischen dem Folien-Desktop und dem Notizausführungs-Desktop zu wechseln.

Der Inhalt ist nicht sehr allgemein und möglicherweise nicht hilfreich, aber hier sind die Folien und Hinweise:

Problem

Ich habe dieses Verfahren ausprobiert und einige Probleme festgestellt. Notieren Sie sich dies.

Installieren Sie Docker

Die Installation von Docker ist recht einfach, und obwohl gut gepflegte Dokumentationen und Videos verfügbar sind, gab es immer noch einige Teilnehmer, die über die Installation gestolpert sind. Es scheint, dass jeder es vollständig installieren kann, es sei denn, es kann durch Doppelklicken auf das Installationsprogramm oder mithilfe eines Paketmanagers wie Brew / Apt-Get mit Null-Einstellungen verwendet werden.

In diesem Fall gab es eine Person, die den Teil des Hinzufügens einer Exportanweisung zu .bashrc usw. und des Hinzufügens einiger Umgebungsvariablen aufgrund von boot2docker nicht verstand.

Erforderliche Fähigkeiten und Endziel

Leider gab es aufgrund fehlender Vorkenntnisse eine Person, die überhaupt nicht folgen konnte. Leider können diese Fehlanpassungen auftreten. Daher ist es wichtig, dass Sie Ihr Endziel und das Wissen kennen, das Sie unbedingt benötigen.

Bild ziehen

Wie Sie wissen, ist das Ausführen von Docker selbst sehr einfach, aber beim ersten Ausführen dauert es sehr lange, alle erforderlichen Abhängigkeiten aus dem Docker Hub-Repository herunterzuladen. Aus diesem Grund habe ich die Teilnehmer gebeten, das als Hausaufgabe verteilte Bild nur mit dem Befehl run auszuführen, aber ich habe die erforderliche Bedeutung nicht fest vermittelt, so dass es sehr schwierig war, den Container am Veranstaltungsort zu starten. Einige Leute haben sich Zeit genommen. Dieses Mal war das Labornetzwerk ziemlich schnell, also ziemlich gut, aber es gibt Fälle, in denen dies aufgrund von Bandbreitenbeschränkungen überhaupt nicht möglich ist. Die Docker-Installationsdokumentation bestätigt den Vorgang, indem Sie sich bei der Shell des Ubuntu-Containers anmelden. Außerdem sollten Sie sie anweisen, das am Vortag verwendete Image auszuführen.

Zusammenfassung

Es war mein erstes Mal, dass ich diese Methode verwendete, also war ich besorgt, ob sie funktionieren würde, aber ich schaffte es, sie zu beenden. Wir werden weiterhin nach effizienteren und zuverlässigeren Methoden durch Tutorials und andere Mittel suchen.

Recommended Posts

Verwenden Sie Docker und Jupyter als Verteilungsmethode für die Ausführungsumgebung für Workshops zur Datenanalyse und -visualisierung
Visualisierung und Analyse von Stava Twitter-Datenstandortinformationen
Python-Visualisierungstool für die Datenanalyse
Datenanalyse zur Verbesserung von POG 2 ~ Analyse mit Jupiter-Notebook ~
Bereiten Sie eine Programmiersprachenumgebung für die Datenanalyse vor
Verwendung von Datenanalysetools für Anfänger
Aufbau der Kissenumgebung - Für Docker + iPython (und OpenCV)