HSWQ Ultimate SD Upscale
Ultimate SD Upscale, bundled in-tree and tuned for the HSWQ stack
- image
- model
- positive
- negative
- vae
- upscale_model
- IMAGE
Ultimate SD Upscale is the tiled-upscaling workhorse that got big in A1111 and carried over to ComfyUI: upscale the image with a pixel upscaler, then run a diffusion img2img pass on overlapping tiles so the model adds real detail without ever seeing the whole huge image at once - which is how you get 4K output on a 12 GB card. This node is that, shipped inside the HSWQ pack as a self-contained copy, with the original ComfyUI_UltimateSDUpscale package deliberately not required at runtime. It's based on ssitu's GPL-3.0 project, and the README says so openly.
What's actually different here
- Color normalization. Nunchaku SDXL VAE output comes back in a compressed range (roughly 0.15–0.85), which reads as pale, washed-out color. This node normalizes VAE output to full 0.0–1.0 range before upscaling, fixing that specific failure out of the box.
- FP8/torch.compile compat patches. On load it applies patches for copy shape mismatches, FP8 linear/addmm bias–out_features mismatches, and control embedder weight layout issues, so the node actually works with HSWQ FP8 models and torch.compile.
- Standalone. No separate install of ssitu's pack, no module-name collisions with other custom nodes.
How the upscaling is sized
upscale_by- the big one. Auto reads the input image height and setsscale = target_height / input_height, clamped to 0.05–4.0. Or pick a fixed magnification from the dropdown (0.05 to 4.00 in 0.05 steps) andtarget_heightis ignored.- Example straight from the README: input height 1080,
upscale_by = Auto,target_height = 4320→ scale 4.0 → output 4320px tall.
The rest is the standard Ultimate SD Upscale kit: upscale_model (an ESRGAN-style pixel upscaler), tile_width / tile_height (512 default), mask_blur, tile_padding, mode_type (Linear / Chess / None - tile order), the seam-fix family (None / Band Pass / Half Tile / Half Tile + Intersections with seam_fix_denoise, seam_fix_width, seam_fix_mask_blur, seam_fix_padding), plus the sampling set - seed, steps, cfg, sampler_name, scheduler, denoise (0.2 default, the classic light-touch tile value), positive, negative, vae, model, image. Two settings deserve special attention:
batch_size- defaults to 1. The tooltip is a trap warning: higher values are faster but eat VRAM, and if you get tensor-size mismatches with FP8/FP4 quantized models, set this to 1. It's the first thing to check when a tiled run starts erroring on quantized weights.tensor_boost- off by default, and the README's guidance is to keep it off for tiled upscaling. Turning it on enables Per-Weight CUDA Graph acceleration for SDXL ConvRot NVFP4 on Blackwell, and it costs several GB of VRAM in CUDA Graph arenas. The intended pairing is: Tensor Boost on for the fixed-resolution base pass in the HSWQ Sampler, off here for the tiles, because per-tile shape changes stack graph arenas and can spill to system RAM. Recommended hardware for that path: RTX 5090 with 32 GB+.
Gotchas
Beyond the batch_size and tensor_boost notes, remember the pack's standing rule: if you're upscaling HSWQ ConvRot INT8/NVFP4 models, put General Purge VRAM V2 from ComfyUI-DistorchMemoryManager at the end of the workflow with the HSWQ toggle on, or the second run can fail on residual NVFP4 pools. And if you're not running the HSWQ stack at all, ssitu's standalone Ultimate SD Upscale is the more widely documented choice - this node's edge cases (color normalization, FP8 patches) only matter to this ecosystem.
Install: ComfyUI Manager or git clone https://github.com/ussoewwin/ComfyUI-HSWQ-Loader-and-Tools into custom_nodes, then restart.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | The image to upscale. | |
| model | MODEL | The model to use for image-to-image. | |
| positive | CONDITIONING | The positive conditioning for each tile. | |
| negative | CONDITIONING | The negative conditioning for each tile. | |
| vae | VAE | The VAE model to use for tiles. | |
| upscale_by | COMBO | Auto | Choose 'Auto' to calculate the scale from target vertical pixels, or select a fixed magnification. |
| target_height | INT | 432064–8192 | Target output height in pixels. Used only when upscale_by is 'Auto'. |
| seed | INT | 00–18446744073709550000 | The seed to use for image-to-image. |
| steps | INT | 201–10000 | The number of steps to use for each tile. |
| cfg | FLOAT | 8.000–100 | The CFG scale to use for each tile. |
| sampler_name | COMBO | The sampler to use for each tile. | |
| scheduler | COMBO | The scheduler to use for each tile. | |
| denoise | FLOAT | 0.200–1 | The denoising strength to use for each tile. |
| upscale_model | UPSCALE_MODEL | The upscaler model for upscaling the image. | |
| mode_type | COMBO | The tiling order to use for the redraw step. | |
| tile_width | INT | 51264–8192 | The width of each tile. |
| tile_height | INT | 51264–8192 | The height of each tile. |
| mask_blur | INT | 80–64 | The blur radius for the mask. |
| tile_padding | INT | 320–8192 | The padding to apply between tiles. |
| seam_fix_mode | COMBO | The seam fix mode to use. | |
| seam_fix_denoise | FLOAT | 1.000–1 | The denoising strength to use for the seam fix. |
| seam_fix_width | INT | 640–8192 | The width of the bands used for the Band Pass seam fix mode. |
| seam_fix_mask_blur | INT | 80–64 | The blur radius for the seam fix mask. |
| seam_fix_padding | INT | 160–8192 | The padding to apply for the seam fix tiles. |
| force_uniform_tiles | BOOLEAN | true | Force all tiles to be the same as the set tile size, even when tiles could be smaller. This can help prevent the model from working with irregular tile sizes. |
| tiled_decode | BOOLEAN | false | Whether to use tiled decoding when decoding tiles. |
| batch_size | INT | 11–4096 | The number of tiles to process in a batch. Higher values can reduce processing time but use more VRAM. If you get tensor size mismatch with FP8/FP4 (quantized) models, set this to 1. |
| tensor_boost | BOOLEAN | false | Enable Blackwell Per-Weight CUDA Graph Tensor Boost during USDU tile upscaling. ON raises VRAM by several GB; RTX 5090 32GB+ recommended. Keep OFF for tiled upscale. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | The final upscaled image. |