Wan2.2 i2v (clarifications needed regarding settings on low vram system)
To put it simply, there’s a suspicion that settings intended for a different model have gotten mixed in?:
Wan2.2 I2V-A14B High/Low UNets: blur, crosshatching, yellow flash — likely causes and clean baseline
Looking at the workflow screenshot, the problem is probably not mainly the prompt. It looks more like a sampling schedule / High-Low boundary / step count / VAE / distilled-vs-normal workflow mismatch problem.
The suspicious settings in the screenshot are:
HighNoise GGUF -> ModelSamplingSD3 shift 5.00 -> WanMoeKSampler model_high_noise
LowNoise GGUF -> ModelSamplingSD3 shift 5.00 -> WanMoeKSampler model_low_noise
WanMoeKSampler:
boundary: 0.750
add_noise: enable
steps: 6
cfg_high_noise: 1.5
cfg_low_noise: 2.0
sampler_name: euler
scheduler: simple
sigma_shift: 4.00
return_with_leftover_noise: disable
The short version:
The screenshot looks like a hybrid between a normal Wan2.2 High/Low UNet workflow and a 4-step Lightning/LightX2V-style workflow. That hybrid zone can easily cause heavy blur, side blur, crosshatching texture, and yellow lighting flashes.
1. Biggest issue: boundary = 0.750
For Wan2.2 I2V, boundary = 0.750 is the first thing I would change.
The WanMoeKSampler README says the Wan2.2 boundary is around:
Wan2.2 T2V: 0.875
Wan2.2 I2V: 0.900
It also explains that this boundary is a diffusion timestep , not a denoising step. The actual switch step depends on total steps, sampler, scheduler, and sigma shift.
So for Wan2.2 I2V , reset this:
boundary: 0.750
to this:
boundary: 0.900
Why this matters
Wan2.2 A14B uses separate denoising experts:
| Expert | Main job |
|---|---|
| High-noise expert | early structure, broad layout, motion, pose, composition |
| Low-noise expert | later detail, face, eyes, mouth, skin, color, texture, final sharpness |
The Wan2.2 I2V-A14B model card describes this High-noise / Low-noise MoE design and the idea that the experts specialize in different denoising stages.
If the boundary is too low, the High-noise model can stay active too long and the Low-noise model may not get enough useful refinement time.
That can look like:
first frames look okay
then the clip turns blurry
center improves but sides remain mushy
fine texture looks scratchy/crosshatched
lighting becomes unstable
faces fail to refine
So the first clean correction is:
boundary: 0.900
2. Second issue: steps = 6 is too low for judging normal High/Low UNets
Six steps is very low for the normal Wan2.2 I2V-A14B High/Low model pair.
It can be useful as a quick smoke test, but it is not a fair quality test unless you are using a proper distilled / Lightning / LightX2V setup.
For the normal High/Low UNets, I would test:
steps: 12
If that is too slow on 8GB VRAM, use this only as a compromise:
steps: 8
But I would not judge the normal High/Low pair from 6 steps. At 6 steps, the Low-noise expert may simply not have enough time to resolve detail.
Symptoms of too few steps:
crosshatching texture
unfinished skin/detail
soft edges
side blur
poor face detail
color flicker
lighting pulses
3. Third issue: you may be applying shift twice
The screenshot shows:
ModelSamplingSD3 shift: 5.00
before both models, plus:
WanMoeKSampler sigma_shift: 4.00
inside the WanMoeKSampler.
While debugging, that is too ambiguous. Use one source of shift only.
Recommended cleanup
For the first stable baseline, remove the two ModelSamplingSD3 nodes:
HighNoise GGUF -> WanMoeKSampler model_high_noise
LowNoise GGUF -> WanMoeKSampler model_low_noise
Then set this inside WanMoeKSampler:
sigma_shift: 5.0
This gives you one clear place controlling the shift.
Why 5.0? The LightX2V Wan2.2 I2V model card recommends Euler with:
shift: 5.0
guidance_scale: 1.0
for its distilled branch. More importantly, 5.0 is also a sane first test value when cleaning up the graph.
The key point is:
Do not run
ModelSamplingSD3 shift 5plusWanMoeKSampler sigma_shift 4while trying to diagnose artifacts.
After you get a stable baseline, you can test whether the external ModelSamplingSD3 nodes help. But they should not be part of the first diagnosis pass.
4. Fourth issue: CFG values are in the wrong middle zone
The screenshot uses:
cfg_high_noise: 1.5
cfg_low_noise: 2.0
That is neither a strict Lightning/LightX2V recipe nor a normal High/Low baseline.
You need to decide which branch you are testing.
Branch A — normal Wan2.2 I2V-A14B High/Low UNets
Use this branch if you are loading the normal HighNoise and LowNoise GGUFs without Lightning/LightX2V LoRAs.
In this branch, CFG 1.0 is usually too weak. CFG 1.0 is mostly a Rapid/Lightning/distilled habit, not a universal Wan2.2 setting.
Recommended baseline:
High model:
Wan2.2 I2V-A14B HighNoise GGUF
Low model:
Wan2.2 I2V-A14B LowNoise GGUF
Remove:
ModelSamplingSD3 nodes before WanMoeKSampler
WanMoeKSampler:
boundary: 0.900
add_noise: enable
steps: 12
cfg_high_noise: 3.0
cfg_low_noise: 3.0
sampler_name: euler
scheduler: simple
sigma_shift: 5.0
start_at_step: 0
end_at_step: 10000
return_with_leftover_noise: disable
VAE:
wan_2.1_vae.safetensors
Test size:
33 frames
512-640px long side
fixed seed
Disable during baseline:
LoRAs
upscalers
interpolation
face restore
post-sharpening
color correction
If 12 steps is too slow:
boundary: 0.900
steps: 8
cfg_high_noise: 3.0
cfg_low_noise: 3.0
sampler_name: euler
scheduler: simple
sigma_shift: 5.0
But treat 8 steps as a sanity test, not a final quality test.
Branch B — Lightning / LightX2V / distilled 4-step branch
Use this branch only if you are using matching Lightning/LightX2V I2V LoRAs or a proper distilled LightX2V setup.
The LightX2V Wan2.2 I2V card recommends:
Euler scheduler
shift: 5.0
guidance_scale: 1.0
It describes this as running without CFG. The README also says the distilled model is built for substantially fewer inference steps, specifically 4-step-style use.
Strict distilled baseline:
High model:
compatible Wan2.2 I2V-A14B HighNoise model
Low model:
compatible Wan2.2 I2V-A14B LowNoise model
LoRAs:
matching I2V Lightning/LightX2V High LoRA
matching I2V Lightning/LightX2V Low LoRA
strength: 1.0 each
Remove:
external ModelSamplingSD3 nodes during baseline
WanMoeKSampler:
boundary: 0.900
add_noise: enable
steps: 4
cfg_high_noise: 1.0
cfg_low_noise: 1.0
sampler_name: euler
scheduler: simple
sigma_shift: 5.0
start_at_step: 0
end_at_step: 10000
return_with_leftover_noise: disable
VAE:
wan_2.1_vae.safetensors
Test size:
33 frames
512-640px long side
fixed seed
Do not mix this with the normal branch.
Bad hybrid zone:
normal High/Low GGUFs
+ no matching distilled LoRAs
+ 6 steps
+ CFG around 1-2
+ boundary 0.750
+ external shift 5
+ internal sigma_shift 4
That is exactly the kind of setup that can produce blur, crosshatching, and flashing.
5. VAE check: very important
For Wan2.2 14B I2V, check that you are using:
wan_2.1_vae.safetensors
The ComfyUI Wan2.2 docs and ComfyUI Wan2.2 examples point to wan_2.1_vae.safetensors for the 14B workflows.
A wrong or mismatched VAE can look like:
soft decode
general haze
yellow/red color cast
skin tone shift
center glow
lighting flash
poor reconstruction
blurred details
Do not try to fix a VAE mismatch with prompts like “no yellow light.” Fix the VAE first.
6. Artifact-by-artifact diagnosis
A. “First 3 frames normal, then 90% blur”
Most likely causes:
boundary too low
too few total steps
Low-noise expert starts too late
shift schedule conflict
wrong VAE
normal UNets being run like a distilled 4-step model
Fix order:
1. boundary: 0.900
2. remove external ModelSamplingSD3 nodes
3. sigma_shift: 5.0 inside WanMoeKSampler
4. VAE: wan_2.1_vae.safetensors
5. normal branch: steps 12, CFG 3.0 / 3.0
6. distilled branch: steps 4, CFG 1.0 / 1.0, matching LoRAs only
B. “Center improved but sides are still blurry”
Likely causes:
not enough Low-noise refinement
bad High/Low boundary
low step count
resolution/aspect stress
VAE softness
quantization/offload instability
post-processing or resize issue
Try:
33 frames only
512-640px long side
boundary 0.900
steps 12 if normal branch
correct VAE
no post nodes
no upscaler
no interpolation
no face restore
Also use clean dimensions. Examples:
512x288
576x320
640x360
640x384
384x640 for portrait
Avoid large or odd dimensions while debugging.
C. “Crosshatching texture, not square pixelation”
That usually means incomplete or unstable denoising, not classic video compression.
Most likely causes:
6 steps is too low
boundary is wrong
GGUF quantization is stressed
shift schedule is confused
Low-noise refinement is underpowered
VAE decode is wrong or mismatched
The QuantStack Wan2.2 I2V-A14B GGUF page lists approximate quant sizes such as:
Q2_K: 5.3 GB
Q3_K_S: 6.52 GB
Q3_K_M: 7.18 GB
Q4_K_S: 8.75 GB
Q4_K_M: 9.65 GB
Q5_K_S: 10.1 GB
Q5_K_M: 10.8 GB
Q6_K: 12 GB
Q8_0: 15.4 GB
On an 8GB laptop GPU, Q4_K_M can be theoretically better but practically worse if it causes too much offloading, swapping, or instability.
Low-VRAM quant tests:
Test A:
High: Q3_K_M
Low: Q3_K_M
Test B:
High: Q3_K_M
Low: Q4_K_S
Test C:
High: Q4_K_S
Low: Q4_K_S
For face/detail fidelity, the most interesting test is:
High: Q3_K_M
Low: Q4_K_S
Reason: the Low-noise model is the detail finisher.
D. “Strong yellow light flashing in the middle”
This is probably not a prompt issue.
Likely causes:
wrong VAE
double shift / schedule conflict
LightX2V LoRA trajectory mismatch
normal High/Low UNets using distilled settings
too few steps
bad High/Low boundary
quantization + low-step instability
Fix order:
1. confirm VAE = wan_2.1_vae.safetensors
2. remove external ModelSamplingSD3 nodes
3. boundary = 0.900
4. sigma_shift = 5.0
5. normal branch: 12 steps, CFG 3.0 / 3.0
6. distilled branch: 4 steps, CFG 1.0 / 1.0, matching LoRAs only
7. disable upscaler/interpolation/face restore
8. test 33 frames at 512-640px long side
A negative prompt can include yellow flash, but if the denoising path or VAE is wrong, the prompt will not reliably fix it.
7. What to check in the console
Check where WanMoeKSampler actually switches from High-noise to Low-noise.
Look for something equivalent to:
switching model at step X
Do not reason from boundary alone. The WanMoeKSampler README explains that diffusion timestep is not the same thing as denoising step.
For a 4-step distilled branch, you generally want something close to:
High: 2 steps
Low: 2 steps
For a normal 12-step branch, you want enough Low-noise steps left to refine detail. If Low-noise only gets a tiny part of the run, blur and poor texture are expected.
8. Text encoder check
If prompt obedience is weak, do not only raise CFG. Text encoder quantization can matter.
The city96 UMT5 XXL encoder GGUF page says Q5_K_M or larger is recommended for best results, while smaller models can still be acceptable in constrained setups.
Approximate sizes listed there include:
Q3_K_M: about 3.06 GB
Q4_K_M: about 3.66 GB
Q5_K_M: about 4.15 GB
Q8_0: about 6.04 GB
F16: about 11.4 GB
For an 8GB GPU setup:
UMT5 Q3_K_M:
safest memory option
UMT5 Q4_K_M:
good low-VRAM baseline
UMT5 Q5_K_M:
better prompt understanding if system RAM/offload behavior allows it
Weak prompt obedience may be text-encoder-related, not just CFG-related.
9. Suggested prompt while debugging
Use a boring source-faithful prompt. Do not use cinematic lighting while debugging a yellow lighting artifact.
Positive
A realistic image-to-video animation of the person in the source image. Preserve the exact same face, identity, hairstyle, clothing, colors, lighting, and background. The person makes only very subtle natural movement: slight breathing, a small blink, and minimal head movement. Static camera. No zoom. No scene change. Natural colors. Sharp facial details.
Negative
different person, face change, identity change, distorted face, warped eyes, asymmetrical eyes, deformed mouth, changing hairstyle, changing clothes, changing background, camera movement, zoom, scene change, fantasy, sci-fi, anime, painting, overexposed, oversaturated, red tint, yellow flash, blurry, low detail, melted face, extra teeth, crosshatching, noisy texture
At CFG 1.0, the negative prompt may have little practical effect. It should matter more in the normal branch at CFG around 3.0.
10. Minimal troubleshooting plan
Run these in order. Change only one branch at a time.
Test 1 — normal High/Low sanity test
Remove:
both ModelSamplingSD3 nodes
WanMoeKSampler:
boundary: 0.900
add_noise: enable
steps: 12
cfg_high_noise: 3.0
cfg_low_noise: 3.0
sampler_name: euler
scheduler: simple
sigma_shift: 5.0
start_at_step: 0
end_at_step: 10000
return_with_leftover_noise: disable
VAE:
wan_2.1_vae.safetensors
Video:
33 frames
512-640px long side
fixed seed
Disable:
LoRAs
upscaler
interpolation
face restore
postprocessing
If this improves blur/crosshatching/yellow flash, the previous issue was probably:
boundary too low
too few steps
CFG too low for normal branch
shift conflict
VAE mismatch
Test 2 — cheaper normal-branch sanity test
If 12 steps is too slow:
Same as Test 1, but:
steps: 8
If 8 looks bad but 12 improves, the issue is mainly under-refinement.
Test 3 — strict Lightning/LightX2V branch
Only use this if you are using matching I2V Lightning/LightX2V LoRAs or a proper distilled LightX2V setup.
Use:
matching I2V Lightning/LightX2V LoRAs
LoRA strength: 1.0 each
Remove:
both ModelSamplingSD3 nodes
WanMoeKSampler:
boundary: 0.900
add_noise: enable
steps: 4
cfg_high_noise: 1.0
cfg_low_noise: 1.0
sampler_name: euler
scheduler: simple
sigma_shift: 5.0
start_at_step: 0
end_at_step: 10000
return_with_leftover_noise: disable
VAE:
wan_2.1_vae.safetensors
Video:
33 frames
512-640px long side
If this still has yellow flashing, suspect:
wrong LoRA pair
T2V LoRA used in I2V
High/Low LoRAs mismatched
wrong VAE
wrong model pair
double shift
workflow node mismatch
11. Recommended settings table
| Scenario | Boundary | Steps | CFG high | CFG low | Sampler | Scheduler | Shift | Notes |
|---|---|---|---|---|---|---|---|---|
| Normal High/Low sanity baseline | 0.900 | 12 | 3.0 | 3.0 | Euler | Simple | 5.0 | Best next test |
| Normal low-cost test | 0.900 | 8 | 3.0 | 3.0 | Euler | Simple | 5.0 | Debug only |
| Strict Lightning/LightX2V | 0.900 | 4 | 1.0 | 1.0 | Euler | Simple | 5.0 | Only with matching distilled LoRAs/model |
| Current screenshot | 0.750 | 6 | 1.5 | 2.0 | Euler | Simple | 4.0 + external 5.0 | Likely unstable hybrid |
12. Things I would avoid right now
Avoid this while debugging:
boundary 0.750
steps 6
CFG 1-ish on normal High/Low UNets
external ModelSamplingSD3 shift + WanMoe sigma_shift
720p
49+ frames before baseline works
upscale
interpolation
face restore
multiple LoRAs
cinematic lighting prompts
large camera movement
Especially avoid judging the workflow from this combination:
8GB VRAM
normal High/Low GGUFs
boundary 0.750
steps 6
CFG 1.5 / 2.0
external shift 5
internal sigma_shift 4
large frame count
large resolution
That setup has too many unstable variables.
13. Short answer
Your screenshot has three likely problems:
1. boundary should probably be 0.900, not 0.750, for Wan2.2 I2V
2. six steps is too low for judging the normal High/Low UNets
3. shift is likely being applied ambiguously through both ModelSamplingSD3 and WanMoeKSampler
My recommended reset for the normal High/Low branch:
Remove:
ModelSamplingSD3 nodes
WanMoeKSampler:
boundary: 0.900
steps: 12
cfg_high_noise: 3.0
cfg_low_noise: 3.0
sampler: euler
scheduler: simple
sigma_shift: 5.0
add_noise: enable
return_with_leftover_noise: disable
VAE:
wan_2.1_vae.safetensors
Test:
33 frames
512-640px long side
no LoRAs
no upscale
no interpolation
no face restore
If you are actually using Lightning/LightX2V LoRAs, use the strict distilled branch instead:
boundary: 0.900
steps: 4
cfg_high_noise: 1.0
cfg_low_noise: 1.0
sampler: euler
scheduler: simple
sigma_shift: 5.0
LoRA strength: 1.0
VAE: wan_2.1_vae.safetensors
The blur, crosshatching, and yellow flash are most likely from:
wrong boundary
+ too few steps
+ ambiguous/double shift
+ possibly wrong VAE
+ possibly mixing normal and distilled recipes
14. Useful references
- WanMoeKSampler README — boundary guidance and explanation that diffusion timestep is not denoising step.
- Wan2.2 I2V-A14B model card — official High-noise / Low-noise MoE model information.
- Wan2.2 official GitHub — official Wan2.2 repository and model family overview.
- ComfyUI official Wan2.2 workflow guide — official ComfyUI Wan2.2 workflow notes.
- ComfyUI Wan2.2 examples — model/VAE file guidance for Wan2.2 workflows.
- ComfyUI-GGUF — GGUF loading support for ComfyUI.
- QuantStack Wan2.2 I2V-A14B GGUF — GGUF quant size reference.
- city96 UMT5 XXL encoder GGUF — text encoder quantization reference.
- LightX2V Wan2.2 I2V A14B MoE Distill — distilled 4-step-style branch guidance.
- Wan2.2-Lightning GitHub — Lightning-style low-step Wan2.2 acceleration.
Discussion in the ATmosphere