Add FLUX.2-klein multi-reference workflow
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# FLUX.2-klein Multi-Reference 3-Image Workflow
|
||||
|
||||
## Summary
|
||||
|
||||
Same-day Hugging Face workflow pack for `FLUX.2-klein 9B` with a practical multi-reference graph. This is the kind of reference-control workflow worth watching because it aims at composition and identity control, not just a style demo.
|
||||
|
||||
## Model Family
|
||||
|
||||
- `flux2klein`
|
||||
|
||||
## Status
|
||||
|
||||
- `imported-only`
|
||||
|
||||
## Source
|
||||
|
||||
- Model page: <https://huggingface.co/geceff/Flux2Klein9B-comfyui>
|
||||
- Workflow file: <https://huggingface.co/geceff/Flux2Klein9B-comfyui/raw/main/workflow/Flux2image-reference-api-3image.json>
|
||||
- Original publisher: `geceff`
|
||||
- Date imported: `2026-08-15`
|
||||
|
||||
## Developer notes
|
||||
|
||||
- The source repo ships a full `FLUX.2-klein` ecosystem plus multiple workflow JSONs and packaged weights.
|
||||
- This graph uses three reference images and a `FluxKontextMultiReferenceLatentMethod` node, so it is more focused on practical reference handling than a plain text-to-image template.
|
||||
|
||||
## Our notes
|
||||
|
||||
- Worth testing if you want a more functional FLUX.2-klein reference workflow than the standard edit templates.
|
||||
- The source pack looks broad and somewhat opinionated, so treat it as a workflow donor rather than a clean official baseline.
|
||||
- On an `RTX 3070 8 GB`, expect this to be heavy. It is more of a benchmark or tuned workflow than a comfy default.
|
||||
|
||||
## Required custom nodes
|
||||
|
||||
- `FluxKontextMultiReferenceLatentMethod` or the Comfy/Flux extension that provides it
|
||||
- Current Comfy `FLUX.2-klein` template nodes such as `ResolutionSelector`, `ReferenceLatent`, `ScheduledCFGGuidance`, `ModelSamplingAuraFlow`, `CLIPVisionLoader`, and `unCLIPConditioning`
|
||||
|
||||
## Required model files
|
||||
|
||||
- `Flux2Klein_9B_v4BaseFp8.safetensors`
|
||||
- `Flux2Klein_base-bf16_master_v4.safetensors`
|
||||
- `fulx2vbase-lora-master.safetensors`
|
||||
- `flux-2-klein-9b_extracted_lora_rank_128-fp32.safetensors`
|
||||
- `bfs_head_v1_flux-klein_9b_step3500_rank128.safetensors`
|
||||
- `qwen-3-8b-flux-klein.safetensors`
|
||||
- `flux.2vae-bf16.safetensors`
|
||||
- `clip_vision_g.safetensors`
|
||||
|
||||
## Notes
|
||||
|
||||
- The workflow file still uses `example.png` placeholders for the image inputs.
|
||||
- This is a promising reference-control donor, not a proven replacement for the current `FLUX.2-klein` edit masters.
|
||||
@@ -0,0 +1,568 @@
|
||||
{
|
||||
"1": {
|
||||
"inputs": {
|
||||
"text": "",
|
||||
"clip": [
|
||||
"2",
|
||||
1
|
||||
]
|
||||
},
|
||||
"class_type": "CLIPTextEncode",
|
||||
"_meta": {
|
||||
"title": "CLIP Text Encode (Prompt)"
|
||||
}
|
||||
},
|
||||
"2": {
|
||||
"inputs": {
|
||||
"lora_name": "fulx2vbase-lora-master.safetensors",
|
||||
"strength_model": 1,
|
||||
"strength_clip": 1,
|
||||
"model": [
|
||||
"6",
|
||||
0
|
||||
],
|
||||
"clip": [
|
||||
"5",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "LoraLoader",
|
||||
"_meta": {
|
||||
"title": "Load LoRA (Model and CLIP)"
|
||||
}
|
||||
},
|
||||
"3": {
|
||||
"inputs": {
|
||||
"image": "example.png"
|
||||
},
|
||||
"class_type": "LoadImage",
|
||||
"_meta": {
|
||||
"title": "Load Image"
|
||||
}
|
||||
},
|
||||
"5": {
|
||||
"inputs": {
|
||||
"clip_name": "qwen-3-8b-flux-klein.safetensors",
|
||||
"type": "flux2",
|
||||
"device": "default"
|
||||
},
|
||||
"class_type": "CLIPLoader",
|
||||
"_meta": {
|
||||
"title": "Load CLIP"
|
||||
}
|
||||
},
|
||||
"6": {
|
||||
"inputs": {
|
||||
"unet_name": "diffusion_models/Flux2Klein_base-bf16_master_v4.safetensors",
|
||||
"weight_dtype": "default"
|
||||
},
|
||||
"class_type": "UNETLoader",
|
||||
"_meta": {
|
||||
"title": "Load Diffusion Model"
|
||||
}
|
||||
},
|
||||
"7": {
|
||||
"inputs": {
|
||||
"lora_name": "flux-2-klein-9b_extracted_lora_rank_128-fp32.safetensors",
|
||||
"strength_model": 0.75,
|
||||
"model": [
|
||||
"2",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "LoraLoaderModelOnly",
|
||||
"_meta": {
|
||||
"title": "Load LoRA"
|
||||
}
|
||||
},
|
||||
"8": {
|
||||
"inputs": {
|
||||
"lora_name": "bfs_head_v1_flux-klein_9b_step3500_rank128.safetensors",
|
||||
"strength_model": 0.75,
|
||||
"model": [
|
||||
"7",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "LoraLoaderModelOnly",
|
||||
"_meta": {
|
||||
"title": "Load LoRA"
|
||||
}
|
||||
},
|
||||
"10": {
|
||||
"inputs": {
|
||||
"vae_name": "fulx2vae-master.safetensors"
|
||||
},
|
||||
"class_type": "VAELoader",
|
||||
"_meta": {
|
||||
"title": "Load VAE"
|
||||
}
|
||||
},
|
||||
"18": {
|
||||
"inputs": {
|
||||
"noise": [
|
||||
"19",
|
||||
0
|
||||
],
|
||||
"guider": [
|
||||
"98",
|
||||
0
|
||||
],
|
||||
"sampler": [
|
||||
"20",
|
||||
0
|
||||
],
|
||||
"sigmas": [
|
||||
"105",
|
||||
0
|
||||
],
|
||||
"latent_image": [
|
||||
"32",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "SamplerCustomAdvanced",
|
||||
"_meta": {
|
||||
"title": "SamplerCustomAdvanced"
|
||||
}
|
||||
},
|
||||
"19": {
|
||||
"inputs": {
|
||||
"noise_seed": 513383871972281
|
||||
},
|
||||
"class_type": "RandomNoise",
|
||||
"_meta": {
|
||||
"title": "RandomNoise"
|
||||
}
|
||||
},
|
||||
"20": {
|
||||
"inputs": {
|
||||
"sampler_name": "euler"
|
||||
},
|
||||
"class_type": "KSamplerSelect",
|
||||
"_meta": {
|
||||
"title": "KSamplerSelect"
|
||||
}
|
||||
},
|
||||
"23": {
|
||||
"inputs": {
|
||||
"samples": [
|
||||
"18",
|
||||
0
|
||||
],
|
||||
"vae": [
|
||||
"10",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "VAEDecode",
|
||||
"_meta": {
|
||||
"title": "VAE Decode"
|
||||
}
|
||||
},
|
||||
"24": {
|
||||
"inputs": {
|
||||
"images": [
|
||||
"23",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "PreviewImage",
|
||||
"_meta": {
|
||||
"title": "Preview Image"
|
||||
}
|
||||
},
|
||||
"30": {
|
||||
"inputs": {
|
||||
"image": "example.png"
|
||||
},
|
||||
"class_type": "LoadImage",
|
||||
"_meta": {
|
||||
"title": "Load Image"
|
||||
}
|
||||
},
|
||||
"32": {
|
||||
"inputs": {
|
||||
"width": [
|
||||
"91",
|
||||
0
|
||||
],
|
||||
"height": [
|
||||
"91",
|
||||
1
|
||||
],
|
||||
"batch_size": 1
|
||||
},
|
||||
"class_type": "EmptyLatentImage",
|
||||
"_meta": {
|
||||
"title": "Empty Latent Image"
|
||||
}
|
||||
},
|
||||
"34": {
|
||||
"inputs": {
|
||||
"text": "text.UI.HUD.logo,watermark,bad anatomy,bad finger,artifact,blurry,censored,",
|
||||
"clip": [
|
||||
"5",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "CLIPTextEncode",
|
||||
"_meta": {
|
||||
"title": "CLIP Text Encode (Prompt)"
|
||||
}
|
||||
},
|
||||
"44": {
|
||||
"inputs": {
|
||||
"shift": 3,
|
||||
"model": [
|
||||
"8",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ModelSamplingAuraFlow",
|
||||
"_meta": {
|
||||
"title": "ModelSamplingAuraFlow"
|
||||
}
|
||||
},
|
||||
"50": {
|
||||
"inputs": {
|
||||
"image": "example.png"
|
||||
},
|
||||
"class_type": "LoadImage",
|
||||
"_meta": {
|
||||
"title": "Load Image"
|
||||
}
|
||||
},
|
||||
"91": {
|
||||
"inputs": {
|
||||
"aspect_ratio": "16:9 (Widescreen)",
|
||||
"megapixels": 1,
|
||||
"multiple": 16
|
||||
},
|
||||
"class_type": "ResolutionSelector",
|
||||
"_meta": {
|
||||
"title": "Resolution Selector"
|
||||
}
|
||||
},
|
||||
"98": {
|
||||
"inputs": {
|
||||
"cfg": 2,
|
||||
"start_percent": 0,
|
||||
"end_percent": 0.9,
|
||||
"model": [
|
||||
"44",
|
||||
0
|
||||
],
|
||||
"positive": [
|
||||
"37:51",
|
||||
0
|
||||
],
|
||||
"negative": [
|
||||
"37:46",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ScheduledCFGGuidance",
|
||||
"_meta": {
|
||||
"title": "Scheduled CFG Guidance"
|
||||
}
|
||||
},
|
||||
"105": {
|
||||
"inputs": {
|
||||
"scheduler": "simple",
|
||||
"steps": 4,
|
||||
"denoise": 1,
|
||||
"model": [
|
||||
"44",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "BasicScheduler",
|
||||
"_meta": {
|
||||
"title": "BasicScheduler"
|
||||
}
|
||||
},
|
||||
"42:13": {
|
||||
"inputs": {
|
||||
"clip_name": "clip_vision_g.safetensors"
|
||||
},
|
||||
"class_type": "CLIPVisionLoader",
|
||||
"_meta": {
|
||||
"title": "Load CLIP Vision"
|
||||
}
|
||||
},
|
||||
"42:27": {
|
||||
"inputs": {
|
||||
"crop": "none",
|
||||
"clip_vision": [
|
||||
"42:13",
|
||||
0
|
||||
],
|
||||
"image": [
|
||||
"30",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "CLIPVisionEncode",
|
||||
"_meta": {
|
||||
"title": "CLIP Vision Encode1"
|
||||
}
|
||||
},
|
||||
"37:36": {
|
||||
"inputs": {
|
||||
"pixels": [
|
||||
"30",
|
||||
0
|
||||
],
|
||||
"vae": [
|
||||
"10",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "VAEEncode",
|
||||
"_meta": {
|
||||
"title": "VAE Encode1"
|
||||
}
|
||||
},
|
||||
"42:48": {
|
||||
"inputs": {
|
||||
"crop": "none",
|
||||
"clip_vision": [
|
||||
"42:13",
|
||||
0
|
||||
],
|
||||
"image": [
|
||||
"50",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "CLIPVisionEncode",
|
||||
"_meta": {
|
||||
"title": "CLIP Vision Encode2"
|
||||
}
|
||||
},
|
||||
"37:45": {
|
||||
"inputs": {
|
||||
"pixels": [
|
||||
"50",
|
||||
0
|
||||
],
|
||||
"vae": [
|
||||
"10",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "VAEEncode",
|
||||
"_meta": {
|
||||
"title": "VAE Encode2"
|
||||
}
|
||||
},
|
||||
"42:16": {
|
||||
"inputs": {
|
||||
"crop": "none",
|
||||
"clip_vision": [
|
||||
"42:13",
|
||||
0
|
||||
],
|
||||
"image": [
|
||||
"3",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "CLIPVisionEncode",
|
||||
"_meta": {
|
||||
"title": "CLIP Vision Encode"
|
||||
}
|
||||
},
|
||||
"37:35": {
|
||||
"inputs": {
|
||||
"pixels": [
|
||||
"3",
|
||||
0
|
||||
],
|
||||
"vae": [
|
||||
"10",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "VAEEncode",
|
||||
"_meta": {
|
||||
"title": "VAE Encode"
|
||||
}
|
||||
},
|
||||
"42:43": {
|
||||
"inputs": {
|
||||
"conditioning": [
|
||||
"34",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ConditioningZeroOut",
|
||||
"_meta": {
|
||||
"title": "Conditioning Zero Out"
|
||||
}
|
||||
},
|
||||
"37:40": {
|
||||
"inputs": {
|
||||
"conditioning": [
|
||||
"42:43",
|
||||
0
|
||||
],
|
||||
"latent": [
|
||||
"37:35",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ReferenceLatent",
|
||||
"_meta": {
|
||||
"title": "Set Reference Latent"
|
||||
}
|
||||
},
|
||||
"42:17": {
|
||||
"inputs": {
|
||||
"strength": 0.5,
|
||||
"noise_augmentation": 0,
|
||||
"conditioning": [
|
||||
"1",
|
||||
0
|
||||
],
|
||||
"clip_vision_output": [
|
||||
"42:16",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "unCLIPConditioning",
|
||||
"_meta": {
|
||||
"title": "unCLIPConditioning"
|
||||
}
|
||||
},
|
||||
"37:41": {
|
||||
"inputs": {
|
||||
"conditioning": [
|
||||
"37:40",
|
||||
0
|
||||
],
|
||||
"latent": [
|
||||
"37:36",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ReferenceLatent",
|
||||
"_meta": {
|
||||
"title": "Set Reference Latent1"
|
||||
}
|
||||
},
|
||||
"42:28": {
|
||||
"inputs": {
|
||||
"strength": 0.5,
|
||||
"noise_augmentation": 0,
|
||||
"conditioning": [
|
||||
"42:17",
|
||||
0
|
||||
],
|
||||
"clip_vision_output": [
|
||||
"42:27",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "unCLIPConditioning",
|
||||
"_meta": {
|
||||
"title": "unCLIPConditioning"
|
||||
}
|
||||
},
|
||||
"37:46": {
|
||||
"inputs": {
|
||||
"conditioning": [
|
||||
"37:41",
|
||||
0
|
||||
],
|
||||
"latent": [
|
||||
"37:45",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ReferenceLatent",
|
||||
"_meta": {
|
||||
"title": "Set Reference Latent2"
|
||||
}
|
||||
},
|
||||
"42:49": {
|
||||
"inputs": {
|
||||
"strength": 0.5,
|
||||
"noise_augmentation": 0,
|
||||
"conditioning": [
|
||||
"42:28",
|
||||
0
|
||||
],
|
||||
"clip_vision_output": [
|
||||
"42:48",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "unCLIPConditioning",
|
||||
"_meta": {
|
||||
"title": "unCLIPConditioning"
|
||||
}
|
||||
},
|
||||
"37:38": {
|
||||
"inputs": {
|
||||
"conditioning": [
|
||||
"42:49",
|
||||
0
|
||||
],
|
||||
"latent": [
|
||||
"37:35",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ReferenceLatent",
|
||||
"_meta": {
|
||||
"title": "Set Reference Latent"
|
||||
}
|
||||
},
|
||||
"37:39": {
|
||||
"inputs": {
|
||||
"conditioning": [
|
||||
"37:38",
|
||||
0
|
||||
],
|
||||
"latent": [
|
||||
"37:36",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ReferenceLatent",
|
||||
"_meta": {
|
||||
"title": "Set Reference Latent1"
|
||||
}
|
||||
},
|
||||
"37:47": {
|
||||
"inputs": {
|
||||
"conditioning": [
|
||||
"37:39",
|
||||
0
|
||||
],
|
||||
"latent": [
|
||||
"37:45",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "ReferenceLatent",
|
||||
"_meta": {
|
||||
"title": "Set Reference Latent5"
|
||||
}
|
||||
},
|
||||
"37:51": {
|
||||
"inputs": {
|
||||
"reference_latents_method": "index",
|
||||
"conditioning": [
|
||||
"37:47",
|
||||
0
|
||||
]
|
||||
},
|
||||
"class_type": "FluxKontextMultiReferenceLatentMethod",
|
||||
"_meta": {
|
||||
"title": "Edit Model Reference Method"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user