Dokumentation zu unserem selbst gehosteten JupyterHub.
Wenn Nutzer:innen im JupyterHub eine Maschine eines bestimmten Profils starten, so wird im Hintergrund ein (JupyterLab)
Notebook-Image als Container bereitgestellt. Darin wird ein User-spezifisches NFS-Verzeichnis gemounted, das auf einem
extra dafür bereitgestellten NFS-Server persistiert wird. So gehen die Daten der Nutzer:innen innerhalb der Notebooks
bei Neustart der Maschinen nicht verloren.
Folgende Images werden in den Profilen verwendet:
| Image Name | Beschreibung | Aktuelle Version | Python Version | Vorinstallierte Software & Packages |
|---|---|---|---|---|
| mylab-base | Basis Image des myLab. Es basiert auf dem "offiziellen" SciPy-Image des Jupyter Projekts, erweitert um eine Sammlung an myLab-spezifischen Packages (siehe unten) | 1.2.1 | 3.11 | Alles von hier und hier |
| mylab-base-gpu | Das selbe wie mylab-base nur basierend auf einem Nvidia CUDA Image, statt plain Ubuntu | 1.2.1 | 3.11 | siehe mylab-base |
| mylab-datascience | Das neue Datascience Sammel-Image des myLab. Es basiert auf dem mylab-base Image und setzt darauf die Paketsammlungen für Spar, R und Julia des Jupyter Projekts auf. | 1.2.1 | 3.11 | Alles von mylab-base, sowie von hier, hier und hier |
| mylab-datascience-gpu | Das selbe wie mylab-datascience nur basierend auf mylab-base-gpu. | 1.2.1 | 3.11 | siehe mylab-datascience |
| mylab-tensorflow | Image basierend auf mylab-base-gpu. Erweitert um eine Custom-Installation von Tensorflow. | 1.2.1 | 3.11 | Alles von mylab-base-gpu zzgl. Tensorflow 2.15 |
| mylab-torch | Image basierend auf mylab-base. Die Installation von Torch bringt automatisch die Installation der CUDA-Bibliotheken mit sich. | 1.2.1 | 3.11 | Alles von mylab-base zzgl. Torch 2.2.1 inkl. CUDA Libraries |
| Image Name | Version | Beschreibung | Aktuelle Version | Python Version | Packages |
|---|---|---|---|---|---|
| mylab-tfx-zimmermann | 0.1.0-rc2 | Bei diesem Image handelt es sich um eine individuelle Konfiguration für eine Lehrveranstaltung bei Prof. Zimmermann. Für den Kurs ist die Verwendung von Tensorflow Extended vorgesehen, welches in der aktuellsten Release-Version massive Konflikte mit den bestehenden Images Verursacht hat. | 1.3.1 | 3.10 | Eine Auflistung der Packages inkl. Versionen findet sich hier. |
Mit den Profilen werden die Images und die Ressourcen für die JupyterHub-Instanzen festgelegt. Die Profile sind in der
Tabelle aufgelistet:
| Profile Name | Beschreibung | Images | CPU Cores | RAM in GB | GPU Options |
|---|---|---|---|---|---|
| myLab SciPy - (default image) | Für die allgemeine Bearbeitung von Problemen mit Python und z.B. SciKit-Learn. | mylab-base | 2, 4, 6 | 2, 4, 6 | - |
| myLab LLM - Large Language Model Development | Für die Entwicklung von Anwendungen die LLM-Services anbinden. | mylab-torch | 2, 4, 6 | 2, 4, 6 | - |
| myLab DataScience - Spark, R, Julia | Für fortgeschrittene Data Science Anwendungen mit Spark, R und Julia. | mylab-datascience, mylab-datascience-gpu | 2, 4, 6 | 4, 6, 8 | None, A100 (MIG), A2, A4000 |
| myLab Advanced Machine Learning - Torch & TensorFlow | Es stehen Images für die Verwendung von PyTorch und Tensorflow zur Verfügung. | mylab-tensorflow, mylab-torch | 4, 6, 8 | 8, 16, 24, 32 | None, A100 (MIG), A2, A4000 |
| Lehrveranstaltungen Spezial | Images mit speziellen Anforderungen für bestimmte Lehrveranstaltungen. | mylab-tfx-zimmermann | 4, 6, 8 | 8, 16, 24, 32 | None, A100 (MIG), A2, A4000 |
Nachfolgende GPUs stehen dem myLab derzeit zur Verfügung
| Bereitgestellt von | GPU Typ | Anzahl | Speicher (GB) | Verfügbar im JHub |
|---|---|---|---|---|
| myLab | Nvidia A2 | 4/4 | 16 | ❌ |
| Prof. Beuter | Nvidia A6000 | 3/3 | 48 | ❌ * nur für Projekte |
| Prof. Hänsel | Nvidia A6000 | 1/1 | 48 | ❌ |
| Prof. Töbermann | Nvidia A4000 | 4/4 | 16 | ✅ |
| Prof. Drews | Nvidia A100 | 1/1 | 40 | ✅ * als MIG-Devices mit je 5GB VRAM |
| Prof. Kratzke | Nvidia A100 | 1/1 | 40 | ✅ * als MIG-Devices mit je 5GB VRAM |
| Prof. Kratzke | Nvidia A4000 | 1/1 | 16 | ✅ |
| Prof. Gumm | Nvidia A30 | 1/1 | 24 | ❌ |
| HI Lübeck | Nvidia H100 | 2/2 | 94 | ❌ |
Du kannst Daten aus dem JupyterHub einfach in ein Git-Repository übertragen oder Daten von dort in dein Jupyter-Notebook herunterladen.
Bevor du dein GitLab-Repository im JupyterHub verwenden kannst, benötigst du Zugriff auf
Eine 3. Möglichkeit mit Benutzername und Passwort des THL-IT-Kontos entfällt ab dem 4.3.2025 ersatzlos. Bitte SSH-Schlüssel oder Personal Access Token benutzen!
Bei dieser Anmeldemethode werden 2 zusammengehörige Schlüssel generiert. Mithilfe des privaten Schlüssels kann man sich gegen den öffentlichen Schlüssel, welcher im GitLab hinterlegt ist, authentifizieren. Die beiden Schlüssel überleben auch einen Neustart deiner JupyterHub-Session, sodass du auch nach Tagen erneut pushen und pullen kannst.
Wir empfehlen dringend einen eigenen SSH-Schlüssel für die Verwendung mit dem JupyterHub zu generieren und nicht einen bereits vorhandenen privaten Schlüssel hochzuladen.

ssh-keygen -t ed25519 -C "jupyterhub_<Username>" in das Fenster ein, wobei du deinen Usernamen statt des Platzhalters eingibst und bestätige die Eingabe mit der Enter-Taste.

cat ~/.ssh/id_ed25519.pub und Bestätigung durch Enter.


Bei dieser Anmeldemethode wird dein THL-IT-Konto Passwort durch einen zeitlich begrenzten Token ersetzt, der im GitLab verwaltet wird. Somit musst du nicht mehr dein eigentliches Passwort für Git-Befehle verwenden.

api, read_repository und write_repository. Klicke abschließend auf Create personal access token.Stelle sicher, dass du die scopes (read|write)_repository und nicht fälschlicherweise (read|write)_registry angeklickt hast!

3. Notiere dir den Personal Access Token an einem sicheren Ort. Dies ist das einzige und letzte Mal, dass du ihn siehst. Dur wirst ihn aber mehrfach benötigen!

Mit diesen Zugangsdaten kannst du nun über das Git-Menü im JupyterHub ein Repository klonen oder Daten in ein Repository pushen. Das Git-Menü findest du im Menü am oberen Bildschirmrand.

Trage im Eingabefeld für die Git URI die entsprechende SSH oder HTTPS URL ein, die du in deinem Git-Repository findest.

Pull und Push Operationen können nun bequem über das Git-Menü am oberen Bildschirmrand durchgeführt werden. Commits können im Git-Tab auf der linken Bildschirmseite erzeugt werden.

All die Commits funktionieren natürlich auch über die Kommandozeile. Die entsprechenden Kommandos finden sich in der Git-Dokumentation.