Upload folder using huggingface_hub
Browse files- chain_injectors/vae_injector.py +30 -0
- core/pipelines/sd_image_pipeline.py +1 -14
- core/pipelines/workflow_recipes/_partials/conditioning/lumina.yaml +6 -0
- core/pipelines/workflow_recipes/_partials/conditioning/sd15.yaml +6 -0
- core/pipelines/workflow_recipes/_partials/conditioning/sd35.yaml +6 -0
- core/pipelines/workflow_recipes/_partials/conditioning/sdxl.yaml +6 -0
- yaml/injectors.yaml +3 -0
chain_injectors/vae_injector.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
def inject(assembler, chain_definition, chain_items):
|
| 2 |
+
if not chain_items:
|
| 3 |
+
return
|
| 4 |
+
|
| 5 |
+
vae_name = chain_items[0] if isinstance(chain_items, list) else chain_items
|
| 6 |
+
if not vae_name or vae_name == "None":
|
| 7 |
+
return
|
| 8 |
+
|
| 9 |
+
targets = chain_definition.get('targets', [])
|
| 10 |
+
if not targets:
|
| 11 |
+
return
|
| 12 |
+
|
| 13 |
+
vae_loader_id = assembler._get_unique_id()
|
| 14 |
+
vae_loader_node = assembler._get_node_template("VAELoader")
|
| 15 |
+
vae_loader_node['inputs']['vae_name'] = vae_name
|
| 16 |
+
assembler.workflow[vae_loader_id] = vae_loader_node
|
| 17 |
+
|
| 18 |
+
injected_count = 0
|
| 19 |
+
for target_str in targets:
|
| 20 |
+
try:
|
| 21 |
+
node_name, input_name = target_str.split(':')
|
| 22 |
+
if node_name in assembler.node_map:
|
| 23 |
+
node_id = assembler.node_map[node_name]
|
| 24 |
+
assembler.workflow[node_id]['inputs'][input_name] = [vae_loader_id, 0]
|
| 25 |
+
injected_count += 1
|
| 26 |
+
except ValueError:
|
| 27 |
+
print(f"Warning: Invalid VAE injector target format '{target_str}'. Expected 'node_name:input_name'.")
|
| 28 |
+
|
| 29 |
+
if injected_count > 0:
|
| 30 |
+
print(f"VAE injector applied. Rerouted {injected_count} connection(s) to new VAELoader ({vae_name}).")
|
core/pipelines/sd_image_pipeline.py
CHANGED
|
@@ -490,6 +490,7 @@ class SdImagePipeline(BasePipeline):
|
|
| 490 |
"style_chain": active_styles,
|
| 491 |
"conditioning_chain": active_conditioning,
|
| 492 |
"reference_latent_chain": active_reference_latents,
|
|
|
|
| 493 |
}
|
| 494 |
|
| 495 |
if isinstance(path_or_components, dict):
|
|
@@ -512,20 +513,6 @@ class SdImagePipeline(BasePipeline):
|
|
| 512 |
|
| 513 |
workflow = assembler.assemble(workflow_inputs)
|
| 514 |
|
| 515 |
-
if ui_inputs.get("vae_name") and workflow_model_type not in ['flux1', 'hidream', 'lumina', 'omnigen2', 'chroma1-radiance', 'chroma1', 'hunyuanimage', 'ovis-image', 'longcat-image']:
|
| 516 |
-
print("--- [Workflow Patch] VAE override provided. Adding VAELoader and rewiring connections. ---")
|
| 517 |
-
vae_loader_id = assembler._get_unique_id()
|
| 518 |
-
vae_loader_node = assembler._get_node_template("VAELoader")
|
| 519 |
-
vae_loader_node['inputs']['vae_name'] = ui_inputs["vae_name"]
|
| 520 |
-
workflow[vae_loader_id] = vae_loader_node
|
| 521 |
-
|
| 522 |
-
vae_decode_id = assembler.node_map.get("vae_decode")
|
| 523 |
-
if vae_decode_id and vae_decode_id in workflow:
|
| 524 |
-
workflow[vae_decode_id]['inputs']['vae'] = [vae_loader_id, 0]
|
| 525 |
-
vae_encode_id = assembler.node_map.get("vae_encode")
|
| 526 |
-
if vae_encode_id and vae_encode_id in workflow:
|
| 527 |
-
workflow[vae_encode_id]['inputs']['vae'] = [vae_loader_id, 0]
|
| 528 |
-
|
| 529 |
progress(1.0, desc="All models ready. Requesting GPU for generation...")
|
| 530 |
|
| 531 |
try:
|
|
|
|
| 490 |
"style_chain": active_styles,
|
| 491 |
"conditioning_chain": active_conditioning,
|
| 492 |
"reference_latent_chain": active_reference_latents,
|
| 493 |
+
"vae_chain": [ui_inputs.get('vae_name')] if ui_inputs.get('vae_name') else [],
|
| 494 |
}
|
| 495 |
|
| 496 |
if isinstance(path_or_components, dict):
|
|
|
|
| 513 |
|
| 514 |
workflow = assembler.assemble(workflow_inputs)
|
| 515 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 516 |
progress(1.0, desc="All models ready. Requesting GPU for generation...")
|
| 517 |
|
| 518 |
try:
|
core/pipelines/workflow_recipes/_partials/conditioning/lumina.yaml
CHANGED
|
@@ -28,6 +28,12 @@ connections:
|
|
| 28 |
- from: "ckpt_loader:2"
|
| 29 |
to: "vae_encode:vae"
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
dynamic_lora_chains:
|
| 32 |
lora_chain:
|
| 33 |
template: "LoraLoader"
|
|
|
|
| 28 |
- from: "ckpt_loader:2"
|
| 29 |
to: "vae_encode:vae"
|
| 30 |
|
| 31 |
+
dynamic_vae_chains:
|
| 32 |
+
vae_chain:
|
| 33 |
+
targets:
|
| 34 |
+
- "vae_decode:vae"
|
| 35 |
+
- "vae_encode:vae"
|
| 36 |
+
|
| 37 |
dynamic_lora_chains:
|
| 38 |
lora_chain:
|
| 39 |
template: "LoraLoader"
|
core/pipelines/workflow_recipes/_partials/conditioning/sd15.yaml
CHANGED
|
@@ -24,6 +24,12 @@ connections:
|
|
| 24 |
- from: "ckpt_loader:2"
|
| 25 |
to: "vae_encode:vae"
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
dynamic_lora_chains:
|
| 28 |
lora_chain:
|
| 29 |
template: "LoraLoader"
|
|
|
|
| 24 |
- from: "ckpt_loader:2"
|
| 25 |
to: "vae_encode:vae"
|
| 26 |
|
| 27 |
+
dynamic_vae_chains:
|
| 28 |
+
vae_chain:
|
| 29 |
+
targets:
|
| 30 |
+
- "vae_decode:vae"
|
| 31 |
+
- "vae_encode:vae"
|
| 32 |
+
|
| 33 |
dynamic_lora_chains:
|
| 34 |
lora_chain:
|
| 35 |
template: "LoraLoader"
|
core/pipelines/workflow_recipes/_partials/conditioning/sd35.yaml
CHANGED
|
@@ -19,6 +19,12 @@ connections:
|
|
| 19 |
- from: "ckpt_loader:2"
|
| 20 |
to: "vae_encode:vae"
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
dynamic_lora_chains:
|
| 23 |
lora_chain:
|
| 24 |
template: "LoraLoader"
|
|
|
|
| 19 |
- from: "ckpt_loader:2"
|
| 20 |
to: "vae_encode:vae"
|
| 21 |
|
| 22 |
+
dynamic_vae_chains:
|
| 23 |
+
vae_chain:
|
| 24 |
+
targets:
|
| 25 |
+
- "vae_decode:vae"
|
| 26 |
+
- "vae_encode:vae"
|
| 27 |
+
|
| 28 |
dynamic_lora_chains:
|
| 29 |
lora_chain:
|
| 30 |
template: "LoraLoader"
|
core/pipelines/workflow_recipes/_partials/conditioning/sdxl.yaml
CHANGED
|
@@ -19,6 +19,12 @@ connections:
|
|
| 19 |
- from: "ckpt_loader:2"
|
| 20 |
to: "vae_encode:vae"
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
dynamic_lora_chains:
|
| 23 |
lora_chain:
|
| 24 |
template: "LoraLoader"
|
|
|
|
| 19 |
- from: "ckpt_loader:2"
|
| 20 |
to: "vae_encode:vae"
|
| 21 |
|
| 22 |
+
dynamic_vae_chains:
|
| 23 |
+
vae_chain:
|
| 24 |
+
targets:
|
| 25 |
+
- "vae_decode:vae"
|
| 26 |
+
- "vae_encode:vae"
|
| 27 |
+
|
| 28 |
dynamic_lora_chains:
|
| 29 |
lora_chain:
|
| 30 |
template: "LoraLoader"
|
yaml/injectors.yaml
CHANGED
|
@@ -1,4 +1,6 @@
|
|
| 1 |
injector_definitions:
|
|
|
|
|
|
|
| 2 |
dynamic_lora_chains:
|
| 3 |
module: "chain_injectors.lora_injector"
|
| 4 |
dynamic_newbie_lora_chains:
|
|
@@ -21,6 +23,7 @@ injector_definitions:
|
|
| 21 |
module: "chain_injectors.reference_latent_injector"
|
| 22 |
|
| 23 |
injector_order:
|
|
|
|
| 24 |
- dynamic_lora_chains
|
| 25 |
- dynamic_newbie_lora_chains
|
| 26 |
- dynamic_diffsynth_controlnet_chains
|
|
|
|
| 1 |
injector_definitions:
|
| 2 |
+
dynamic_vae_chains:
|
| 3 |
+
module: "chain_injectors.vae_injector"
|
| 4 |
dynamic_lora_chains:
|
| 5 |
module: "chain_injectors.lora_injector"
|
| 6 |
dynamic_newbie_lora_chains:
|
|
|
|
| 23 |
module: "chain_injectors.reference_latent_injector"
|
| 24 |
|
| 25 |
injector_order:
|
| 26 |
+
- dynamic_vae_chains
|
| 27 |
- dynamic_lora_chains
|
| 28 |
- dynamic_newbie_lora_chains
|
| 29 |
- dynamic_diffsynth_controlnet_chains
|