Nodes/AUN ComfyUI Nodes/AUN Inputs Wan2.2 Basic
ComfyUI Node

AUN Inputs Wan2.2 Basic

Wan 2.2 Wants Two Models and One Forgetful Dropdown — a Loader That Handles the Rest

By loz2754·Created 9 months ago·Updated a day ago· 6
AUN Inputs Wan2.2 Basic
    • MODEL high
    • MODEL low
    • CLIP
    • VAE
    • CLIP_VISION
    • high model name
    • low model name
    • sampler
    • scheduler
    • cfg_high
    • cfg_low
    • boundary
    • sigma_shift
    • steps
    • seed
    • fps
    • frame_rate
    • frames
    high_noise_name
    low_noise_name
    clip_name
    clip_typeAce
    vae_name
    clip_vision_nameNone
    lora_high_nameNone
    lora_high_strength1.00
    lora_low_nameNone
    lora_low_strength1.00
    sampler
    scheduler
    cfg_high4.0
    cfg_low3.0
    boundary0.875
    sigma_shift8.00
    steps20
    seed0
    fps16.0
    length81
    high_noise_input
    low_noise_input
    clip_input
    vae_input
    clip_vision_input
    lora_high_input
    lora_low_input
    sampler_input
    scheduler_input
    cfg_high_input
    cfg_low_input
    boundary_input
    sigma_shift_input
    steps_input
    seed_input
    fps_input
    length_input

    Wan 2.2 is the last open Wan, and its fiddliness is architectural: it splits denoising between a high-noise expert (motion, composition) and a low-noise expert (detail). That's why the stock wiring is nine nodes of plumbing you never touch - two diffusion-model loaders, two LoRA loaders, a CLIP loader on a specific architecture, a VAE, ModelSamplingSD3 or two, then the sampler settings.

    AUNInputsWan22Basic squashes that into one node: same idea as the pack's AUNInputsBasic, with Wan's two-expert contract baked in.

    What it actually does

    Under the hood it's the boring, correct route: load_diffusion_model twice, a CLIPLoader, a VAELoader, an optional CLIPVisionLoader, and LoRA applied per expert.

    First, the LoRAs are applied with clip strength 0 - the weights hit the model, not the text encoder, and the CLIP socket is shared. If you select the same LoRA file for both experts it loads the weights once instead of twice, which matters when you're loading a 14B expert next to another 14B expert.

    Second, it probes the model to work out how many latent channels it wants (Wan is 16, SD-era stuff is 4) and stamps that on the model so the sampler runs the right latent in/out processing.

    The fields you'll actually set

    Two model dropdowns. high_noise_name is the first MoE stage, low_noise_name the second. Mirror what the official ComfyUI i2v blueprint ships and you can't go wrong: wan2.2_i2v_high_noise_14B_fp8_scaled.safetensors / wan2.2_i2v_low_noise_14B_fp8_scaled.safetensors, umt5_xxl_fp8_e4m3fn_scaled.safetensors as the CLIP, and wan_2.1_vae.safetensors as the VAE. Those files belong in models/diffusion_models, models/text_encoders and models/vae.

    Then clip_type - and here's the trap. The dropdown is built from ComfyUI's CLIPType enum sorted alphabetically, and the default is the first entry, which is Ace. Ace is not Wan. Set it to Wan before you queue, or you'll be debugging a clip that loaded with the wrong architecture.

    The rest is the MoE sampler's settings, exported as sockets: cfg_high (default 4), cfg_low (3), boundary (0.875 for t2v, 0.9 for i2v), sigma_shift (8, or -1 to leave the models unpatched), steps (20), seed, plus lora_high_name/lora_low_name with independent strengths, and clip_vision_name - set it only for i2v, None skips vision loading entirely. fps defaults to 16 and length to 81; odd frame counts suit Wan's temporal alignment.

    Every one of those has a matching *_input override socket that wins when connected, so an upstream string node can swap the whole model set. If an override name isn't in the folder listing the node warns in the console and falls back to the widget value.

    Outputs and what they wire into

    MODEL high and MODEL low go to the MoE sampler's two model inputs. CLIP goes into your CLIP Text Encodes. VAE goes to the sampler's vae and to your latent/decode chain. CLIP_VISION goes through a CLIP Vision Encode into WanImageToVideo. The sampler settings fan out as cfg_high, cfg_low, boundary, sigma_shift, steps, seed (and sampler/scheduler, which are any-type so they connect to converted KSampler inputs). fps is a FLOAT for VHS Video Combine, frame_rate the matching INT, and frames is your frame count - feed it to a Wan latent source's length.

    Note what isn't here: a LATENT output. Use WanImageToVideo (start_image optional, so it'll build a t2v latent too) or a Wan-specific latent node.

    Install

    ComfyUI Manager → search the pack title, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/loz2754/AUN-ComfyUI-Nodes
    

    Restart, and if you cloned by hand and see a missing module, install the pack's runtime deps (piexif, opencv-python-headless, imageio-ffmpeg, requests):

    pip install -r custom_nodes/AUN-ComfyUI-Nodes/requirements.txt
    

    Where people get burned

    • The Ace default, covered above. It's the single most likely reason your first Wan render comes out as noise.
    • "A high-noise diffusion-model file is required." The dropdowns list models/diffusion_models (plus the legacy unet folder). Wan experts dropped into models/checkpoints are invisible, and the placeholder entry trips a runtime error rather than a red node.
    • No cached freebie. The node declares IS_CHANGED as NaN, the same always-dirty idiom random pickers use, so it re-reads both experts off disk on every queue. If you're used to ComfyUI skipping unchanged nodes, that shows up as a long pause before a "nothing changed" run starts.
    • Speed LoRAs. The community compromise after the "speed LoRAs kill everything good in Wan 2.2" blowup was to apply them to the low-noise pass only, at reduced strength. This node's separate slots are that workflow: lora_low_name = your lightx2v LoRA at 0.4–0.6, high-noise slot empty. With those LoRAs, CFG wants to be 1.0 and steps drop to 3–4.
    • Two 14B experts is real VRAM. fp8 or a GGUF quant isn't optional on a 24GB card. And if you use cg-use-everywhere, note the two MODEL outputs share a type while sampler/scheduler are deliberately non-broadcastable - link those two directly.
    CategoryAUN Nodes/Loaders+Inputs

    Inputs (37)

    NameTypeDefaultDescription
    high_noise_nameCOMBOHigh-noise diffusion expert file (first MoE stage).
    low_noise_nameCOMBOLow-noise diffusion expert file (second MoE stage).
    clip_nameCOMBOCLIP file to pair with the diffusion experts (umt5 for Wan2.2).
    clip_typeCOMBOAceClip architecture to use when loading the diffusion experts.
    vae_nameCOMBOVAE checkpoint for decoding Wan2.2 latents.
    clip_vision_nameCOMBONoneCLIP Vision file for image-to-video. 'None' skips vision loading (text-to-video).
    lora_high_nameCOMBONoneLoRA file for the high-noise expert. 'None' disables.
    lora_high_strengthFLOAT1.000–4LoRA strength for the high-noise expert.
    lora_low_nameCOMBONoneLoRA file for the low-noise expert. 'None' disables.
    lora_low_strengthFLOAT1.000–4LoRA strength for the low-noise expert.
    samplerCOMBOSampling algorithm for the MoE sampler.
    schedulerCOMBONoise schedule for the MoE sampler.
    cfg_highFLOAT4.00–100CFG for the high-noise expert.
    cfg_lowFLOAT3.00–100CFG for the low-noise expert.
    boundaryFLOAT0.8750–1MoE timestep boundary. Recommended: 0.875 for t2v, 0.9 for i2v.
    sigma_shiftFLOAT8.00-1–100Shift applied to both experts. Use -1 to bypass and leave models unpatched.
    stepsINT201–10000Sampling steps for the MoE schedule.
    seedINT0-18446744073709550000–18446744073709550000Base seed shared by both experts.
    fpsFLOAT16.01–120Frames per second. FLOAT output wires into VHS Video Combine.
    lengthINT811–10000Video length in frames. Odd counts (81/121) suit Wan2.2 temporal alignment.
    high_noise_inputoptSTRINGHigh-noise diffusion filename override. When connected, replaces 'high_noise_name'.
    low_noise_inputoptSTRINGLow-noise diffusion filename override. When connected, replaces 'low_noise_name'.
    clip_inputoptSTRINGCLIP filename override. When connected, replaces 'clip_name'.
    vae_inputoptSTRINGVAE filename override. When connected, replaces 'vae_name'.
    clip_vision_inputoptSTRINGCLIP Vision filename override. When connected and non-empty, replaces 'clip_vision_name'. Connect 'None' semantics by leaving empty to skip vision loading.
    lora_high_inputoptSTRINGLoRA filename override for the high-noise expert. When connected, replaces 'lora_high_name'.
    lora_low_inputoptSTRINGLoRA filename override for the low-noise expert. When connected, replaces 'lora_low_name'.
    sampler_inputoptSTRINGSampler name override. When connected and non-empty, replaces the 'sampler' widget value.
    scheduler_inputoptSTRINGScheduler name override. When connected and non-empty, replaces the 'scheduler' widget value.
    cfg_high_inputoptFLOATCFG override for the high-noise expert.
    cfg_low_inputoptFLOATCFG override for the low-noise expert.
    boundary_inputoptFLOATBoundary override. When connected, replaces the 'boundary' widget value.
    sigma_shift_inputoptFLOATSigma shift override. When connected, replaces the 'sigma_shift' widget value.
    steps_inputoptINTSteps override. When connected, replaces the 'steps' widget value.
    seed_inputoptINTSeed override. When connected, replaces the 'seed' widget value.
    fps_inputoptFLOATFPS override. When connected, replaces the 'fps' widget value.
    length_inputoptINTFrame-length override. When connected, replaces the 'length' widget value.

    Outputs (18)

    NameTypeDescription
    MODEL highMODEL
    MODEL lowMODEL
    CLIPCLIP
    VAEVAE
    CLIP_VISIONCLIP_VISION
    high model nameSTRING
    low model nameSTRING
    sampler*
    scheduler*
    cfg_highFLOAT
    cfg_lowFLOAT
    boundaryFLOAT
    sigma_shiftFLOAT
    stepsINT
    seedINT
    fpsFLOAT
    frame_rateINT
    framesINT