AI Centre of Excellence

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.

One Kubernetes cluster DGX SparkGB10 GPU DGX SparkGB10 GPU DGX SparkGB10 GPU Your browser Your notebook runs on the Spark assigned to you.
01The platform

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.

HARDWARE: 3 x NVIDIA DGX SPARK DGX Spark 1NVIDIA GB10 GPU DGX Spark 2NVIDIA GB10 GPU DGX Spark 3NVIDIA GB10 GPU SOFTWARE Kubernetes: places notebooks and shares the GPUs JupyterHub MLflow Garage storage Qwen model QNAP NASnetwork storage device: receives and stores the data
02Capabilities

Five things you can do on day one

From a first notebook to tracked experiments, stored results and a built-in language model.

  1. 1

    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.

    Notebook profiles
  2. 2

    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.

    How it works
  3. 3

    Track every experiment

    MLflow records your parameters, metrics, models and plots so you can compare runs. It is already connected to your notebook.

    How it works
  4. 4

    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.

    Your data
  5. 5

    Ask the university language model

    Qwen3-30B-A3B is available in every notebook through an OpenAI-compatible API. Its address is provided automatically.

    About Qwen
03Get started

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.

01

Open the login page

The login address is provided by the administrator. Open it in your web browser from the lab network.

02

Sign in

Enter the username and password you were given. Your account is already set up, so you go straight in.

03

Choose a notebook

Pick a CPU or GPU notebook. It starts in a few seconds.

04

Run the setup cells once

A short setup notebook checks the lab services and creates your storage folder and MLflow experiment.

04Choose your workspace

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)

GPU memory limit: past 8 GiB, PyTorch reports "CUDA out of memory" and your kernel keeps running, so use a smaller batch or model. If a notebook goes past 10 GiB, the lab stops that kernel to protect other students. Your files are safe.
  • 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.
05Your data

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.

LocationUse it forPurpose
Home folderNotebooks, code, small working filesYour data is kept safe for 7 days, then backed up to the NAS for the longer term.
NAS archiveReading your backed-up and archived filesKeeps a dated copy of each 7-day period for the longer term.
Garage storageDatasets, results, anything to store safely or shareSafe storage for datasets and results, with a copy on all three Sparks.
MLflowExperiment history, metrics, saved models, plotsStudents, administrators and faculty can view the metrics, parameters and results of their machine learning experiments.
Nothing is deleted. After a rotation your old files stay readable in the read-only archive folder, and you can copy back what you need. A running server is never interrupted.
Shared storage is not private. All students use the same Garage and MLflow credentials, so keep your files under your own folder, and never store passwords, personal data or anything confidential in the lab.
06Super accounts

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.
One 3-GPU job runs at a time for all super accounts, and a job waits automatically if another super account is training. You set a memory budget per GPU (up to 40 GiB) and a time limit (up to 12 hours). The GPUs are shared with student notebooks and Qwen, so run big jobs outside class hours when you can.

Three GPUs, one model

GPU 1up to 40 GiB GPU 2up to 40 GiB GPU 3up to 40 GiB they share what they learn after every step Result: one trained model
Hover a GPU for details.
07Language 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.

32,768tokens per request, prompt plus answer
35-40tokens per second for one user
4 minautomatic recovery if the model restarts

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.

08Results

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.

30GPU notebooks running together
0failures during the 10-minute run
3 saverage time to start a session (5 s slowest)
~204TFLOPS combined, steady throughout

Each user's share of the GPU

Hover or focus a bar. Press a legend button to show or hide a GPU.

GPU throughput (TFLOPS) of each of the 30 users, grouped by the GPU they shared: two GPUs carried 12 users each and one carried 6.
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.

09Under the hood

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.

HARDWARE DGX Spark 1NVIDIA GB10 GPU DGX Spark 2NVIDIA GB10 GPU DGX Spark 3NVIDIA GB10 GPU SOFTWARE Kubernetes: places notebooks and shares the GPUs JupyterHub Your notebookon your Spark MLflow Qwen model Garage S3 STORAGE DEVICE QNAP NAS Your browser runs on sign in starts metrics questions and answers datasets, results models, plots home backup
Pre-installed: Python 3.13, PyTorch 2.13 with CUDA 13, torchvision, NumPy, pandas, SciPy, Matplotlib, seaborn, scikit-learn, XGBoost, OpenCV, Hugging Face Transformers and datasets, NLTK, spaCy, MLflow, TensorBoard and Git. Packages you install yourself last until your server restarts, so ask the administrator to add one to the lab image.
10Sharing the GPUs

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.

11Questions

Frequently asked questions

Will my work be lost if I log out?
No. Files in your home folder, Garage and MLflow stay. Only what is in notebook memory (variables) is lost when the kernel or server restarts, so run your notebook again from the first cell after a restart.
What happens to my files after 7 days?
Your home folder is copied to the NAS and checked file by file, then moved to the read-only archive, and you start with a fresh, empty home. Nothing is deleted: your old files stay readable in the archive folder, and you can copy back what you need.
Can other students see my work?
Your home folder belongs to your account. Garage and MLflow, however, are shared by all students through common lab credentials, so keep your files under your own folder and never store passwords, personal data or anything confidential in the lab.
I can't sign in
Check the username and password you were given, or ask your platform administrator.
What if I run out of GPU memory?
Past 8 GiB, PyTorch reports "CUDA out of memory" and your kernel keeps running: use a smaller batch or model, and free tensors you no longer need. If a notebook goes past 10 GiB, the lab stops that kernel to protect other students and leaves a note in your home folder.
Why did my kernel die while loading data?
Your notebook reached its 8 GB RAM limit. Load large files in pieces, use two to four data-loader workers, and shut down notebooks you are not using.
Can I install extra packages?
Yes, for quick experiments, but they are lost when your server restarts. Ask the administrator to add a package to the lab image if you need it permanently.
Which language model is available, and how fast is it?
Qwen3-30B-A3B-FP8, shared by the whole lab. It answers at about 35 to 40 tokens per second for one user, slower when many students use it at once, with up to 32,768 tokens for your prompt plus the answer.
Can I download my trained models?
Yes. Models are files in your workspace or storage folder, and you can download them whenever you like.
What if something doesn't work?
Restart your Jupyter kernel first (Kernel → Restart). That fixes most problems. Then check two things: your disk space (a full home folder stops files from saving, so delete what you no longer need), and your memory use (your own notebooks and kernels may still be holding memory, and because the GPU is shared, another user may already be using part of it, which is why a job can run out of memory or run slowly). Shut down kernels you are not using and try again. If it still fails, contact the AI CoE lab administrator and quote any error code you see.