Nodes/ComfyUI-ArchAi3d-Qwen/๐ŸŽญ Smart USDU DiffDiff (Custom Sample)
ComfyUI Node

๐ŸŽญ Smart USDU DiffDiff (Custom Sample)

Differential-diffusion upscaling with your own sampler and sigma schedule

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐ŸŽญ Smart USDU DiffDiff (Custom Sample)
  • image
  • model
  • conditionings
  • negative
  • vae
  • denoise_mask
  • upscale_model
  • custom_sampler
  • custom_sigmas
  • IMAGE
โ—„upscale_by2.00โ–บ
โ—„seed0โ–บ
โ—„steps20โ–บ
โ—„cfg8.00โ–บ
โ—„sampler_nameโ–พโ–บ
โ—„schedulerโ–พโ–บ
โ—„denoise0.20โ–บ
โ—„mode_typeโ–พโ–บ
โ—„tile_width512โ–บ
โ—„tile_height512โ–บ
โ—„mask_blur8โ–บ
โ—„tile_padding32โ–บ
โ—„seam_fix_modeโ–พโ–บ
โ—„seam_fix_denoise1.00โ–บ
โ—„seam_fix_width64โ–บ
โ—„seam_fix_mask_blur8โ–บ
โ—„seam_fix_padding16โ–บ
โ—„force_uniform_tilestrueโ–บ
โ—„tiled_decodefalseโ–บ
โ—„multiplier1.000โ–บ

Most people will never need this variant. It's the Smart USDU Differential Diffusion node with two extra sockets: custom_sampler (SAMPLER) and custom_sigmas (SIGMAS). You reach for it when you want the tiled upscaler to use something the dropdown list can't give you - a custom sampler object from another node pack, or a bespoke sigma schedule that matches your model's training (some checkpoints ship with their own recommended schedules, and the "Custom Sample" suffix means those can be injected here instead of recreated from sampler_name + scheduler).

If that sentence made no sense to you, use the plain DiffDiffusion node. This one is for people who've already been bitten by "the default schedule ruins my model's colors" and know exactly what they're swapping in.

What changed vs. the base node

The core is unchanged - optional denoise_mask (white = more denoise, black = less), multiplier (<1 stronger / >1 weaker), per-tile conditionings, full USDU tiling and seam-fix block, and upscale_by + upscale_model so it does its own pixel upscale. The differences are structural:

  • custom_sampler and custom_sigmas are optional; leave them empty and it falls back to sampler_name/scheduler/steps like normal.
  • upscale_model moved from required to optional, so you can even run the upscale factor path without a model input if your sampler setup handles it (or feed one when you need the pixel upscale).

The convention across this family is the same: the Custom Sample variants take a SAMPLER and SIGMAS object rather than the string names. If a workflow you're following passes an Align-Your-Steps scheduler or a cosine-exponential blend into a "CustomSample" node, this is the socket it plugs into.

Installing it

Part of ComfyUI-ArchAi3d-Qwen by Amir Ferdos (ArchAi3d). ComfyUI Manager โ†’ search "ArchAi3d Qwen" โ†’ install โ†’ restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/amir84ferdos/ComfyUI-ArchAi3d-Qwen.git
cd ComfyUI-ArchAi3d-Qwen
pip install -r requirements.txt

Restart after. No extra deps for this node beyond ComfyUI's own torch/numpy/Pillow - the heavy stuff in requirements.txt serves other pack features. Free for personal use; commercial use needs the paid license.

Where it's worth it - and where it isn't

This is one of those "if you know, you know" nodes. If you're hitting VRAM ceilings while tiling with a custom-sampler workflow you already trust, it saves you reimplementing tiling yourself. If you just wanted a slightly different sampler, remember sampler_name already exposes all 44 ComfyUI samplers - Custom Sample adds real complexity for a use case you may not have. And the usual DiffDiff rules still apply: multiplier direction flips at 1.0, masks get resized to output size, and conditioning count mismatch silently reuses the last entry.

CategoryArchAi3d/Upscaling/USDU

Inputs (29)

NameTypeDefaultDescription
imageIMAGEโ€”
modelMODELโ€”
conditioningsCONDITIONING_LISTโ€”
negativeCONDITIONINGโ€”
vaeVAEโ€”
upscale_byFLOAT2.000.05โ€“4โ€”
seedINT00โ€“18446744073709550000โ€”
stepsINT201โ€“10000โ€”
cfgFLOAT8.000โ€“100โ€”
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.200โ€“1โ€”
mode_typeCOMBO3 options: Linear, Chess, None
tile_widthINT51264โ€“8192โ€”
tile_heightINT51264โ€“8192โ€”
mask_blurINT80โ€“64โ€”
tile_paddingINT320โ€“8192โ€”
seam_fix_modeCOMBO4 options: None, Band Pass, Half Tile, Half Tile + Intersections
seam_fix_denoiseFLOAT1.000โ€“1โ€”
seam_fix_widthINT640โ€“8192โ€”
seam_fix_mask_blurINT80โ€“64โ€”
seam_fix_paddingINT160โ€“8192โ€”
force_uniform_tilesBOOLEANtrueโ€”
tiled_decodeBOOLEANfalseโ€”
denoise_maskoptMASKOptional mask for per-pixel denoise. White=more denoise, Black=less
multiplieroptFLOAT1.000-10โ€“10Controls effect strength. <1=stronger, >1=weaker
upscale_modeloptUPSCALE_MODELโ€”
custom_sampleroptSAMPLERโ€”
custom_sigmasoptSIGMASโ€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEโ€”