7.9 KiB
Model Nodes
The model nodes support TensorRT workflows without forcing an unused PyTorch UNet to remain resident on the GPU. They are backend nodes and do not require custom frontend JavaScript.
Checkpoint CLIP-only Loader @ vrch.ai
Loads only the CLIP text encoder from a checkpoint. Use it when TensorRT owns the diffusion model but prompts must remain editable during a live session.
Inputs
ckpt_name(CHECKPOINT, required): checkpoint selected from ComfyUI's registeredcheckpointspaths. The node does not hard-code a default; a new node uses the first option exposed by ComfyUI.
Outputs
CLIP: the checkpoint's CLIP text encoder.
Behavior
- Requests CLIP with
output_clip=Truewhile explicitly disabling MODEL, VAE, and CLIP Vision output. - Uses ComfyUI's configured embeddings directories.
- Keeps ordinary ComfyUI node caching. Changing prompt text re-runs downstream CLIP encoding without reconstructing the checkpoint loader.
- Fails the prompt when the checkpoint contains no supported CLIP encoder.
The node does not expose device, dtype, cache, VAE, UNet, or CLIP Vision controls. Device and offload behavior remain under ComfyUI model management.
ControlNet Loader (CPU Offload) @ vrch.ai
Loads a ControlNet checkpoint through ComfyUI while forcing construction onto
CPU. This prevents --highvram from constructing another large model directly
on CUDA before ComfyUI can offload or stream it beside a resident TensorRT
Engine.
Inputs
control_net_name(CONTROL_NET, required): checkpoint selected from ComfyUI's registeredcontrolnetpaths. There is no hard-coded default.
Outputs
CONTROL_NET: the loaded ControlNet object.
Behavior
- Temporarily overrides ComfyUI's UNet offload device only for the synchronous ControlNet load call, then restores the original function even on failure.
- Serializes loads through a process lock so concurrent calls cannot observe the temporary device override.
- Uses ComfyUI's ordinary ControlNet loader and therefore supports any ControlNet checkpoint that the installed ComfyUI version supports. Union type selection, strength, start/end percentages, and conditioning remain in downstream nodes.
- Fails the prompt when the checkpoint contains no supported ControlNet model.
TAESD Memory Profile @ vrch.ai
Overrides ComfyUI's full-VAE memory estimate with a fixed estimate appropriate for a TAESD VAE. It does not change VAE math, reserve GPU memory, or unload CLIP.
Inputs
vae(VAE, required): a TAESD VAE.memory_mib(INT): reported encode/decode memory requirement.- default:
256 - minimum:
64 - maximum:
1024 - step:
64
- default:
Outputs
VAE: the same VAE object with the memory profile applied.
Behavior
- Applies the configured fixed estimate to both encode and decode scheduling.
- Adds
vrch_memory_profilemetadata for diagnostics. - Fails the prompt when the input is not a TAESD VAE.
64 MiB is the validated Simple workflow value. The node default remains the
more conservative 256 MiB; lower values should be qualified with the actual
resolution and live workload before deployment.
TensorRT Auto Loader @ vrch.ai
Loads a selected local TensorRT Engine and exposes the actual backend and status. PyTorch inputs are lazy, so a healthy TensorRT path does not construct an unused checkpoint UNet.
Required inputs
load_mode: backend policy. Default:auto.auto: try TensorRT; return a PyTorch fallback when Engine loading is unavailable or fails.tensorrt: require TensorRT and fail the prompt instead of falling back.pytorch: bypass TensorRT.
engine_name: basename of an.enginefile from ComfyUI's registered TensorRT paths, includingoutput/tensorrt. There is no hard-coded Engine default;No TensorRT Engine Foundis shown when none are registered.debug(BOOLEAN): concise loader, cache, and fallback diagnostics. Default:false.
Optional inputs
model(MODEL, lazy): an existing PyTorch model used for model-family inference or fallback only when required.model_type: TensorRT model family. Default:auto.autosdxl_basesdxl_refinersd1.xsd2.x-768vsvdsd3auraflowflux_devflux_schnell
fallback_checkpoint: checkpoint used to load only a diffusion MODEL when PyTorch fallback is needed. It does not load CLIP, VAE, or CLIP Vision. There is no hard-coded default.require_controlnet(BOOLEAN): require the installed TensorRT loader and selected Engine to implement the VRCH residual ControlNet contract. Default:false.
Outputs
model(MODEL): TensorRT model or PyTorch fallback.backend(STRING): actual backend,tensorrtorpytorch.status(STRING): selected Engine, residual/control state, or fallback reason.
Lazy loading and fallback
- An explicit
model_typelets the TensorRT path skip the lazymodelinput. model_type=autoevaluatesmodelonly to infer the model family.autoorpytorchevaluatesmodelwhen nofallback_checkpointis configured. When a fallback checkpoint is configured, fallback loads only its diffusion MODEL on demand.tensorrtmode never hides Engine selection, schema, deserialization, or compatibility errors behind a PyTorch fallback.autofallback covers loader-time failures. TensorRT inference errors after the MODEL has been returned are not retried with PyTorch.
Engine choices are host-local. A workflow may contain an Engine name that was
saved on another host or later removed; runtime validation handles that as a
fallback in auto mode or an error in tensorrt mode. Engine paths are limited
to safe basenames inside registered TensorRT roots.
Residual ControlNet contract
require_controlnet=true requires all of the following:
- the installed
TensorRTLoaderadvertisesvrch-tensorrt-controlnet-residual-v1; - the selected Engine contains the residual input schema; and
- an upstream ControlNet produces residuals at inference time.
A plain Engine is rejected when ControlNet is required. A residual Engine may
also serve a ControlNet-OFF workflow when require_controlnet=false; missing
residuals are zero-filled by the qualified TensorRT loader. Switching the same
residual Engine between required and optional modes reuses the cached Engine
instead of deserializing a second copy.
When ComfyUI's ControlNetApplyAdvanced receives exact strength=0, it may
produce no control dictionary. A workflow with require_controlnet=true then
fails loudly by design instead of silently generating an uncontrolled image.
Product workflows should expose an explicit ControlNet ON/OFF state or keep the
ON strength above zero.
Cache and diagnostics
The Engine cache key includes model type, Engine name, device/inode identity,
size, and modification time. Replacing an Engine invalidates the cached MODEL.
The status output records the Engine name, whether the residual schema is
present, and whether ControlNet is required.
Refresh the ComfyUI frontend after adding or removing Engine files so native dropdown choices are rebuilt.
Recommended TensorRT workflow wiring
- Route Checkpoint CLIP-only Loader to the prompt encoders.
- Route TensorRT Auto Loader
modelto the sampler. - For ControlNet workflows, route ControlNet Loader (CPU Offload) through the appropriate Union/specialized ControlNet configuration and conditioning nodes.
- Route a TAESD VAE through TAESD Memory Profile before VAE encode/decode.
- Use an explicit
model_typeandfallback_checkpointso the healthy TensorRT path never evaluates a full checkpoint MODEL. - Set
require_controlnet=trueonly for workflows whose output must be controlled; leave itfalsefor ordinary VJ workflows.
These nodes do not modify image size, prompt, seed, steps, CFG, denoise, ControlNet strength, or other generation defaults.