Nodes/Comfyui-zhenzhen/Concurrent Submit | zhenzhen-topaz-upscale-fal
ComfyUI Node

Concurrent Submit | zhenzhen-topaz-upscale-fal

Topaz upscaling on the cloud, 30 jobs deep

By T8mars·Created about a year ago·Updated 2 days ago· 740
Concurrent Submit | zhenzhen-topaz-upscale-fal
  • image
  • video
  • task
modeimage
image_url
video_url
api_key
image_modelStandard V2
video_modelProteus
upscale_factor2.0
output_formatjpeg
subject_detectionAll
crop_to_fillfalse
face_enhancementtrue
face_enhancement_creativity-1.00
face_enhancement_strength0.80
sharpen-1.00
denoise-1.00
fix_compression-1.00
strength-1.00
creativity0
texture0
prompt
autopromptfalse
detail-1.00
target_fps0
compression-1.00
noise-1.00
halo-1.00
grain-1.00
recover_detail-1.00
h264_outputfalse
image_waybase64
video_wayupload
poll_interval6
max_poll_attempts600
skip_errorfalse

Topaz is the commercial upscaler that predates the AI-image boom - the one video editors and photographers reach for when a local model isn't good enough or fast enough. This node puts Topaz's image and video upscalers behind fal's hosted API, and then the concurrent wrapper does something the local stack struggles with: it runs up to thirty of these jobs at once. That's the important number. Local upscaling is sequential - one image, one GPU, one at a time. This queues thirty and drains them in parallel, which for a big batch of hi-res output is a genuinely different workflow.

Inputs that matter

  • mode - image or video. Everything else in the input list is conditional on this.
  • image_model - ten choices: Standard V2, Low Resolution V2, CGI, High Fidelity V2, Text Refine, Recovery, Redefine, Recovery V2, Standard MAX, Wonder. Standard V2 is the everyday pick; Recovery/Recovery V2 are for restoring old or compressed footage; Redefine takes a prompt and gets creative.
  • video_model - nineteen options headed by Proteus (the general video workhorse) with Artemis and Nyx tiers and the Gaia/Starlight families.
  • upscale_factor - 1 to 8 in 0.5 steps, default 2. This is the lever most people touch.
  • face_enhancement - on by default, with face_enhancement_creativity and face_enhancement_strength (both default to -1 = leave unset). For portraits, this is what keeps faces from turning to mush at 4x.
  • output_format - jpeg or png.
  • target_fps - 0 (unset) by default; setting it enables frame interpolation on video.
  • image / video or image_url / video_url - your source. A connected tensor wins over a URL.
  • api_key, image_way, video_way, poll_interval, max_poll_attempts, skip_error - the standard fal-node furniture.

The model-specific knobs (strength/creativity/texture/prompt for Redefine, detail for Recovery V2, sharpen, denoise, grain, halo, and friends) are all -1-or-unset by default, so you can ignore them until you hit a specific failure mode. The tooltips tell you which model each belongs to.

How it works - and the one difference from the video nodes

This is an image-pool node. The task it outputs is a COMFLY_IMAGE_FUTURE, and you collect it in Concurrent Collect Images (ComflyConcurrent_Image_Await), which has thirty sockets - one per image worker. Not the ten-slot video collector; wire an image task into the video node and it'll refuse. Under the hood the wrapper in ComflyConcurrent.py validates and pushes the real fal job onto the image executor (default 30 workers, COMFLY_IMAGE_CONCURRENCY if you want to change it). The fal route pre-deducts credits at submit and settles after.

Setup

One-time install for the pack: ComfyUI Manager (search "Comfyui-zhenzhen"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

No weights to download - this is pure cloud. You need a Zhenzhen key from ai.t8star.org (overseas) or api.seedance.nz (domestic), and Topaz via fal bills per job with pre-deduction, so a 30-deep batch moves a chunk of credits before a single image returns.

Gotchas

The single biggest mistake: queueing thirty 4x jobs "to be safe" and discovering the credit math after. Do one job first, check the actual cost in your account's task log, then batch. For images that are already noisy or JPEG-artifacted, Recovery (or Low Resolution V2 for very small sources) usually beats Standard V2. And because these jobs leave your machine entirely, anything you upscale is on fal's servers - keep that in mind before you batch-send a stack of images you'd rather not have leave the building.

Categoryzhenzhen/FAL/Concurrent Submit

Inputs (36)

NameTypeDefaultDescription
modeCOMBOimage2 options: image, video
imageoptIMAGE
videooptVIDEO
image_urloptSTRING
video_urloptSTRING
api_keyoptSTRING
image_modeloptCOMBOStandard V210 options: Low Resolution V2, Standard V2, CGI, High Fidelity V2, Text Refine, Recovery, +4
video_modeloptCOMBOProteus19 options: Proteus, Artemis HQ, Artemis MQ, Artemis LQ, Nyx, Nyx Fast, +13
upscale_factoroptFLOAT2.01–8
output_formatoptCOMBOjpeg2 options: jpeg, png
subject_detectionoptCOMBOAll3 options: All, Foreground, Background
crop_to_filloptBOOLEANfalse
face_enhancementoptBOOLEANtrue
face_enhancement_creativityoptFLOAT-1.00-1–1-1 leaves API default/unset.
face_enhancement_strengthoptFLOAT0.80-1–1-1 leaves API default/unset.
sharpenoptFLOAT-1.00-1–1-1 leaves API default/unset.
denoiseoptFLOAT-1.00-1–1-1 leaves API default/unset.
fix_compressionoptFLOAT-1.00-1–1-1 leaves API default/unset.
strengthoptFLOAT-1.00-1–1Text Refine only; -1 leaves unset.
creativityoptINT00–6Redefine only; 0 leaves unset.
textureoptINT00–5Redefine only; 0 leaves unset.
promptoptSTRINGRedefine prompt.
autopromptoptBOOLEANfalse
detailoptFLOAT-1.00-1–1Recovery V2 only; -1 leaves unset.
target_fpsoptINT00–1200 leaves unset. Setting FPS enables frame interpolation.
compressionoptFLOAT-1.00-1–1-1 leaves API default/unset.
noiseoptFLOAT-1.00-1–1-1 leaves API default/unset.
halooptFLOAT-1.00-1–1-1 leaves API default/unset.
grainoptFLOAT-1.00-1–0.1-1 leaves API default/unset.
recover_detailoptFLOAT-1.00-1–1-1 leaves API default/unset.
h264_outputoptBOOLEANfalse
image_wayoptCOMBObase642 options: base64, image_url
video_wayoptCOMBOupload2 options: upload, video_url
poll_intervaloptINT61–60
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse

Outputs (1)

NameTypeDescription
taskCOMFLY_IMAGE_FUTURE