Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
de:services:application_services:jupyter:start [2018/10/02 09:09]
bbrauns [Transfer von Daten in das Unix/Linux-Heimatverzeichnis]
de:services:application_services:jupyter:start [2019/10/07 14:55]
bwegman1
Zeile 1: Zeile 1:
 +====== Jupyter / Jupyter-Hub ======
  
 +Die GWDG bietet [[https://​jupyter.gwdg.de|Jupyter-Hub]] ​ im [[de:​services:​application_services:​jupyter:​beta|offenen Testbetrieb]] für interessierte Benutzer von Python, Julia oder R an.
 +
 +===== Was ist Jupyter / Jupyter-Hub?​ =====
 +
 +Juyter bietet die Möglichkeit im Browser interaktiv mit Python, Julia oder R zu arbeiten. Quellcode kann dabei in einem Editor im Browser eingegeben, ausgeführt und überarbeitet werden. Diese Schritte passieren in einem s.g. "​Notebook"​. Jedes Notebook hat einen s.g. "​Kernel"​ der den Typ des Notebooks bestimmt, also ein Python-, Julia- oder R--Notebook.
 +
 +Jupyter-Hub ist das Portal, an dem sich der Benutzer anmeldet, seine laufenden Notebooks verwaltet oder neue startet.
 +
 +Bitte beachten Sie, dass Jupyter auch auf dem [[https://​info.gwdg.de/​docs/​doku.php?​id=en:​services:​application_services:​jupyter:​hpc|SCC]] betrieben werden kann, falls höhere Berechnungsressourcen benötigt werden.
 +===== Wie wird Jupyter / Jupyter-Hub verwendet? =====
 +
 +==== Voraussetzungen ====
 +
 +Da Speicherung und Berechnung serverseitig passieren, muss der Client des Benutzers keine Software installieren oder weitere Voraussetzungen erfüllen außer über einen modernen Browser zu verfügen. Für die Anmeldung an dem Dienst wird ein gültiges GWDG-Benutzerkonto benötigt. ​
 +
 +==== Starten eines Notebooks ====
 +
 +Nach erfolgreicher Anmeldung kann auf der Übersichtsseite über das Dropdown-Menü oben rechts unter "​New"​ mit der Auswahl eines Notebook-Kernels ein neues Notebook gestartet werden. Früher genutzte oder bereits gestartete Notebooks und ihre zugehörigen Dateien finden sich in der Liste mittig der Seite. Neben dem Menü "​New"​ findet sich auch eine Schaltfläche "​Upload",​ über welche Dateien zur Verwendung in Notebooks nach Jupyter-Hub übertragen werden können.
 +
 +Der eigentliche Start eines Notebooks geschieht mit der Auswahl eines Kernels. Das Notebook wird in einem neuen Fenster gestartet und kann sofort verwendet werden. Über das Menü "​Help"​ kann eine Interface Tour gestartet, die Übersicht über Tastaturkürzel angezeigt und die Dokumentationen zu dem verwendeten Kernel (soweit vorhanden) geöffnet werden.
 +
 +==== Beispiele ====
 +
 +Unterhalb des Ordners **public-ro** befinden sich Beispiel-Notebooks aus dem offiziellen [[https://​github.com/​jupyter/​notebook/​tree/​master/​docs/​source/​examples/​Notebook | Jupyter-Projekt ]] die direkt gestartet werden können und die Nutzungsweise von Jupyter näher erläutern.
 +
 +==== Beenden und Verwalten von Notebooks ====
 +
 +Ein aktives Notebook kann über das Menü "​File"​ > "Close and Halt" oder durch schließen des Browser-Fensters/​Tabs geschlossen werden. Das eigentliche Notebook bleibt in den letzten Zustand erhalten und kann über die Übersichtsseite wieder gestartet und die Arbeit daran fortgesetzt werden.
 +
 +Gelöscht wird das Notebook durch Markierung des Eintrags in der Liste und Klick auf das rote Mülleimersymbol.
 +
 +===== Benutzung ===== 
 +
 +  * ⚠ **Bitte beachten Sie**, dass alle Verzeichnisse außer dem Home-Verzeichnis flüchtig sind und beim Schließen des Notebook-Servers verloren gehen.
 +  * Pro Benutzer ist eine Quota von maximal 50GB Speicher und 4GB RAM festgelegt. ​
 +  * jupyter.gwdg.de ist nicht für kontinuierliche Berechnungen über mehrere Tage geeignet.
 +
 +==== Installation zusätzlicher Python Module ====
 +Zusätzliche Python Module können über das Terminal und den Python package manager "​pip"​ installiert werden. Hierzu muss über das Menü "​New"​ -> "​Terminal"​ ein Terminal geöffnet werden. Anschließend wird mit <​code>​pip install --user <​module></​code>​ ein neues Modul in das Home-Verzeichnis installiert.
 +
 +=== Installation von größeren Python Modulen und Disk Space ===
 +
 +Die Installation von größeren Python Modulen wie z.B. "​tensorflow"​ kann mit einer Fehlermeldung "No space left on device"​ abbrechen, da pip bei der Verarbeitung größerer Module den Platz unter "/​tmp"​ ausschöpft. Die folgenden Schritte legen ein neues Verzeichnis für temporäre Daten im wesentlich größeren Benutzerverzeichnis an, welches pip dann für diese Installation benutzt:
 +
 +<code bash>
 +mkdir -v ~/​.user-temp
 +TEMP=~/​.user-temp pip install --user <​module>​
 +</​code>​
 +
 +Der Präfix mit TEMP lässt pip diesen Ort für dieses eine Installation für temporäre Daten verwenden.
 +
 +=== Notebook startet nicht mehr nach Paketinstallation oder Update, Fehler 500 ===
 +
 +Sollte nach einem Upgrade von Paketen oder Installation neuer Pakete kein Notebook mehr startbar sein (Fehler 500), kann es helfen, im Terminal den Pfad ''​.local''​ umzubenennen:​
 +<code bash>
 +mv -v .local/ .local.gwdg-disable
 +</​code>​
 +Dadurch werden alle zusätzlich durch ''​pip''​ installierten Pakete deaktiviert. Das Notebook sollte sich dann wieder starten lassen.
 +==== Installation zusätzlicher Pakete per Conda in einem eigenen Environment ====
 +
 +Die Verwaltung von Softwarepaketen und Environments mit Conda erfolgt in einer Terminal-Sitzung des Notebook-Servers. Dazu muß nach der Anmeldung am Dienst eine Terminal über ''​New -> Terminal''​ gestartet werden.
 +
 +Bevor mit ''​conda''​ gearbeitet wird, sollten die Conda-Funktionen geladen werden (<​b>​Punkt am Anfang beachten!</​b>​):​
 +<code bash>
 +. /​opt/​conda/​etc/​profile.d/​conda.sh
 +</​code>​
 +
 +=== Erstellen eines neuen Environments ===
 +
 +Im Folgenden wird ein neues, einfaches Conda-Environment ''​wikidoku''​ erstellt, beispielhaft das Python-Modul ''​jinja2''​ installiert und das Environment für das Notebook verfügbar gemacht.
 +
 +Erstellen und Aktivieren des Environments:​
 +<code bash>
 +conda create -y --prefix ./wikidoku
 +conda activate ./wikidoku
 +</​code>​
 +Das nun aktivierte Environment wird dem Notebook-Server bekannt gemacht. ''​--name''​ und ''​--display-name''​ können frei gewählt werden, letzteres wird später in der Auswahl des Notebooks angezeigt. Der zweite Befehl listet alle bekannten Environments auf.
 +<code bash>
 +python -m ipykernel install --user --name wikidoku --display-name "​Python (wikidoku)"​
 +jupyter kernelspec list
 +</​code>​
 +Sollte die Installation des Kernels mit der Fehlermeldung abbrechen ''/​usr/​bin/​python:​ No module named ipykernel'',​ dann muß zuerst das ''​jupyter''​-Module in dem aktuellen Environment installiert werden:
 +<code bash>
 +python -m pip install jupyter
 +</​code>​
 +
 +Als nächstes wird beispielhaft das Paket ''​jinja2''​ installiert. An dieser Stelle kann nun beliebig Software aus beliebigen Conda-Channels installiert werden. Abschließend wird das Environment verlassen.
 +<code bash>
 +conda install -y jinja2
 +conda deactivate
 +</​code>​
 +
 +=== Auswählen eines Environments ===
 +
 +== Neustart des Notebook-Servers ==
 +
 +Wurde ein neues Environment erstellt, muß zunächst der Notebook-Server neu gestartete werden. Dazu alle offenen Terminals und Notebooks schließen und in der Jupyter-Übersicht oben rechts auf ''​Control Panel''​ klicken. Mit ''​Stop My Server''​ den Notebook-Server anhalten und mit ''​Start My Server''​wieder starten.
 +
 +Über ''​New ->''​ kann nun ein neues Notebook mit dem neue Environment gestartet werden. Bei einem vorhandenen Notebook kann nach dem Öffnen der Kernel gewechselt werden über das Menü ''​Kernel -> Change Kernel''​.
 +
 +=== Installieren anderer Kernel in einem Conda-Environment ===
 +
 +Die Installation eines eigenständigen Python-Kernels nur für das aktuelle Environment ist möglich. Hier wird beispielhaft die Installation eines alten python-2.7-Kernels gezeigt.
 +
 +Ein neues Environment wird nach den o.g. Schritten erzeugt und aktiviert.
 +Danach erfolgt die Installation der Kernels, des ''​jupyter''​-Moduls für den Kernel und abschließend wird der neue Kernel für den Notebook-Server aktiviert:
 +<code bash>
 +conda install -y python=2.7
 +python -m pip install jupyter
 +python -m ipykernel install --user --name oldpython --display-name "​Python 2.7 (oldpython)"​
 +</​code>​
 +
 +Der neue Kernel steht nun in neu-gestarteten Notebooks (s.o.) in der Kernel-Auswahl zur Verfügung.
 +Die aktuelle Kernel-Version kann in einem Notebook überprüft werden mit den folgendem Code:
 +<code python>
 +import sys
 +print (sys.version)
 +</​code>​
 +
 +==== Installation zusätzlicher R Pakete ====
 +<​code>​
 +1) mkdir -p ~/​R/​library;​ mkdir ~/temp
 +2) create a file "/​home/​jovyan/​.Renviron"​ with 2 lines:
 +"​R_LIBS_USER=/​home/​jovyan/​R/​library"​ and "​TMPDIR=/​home/​jovyan/​tmp"​
 +3) R
 +4) source("​https://​bioconductor.org/​biocLite.R"​)
 +5) biocLite()
 +
 +This is because R downloads and installs packages to and from the default tmp directory,
 +from which it cannot execute files. Using a tmp directory inside the home directory solves
 +this problem.
 +
 +How to install packages from Github (in R):
 +
 +1) library(devtools)
 +2) options(unzip = "​internal"​)
 +3) install_github("​repo/​package"​)
 +
 +</​code>​
 +
 +==== Transfer von Daten in das Unix/​Linux-Heimatverzeichnis ====
 +Um den Zugriff auf größere Datenmengen auf jupyter.gwdg.de zu erleichtern,​ kann das Unix/​Linux-Heimatverzeichnis hinzugezogen werden. Hierfür werden Daten mit dem Tool rsync transferiert. Nachfolgend ein Beispiel, das auf die jeweilige Umgebung des Benutzers angepasst werden muss:
 +
 +Zunächst muss über das jupyter-Menü ein neues Terminal geöffnet werden: „New“ → „Terminal“
 +
 +<​code>​
 +ls mynotebooks/​
 +myfile.txt
 +rsync -av ~/​mynotebooks/​ bbrauns@login.gwdg.de:/​usr/​users/​bbrauns/​mynotebooks/​
 +bbrauns@login.gwdg.de'​s password:
 +sending incremental file list
 +./
 +myfile.txt
 +
 +sent 145 bytes  received 44 bytes  75.60 bytes/sec
 +total size is 12  speedup is 0.06
 +</​code>​
 +Für den Zugriff auf die Daten im Unix/​Linux-Heimatverzeichnis von einem Windows-Rechner siehe: [[de:​services:​storage_services:​file_service:​samba:​start|Samba Server]]
 +
 +==== Zusätzlichen kernel mit pipenv bereitstellen ​ ====
 +
 +Open a new jupyter terminal via the menu “New” → “Terminal”
 +
 +<​code>​
 +pip install pipenv --user
 +mkdir myproject
 +cd myproject
 +export PATH=~/​.local/​bin/:​$PATH
 +pipenv --python /​usr/​bin/​python3.6 #needed because of conda
 +pipenv install ipykernel networkx
 +pipenv shell
 +ipython kernel install --user --name=projectname
 +</​code>​
 +
 +  * Stop and restart server via control panel
 +  * Afterwards "​projectname"​ is usable as new kernel ​
 +
 +==== Zusätzlichen julia kernel installieren ====
 +** !Experimentell! **
 +
 +<​code>​
 +(Terminal, Home Verzeichnis)
 +Ggf. .julia und .julia_history Verzeichnis löschen für sauberen Neuanfang.
 +mkdir .julia_bin
 +wget https://​julialang-s3.julialang.org/​bin/​linux/​x64/​1.0/​julia-1.0.1-linux-x86_64.tar.gz
 +tar -xvzf julia-1.0.1-linux-x86_64.tar.gz
 +cd julia-1.0.1/​bin/​
 +./julia
 +
 +(Julia REPL)
 +
 +ENV["​JUPYTER"​]="​jupyter"​
 +import Pkg
 +Pkg.add("​IJulia"​)
 +using IJulia
 +exit()
 +
 +(Server neustarten)
 +</​code>​
 +
 +
 +
 +===== Mehr Informationen zum offener Testbetrieb =====
 +
 +Welche Bedeutung der [[de:​services:​application_services:​jupyter:​beta|offene Testbetrieb]] für die praktische Verwendung von [[https://​jupyter.gwdg.de|Jupyter-Hub]] hat, finden sich in den Erläuterungen zum [[de:​services:​application_services:​jupyter:​beta|offenen Testbetrieb]]. ​