GPU-accelerated AI, in your browser.
Powered by NVIDIA DGX Spark and Kubernetes, the KRMU AI Centre of Excellence gives students and researchers a GPU lab in the browser: personal notebooks, shared storage, experiment tracking and a university language model, all pre-connected.
Lab architecture
The lab has two layers. The hardware is three NVIDIA DGX Spark systems, each with an NVIDIA GB10 GPU, plus a QNAP network storage device. The software on top, led by JupyterHub, runs on the three Sparks as one Kubernetes cluster.
Your notebook runs on the Spark assigned to your account, the same one every time. Up to 20 students share each physical GPU and take turns on it. The QNAP NAS keeps backups of your home folder.
Hardware and software
Hover or focus a block to see what it does.
Five things you can do on day one
From a first notebook to tracked experiments, stored results and a built-in language model.
- 1Notebook profiles
Work in a personal notebook
JupyterLab in your browser. Choose a CPU or a GPU notebook each time you start. Some super users also have a Super Notebook for 3-GPU training.
- 2How it works
Develop and train models
PyTorch with CUDA 13, scikit-learn, XGBoost, Hugging Face Transformers and more are pre-installed, so you can start training straight away.
- 3How it works
Track every experiment
MLflow records your parameters, metrics, models and plots so you can compare runs. It is already connected to your notebook.
- 4Your data
Store data and results safely
Garage S3 storage for datasets and results, plus a home folder that is backed up to the university NAS every 30 minutes and archived every 7 days.
- 5About Qwen
Ask the university language model
Qwen3-30B-A3B is available in every notebook through an OpenAI-compatible API. Its address is provided automatically.
Four steps to your first notebook
Your account has already been created. If you are one of the 40, there is nothing to register: use the username and password given to you by the platform administrator.
Open the login page
The login address is provided by the administrator. Open it in your web browser from the lab network.
Sign in
Enter the username and password you were given. Your account is already set up, so you go straight in.
Choose a notebook
Pick a CPU or GPU notebook. It starts in a few seconds.
Run the setup cells once
A short setup notebook checks the lab services and creates your storage folder and MLflow experiment.
CPU, GPU and Super notebooks
Pick a profile to see its limits. To switch later, open File → Hub Control Panel, stop your server, start it again and pick the other profile. Your files are kept.
Best for:
guaranteed up to (limit)
- Your notebook starts on the Spark assigned to your account, the same one every time.
- If your home folder needs restoring, it is restored from the NAS automatically.
- A server with no activity for 60 minutes is stopped automatically, and your files are kept.
Where your files live
Save anything important to your home folder, Garage or MLflow before a long job, because anything only in notebook memory is lost when your server stops.
| Location | Use it for | Purpose |
|---|---|---|
| Home folder | Notebooks, code, small working files | Your data is kept safe for 7 days, then backed up to the NAS for the longer term. |
| NAS archive | Reading your backed-up and archived files | Keeps a dated copy of each 7-day period for the longer term. |
| Garage storage | Datasets, results, anything to store safely or share | Safe storage for datasets and results, with a copy on all three Sparks. |
| MLflow | Experiment history, metrics, saved models, plots | Students, administrators and faculty can view the metrics, parameters and results of their machine learning experiments. |
Train on all three GPUs
A normal notebook runs on one Spark and uses one share of its GPU. Super accounts can send a training job to all three Sparks at once, with up to 40 GiB of GPU memory on each. The lab runs it with Ray Train, and a single command from an installed helper starts it.
- Test your training function on the notebook's own GPU first.
- With 3 GPUs, each Spark trains on a third of your data and the three copies of your model stay in sync.
- Output appears live in your notebook, numbers go to MLflow, and the trained model is saved in your storage folder.
Three GPUs, one model
The university's Qwen model
Every notebook can talk to Qwen3-30B-A3B-FP8, served with vLLM across all three Sparks through an OpenAI-compatible API. You use the standard Python client that is already installed. Nothing is downloaded to your notebook and there is no key to type, because the address is provided automatically.
The model is shared by the whole lab and is slower when many students use it at once. Keep answers a reasonable length and avoid loops that send thousands of requests.
Tested with 30 users at the same time
We started 30 GPU notebook sessions together and ran a continuous GPU workload in all of them for 10 minutes.
Each user's share of the GPU
Hover or focus a bar. Press a legend button to show or hide a GPU.
View the data as a table
What happens as more users share a GPU
Switch between the GPU's total output and what each user gets.
Measured with a synthetic GPU benchmark (large matrix multiplications) on the three DGX Spark GPUs. TFLOPS means trillions of operations per second. Where two test runs differ, the average is shown. This load test was run before the per-notebook GPU memory limits were switched on.
How the system works
The hardware is three DGX Sparks. The software runs on them, and the QNAP NAS stores the data. When you log in, JupyterHub starts a personal notebook server for you on one of the Sparks, and all connection settings are provided automatically. Press a part to read about it.
Good habits for a shared lab
The GPUs and the language model are shared by everyone. A few habits keep them fast for all.
Stop your server when you're done
Use File → Hub Control Panel → Stop My Server. Servers with no activity for 60 minutes are stopped automatically. Your files are kept.
Stay within your limits
8 GiB of GPU memory and 8 GB of RAM. Free memory you no longer need, and load large files in pieces.
Save before long jobs
Keep important results in Garage or MLflow, not only in memory, so nothing is lost if your server stops.
Never put credentials in code
The lab provides them automatically. Do not copy them into notebooks, Git repositories or reports.