User Guide¶
This guide walks you through the sardeenz web dashboard — loading models, monitoring GPUs, running benchmarks, and managing a multi-pod cluster.
Access: Open http://localhost:3000 (or your deployment URL) in a browser.
Table of Contents¶
- Navigation
- Model Management
- GPU Memory Overview
- Loading a Model
- Model Cards and Table View
- Moving a Model
- Sleeping and Waking Models
- Unloading Models
- Saving and Loading Configurations
- Chatbot Playground
- Model Benchmark
- Running a Benchmark
- Memory Profiles
- GPU Info
- Settings
- Cluster Mode
- Cluster Overview
- Pod Selector
- Split View
- Cross-Pod Model Moves
- Cluster-Wide Presets
- Roles and Permissions
- Troubleshooting
Navigation¶
The sidebar on the left provides access to all pages:
| Page | Description |
|---|---|
| Model Management | Load, unload, move models and monitor GPU memory (home page) |
| Chatbot Playground | Interactive chat interface for testing loaded models |
| Model Benchmark | Performance benchmarking and memory profiling |
| GPU Info | Real-time GPU hardware metrics |
| Settings | HuggingFace token and platform configuration |
The header toolbar (top right) contains:
- Theme toggle — Switch between light and dark mode
- Operations indicator — Shows count of active background operations (loads, moves)
- Notifications — Click to open the notification drawer
- User menu — Displays your username, role, and logout option
Model Management¶
This is the home page. It shows your GPU memory usage, all loaded models, and controls for loading, moving, and unloading models.
GPU Memory Overview¶
The top panel displays a card for each GPU showing:
- A stacked bar chart with per-model memory usage (each model in a different color)
- KV cache breakdown (preallocated / used / free)
- GPU temperature and utilization percentage
- A model legend — click a model name to scroll to its card below
Use the refresh interval dropdown (None / 5s / 15s / 30s / 1m) to control auto-refresh.
Loading a Model¶
- Click Start Model in the toolbar
- Choose the model source:
- HuggingFace — Enter a model ID (e.g.,
HuggingFaceTB/SmolLM2-135M-Instruct) - Local Path — Browse folders on the server to select a model directory
- Set a served model name (auto-filled for HuggingFace models)
- Set max tokens (default 4096)
- Choose GPU assignment:
- Auto (recommended) — Picks the GPU with the most free memory
- Manual — Select one or more GPUs. Selecting multiple GPUs enables tensor parallelism
- Optionally enable sleep mode to allow putting the model to sleep later
- Optionally add extra vLLM arguments (one per line)
- Click Start Model
The dialog shows a real-time progress bar and live log output. You can click Run in Background to dismiss the dialog while loading continues — the operations indicator in the header tracks it.
If loading fails, the dialog shows the error with expanded logs. Click Try Again to retry.
Model Cards and Table View¶
Loaded models appear below the GPU Memory Overview, grouped by GPU. You can switch between two views using the toolbar toggle:
- Card view (default) — One card per model showing name, status, GPU assignment, and memory usage
- Table view — Compact sortable table with columns for name, status, GPUs, memory, and actions
Both views support search (filter by model name) and sorting (by name, status, or memory).
Each model has these action buttons:
| Action | Description |
|---|---|
| Move | Move the model to a different GPU (or pod in cluster mode) |
| Sleep | Suspend the model to free ~90% of its GPU memory (only if sleep mode was enabled at load time) |
| Wake | Resume a sleeping model |
| Unload | Remove the model from the GPU |
| View Logs | Open the model's vLLM log output |
Moving a Model¶
- Click Move on a model card
- Select the target GPU(s) — each GPU shows its free memory and whether it has enough space
- For tensor parallel models, select the same number of GPUs as the model requires
- Set the drain timeout (default 60s) — how long to wait for active requests to finish before switching
- Click Move
The move uses a blue-green deployment pattern: the model loads on the target GPU first, traffic switches over, then the source is unloaded. If the target load fails, the model stays on the original GPU.
Sleeping and Waking Models¶
If a model was loaded with sleep mode enabled, you can put it to sleep to free approximately 90% of its GPU memory. The model remains registered but cannot serve requests until woken.
- Click Sleep on a model card to suspend it (sleeping models show a moon icon)
- Click Wake to resume serving
This is useful for keeping many models loaded while freeing memory for the ones you actively need.
Unloading Models¶
- Click Unload on a model card to remove a single model
- Click Unload All in the toolbar to remove all loaded models (with confirmation)
Saving and Loading Configurations¶
You can save a snapshot of your current model setup and restore it later.
To save:
- Click Save Config in the toolbar (only available when models are loaded)
- Enter a name and optional description
- Click Save
The configuration captures each model's path, served name, GPU assignment, max tokens, tensor parallel size, and extra arguments.
To load:
- Click Load Config in the toolbar
- Select a saved configuration from the list
- Click Load Configuration
All current models are unloaded first, then the saved models are loaded in sequence. Models on separate GPUs load in parallel for speed.
Chatbot Playground¶
An interactive chat interface for testing your loaded models.
How to use:
- The left sidebar lists all running models (auto-refreshes every 5 seconds)
- Click a model name to open a chat session
- Type your prompt in the input field and press Send
- Responses stream in token-by-token
You can open multiple model sessions simultaneously in separate tabs for side-by-side comparison. Sessions persist in your browser across page reloads.
In cluster mode, models are grouped by pod in the sidebar.
Model Benchmark¶
Tools for measuring model performance and planning GPU memory capacity.
Running a Benchmark¶
- Go to the Performance tab
- Click New Benchmark
- Configure your benchmark:
- Name (optional) — A label for the benchmark run
- Mode — Isolated (single model, no contention) or Contention (multiple models under parallel load)
- Scenarios — Add one or more test scenarios, each with:
- Model selection (from running models)
- Routing mode (Direct or Proxy)
- Input/output token counts
- Concurrency level
- Total and warmup request counts
- Optional SLA threshold (ms)
- Click Run Benchmark
Results show throughput (requests/sec), latency percentiles (p50, p90, p95, p99), time to first token, and SLA compliance.
Previous benchmark runs are saved and can be viewed or re-run from the benchmark history.
Memory Profiles¶
The Memory Profiles tab shows the GPU memory footprint of models you've loaded. These profiles are captured automatically when a model finishes loading and are used for pre-load memory checks — the Load Model dialog warns you if a model is unlikely to fit on the selected GPU.
GPU Info¶
Real-time GPU hardware metrics from NVIDIA drivers.
Each GPU card shows:
- GPU name, temperature, and utilization percentage
- Memory usage (used / total) as a bar chart
- Fan speed, performance state, power draw
- Bus ID and compute mode
The GPU Processes table at the bottom lists all processes using GPU memory, with vLLM processes highlighted.
Use the refresh interval dropdown to set auto-refresh (5s / 15s / 30s / 1m) or refresh manually.
In cluster mode, use the pod selector in the header to view GPUs on different pods.
Settings¶
HuggingFace Token¶
Some models on HuggingFace require authentication (gated models like Llama, Mistral, etc.). To access them:
- Go to Settings
- Enter your HuggingFace token
- Click Test Connection to verify it works
- Click Save Token
The token is stored at runtime only. For production deployments, set the HF_TOKEN environment variable instead.
Cluster Mode¶
When sardeenz is deployed as a multi-pod cluster (2+ pods), additional features appear throughout the dashboard.
Cluster Overview¶
A new card appears at the top of Model Management showing:
- Cluster health — Healthy, degraded, or unavailable
- Pod count and total models loaded across the cluster
- Per-pod sections (expandable) showing each pod's status, VRAM usage, loaded models, and whether it's the current leader
Pod Selector¶
A dropdown appears in the Model Management toolbar and other pages (GPU Info, Load Model dialog) allowing you to switch which pod you're viewing or targeting.
Split View¶
When two or more pods are available, a Split View toggle appears. This shows two pods side-by-side, each with its own model list and GPU memory panel — useful for comparing pod utilization or preparing cross-pod moves.
Cross-Pod Model Moves¶
To move a model from one pod to another:
- Click Move on a model card
- In the Move dialog, change the pod selector to a different pod
- The available GPUs update to show the target pod's GPUs
- Select the target GPU(s) and click Move
The model loads on the target pod first, then unloads from the source pod.
Cluster-Wide Presets¶
Saving a configuration in cluster mode captures models from all pods. When loading a configuration, you can choose a placement strategy:
- None (manual) — Models load on their originally saved pod/GPU
- Balanced — Spread models evenly across pods
- Maximize Models — Pack models onto fewer GPUs to maximize capacity
Roles and Permissions¶
The dashboard supports role-based access control:
| Role | Capabilities |
|---|---|
| admin | Full access — load, move, unload models, save configs, run benchmarks, modify settings |
| admin-readonly | View-only — can see everything but cannot make changes |
When logged in as read-only, write actions (Start Model, Move, Unload, Save Config, etc.) are disabled with a tooltip explaining why.
Authentication mode is configured by the deployment (AUTH_MODE environment variable). See the Deployment Guide for details.
Troubleshooting¶
Model loading fails¶
- Check the logs — Expand the log viewer in the Load dialog for the full error
- Verify the model path — HuggingFace IDs are case-sensitive
- Check GPU memory — The GPU Memory Overview shows available space. If the model is too large, unload or sleep another model first
- Gated models — If you see an authentication error, set your HuggingFace token in Settings
Move fails with "Insufficient GPU Memory"¶
- Check the free memory on the target GPU in the GPU Memory Overview
- The move dialog shows detailed memory breakdown (needed vs. available per GPU)
- Consider sleeping or unloading a model on the target GPU first
Models not appearing in Chatbot Playground¶
- Only models with running status appear in the sidebar
- Models that are loading, sleeping, or failed won't show up
- The sidebar auto-refreshes every 5 seconds — wait a moment after loading
Cluster issues¶
- Cluster shows "degraded" — One or more pods may be unreachable. Check the Cluster Overview for per-pod status
- Leader changed notification — Normal during failover. The dashboard automatically redirects to the new leader
- Pod selector shows a pod as unavailable — The pod may be restarting or disconnected from the cluster
"Attention backend override" info banner during model load¶
When loading a model, you may see an info banner saying the GPU does not support the FlashInfer attention backend and that TRITON_ATTN is being used instead. This happens automatically on pre-Ampere GPUs (e.g., T4, V100, P100) where FlashInfer kernels are not available. No action is needed — the model will load and run correctly with the alternative backend. Performance is comparable for most workloads.
If you want to control the attention backend yourself, add --attention-backend <value> in the Extra vLLM Arguments field when loading a model.
GPU Info shows no data¶
- Ensure the NVIDIA drivers are installed and nvidia-smi works on the host
- In inference-sim mode, GPU Info shows simulated data