๐ Smart Ultimate SD Upscale (Custom Sample)
Same tiled upscaler, but you bring your own sampler and sigmas
- image
- model
- conditionings
- negative
- vae
- upscale_model
- custom_sampler
- custom_sigmas
- IMAGE
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.SAMPLERSlist). - 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 tosampler_name.custom_sigmas- a SIGMAS tensor for a hand-rolled schedule. If you feed sigmas, most sampler implementations take over the step count, so setstepsaccordingly 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.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | โ | |
| model | MODEL | โ | |
| conditionings | CONDITIONING_LIST | โ | |
| negative | CONDITIONING | โ | |
| vae | VAE | โ | |
| upscale_by | FLOAT | 2.000.05โ4 | โ |
| seed | INT | 00โ18446744073709550000 | โ |
| steps | INT | 201โ10000 | โ |
| cfg | FLOAT | 8.000โ100 | โ |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 0.200โ1 | โ |
| mode_type | COMBO | 3 options: Linear, Chess, None | |
| tile_width | INT | 51264โ8192 | โ |
| tile_height | INT | 51264โ8192 | โ |
| mask_blur | INT | 80โ64 | โ |
| tile_padding | INT | 320โ8192 | โ |
| seam_fix_mode | COMBO | 4 options: None, Band Pass, Half Tile, Half Tile + Intersections | |
| seam_fix_denoise | FLOAT | 1.000โ1 | โ |
| seam_fix_width | INT | 640โ8192 | โ |
| seam_fix_mask_blur | INT | 80โ64 | โ |
| seam_fix_padding | INT | 160โ8192 | โ |
| force_uniform_tiles | BOOLEAN | true | โ |
| tiled_decode | BOOLEAN | false | โ |
| upscale_modelopt | UPSCALE_MODEL | โ | |
| custom_sampleropt | SAMPLER | โ | |
| custom_sigmasopt | SIGMAS | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | โ |