mirror of
https://github.com/Comfy-Org/comfyci-runpod-worker.git
synced 2026-11-04 23:47:32 +00:00
[PR #5] [MERGED] Stage Krea 2, Z-Image turbo and Qwen Image 2.1 edit regression workflows #5
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/comfyci-runpod-worker#5
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/comfyci-runpod-worker/pull/5
Author: @marawan206
Created: 10/8/2026
Status: ✅ Merged
Merged: 10/9/2026
Merged by: @marawan206
Base:
main← Head:add-image-model-workflows📝 Commits (5)
0c1a5f0Lint the manifest against its workflows in the script tests1f7b607Stage Krea 2, Z-Image turbo and Qwen Image 2.1 edit workflows7b85dbfLint for unused models and nodes that do not feed the SaveImage2306d97Merge remote-tracking branch 'origin/main' into add-image-model-workflowsa92baeeMerge remote-tracking branch 'origin/main' into add-image-model-workflows📊 Changes
7 files changed (+559 additions, -6 deletions)
View changed files
📝
.github/workflows/scripts-tests.yml(+4 -3)📝
README.md(+15 -3)📝
manifest/workflows.json(+105 -0)➕
manifest/workflows/krea2_turbo_t2i_api.json(+73 -0)➕
manifest/workflows/qwen_image_2_1_edit_api.json(+84 -0)➕
manifest/workflows/z_image_turbo_t2i_api.json(+81 -0)➕
scripts/tests/test_manifest_lint.py(+197 -0)📄 Description
Summary
Adds three official Comfy template workflows to the GPU regression suite, staged (
"enabled": false), sosync-modelscan put their models on the network volume before goldens are generated. Also adds a CPU-only manifest lint to the script tests and runs those tests onmanifest/**changes.krea2_turbo_t2iimage_krea2_turbo_t2ikrea2_turbo_fp8_scaled13.14 GB,qwen3vl_4b_fp8_scaled5.24 GB,qwen_image_vae0.25 GBz_image_turbo_t2iimage_z_image_turboz_image_turbo_bf1612.31 GB,qwen_3_4b8.04 GB,vae/ae.safetensors(already on the volume, see below)qwen_image_2_1_editimage_qwen_image_2_1_image_editqwen_image_2.1_int8_convrot7.26 GB,qwen3vl_8b_int8_convrot9.35 GB,qwen_image_2.1_vae_bf160.68 GB, 2 input PNGs (2.5 MB)properties.modelsin Comfy-Org/workflow_templates. Every new URL was HEAD-checked (302 from Hugging Face, not gated), and each entry pins thesha256that Hugging Face reports.vae/ae.safetensorsis byte-identical to the FLUX.1-devae.safetensorsalready on the volume: same size, same sha256afc8e282…, same LFS pointer. The entry reuses the existing FLUX URL so the sync treats them as one file. That URL needsHF_TOKEN, which is already configured for FLUX.Simplifications vs. the templates (and why)
The goal is a stable image-model regression signal that loads only the models that actually run.
ComfySwitchNodes along with the disabledkrea2_darkbrushLoRA and theqwen3.5_9b…pe_i2iprompt-enhancer CLIP (8.8 GB that would never run).TextGenerate, sampling on) before encoding. A tiny numeric change in the LLM can rewrite the whole prompt and change every pixel, which hides whether the image model itself regressed. The user prompt now goes straight intoCLIPTextEncode, with the text unchanged. Text generation deserves its own workflow; I can add one separately.ResolutionSelector(1:1, 1 MP, ×8)is replaced by its result, 1024x1024 (the node computesmegapixels × 1024 × 1024). ThePreviewAny, system-prompt and concatenate nodes are dropped.TextEncodeQwenImage21with both reference images (resolution: 0) and the default prompt "Replace costumes for the character". The latent comes from the encoder's reference-sized output, which is the default branch.ImageCompareis dropped.QwenImage21Cacheis kept atauto/default, which is lossless.SaveImageAdvanced(png, 8-bit, sRGB) replaced bySaveImage. For 8-bit PNG both produce the same pixels: ×255, clamp, truncate to uint8, and the colorspace option doesn't change PNG pixels.SaveImageexists in every tag and avoids the dottedformat.*inputs that the runner's schema adaptation could strip.filename_prefixis the workflow id. Seeds are the template values, and each has a matchingseed_overridesentry (30:3,57:3,459:458). Node ids are kept verbatim, including the ones with:.Input images
The worker can't receive files, and the per-commit checkout runs
git cleanin ComfyUI. So the two reference PNGs are listed undermodelswith"directory": "input", pinned to workflow_templates commit96309bdwith their sha256.sync-modelsputs them at/runpod-volume/models/input/, and the entry sets"comfy_flags": ["--input-directory", "/runpod-volume/models/input"].--input-directorysets ComfyUI's input folder, whichLoadImagereads from (in every tag since at least v0.26.0), and the worker'smissing_modelscheck covers these files like any other model. No image rebuild is needed.Manifest lint
scripts/tests/test_manifest_lint.pyloads the real manifest and every workflow it references, and checks:SaveImage, so no leftover preview or helper nodes run extra models;*_nameloader inputs, any model-file extension,LoadImage.image) match that entry'smodelsin both directions: nothing loaded is missing, and nothing synced goes unused;extra_model_pathsfolders, orinputwith--input-directory;directory/nameshared between workflows points at one URL and sha256;SaveImagewhose prefix is the workflow id;timeout_sis below the 3600 s endpoint limit.scripts-tests.ymlnow also runs onmanifest/**anddocker/extra_model_paths.yaml.Feasibility (RTX 4090 24 GB, torch 2.11 cu128)
int8_tensorwise, convrot, group 256) run on cu128.comfy/quant_ops.pyturns off comfy-kitchen's CUDA kernels below CUDA 13, and comfy-kitchen's plain-PyTorchint8_linear(Hadamard rotation plustorch._int_mm) takes over: slower, but it works.comfy.ldm.fluxthat ComfyUI #16488 changed. They only importEmbedND,apply_ropeandtimestep_embedding.Rollout
sync-modelsruns and downloads about 56 GB. If it hits the endpoint's 3600 s limit, dispatch it again; it keeps finished files.ref=v0.39.2,workflows=<id>,bless=false.golden/<id>/v0.39.2/outputs/andnoise_floor.json(r1 vs r2), and checkprompt_exec_sagainst the timeouts.bless_only=true."enabled": true(and tightenstimeout_sif the measured times allow).Risks
scripts-tests.ymlis also added by #2. Whichever merges second gets a small conflict; keep this version, which only adds triggers.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.