Nodes/ComfyUI Deadline Distributed/Deadline Ultimate SD Upscale Distributed (No Upscale)
ComfyUI Node

Deadline Ultimate SD Upscale Distributed (No Upscale)

The farm-sized version of the classic tiled upscaler

By doubletwisted·Created about a year ago·Updated 3 months ago· 9
Deadline Ultimate SD Upscale Distributed (No Upscale)
  • upscaled_image
  • model
  • positive
  • negative
  • vae
  • IMAGE
seed0
steps20
cfg8.00
sampler_name
scheduler
denoise0.50
tile_width512
tile_height512
padding32
mask_blur8
force_uniform_tilestrue
tiled_decodefalse
static_distributionfalse

If you've ever upscaled a big image on a small card, you know Ultimate SD Upscale: it cuts the image into overlapping tiles, runs a fresh sampling pass over each tile, and stitches them back together so you get detail without blowing your VRAM budget. This is the same idea with the farm bolted on. The tiles don't all have to sample on one GPU - they get spread across every worker the master can see, and the results come back stitched.

What the "(No Upscale)" in the name means. This node doesn't upscale. It expects the image already enlarged - that's why the first input is upscaled_image - and runs the tiled refiner pass: the detail-restoring second half of the classic Ultimate SD Upscale recipe. You upscale the pixels with a real upscaler first (ESRGAN-style, or whatever your pipeline likes), then run this node's tiled sampling to hallucinate the detail back in. That's the same mental model the KB's upscaling doc pushes: decide whether your job is "more pixels" or "more detail" before you pick a tool.

The inputs that matter. It's a full sampler under a hood, so the sampler family shows up in force: model, positive, negative, vae, seed, steps (default 20), cfg (default 8), sampler_name, scheduler, denoise (default 0.5). Then the tiling controls: tile_width / tile_height (512 default), padding (32, the overlap that stops seams), and mask_blur (8, the feather on the tile edges). Two toggles are worth knowing: tiled_decode runs the VAE decode in tiles to keep memory low on big images, and force_uniform_tiles (default true) keeps tile sizes even. static_distribution is explicitly labeled legacy - leave it off and the node picks between static and dynamic distribution automatically. One IMAGE comes out.

How the distribution works. The source spells out three modes. No workers available? Everything runs locally, single GPU, exactly like the classic node. Small batches? Static mode, tiles flattened and handed out across workers. Large batches (the dynamic threshold defaults to 8 images)? Whole images get assigned to workers dynamically instead, which is far less chatty than shuttling thousands of tiles. Workers heartbeat back, and if one times out on its tiles, the master requeues or locally completes the missing work - that fallback is the reason this node feels robust in a way the raw collector doesn't.

Settings and gotchas. The heavy tunables live in gpu_config.json (worker_result_wait_timeout, worker_heartbeat_grace_timeout, max_batch) plus a few env vars (COMFYUI_MAX_BATCH default 20, COMFYUI_MAX_PAYLOAD_SIZE default 50MB). Realistically the default tile settings are fine on SDXL-class models; start at 512 tiles, 32 padding, denoise 0.5, and only touch them when you see seams (raise padding) or tile-boundary artifacts (raise mask_blur). Every worker needs the same checkpoint and the same ComfyUI version - a missing model file on one machine turns a fast farm job into a timeout-fest while the master waits on a worker that's silently failing.

Categoryimage/upscaling

Inputs (18)

NameTypeDefaultDescription
upscaled_imageIMAGE
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
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.500–1
tile_widthINT51264–2048
tile_heightINT51264–2048
paddingINT320–256
mask_blurINT80–256
force_uniform_tilesBOOLEANtrue
tiled_decodeBOOLEANfalse
static_distributionBOOLEANfalse

Outputs (1)

NameTypeDescription
IMAGEIMAGE