42 UK Research · Evidence-led engineering note

Engineering Generative Systems: Verified 2026 Field Guide

How to structure, measure and troubleshoot a local ComfyUI system with repeatable evidence, explicit software versions and recorded workflow inputs, without turning unrecorded experiments into universal hardware claims.

·

1. Treat the workflow as a versioned program

ComfyUI defines a workflow as a graph of connected nodes. Its official documentation also explains that workflows can be saved as small, human-readable JSON files and can be embedded in generated-image metadata. That makes the workflow itself a useful reproducibility artefact: keep it in version control, record the ComfyUI revision, and record every model file separately rather than describing the result only in prose.

The model files are not the application. ComfyUI documents checkpoints, VAEs, LoRAs, ControlNets and upscalers as separate assets placed beneath ComfyUI/models/ or supplied through a workflow template. A sound evidence bundle therefore identifies both the graph and the exact weight files it loaded.

LayerRecord before testingWhy it matters
SoftwareComfyUI commit or release, Python, PyTorch and accelerator runtimeExecution and memory behaviour can change between versions.
WorkflowUnmodified JSON plus a hashThe node graph, parameters and links become inspectable.
ModelsSource URL, licence, filename and SHA-256Similar filenames do not prove identical weights.
InputsPrompt, seed, dimensions, batch size and source assetsResults cannot be compared if the workload changes.
MeasurementsWarm-up policy, sample count, peak allocation and elapsed timeA single unexplained screenshot is not a benchmark.

2. Diagnose memory pressure before changing the graph

There is no responsible universal “VRAM required” number for ComfyUI. The result depends on the model, weight precision, text encoders, VAE, image dimensions, batch size, preview method, optional nodes, allocator state and software version. Start with the model publisher’s own card and ComfyUI’s current system requirements, then measure the exact workflow you intend to run.

For out-of-memory failures, the official ComfyUI troubleshooting guide lists controlled changes such as --lowvram, reducing image resolution or batch size, disabling previews with --preview-method none, and trying asynchronous offloading where supported. Apply one change at a time and retain the before-and-after receipt. If several settings change together, the test cannot identify which change helped.

PyTorch exposes allocator configuration through PYTORCH_ALLOC_CONF; its current documentation describes PYTORCH_CUDA_ALLOC_CONF as a backward-compatible alias. Do not paste an arbitrary allocator recipe into production. First capture the actual error, check the installed PyTorch documentation for that version, and record any environment change alongside the test.

3. Separate LLM memory from diffusion memory

Autoregressive language models and diffusion pipelines consume memory differently. Hugging Face’s Transformers documentation explains that a key-value cache avoids recomputing attention state during token generation. It also documents cache strategies that trade memory for speed, including CPU offloading and quantised caches. Those are explicit trade-offs, not free capacity.

When one workstation must run an LLM and an image workflow, a conservative design is to schedule and observe the two workloads independently before combining them. Confirm that one model has actually released or offloaded its working state before loading the next. This is a 42 UK Research operational recommendation, not a claim that every framework or custom node performs unloading identically.

4. Build a controlled execution path

ComfyUI’s developer documentation describes local-server use as an API deployment option, and its workflow documentation provides the graph model that the server executes. A production wrapper should validate the submitted workflow, restrict allowed nodes and model paths, isolate user inputs, bound queue and output storage, and keep authentication in front of the service. Those controls are deployment recommendations; the correct implementation depends on the network and threat model.

  1. Start from a core template or a workflow whose dependencies are explicitly listed.
  2. Resolve every model and custom-node source, licence and version before execution.
  3. Run a small canary input and store its workflow, logs and output hashes.
  4. Change only one capacity variable per trial.
  5. Publish numerical results only with the raw measurement bundle and method.
  6. Fail closed when a dependency, source or measurement receipt is missing.

5. What this page deliberately does not claim

This guide does not publish a universal resolution-by-VRAM table, exact speed-up percentages, a recommended sampler value for every model, or an unverified workflow download. Those values are workload-specific. Reproducible 42 UK Research measurements belong in the low-VRAM benchmark hub; validated graphs and dependency receipts belong in the workflow library; platform-specific setup routes belong in the installation matrix.

Primary documentation used