🚀 JupyterHub @ EURECOM - User Guide
Welcome to the JupyterHub platform hosted at EURECOM. This guide reflects the latest configuration, including the new environment profiles and the live resource availability indicators.
🌐 Accessing the Platform
- Open your web browser (preferably Firefox or Chrome).
- Navigate to: https://jupyterhub.slices.cs.eurecom.fr/
🔐 Authentication
You will be redirected to the Keycloak login portal.
Supported login methods
- GitLab users
- SLICES RI users
Your authentication method is used to determine the storage backend automatically.
🧬 Cluster architecture
The Kubernetes cluster is heterogeneous and includes both ARM64 and AMD64 worker nodes.
- ARM64 nodes host GH200 GPU workloads, full-GPU profiles and ARM64 CPU-only profiles.
- AMD64 nodes host CPU-only x86_64 profiles, the dedicated A100 40GB GPU and the AMD GPU profiles.
What this means for you
- Some Python packages or binaries are architecture-specific.
- If you need strict x86_64 compatibility, choose a CPU x86_64, A100 or AMD GPU profile.
- If you choose an environment tied to a specific architecture, your server will be scheduled only on matching nodes.
🎯 Choosing your environment
After authentication, you will see an interactive environment selection page with cards grouped by resource type and framework.
The interface now includes:
- live availability indicators for GPU and CPU resources,
- automatic resource management,
- support for multiple named servers,
- custom images for PyTorch, OAI and TensorFlow.
Available profiles
1) CPU-only profiles
CPU Xeon (x86_64, bare-metal)
- 4 slots available
- 8 CPU cores, 8GB RAM
- Best for CPU-intensive development and light data analysis
CPU Standard (x86_64, virtual machines)
- 12 slots available
- 8 CPU cores, 8GB RAM
- Best for standard compute tasks on Proxmox-based VMs
CPU ARM64
- 3 slots available
- 8 CPU cores, 8GB RAM
- Best for ARM64-compatible workloads
Each CPU profile is available with the following frameworks:
- PyTorch
- OAI
- TensorFlow
2) GPU profiles - MIG slices on GH200
GPU Small (MIG 1g.18gb)
- 14 slices available
- 8 CPU cores, 20GB RAM
- 18GB VRAM
- Ideal for prototyping and development
GPU Medium (MIG 2g.36gb)
- 6 slices available
- 16 CPU cores, 40GB RAM
- 36GB VRAM
- Suitable for model training and experimentation
GPU Large (MIG 7g.144gb)
- 2 slices available
- 32 CPU cores, 128GB RAM
- 144GB VRAM
- Designed for large-scale research workloads
Each GPU MIG profile is available with:
- PyTorch
- OAI
- TensorFlow
3) Full GPU profiles
GH200 Full GPU (96GB)
- 1 full GPU available
- 48 CPU cores, 400GB RAM
- 96GB VRAM
- For very large or memory-intensive workloads
A100 x86_64 (40GB)
- 1 GPU available
- 16 CPU cores, 80GB RAM
- 40GB VRAM
- For high-performance x86_64 workloads
These profiles are also available with PyTorch, OAI or TensorFlow images.
4) Specialized profiles
BF3 DPU
- 1 slot available
- 8 CPU cores, 16GB RAM
- Dedicated access to the NVIDIA BlueField-3 DPU
- Intended for OAI workloads requiring DPU offloading
Only one DPU session can run at a time.
AMD GPU
- 2 slots available
- 16 CPU cores, 32GB RAM
- AMD Ryzen AI Max+ 395 with Radeon 8060S
- AMD GPU (ROCm)
- Available for PyTorch AMD and OAI AMD images
💾 Storage and persistence
Storage is automatically selected according to the authentication context.
| Login method | Storage backend | Notes |
|---|---|---|
| SLICES RI | JuiceFS | S3-backed distributed storage |
| GitLab | NFS | Traditional shared filesystem |
Your home directory at /home/jovyan/ is persistent across sessions and environments.
✅ Starting your session
- Select an environment card.
- Review the live availability indicator for the selected resource.
- Click Start.
- Wait for the server to initialize (typically 1-3 minutes).
- You will be redirected to JupyterLab.
🛠️ Working in JupyterLab
Pre-installed tools
All environments include:
- JupyterLab / Notebook interface
- Python 3 with scientific libraries
- Git with automatic configuration based on your identity
- CUDA toolkit for GPU environments
- sudo access for package installation
Installing additional packages
Python packages:
pip install package-name
System packages:
sudo apt update
sudo apt install package-name
🔌 Network capabilities
Your environment includes:
- standard network access for packages and datasets,
- OAI networking support through the
oai0interface, - BF3 DPU networking support in the dedicated DPU profile,
- access to external APIs and services.
🔑 SSH access for OAI environments
OAI containers can expose SSH on the oai0 interface. Direct SSH access from your laptop is not possible unless you first connect through a jump host.
Procedure
- Open JupyterLab and download your private key from the
.sshdirectory. - Connect to the jump host:
ssh <your_login>@lilix.slices.cs.eurecom.fr
- From the jump host, connect to your container using the private key:
ssh -i ~/.ssh/jupyter_id_ed25519 jovyan@<IP_from_connect_info.txt>
First-time setup
- In JupyterLab, open the file browser.
- Enable hidden files.
- Go to
.sshand downloadjupyter_id_ed25519. - Restrict its permissions:
chmod 600 ~/.ssh/jupyter_id_ed25519
The key is generated automatically on first start and stored in your persistent home directory.
🌍 Accessing web applications through the JupyterHub proxy
Services running locally in your environment can be exposed through the JupyterHub proxy.
Example:
https://jupyterhub.slices.cs.eurecom.fr/user/<username>/proxy/<port>/
📊 Managing multiple sessions
You can run up to 3 named servers simultaneously:
- Click your username in the top-right corner.
- Open the Hub Control Panel.
- Click Add New Server.
- Choose a different environment for each server.
💤 Resource management and session lifecycle
Idle behavior
| Scenario | What happens |
|---|---|
| Browser open and kernel running | Session stays alive indefinitely |
| Browser open and kernel idle | Kernel is stopped after 2h on GPU profiles and 4h on CPU profiles |
| Browser closed but workload running | Session stays alive thanks to activity detection |
| Browser closed and nothing running | Session is reclaimed after 4h |
Running notebooks, GPU workloads and CPU jobs keep the session alive even if the browser is closed.
Stopping your server
Always stop your server when you are done to free resources.
- Click your username.
- Open the Hub Control Panel.
- Click Stop My Server.
📋 Best practices
- Stop your server when you are done working.
- Use the smallest profile that fits your workload.
- Monitor availability before requesting large GPUs.
- Save your work regularly and use version control.
- Do not store secrets directly in notebooks.
🆘 Troubleshooting
Server does not start
- Check whether the requested resource is still available.
- Try a smaller profile.
- If the DPU profile is busy, wait until the current session ends.
Out of memory
- Save your work and restart the kernel.
- Move to a larger profile if needed.
- Optimize your code to use less memory.
Lost work
- Check your home directory:
/home/jovyan/ - Look for saved checkpoints in
.ipynb_checkpoints/ - Use Git or another external backup solution.
👥 Support and contact
For issues or requests:
- Platform administrators: biguedad@eurecom.fr
- IT support: for authentication issues
🔧 Platform architecture summary
- Orchestration: Kubernetes
- Authentication: Keycloak with OpenID Connect
- Storage: NFS + JuiceFS
- Networking: Multus CNI for OAI interfaces and dedicated DPU networking
📚 Additional resources
- JupyterLab documentation
- PyTorch tutorials
- TensorFlow guides