42 UK Research · measurement-first bridge

Low VRAM SDXL: ComfyUI Optimization Tactics

This page no longer recommends named optimisation stacks. It shows how to turn a documented memory-pressure option into a controlled comparison whose limits remain visible.

Published · Evidence rewrite reviewed

Certification status: retained bridge page; temporarily noindex while the evidence gates are rechecked.

Start with a question that can be measured

“Which low-VRAM tactic is best?” combines several unanswered questions. A testable question names one workload, one machine, one baseline and one declared change. It also names the outcome: completion, failure category, latency, sampled device-memory peak or PyTorch allocator peak. Those outcomes should not be collapsed into a single “performance” score.

Keep the two memory views separate

PyTorch allocator peak

torch.cuda.max_memory_allocated() reports the maximum memory occupied by tensors tracked by PyTorch’s CUDA allocator. The official PyTorch definition does not describe total process or driver memory.

Sampled device-memory peak

A vendor tool samples a device-level quantity. For NVIDIA, the protocol uses documented nvidia-smi queries and records the sampling interval because a sampled maximum depends on when the tool observes the device.

Report both with explicit labels and units. Agreement is not assumed, and neither value alone proves image quality, throughput or compatibility.

Construct the comparison before running it

FreezeRecordChange
Workflow, model files, prompt, seed, dimensions, batch, steps, sampler, scheduler and output format.File hashes, ComfyUI and custom-node commits, accelerator identity, driver or backend, operating system, system RAM, Python and PyTorch versions, command and environment.Exactly one declared condition relative to the baseline.

The maintained protocol’s comparison families are a baseline, --lowvram, --preview-method none, one reduced-workload condition and --cpu as a compatibility fallback. These are experiment labels, not claims that each condition will help a particular machine. Confirm the options against current official ComfyUI documentation before use.

Run and publish without selecting only favourable samples

The protocol calls for one unreported warm-up followed by five measured repetitions, with ComfyUI restarted between run families. Every failure stays in the record. Raw samples, median, range, success rate, logs, hashes and the exact output check accompany any summary.

A family with fewer than three successful repetitions is labelled incomplete. “Reproduced” is reserved for a second clean run that reaches the same outcome category. Those labels prevent one successful render or one sampled low peak from becoming a general claim.

Use evidence labels that say what is missing

Hypothesis

A documented option is worth comparing, but no controlled run has been supplied.

Incomplete

A run family lacks enough successful repetitions under the protocol.

Observed

A fully specified run has raw samples and receipts, but its scope remains that workload and environment.

Reproduced

A second clean run reaches the same defined outcome category; this still is not a universal hardware promise.

A diagnostic decision after the comparison

Current publication state: the method is available, but there are no qualifying rows from which this page can rank tactics or GPU classes.

Primary sources and controlled assets

Related route

If you do not yet have a stable baseline, begin with the compatibility-first beginner route. This page begins at the next stage: controlled diagnosis.