Nodes/ComfyUI-ArchAi3d-Qwen/๐Ÿš€ Smart Ultimate SD Upscale (Custom Sample)
ComfyUI Node

๐Ÿš€ Smart Ultimate SD Upscale (Custom Sample)

Same tiled upscaler, but you bring your own sampler and sigmas

By amir84ferdosยทCreated 11 months agoยทUpdated 5 months agoยท 70
๐Ÿš€ Smart Ultimate SD Upscale (Custom Sample)
  • image
  • model
  • conditionings
  • negative
  • vae
  • 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โ–บ

This is the sibling of ArchAi3D_Smart_Ultimate_SD_Upscale - same tiled upscaler, same per-tile CONDITIONING_LIST trick, same USDU grid math and seam-fix modes. The difference is in the name: it opens the hood on the sampling step. Where the plain node only lets you pick from the built-in sampler_name / scheduler dropdowns, this one accepts optional SAMPLER and SIGMAS inputs.

When you actually need it

The honest answer: most people don't. If you're running a normal KSampler with euler/karras, grab the base node. This variant exists for the workflows where the sampler itself is the experiment. A few real cases:

  • You're using a custom sampler from a sampler pack (some don't register in the standard KSampler.SAMPLERS list).
  • You have a pre-computed sigma schedule you want to force - one-step or few-step models, DMD/consistency-style checkpoints, or a schedule you built with a sigmas node.
  • You're A/B testing sampling strategies on the same tiled upscale and want to swap samplers without rebuilding the graph.

Under the hood it's literally the base class with upscale_model moved to optional (you can skip the pixel upscaler entirely and go straight from the source image) plus the two extra optional inputs. Everything else - denoise, upscale_by, tile_width, tile_height, tile_padding, the four seam-fix modes, force_uniform_tiles, tiled_decode - behaves identically.

Inputs worth knowing

  • custom_sampler - a SAMPLER object. Leave unconnected and it falls back to sampler_name.
  • custom_sigmas - a SIGMAS tensor for a hand-rolled schedule. If you feed sigmas, most sampler implementations take over the step count, so set steps accordingly or it just gets ignored.
  • upscale_model - now optional, so a pure latent-upscale pass is possible without an ESRGAN model.
  • conditionings - still the CONDITIONING_LIST; tile order is still row-major to match the pack's Smart Tile prompters.

Output is the stitched IMAGE, same as the base node.

Gotchas

Because this is a port of the A1111 Ultimate SD Upscale script, it inherits that script's assumptions: custom_sigmas is passed into the stable-diffusion processing object the way the original script threaded custom_sampler/custom_sigmas through. If your custom sampler expects different latent handling (some of the fancier ones do), the tiles may look subtly different from a normal KSampler run of the same settings - worth a test tile before committing to a long render.

One other thing to remember: this is a "more detail" upscaler, not a restorer. Feed it a genuinely damaged source and it'll faithfully amplify the damage. For that job you want a restoration model first, this after.

Install

Same pack as everything else in the ArchAi3D family:

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

Or ComfyUI Manager โ†’ search "ArchAi3d Qwen" โ†’ Install โ†’ restart. The node lives under ArchAi3d/Upscaling/USDU in the node menu. And yes, the pack's dual license still applies - free personal, paid commercial.

CategoryArchAi3d/Upscaling/USDU

Inputs (27)

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โ€”
upscale_modeloptUPSCALE_MODELโ€”
custom_sampleroptSAMPLERโ€”
custom_sigmasoptSIGMASโ€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEโ€”