GPU & VRAM Management
Manage GPU memory, loaded models, quantization, and VRAM budgeting in 360 Hextile
Last updated: 2026-08-14
GPU & VRAM Management
360 Hextile runs AI diffusion models directly on your NVIDIA GPU. The Loaded Models panel gives you full visibility into what is occupying VRAM and fine-grained control over memory usage.
Loaded Models Panel
The Loaded Models panel, found in Settings under GPU Information, shows every model currently loaded in VRAM with per-model detail:
- Model name and display name — the processor identifier and its human-readable label
- VRAM footprint — tracked in GB where the model's memory allocation is measurable; untracked models show a category tag (
offloadedfor CPU-offloaded weights,ncnn — untrackedfor external engines like Real-ESRGAN) - Active indicator — highlights the currently active diffusion processor (the one that handles renders)
- Unload button — evict an individual model to free its VRAM. The active model uses a render-safe eviction path: it first stops any in-progress render, then unloads, preventing mid-operation crashes
The panel polls VRAM status every second, so changes appear in near real-time.
Total VRAM Bar
A horizontal bar at the top shows device VRAM usage as a percentage of total capacity. Below the bar:
- Load-time model attribution — the sum of per-model footprints measured when each model loaded. It is not live Torch usage.
Allocator pools
A separate Allocator pools section sits between Loaded models and Preview caches. It is not a model list.
- Torch unused — live
reserved − allocated: unused blocks in PyTorch’s CUDA cache - CuPy pool — used vs held in the CuPy allocator
- Release unused — returns unused Torch and CuPy blocks. Loaded models stay loaded. The button is disabled while a render is running or another GPU job holds the card.
After Release, reserved should drop. On Windows, the device-used number on the gauge may stay high (the driver often keeps pages). The next tile will grow the pool again. That is expected.
Bulk Eviction
Use Unload All to free all VRAM at once. The button evicts every loaded model:
- All inactive (non-rendering) models are unloaded directly
- If the active diffusion model has a render-safe path, it is handed off for stop-then-unload
- If no render-safe path is available (or no active model), the legacy unload-all runs directly
Bulk eviction is useful when switching between GPU-intensive workflows outside 360 Hextile, or when you need a clean VRAM slate for loading a different pipeline.
VRAM Tracking
360 Hextile classifies VRAM usage into three categories:
| Category | What it includes | Example |
|---|---|---|
| Model weights | Diffusion transformer, text encoder, VAE | Qwen-Image transformer at ~13–40 GB depending on quantization |
| KV cache | Key-value attention cache accumulated during inference | Grows with step count and sequence length |
| Temporary buffers | Intermediate tensors during rendering, CUDA context, PyTorch allocator cache | Tile processing buffers, CuPy arrays, NCNN allocations |
Live Torch allocated/reserved and CuPy pool sizes appear in Allocator pools, not on the model rows. The model list is named holders you can Unload. Pools are unused allocator blocks you can Release.
NVML Reconciliation
360 Hextile cross-references its own VRAM tracking with NVIDIA's Management Library (NVML) for accurate readings that PyTorch alone cannot provide:
- PyTorch (
torch.cuda.memory_allocated) only sees its own allocations — it misses CuPy memory pools, NCNN upscaler allocations, and other processes - NVML (
nvidia-smiequivalent) gives the absolute hardware-level view: total, used, and free VRAM across all consumers - The reconciliation runs on a dedicated single-worker thread pool to avoid driver contention during concurrent queries
This dual-source approach prevents the "missing VRAM" problem where nvidia-smi shows high usage but PyTorch reports little — the gap is often CuPy memory pools or NCNN allocations that NVML captures.
Quantization Policy
360 Hextile supports multiple quantization tiers for compatible pipelines. Quantization trades precision for VRAM: lower precision means less VRAM but potential quality loss.
Supported Quantizations by Pipeline
| Pipeline | Quantizations | Notes |
|---|---|---|
| SDXL / SD 1.5 | FP16 only | Single precision, no quantization rungs |
| SD 3.5 | BF16, FP8, NF4 | FP8 requires compute capability 8.9+; NF4 is offload-only (bitsandbytes) |
| Qwen-Image | BF16, BNB 4-bit, GGUF Q4 | GGUF Q4 cannot bind LoRAs; BNB 4-bit is the LoRA-compatible option |
| Z-Image | BF16, GGUF Q4, BNB 4-bit | GGUF Q4 is the default for most cards |
| FLUX.2 Klein | BF16, BNB NF4 | BNB NF4 is the default on 24GB cards |
| TeleStyle | BF16, BNB 4-bit, GGUF Q4 | Same Qwen-family ladder |
How the Policy Selects Quantization
The quantization policy runs a two-stage decision:
- Quantization selection — walks the ladder from highest quality (BF16) to lowest (GGUF Q4 / NF4), stopping at the first rung whose transformer footprint fits in your effective budget AND whose capability gate is satisfied by your GPU
- Residency decision — checks whether the full model set (transformer + text encoder + VAE) fits in VRAM. If yes, the model stays resident for maximum speed. If no, it loads with CPU offload — same quantization, slower inference
Capability gates: FP8 requires compute capability >= 8.9 (RTX 40-series+). BF16 requires >= 8.0 (RTX 30-series+). No gate means the quant runs on any CUDA-capable card.
Performance Level Slider
The Performance Level slider, available in Settings, sets a global VRAM budget cap (in GB) that limits how much memory the quantization policy can plan against. It operates as a spectrum from Max Quality to Max Speed:
- Max Quality (right) — the slider is at your total VRAM (or "AUTO"). The policy picks the highest-quality quantization that fits. On a 24GB card, Qwen-Image loads as BF16 resident if possible; on a 12GB card, it picks the best-fitting quantized rung
- Max Speed (left, floor at 6GB) — the slider is pulled down to the minimum budget. The policy is forced toward aggressive quantization (GGUF Q4, NF4) regardless of actual VRAM headroom. Less VRAM usage, faster off-the-shelf loads, but typically lower quality
- Mid-range — the slider caps the budget at N GB. If your card has 24GB but you set the slider to 16GB, the policy plans against 16GB — it may select NF4 instead of BF16 even though the card could fit BF16
The slider is a budget cap, not a hard limit. It controls the quantization policy's decision, not an actual VRAM allocation clamp.
Automatic Eviction
360 Hextile automatically manages VRAM to prevent out-of-memory errors during render operations:
- Single diffusion model — only one diffusion processor is loaded at a time. Switching pipelines auto-unloads the previous model before loading the new one
- VRAM admission checks — before loading a model, the system verifies that enough VRAM is free (expected footprint + 1.5GB safety margin). If insufficient, it triggers cleanup (garbage collection, CuPy pool release, PyTorch cache flush) and retries
- Vision model strategy — the optional vision/describe model has three VRAM strategies:
auto(smart load/unload based on idle time and VRAM pressure),resident(keep loaded at all times), andon_demand(load per request, unload immediately after) - Cleanup cycle — after each render completes, 360 Hextile runs a deep cleanup cycle: Python garbage collection, CuPy memory pool release, and
torch.cuda.empty_cache()to return cached memory to the OS
If VRAM is full and a new model needs to load, 360 Hextile will not evict models automatically from the Loaded Models panel — you must unload them manually or use Unload All. The system prioritizes safe, explicit memory management over surprise eviction.
VRAM Requirements by Pipeline
| Pipeline | Minimum VRAM | Recommended VRAM |
|---|---|---|
| SD 1.5 | 4 GB | 6 GB |
| SD 2.1 | 4 GB | 6 GB |
| SDXL | 8 GB | 12 GB |
| SD 3.5 | 10 GB | 16 GB |
| SD 3.5 TensorRT | 10 GB | 16 GB |
| Qwen-Image | 10 GB | 16 GB |
| TeleStyle | 8 GB | 12 GB |
See also: - Settings — GPU Information card and configuration - Getting Started — System requirements and GPU detection - Pipelines — Model management and pipeline selection