☁️BizyAir UltimateSDUpscale
BizyAir UltimateSDUpscale — ComfyUI Node Guide
- image
- model
- positive
- negative
- vae
- upscale_model
- IMAGE
What it is
Ultimate SD Upscale has been the most accessible way to push an image well past a model's native resolution since the A1111 days - "We have new Upscaler in Automatic - Ultimate SD Upscaler, and it's crazy" is the kind of reaction that put it on the map originally. The trick is tiling: it slices the image into overlapping tiles, upscales and re-samples each one individually, and stitches the seams back together, which sidesteps the VRAM wall you'd hit trying to generate a huge image in one pass. This node is BizyAir's cloud version - same tiled-diffusion approach, running on their GPUs against a BIZYAIR_MODEL.
The one thing worth knowing before you reach for it: this is a generative upscaler, not a pure pixel-interpolation one. It's actually running a fresh diffusion pass on each tile, guided by your positive/negative conditioning, so it can add real detail - but that also means it can subtly rewrite things like faces if the denoise strength is set too high. If you just want more pixels with zero content change, a plain interpolation upscaler is the better tool; this one is for adding detail while you enlarge.
How it works
Each tile gets upscaled by the upscale_model you supply, then re-sampled through your loaded model with the given steps, CFG, sampler, and scheduler - effectively a mini img2img pass per tile, at a low denoise so the tile stays close to its upscaled source rather than reinventing it. Once every tile is processed, the node blends the seams using whatever seam-fix mode you've chosen, since tiles processed independently don't naturally agree with their neighbors at the edges.
Inputs and outputs that matter
The core sampling inputs are the ones you'd recognize from any custom sampler: image, model, positive/negative conditioning, vae, seed, steps, cfg, sampler_name, scheduler, and denoise (default 0.2 - deliberately low, since this is refinement, not regeneration). upscale_by (default 2, up to 4×) sets the target scale, and upscale_model supplies the actual super-resolution model doing the pixel-level enlarging before each tile gets re-sampled.
The tiling-specific parameters are where this node earns its name: tile_width/tile_height (default 512) set tile size, tile_padding (default 32) gives each tile extra surrounding context so it doesn't lose track of what's nearby, mode_type picks the tiling pattern (Linear, Chess, or None), and mask_blur softens tile boundaries. The seam_fix_* group (seam_fix_mode, seam_fix_denoise, seam_fix_width, seam_fix_mask_blur, seam_fix_padding) runs a second cleanup pass specifically on tile boundaries if the first pass left visible seams - leave seam_fix_mode at None first and only turn it on if you actually see seam artifacts. force_uniform_tiles and tiled_decode are lower-priority toggles for tile consistency and VAE memory handling respectively.
The single output is IMAGE - your upscaled result, ready to save or feed further downstream.
Installing it
Install through ComfyUI Manager (search "BizyAir") or git clone https://github.com/siliconflow/BizyAir.git into custom_nodes, then restart. A BizyAir API key is required before this or any pack node runs - the first-run login prompt sets that up.
Common issues
If faces or fine detail come out visibly different from the source, denoise is almost always too high - start at 0.2 and only raise it if the result looks under-detailed, not the other way around. Visible grid lines or seams between tiles mean you need seam_fix_mode turned on rather than None. And because every tile runs a full sampling pass on BizyAir's cloud, a large image at a high upscale_by can mean dozens of tiles - expect this to be one of the slower and more credit-hungry nodes in the pack, not a quick pass.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | BIZYAIR_MODEL | — | |
| positive | BIZYAIR_CONDITIONING | — | |
| negative | BIZYAIR_CONDITIONING | — | |
| vae | BIZYAIR_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 | — |
| upscale_model | BIZYAIR_UPSCALE_MODEL | — | |
| 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 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |