WAN 2.2 Batch Sampler (CRT)
The whole two-model Wan pipeline in one node
- model_high_noise
- model_low_noise
- positive
- negative
- vae
- start_image
- high_noise_latent_batch
- final_latent_batch
- final_images_batch
- comparison_grid
- settings_string
A proper Wan 2.2 workflow is more nodes than it has any right to be: two KSamplers (one per expert model, switching over at a sigma boundary), a seed loop if you want to compare a few generations, a VAE decode, maybe a grid compositor to lay the results out side by side, and a save node with its own naming scheme. This node collapses all of that into one box. It's the biggest single node in the CRT-Nodes pack's sampling category, and it earns the size - it's doing the work of six or seven stock nodes.
Why Wan needs two models in the first place
Wan 2.2 is a mixture-of-experts model: a high-noise expert handles early structure and motion, a low-noise expert takes over for detail, and the switch between them happens at a sigma value the community calls the boundary. This split is also why speed LoRAs behave weirdly on Wan 2.2 - the community's hard-learned lesson (from a landmark PSA thread that's still the standard advice) is to put your lightx2v or CausVid speed LoRA on the low-noise pass only and leave the high-noise pass clean, because stacking it on both destroys motion, lighting and emotion. This node's model_high_noise / model_low_noise split and separate cfg_high_noise / cfg_low_noise sliders are built directly around that architecture, and around that community practice.
The inputs and outputs that matter
There's a lot here, but a handful of fields do most of the work:
model_high_noise/model_low_noise- the two Wan 2.2 expert checkpoints. This is the one thing people get wrong first: Wan 2.2 needs two models, not one, unlike Wan 2.1.boundary(default 0.5) andsigma_shift(default 1) - where the handoff between experts happens and how the noise schedule is shifted. Community defaults for full-quality generation sit around 20-30 steps at CFG 3.5+ on the high-noise pass; this node's defaults (cfg_high_noise/cfg_low_noiseboth at 1,stepsat 8) are tuned for the fast, distilled-LoRA path instead, so if you're chasing maximum quality rather than speed, expect to raise steps and high-noise CFG yourself.positive(required) and optionalnegative- if you skip negative, an empty one is auto-generated.start_image(optional) - plug in a reference image and the node switches to image-to-video automatically; leave it empty for text-to-video.batch_countandincrement_seed- generate several variations from one graph, each onseed+N if increment is on.processing_mode-Parallel(fast, high VRAM) versusSequential(slow, low VRAM);offload_conditioningforces sequential mode and moves text conditioning to CPU between items for a bit more headroom.create_comparison_gridandsave_videos_imageswithsave_folder_path/save_subfolder_name/save_filename_prefix- the node will lay your batch out as a grid and write everything to disk itself, no separate save node needed.
Outputs cover the whole pipeline: high_noise_latent_batch, final_latent_batch, final_images_batch, comparison_grid, and a settings_string for logging exactly what you ran.
How to install it
Part of CRT-Nodes - ComfyUI Manager, search CRT-Nodes, install; or git clone https://github.com/PGCRT/CRT-Nodes.git into custom_nodes, pip install -r requirements.txt, restart.
Common issues & troubleshooting
One model where two are expected. If you wire the same checkpoint into both model_high_noise and model_low_noise, it'll run, but you're not getting Wan 2.2's actual architecture - make sure you've downloaded both experts.
Output looks flat or over-plasticky. That's the classic symptom of a speed LoRA applied to both passes. Check lora_batch_config in the accompanying LoRA-select node (if you're using one) and keep the high-noise pass clean.
Parallel mode runs out of VRAM. Switch processing_mode to Sequential and, if it's still tight, enable offload_conditioning.
Frame count beyond 81 looks strange. Wan's native context window is 81 frames - pushing well past that without a dedicated extension technique tends to loop or degrade rather than smoothly continue.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| batch_count | INT | 31–128 | Number of items to generate with different seeds. Higher values = more VRAM in parallel mode. |
| model_high_noise | MODEL | Model used for the initial high-noise denoising phase. Typically handles structure and composition. | |
| model_low_noise | MODEL | Model used for the final low-noise refinement phase. Typically handles details and fine features. | |
| positive | CONDITIONING | Positive prompt conditioning. Describes what you want to generate. | |
| width | INT | 48016–4096 | Output width in pixels. Will be quantized to nearest multiple of 16. |
| height | INT | 83216–4096 | Output height in pixels. Will be quantized to nearest multiple of 16. |
| frame_count | INT | 11–4096 | Number of frames to generate. Use 1 for images, >1 for videos. |
| seed | INT | 41492107999385170–18446744073709550000 | Starting seed for generation. Each batch item uses seed+N if increment is enabled. |
| increment_seed | BOOLEAN | true | If enabled, each batch item gets seed+1, seed+2, etc. If disabled, all use the same seed. |
| steps | INT | 81–10000 | Total number of denoising steps. More steps = better quality but slower generation. |
| boundary | FLOAT | 0.5000–1 | Sigma value where switching from high-noise to low-noise model occurs. Lower = earlier switch. |
| sigma_shift | FLOAT | 1.000–100 | Shifts the noise schedule. Higher values = more denoising emphasis on high-frequency details. |
| cfg_high_noise | FLOAT | 1.00–100 | Classifier-Free Guidance scale for high-noise phase. Higher = stronger prompt adherence. |
| cfg_low_noise | FLOAT | 1.00–100 | Classifier-Free Guidance scale for low-noise phase. Higher = stronger prompt adherence. |
| sampler_name | COMBO | euler | Sampling algorithm. Different samplers have different quality/speed tradeoffs. |
| scheduler | COMBO | simple | Noise schedule that controls how denoising steps are distributed. |
| enable_vae_decode | BOOLEAN | true | Decode latents to images. Disable to only output latents. |
| create_comparison_grid | BOOLEAN | true | Create a side-by-side comparison grid of all batch outputs. |
| save_videos_images | BOOLEAN | true | Save outputs to disk. Disable to only use outputs in workflow. |
| save_folder_path | STRING | .\ComfyUI\output | Root folder where outputs will be saved. |
| save_subfolder_name | STRING | FAST_BATCH | Subfolder name inside the root folder for organizing outputs. |
| save_filename_prefix | STRING | output | Prefix for output filenames. Seed will be appended automatically. |
| fps | INT | 161–120 | Frames per second for video outputs. Only relevant when frame_count > 1. |
| processing_mode | COMBO | Parallel | Parallel = process all batches together (fast, high VRAM). Sequential = one at a time (slow, low VRAM). |
| offload_conditioning | BOOLEAN | false | Offload text conditioning to CPU between items. Reduces VRAM slightly, forces sequential mode. |
| negativeopt | CONDITIONING | Optional negative conditioning. If disconnected, empty negative conditioning is auto-generated from positive. | |
| vaeopt | VAE | VAE model for encoding/decoding. Required if enable_vae_decode is True or using I2V mode. | |
| start_imageopt | IMAGE | Starting image for Image-to-Video generation. When provided, switches to I2V mode automatically. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| high_noise_latent_batch | LATENT | — |
| final_latent_batch | LATENT | — |
| final_images_batch | IMAGE | — |
| comparison_grid | IMAGE | — |
| settings_string | STRING | — |