# Coffee Lecture - Using JupyterHub on bwUniCluster
This Coffee Lecture has a look on the JupyterHub running on bwUniCluster, focusing on different options to manage packages to run your analyses in Jupyter notebooks.
Specifically, we discuss:
- JupyterLab base modules
- Virtual environments (venv)
- Miniforge (conda)
- Container
---
## Overview
JupyterHub is a **web-based programming and data-analysis environment**, providing a more contemporary approach to interactive computing on bwUniCluster. In contrast to an interactive session on the terminal (SSH login), your session remains active
Please do not confuse the **JupyterHub on bwUniCluster** discussed here with the **bwJupyter** state service:
- JupyterHub on bwUniCluster requires an entitlement for bwHPC and serves **research and teaching**
- bwJupyter is focused on teaching (only) and can be used by any state-university member in Baden-Württemberg without any special entitlement.
- Using scientific software packages and programming environments work differently across the two services.
## Getting started
### Launching a session
Connect to your campus-network and go to [https://uc3-jupyter.scc.kit.edu/](https://uc3-jupyter.scc.kit.edu/) to login.
Then, select the required compute resources. Particularly, specify:
- Number of CPU cores
- Number of GPUs
- Runtime
- JupyterLab Base module
Most of the other parameters of the session (e.g. RAM, partition) are automatically adjusted depending on this choice.
### Jupyter Notebooks
Data analysis and programming on JupyterHub is centered around interactive notebooks which combine
- code
- formatted text (e.g. documentation), and,
- (potentially interactive) graphics.
Within a notebook, elements are structured within cells; Different cell-types (Markdown, Code, Raw) are available for the different types of content.
Code is executed by an interpreter attached to a notebook, the so-called kernel. The kernel basically provides the interface to the underlying programming environment (e.g. Python, Julia, R etc.)
Code in cells is executed (or interpreted) by pressing **CTRL**+**ENTER**.
### Logging out and stopping the server (release compute resources)
After completing the analyses, the Server (i.e. the JupyterLab session) should be **stopped**: Go to *File* -> *Hub Control Panel* -> *Stop Server*.
This ensures that the compute resources allocated to your session are released.
---
## Further information and support
-**Detaileddocumentation** is provided in the [bwHPC Wiki](https://wiki.bwhpc.de/e/BwUniCluster3.0/Jupyter).
-Do not hesitate to submit a ticket to the **bwSupport** if you have any questions:[https://bw-support.scc.kit.edu/](https://bw-support.scc.kit.edu/).
The following example illustrates the the use of a GPU using an AI-based text-to-image generator (StableDiffusion). JupyterHub verwendet werden können.
### Preparation
First, we confirm that a GPU is available in our session:
2025-12-03 18:02:03.234241: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
2025-12-03 18:02:10.251678: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2025-12-03 18:02:26.560142: I tensorflow/core/util/port.cc:153] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.