From 1147f9ec5609f3e303bad0fca56c42fc9f1b90dc Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Thu, 26 Jun 2025 17:09:53 -0400 Subject: [PATCH] add flux.1-kontext-dev Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 11 +++++++-- html/reference.json | 22 ++++-------------- .../black-forest-labs--FLUX.1-Kontext-dev.jpg | Bin 0 -> 49447 bytes modules/model_flux.py | 7 ++++++ modules/processing_args.py | 18 ++++++++------ modules/processing_helpers.py | 4 +--- modules/ui_models.py | 9 ++++++- 7 files changed, 40 insertions(+), 31 deletions(-) create mode 100644 models/Reference/black-forest-labs--FLUX.1-Kontext-dev.jpg diff --git a/CHANGELOG.md b/CHANGELOG.md index 1915b626e..794c0c9f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,11 +3,18 @@ ## Update for 2025-06-26 - **Models** + - [Models Wiki page](https://vladmandic.github.io/sdnext-docs/Models/) is updated will all new models - [nVidia Cosmos-Predict2 T2I](https://research.nvidia.com/labs/dir/cosmos-predict2/) *2B and 14B* - - new foundational model from Nvidia in two variants: small 2B and large 14B + - Cosmos-Predict2 T2I is a new foundational model from Nvidia in two variants: small 2B and large 14B - available via *networks -> models -> reference* + - *note*: 14B variant is a very large model at 36GB - *note*: this is a gated model, you need to [accept terms](https://huggingface.co/nvidia/Cosmos-Predict2-2B-Text2Image) and set your [huggingface token](https://vladmandic.github.io/sdnext-docs/Gated/) - - [Chroma](https://huggingface.co/lodestones/Chroma) + - [Black Forest Labs FLUX.1 Kontext I2I](https://bfl.ai/announcements/flux-1-kontext-dev) *Dev* variant + - FLUX.1-Kontext is a 12B model billion parameter capable of editing images based on text instructions + - requirements are similar to regular FLUX.1 although 2x slower + - available via *networks -> models -> reference* + - *note*: this is a gated model, you need to [accept terms](https://huggingface.co/black-forest-labs/FLUX.1-Kontext-dev) and set your [huggingface token](https://vladmandic.github.io/sdnext-docs/Gated/) + - [lodestones Chroma](https://huggingface.co/lodestones/Chroma) - Chroma is a 8.9B parameter model based on *FLUX.1-schnell* and fully Apache 2.0 licensed - available via *networks -> models -> reference* - *note*: model is still in training so future updates will trigger re-download diff --git a/html/reference.json b/html/reference.json index 22fa4daba..599ad1c5b 100644 --- a/html/reference.json +++ b/html/reference.json @@ -158,24 +158,10 @@ "skip": true, "extras": "sampler: Default, cfg_scale: 3.5" }, - "Black Forest Labs FLUX.1 Dev qint8": { - "path": "Disty0/FLUX.1-dev-qint8", - "preview": "black-forest-labs--FLUX.1-dev.jpg", - "desc": "FLUX.1 models are based on a hybrid architecture of multimodal and parallel diffusion transformer blocks, scaled to 12B parameters and builing on flow matching", - "skip": true, - "extras": "sampler: Default, cfg_scale: 3.5" - }, - "Black Forest Labs FLUX.1 Dev qint4": { - "path": "Disty0/FLUX.1-dev-qint4", - "preview": "black-forest-labs--FLUX.1-dev.jpg", - "desc": "FLUX.1 models are based on a hybrid architecture of multimodal and parallel diffusion transformer blocks, scaled to 12B parameters and builing on flow matching", - "skip": true, - "extras": "sampler: Default, cfg_scale: 3.5" - }, - "Black Forest Labs FLUX.1 Dev nf4": { - "path": "sayakpaul/flux.1-dev-nf4", - "preview": "black-forest-labs--FLUX.1-dev.jpg", - "desc": "FLUX.1 models are based on a hybrid architecture of multimodal and parallel diffusion transformer blocks, scaled to 12B parameters and builing on flow matching", + "Black Forest Labs FLUX.1 Kontext Dev": { + "path": "black-forest-labs/FLUX.1-Kontext-dev", + "preview": "black-forest-labs--FLUX.1-Kontext-dev.jpg", + "desc": "FLUX.1 Kontext [dev] is a 12 billion parameter rectified flow transformer capable of editing images based on text instructions.", "skip": true, "extras": "sampler: Default, cfg_scale: 3.5" }, diff --git a/models/Reference/black-forest-labs--FLUX.1-Kontext-dev.jpg b/models/Reference/black-forest-labs--FLUX.1-Kontext-dev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..04521fdd2af71149bf7bc02fb9293bc99360109f GIT binary patch literal 49447 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 EKczoK`~Uy| literal 0 HcmV?d00001 diff --git a/modules/model_flux.py b/modules/model_flux.py index b5f482f2b..636daff65 100644 --- a/modules/model_flux.py +++ b/modules/model_flux.py @@ -317,6 +317,13 @@ def load_flux(checkpoint_info, diffusers_load_config): # triggered by opts.sd_ch cls = diffusers.FluxControlPipeline elif 'Depth' in repo_id: cls = diffusers.FluxControlPipeline + elif 'Kontext' in repo_id: + cls = diffusers.FluxKontextPipeline + from diffusers import pipelines + pipelines.auto_pipeline.AUTO_TEXT2IMAGE_PIPELINES_MAPPING["flux1kontext"] = diffusers.FluxKontextPipeline + pipelines.auto_pipeline.AUTO_IMAGE2IMAGE_PIPELINES_MAPPING["flux1kontext"] = diffusers.FluxKontextPipeline + pipelines.auto_pipeline.AUTO_INPAINT_PIPELINES_MAPPING["flux1kontext"] = diffusers.FluxKontextPipeline + else: cls = diffusers.FluxPipeline shared.log.debug(f'Load model: type=FLUX cls={cls.__name__} preloaded={list(kwargs)} revision={diffusers_load_config.get("revision", None)}') diff --git a/modules/processing_args.py b/modules/processing_args.py index bb09cc0a4..154f5e272 100644 --- a/modules/processing_args.py +++ b/modules/processing_args.py @@ -48,17 +48,21 @@ def task_specific_kwargs(p, model): 'image': p.init_images, 'strength': p.denoising_strength, } - if model.__class__.__name__ == 'FluxImg2ImgPipeline': # needs explicit width/height + if model.__class__.__name__ == 'FluxImg2ImgPipeline' or model.__class__.__name__ == 'FluxKontextPipeline': # needs explicit width/height if torch.is_tensor(p.init_images[0]): - p.width = p.init_images[0].shape[-1] * 16 - p.height = p.init_images[0].shape[-2] * 16 + p.width, p.height = p.init_images[0].shape[-1] * 16, p.init_images[0].shape[-2] * 16 else: - p.width = 8 * math.ceil(p.init_images[0].width / 8) - p.height = 8 * math.ceil(p.init_images[0].height / 8) + p.width, p.height = 8 * math.ceil(p.init_images[0].width / 8), 8 * math.ceil(p.init_images[0].height / 8) + if model.__class__.__name__ == 'FluxKontextPipeline': + aspect_ratio = p.width / p.height + vae_scale_factor = 16 + max_area = max(p.width, p.height)**2 + p.width, p.height = round((max_area * aspect_ratio) ** 0.5), round((max_area / aspect_ratio) ** 0.5) + p.width, p.height = p.width // vae_scale_factor * vae_scale_factor, p.height // vae_scale_factor * vae_scale_factor + task_args['max_area'] = max_area task_args['width'], task_args['height'] = p.width, p.height if model.__class__.__name__ == 'OmniGenPipeline': - p.width = 16 * math.ceil(p.init_images[0].width / 16) - p.height = 16 * math.ceil(p.init_images[0].height / 16) + p.width, p.height = 16 * math.ceil(p.init_images[0].width / 16), 16 * math.ceil(p.init_images[0].height / 16) task_args = { 'width': p.width, 'height': p.height, diff --git a/modules/processing_helpers.py b/modules/processing_helpers.py index 013b32109..7d536999a 100644 --- a/modules/processing_helpers.py +++ b/modules/processing_helpers.py @@ -466,9 +466,7 @@ def calculate_base_steps(p, use_denoise_start, use_refiner_start): cls = shared.sd_model.__class__.__name__ if cls in sd_models.i2i_pipes: steps = p.steps - elif 'Flex' in cls: - steps = p.steps - elif 'HiDreamImageEditingPipeline' in cls: + elif 'Flex' in cls or 'HiDreamImageEditingPipeline' in cls or 'Kontext' in cls: steps = p.steps elif use_denoise_start and (shared.sd_model_type == 'sdxl'): steps = p.steps // (1 - p.refiner_start) diff --git a/modules/ui_models.py b/modules/ui_models.py index 704399158..82ed79298 100644 --- a/modules/ui_models.py +++ b/modules/ui_models.py @@ -37,7 +37,14 @@ def create_ui(): model = modelstats.analyze() desc = f"Model: {model.name}
Type: {model.type}
Class: {model.cls}
Size: {model.size} bytes
Modified: {model.mtime}
" meta = model.meta - components = [(m.name, m.cls, m.device, m.dtype, m.params, m.modules, str(m.config)) for m in model.modules] + components = [] + for m in model.modules: + try: + component = (m.name, m.cls, str(m.device), str(m.dtype), m.params, m.modules, str(m.config)) + components.append(component) + except Exception: + component = (m.name, m.cls, str(m.device), str(m.dtype), m.params, m.modules, '') + components.append(component) return [desc, components, meta] with gr.Row():