ComfyUI: A Deep Dive for Experts
Running SDXL at high resolutions or complex video workflows can quickly overwhelm even high-end hardware. This guide provides practical solutions for optimising ComfyUI, from installation and basic concepts to advanced VRAM management and performance tuning. We'll skip the fluff and focus on actionable techniques to get the most out of your setup.
Installing and Updating ComfyUI
ComfyUI installation involves cloning the repository, installing dependencies, and potentially setting up a virtual environment. Keeping ComfyUI and its custom nodes updated is crucial for accessing the latest features and bug fixes.
The first step is to clone the ComfyUI repository from GitHub:
Code language: BASH
git clone https://github.com/comfyanonymous/ComfyUI
cd ComfyUI
Next, install the necessary dependencies. It's generally recommended to use a virtual environment:
Code language: BASH
python -m venv comfy_env
source comfy_env/bin/activate # On Linux/macOS
comfy_env\Scripts\activate # On Windows
pip install -r requirements.txt

To update ComfyUI, simply navigate to the ComfyUI directory and run:
Code language: BASH
git pull
To update custom nodes, most nodes have an update button from within ComfyUI in the manager. Alternatively, consult the specific instructions for each custom node.
Technical Analysis
Using a virtual environment isolates ComfyUI's dependencies from other Python projects, preventing conflicts. Regularly updating ComfyUI ensures you have the latest performance improvements and bug fixes.
Understanding ComfyUI Concepts
ComfyUI is a node-based interface for creating Stable Diffusion workflows. Nodes represent individual operations, and connections define the flow of data between them.
ComfyUI operates on the principle of nodes and connections [11:20]. Each node performs a specific task, such as loading a model, prompting, sampling, or saving an image. These nodes are then connected to define the workflow.
A basic text-to-image workflow involves nodes for:
Load Checkpoint: Loads a Stable Diffusion model.
CLIPTextEncode: Encodes text prompts into a format the model understands.
KSampler: Performs the iterative sampling process.
VAEDecode: Decodes the latent image into a viewable image.
Save Image: Saves the final image to disk.

The KSampler node is central to the process [23:07]. It takes a latent image, a model, and encoded prompts as input, and iteratively refines the image based on the prompts. Key parameters within the KSampler include:
seed: Controls the random number generator, allowing for reproducible results [24:13].
steps: The number of iterations the sampler performs. More steps generally lead to higher quality images, but also longer generation times [27:12].
cfg: Controls how closely the generated image adheres to the prompt. Higher values result in stronger adherence, but can also introduce artifacts [28:00].
sampler_name: The specific sampling algorithm used (e.g., Euler, LMS, DDIM) [29:36].
scheduler: Controls how the noise is added and removed during the sampling process [30:54].
Technical Analysis
The node-based approach allows for highly flexible and customisable workflows. Understanding the function of each node and how they interact is crucial for creating complex and effective pipelines.
Optimising VRAM Usage
Generating high-resolution images or videos can quickly exhaust VRAM. Several techniques can mitigate this, including tiled VAE decode, SageAttention, and block swapping.
Running SDXL models or generating high-resolution images on cards with limited VRAM requires careful optimisation. Several techniques can help reduce VRAM usage:
SageAttention: This is a memory-efficient alternative to standard attention mechanisms in the KSampler. While it can save VRAM, it may introduce subtle texture artifacts at high CFG values.
Block Swapping: This involves offloading model layers to the CPU during sampling. For example, you might swap the first 3 transformer blocks to the CPU, keeping the rest on the GPU.
LTX-2/Wan 2.2 Low-VRAM Tricks: These include techniques like chunk feedforward for video models and Hunyuan low-VRAM deployment patterns.
{
"class_type": "VAEDecodeTiled",
"inputs": {
"samples": "KSampler_output",
"vae": "VAE_loader",
"tile_size": 512,
"overlap": 64
}
}Technical Analysis
Tiled VAE decode avoids loading the entire latent representation into VRAM at once. SageAttention reduces the memory footprint of the attention mechanism, and block swapping effectively increases the available VRAM by utilising system RAM.
Advanced Techniques
Beyond basic text-to-image generation, ComfyUI allows for complex workflows involving image-to-image, ControlNet, and custom scripts.
ComfyUI's flexibility allows for advanced techniques such as:
Image-to-Image: This involves using an existing image as a starting point for the generation process [31:31]. This can be achieved by using a Load Image node and feeding its output into the KSampler.
ControlNet: This allows you to guide the image generation process using various control signals, such as edge maps, depth maps, or segmentation maps. This requires installing the comfyui-controlnet-aux custom node. The node graph logic involves connecting the ControlNet preprocessor output to the ControlNet model input, then connecting the ControlNet model to the KSampler's model input.
Custom Scripts: ComfyUI allows you to incorporate custom Python scripts into your workflows, enabling you to perform complex operations or integrate with external APIs.

Technical Analysis
Image-to-image generation allows for iterative refinement of existing images. ControlNet provides precise control over the generated output, and custom scripts allow for virtually unlimited customisation.
My Recommended Stack
My recommended ComfyUI stack involves a combination of techniques for optimal performance and VRAM management:
- ComfyUI as the core workflow engine: Its node-based system provides unparalleled flexibility.
- Tiled VAE Decode as a standard practice for VRAM reduction.
- SageAttention for specific workflows where VRAM is a critical constraint and minor artifacts are acceptable.
- Tools like Promptus simplify prototyping these tiled workflows and experimenting with different configurations. The Promptus workflow builder makes testing these configurations visual.
Golden Rule: Always monitor VRAM usage and adjust your workflow accordingly.
Resources & Tech Stack
ComfyUI Official: https://github.com/comfyanonymous/ComfyUI - The primary framework for node-based stable diffusion workflows.
Promptus AI: www.promptus.ai/"https://www.promptus.ai/ - A ComfyUI workflow builder and optimization platform that streamlines prototyping and workflow iteration. Builders using Promptus can iterate offloading setups faster.
Various Custom Nodes: These extend ComfyUI's capabilities with specialized functions, such as ControlNet integration or custom samplers.
Conclusion
ComfyUI offers a powerful and flexible platform for AI image generation. By understanding the core concepts and applying the optimisation techniques outlined in this guide, you can push the boundaries of what's possible, even with limited hardware. Keep experimenting, stay updated with the latest developments, and contribute to the growing ComfyUI community.
Advanced Implementation: Offloading Layers to CPU
For users with 8GB cards struggling with memory, here's how to offload layers to the CPU. This involves using a custom node like the CPU Offload Model node.
- Install the
CPU Offload Modelcustom node. This node isn't part of the standard ComfyUI installation, so you'll need to add it through the ComfyUI Manager. - Load your model: Use a
Load Checkpointnode as usual. - Insert the
CPU Offload Modelnode: Place this node after theLoad Checkpointnode. - Configure the node: Specify the number of transformer blocks to offload. Start with offloading the first 3 blocks.
- Connect the output: Connect the output of the
CPU Offload Modelnode to themodelinput of yourKSamplernode.
This will move the specified layers to system RAM, freeing up VRAM for the rest of the process.
Performance Optimization Guide
VRAM Optimization Strategies:
Tiled VAE Decode: Use tiles of 512x512 with a 64-pixel overlap.
SageAttention: Consider using it, but be mindful of potential artifacts.
Block Swapping: Use sparingly due to performance impact.
Batch Size Recommendations:
8GB cards: Batch size of 1.
16GB cards: Batch size of 2-4.
24GB+ cards: Experiment with higher batch sizes.
Tiling and Chunking:
For high-resolution images, use tiled VAE decode.
For video generation, explore chunk feedforward techniques.
Technical FAQ
Q: I'm getting an "CUDA out of memory" error. What can I do?
A: This indicates you've run out of VRAM. Try reducing the image resolution, lowering the batch size, enabling tiled VAE decode, or using SageAttention. As a last resort, consider block swapping, but be aware of the performance penalty.
Q: What are the minimum hardware requirements for running ComfyUI?
Q: ComfyUI is crashing when loading a specific model. What's happening?
A: The model might be corrupted or incompatible. Try downloading the model again from a different source. Also, ensure you have the correct dependencies installed.
Q: How can I update ComfyUI and its custom nodes?
A: To update ComfyUI, navigate to the ComfyUI directory and run git pull. For custom nodes, most have an update button in the ComfyUI manager, or consult the specific instructions of each node.
Q: My generated images have strange seams when using Tiled VAE. How do I fix this?
A: Ensure you're using a sufficient overlap between tiles. A 64-pixel overlap is generally recommended. Also, double-check that your VAE model is compatible with tiled decoding.
More Readings
Continue Your Journey (Internal 42.uk Research Resources)
Understanding ComfyUI Workflows for Beginners
Advanced Image Generation Techniques
VRAM Optimization Strategies for RTX Cards
Building Production-Ready AI Pipelines
Mastering Prompt Engineering: A Comprehensive Guide
Exploring Different Samplers in Stable Diffusion
Utilizing ControlNet for Precise Image Generation
Created: 22 January 2026