From a5d1c659481c1ea8d251514c10a39d4883d9c70f Mon Sep 17 00:00:00 2001 From: Seunghoon Lee Date: Mon, 26 Aug 2024 20:35:51 +0900 Subject: [PATCH 1/2] update zluda (hip sdk 5, 6) --- modules/zluda_installer.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/modules/zluda_installer.py b/modules/zluda_installer.py index 20ecb233d..30bfe48a7 100644 --- a/modules/zluda_installer.py +++ b/modules/zluda_installer.py @@ -24,14 +24,7 @@ def install(zluda_path: os.PathLike) -> None: if os.path.exists(zluda_path): return - default_hash = None - if rocm.version == "6.1": - default_hash = '2f2e38a8adebb456ad75390e60871f2c8ba18fa7' - elif rocm.version == "5.7": - default_hash = '11cc5844514f93161e0e74387f04e2c537705a82' - else: - raise RuntimeError(f'Unsupported HIP SDK version: {rocm.version}') - urllib.request.urlretrieve(f'https://github.com/lshqqytiger/ZLUDA/releases/download/rel.{os.environ.get("ZLUDA_HASH", default_hash)}/ZLUDA-windows-amd64.zip', '_zluda') + urllib.request.urlretrieve(f'https://github.com/lshqqytiger/ZLUDA/releases/download/rel.{os.environ.get("ZLUDA_HASH", "1c238a959f2aafdb9900f6801b61d9c0318040a2")}/ZLUDA-windows-rocm{rocm.version[0]}-amd64.zip', '_zluda') with zipfile.ZipFile('_zluda', 'r') as archive: infos = archive.infolist() for info in infos: From 5ed58ac7cc46c0e77fe3ea516c399347ac671322 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 28 Aug 2024 08:04:24 -0400 Subject: [PATCH 2/2] end-to-end update flux, see changelog and wiki --- CHANGELOG.md | 88 +++++--- TODO.md | 1 + extensions-builtin/Lora/networks.py | 39 ++-- html/reference.json | 58 +++++- installer.py | 2 +- ...Alpha-VLLM--Lumina-Next-SFT-diffusers.jpg} | Bin ....jpg => Kwai-Kolors--Kolors-diffusers.jpg} | Bin ...nt-Hunyuan--HunyuanDiT-v1.2-Diffusers.jpg} | Bin .../black-forest-labs--FLUX.1-dev.jpg | Bin 0 -> 63060 bytes .../black-forest-labs--FLUX.1-schnell.jpg | Bin 0 -> 88001 bytes .../{fal-AuraFlow.jpg => fal--AuraFlow.jpg} | Bin modules/devices.py | 2 +- modules/model_flux.py | 52 +++-- modules/model_flux_nf4.py | 190 ++++++++++++++++++ modules/model_sd3.py | 2 +- modules/processing_diffusers.py | 2 +- modules/sd_models.py | 12 +- modules/sd_models_compile.py | 20 +- modules/sd_samplers.py | 4 + modules/shared.py | 2 +- requirements.txt | 6 +- wiki | 2 +- 22 files changed, 387 insertions(+), 95 deletions(-) rename models/Reference/{Alpha-VLLM-Lumina-Next-SFT-diffusers.jpg => Alpha-VLLM--Lumina-Next-SFT-diffusers.jpg} (100%) rename models/Reference/{Kwai-Kolors.jpg => Kwai-Kolors--Kolors-diffusers.jpg} (100%) rename models/Reference/{Tencent-Hunyuan-HunyuanDiT.jpg => Tencent-Hunyuan--HunyuanDiT-v1.2-Diffusers.jpg} (100%) create mode 100644 models/Reference/black-forest-labs--FLUX.1-dev.jpg create mode 100644 models/Reference/black-forest-labs--FLUX.1-schnell.jpg rename models/Reference/{fal-AuraFlow.jpg => fal--AuraFlow.jpg} (100%) create mode 100644 modules/model_flux_nf4.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 23be22184..47eac5ed5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,23 +1,43 @@ # Change Log for SD.Next -## Update for 2024-08-18: WiP +## Update for 2024-08-28 -### Highlights +### Highlights for 2024-08-28 -Massive update to WiKi with over 20 new pages and articles, now includes guides for nearly all major features -Support for new models: -- [AlphaVLLM Lumina-Next-SFT](https://huggingface.co/Alpha-VLLM/Lumina-Next-SFT-diffusers) -- [AuraFlow](https://huggingface.co/fal/AuraFlow) -- [Kwai Kolors](https://huggingface.co/Kwai-Kolors/Kolors) -- [HunyuanDiT 1.2](https://huggingface.co/Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers) +Summer break is over and we are back with a massive update! + +Support for all of the new models: +- [Black Forest Labs FLUX.1](https://blackforestlabs.ai/announcing-black-forest-labs/) original variations and multiple quantized variations (*qint8, qint4, nf4*)! +- [AuraFlow](https://huggingface.co/fal/AuraFlow) +- [AlphaVLLM Lumina-Next-SFT](https://huggingface.co/Alpha-VLLM/Lumina-Next-SFT-diffusers) +- [Kwai Kolors](https://huggingface.co/Kwai-Kolors/Kolors) +- [HunyuanDiT 1.2](https://huggingface.co/Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers) What else? Just a bit... ;) -New **fast-install** mode, new **controlnet-union** *all-in-one* model, support for **DoRA** networks, additional **VLM** models, new **AuraSR** upscaler, new **Optimum Quanto** quantization mode, and more... -### New Models +New **fast-install** mode, new **controlnet-union** *all-in-one* model, support for **DoRA** networks, additional **VLM** models, new **AuraSR** upscaler, new **Optimum Quanto** and **BitsAndBytes** quantization modes, new **balanced offload** mode and more... -To use and of the new models, simply select model from *Networks -> Reference* and it will be auto-downloaded on first use. +**Breaking Changes...** +Due to internal changes, you'll need to reset your **attention** and **offload** settings! + +### Details for 2024-08-27 + +**New Models...** + +To use and of the new models, simply select model from *Networks -> Reference* and it will be auto-downloaded on first use + +- [Black Forest Labs FLUX.1](https://blackforestlabs.ai/announcing-black-forest-labs/) + 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 + This is a very large model at ~32GB in size, its recommended to use a) offloading, b) quantization + *Note*: [FLUX.1 Dev](https://huggingface.co/black-forest-labs/FLUX.1-dev) variant is a gated model, you need to accept the terms and conditions to use it + Use scheduler: default or euler flowmatch + Use of FLUX.1 LoRAs is supported + For more information, see [Wiki](https://github.com/vladmandic/automatic/wiki/FLUX) + SD.Next supports: + - [FLUX.1 Dev](https://huggingface.co/black-forest-labs/FLUX.1-dev) and [FLUX.1 Schnell](https://huggingface.co/black-forest-labs/FLUX.1-schnell) original variations + - additional [qint8](https://huggingface.co/Disty0/FLUX.1-dev-qint8) and [qint4](https://huggingface.co/Disty0/FLUX.1-dev-qint4) quantized variations + - additional [nf4](https://huggingface.co/sayakpaul/flux.1-dev-nf4) quantized variation - [AuraFlow](https://huggingface.co/fal/AuraFlow) AuraFlow is inspired by SD3 and is by far the largest text-to-image generation model that comes with an Apache 2.0 license This is a very large model at 6.8B params and nearly 31GB in size, smaller variants are expected in the future @@ -32,6 +52,33 @@ To use and of the new models, simply select model from *Networks -> Reference* a - [HunyuanDiT 1.2](https://huggingface.co/Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers) Hunyuan-DiT is a powerful multi-resolution diffusion transformer (DiT) with fine-grained Chinese understanding +**New Features...** + +- support for **Optimum Quanto** with 8 bit and 4 bit quantization options, thanks @Disty0! + to use, go to Compute Settings and enable "Quantize Model weights with Optimum Quanto" option. + note: Optimum Quanto requires PyTorch 2.4 +- support for **Balanced Offload**, thanks @Disty0! + balanced offload will dynamically split and offload models from the gpu based on the max gpu and cpu memory size. + *note*: balanced offload will force loading Loras with Diffusers method and it is not compatible with Optimum Quanto. + +**Changes & Fixes...** + +- update default **CUDA** version from 12.1 to 12.4 +- updated `requirements` +- samplers now prefers the model defaults over the diffusers defaults, thanks @Disty0! +- convert **Dynamic Attention SDP** into a global SDP option, thanks @Disty0! + *note*: requires reset of selected attention option +- don't enable Dynamic Attention by default on platforms that support Flash Attention, thanks @Disty0! +- convert offload options into a single choice list, thanks @Disty0! + *note*: requires reset of selected offload option +- update **IPEX** to 2.1.40+xpu on Linux, thanks @Disty0! +- general **ROCm** fixes, thanks @lshqqytiger! +- fix full vae previews, thanks @Disty0! +- fix default scheduler not being applied, thanks @Disty0! +- fix Stable Cascade with custom schedulers, thanks @Disty0! +- fix LoRA apply with force-diffusers +- fix LoRA scales with force-diffusers + ## Update for 2024-07-08 This release is primary service release with cumulative fixes and several improvements, but no breaking changes. @@ -50,26 +97,10 @@ This release is primary service release with cumulative fixes and several improv to use, simply select in process -> visual query - [AuraSR](https://huggingface.co/fal/AuraSR) high-quality 4x GAN-style upscaling model note: this is a large upscaler at 2.5GB -- support for **Optimum Quanto** with 8 bit and 4 bit quantization options, thanks @Disty0! - to use, go to Compute Settings and enable "Quantize Model weights with Optimum Quanto" option. - note: Optimum Quanto requires PyTorch 2.4 -- support for **Balanced Offload**, thanks @Disty0! - balanced offload will dynamically split and offload models from the gpu based on the max gpu and cpu memory size. - note: balanced offload will force loading Loras with Diffusers method and it is not compatible with Optimum Quanto. - -**Changes...** - - samplers now prefers the model defaults over the diffusers defaults, thanks @Disty0! - - convert Dynamic Attention SDP into a global SDP option, thanks @Disty0! - note: will require re-setting the attention option. - - don't enable Dynamic Attention by default on platforms that support Flash Attention, thanks @Disty0! - - convert offload options into a single choice list, thanks @Disty0! - note: will require re-setting the offload option. - - update **IPEX** to 2.1.40+xpu on Linux, thanks @Disty0! **And fixes...** - enable **Florence VLM** for all platforms, thanks @lshqqytiger! - improve ROCm detection under WSL2, thanks @lshqqytiger! -- general ROCm fixes, thanks @lshqqytiger! - add SD3 with FP16 T5 to list of detected models - fix executing extensions with zero params - add support for embeddings bundled in LoRA, thanks @AI-Casanova! @@ -81,9 +112,6 @@ This release is primary service release with cumulative fixes and several improv - fix reset pipeline at the end of each iteration - fix faceswap when no faces detected - fix civitai search -- fix full vae previews, thanks @Disty0! -- fix default scheduler not being applied, thanks @Disty0! -- fix Stable Cascade with custom schedulers, thanks @Disty0! - multiple ModernUI fixes ## Update for 2024-06-23 diff --git a/TODO.md b/TODO.md index 1a63122ec..b88ab3310 100644 --- a/TODO.md +++ b/TODO.md @@ -4,6 +4,7 @@ Main ToDo list can be found at [GitHub projects](https://github.com/users/vladma ## Future Candidates +- cogvideo-x: - animatediff-sdxl - async lowvram: - fp8: diff --git a/extensions-builtin/Lora/networks.py b/extensions-builtin/Lora/networks.py index 46d423284..847d46632 100644 --- a/extensions-builtin/Lora/networks.py +++ b/extensions-builtin/Lora/networks.py @@ -29,6 +29,8 @@ loaded_networks: List[network.Network] = [] timer = { 'load': 0, 'apply': 0, 'restore': 0 } # networks_in_memory = {} lora_cache = {} +diffuser_loaded = [] +diffuser_scales = [] available_network_hash_lookup = {} forbidden_network_aliases = {} re_network_name = re.compile(r"(.*)\s*\([0-9a-fA-F]+\)") @@ -82,26 +84,26 @@ def assign_network_names_to_compvis_modules(sd_model): def load_diffusers(name, network_on_disk, lora_scale=1.0) -> network.Network: t0 = time.time() - cached = lora_cache.get(name, None) - # if debug: - shared.log.debug(f'LoRA load: name="{name}" file="{network_on_disk.filename}" type=diffusers {"cached" if cached else ""} fuse={shared.opts.lora_fuse_diffusers}') - if cached is not None: - return cached + name = name.replace(".", "_") + #cached = lora_cache.get(name, None) + shared.log.debug(f'LoRA load: name="{name}" file="{network_on_disk.filename}" type=diffusers scale={lora_scale} fuse={shared.opts.lora_fuse_diffusers}') + # if cached is not None: + # return cached if not shared.native: return None if not hasattr(shared.sd_model, 'load_lora_weights'): shared.log.error(f"LoRA load failed: class={shared.sd_model.__class__} does not implement load lora") return None try: - shared.sd_model.load_lora_weights(network_on_disk.filename) + shared.sd_model.load_lora_weights(network_on_disk.filename, adapter_name=name) except Exception as e: errors.display(e, "LoRA") return None - if shared.opts.lora_fuse_diffusers: - shared.sd_model.fuse_lora(lora_scale=lora_scale) + diffuser_loaded.append(name) + diffuser_scales.append(lora_scale) net = network.Network(name, network_on_disk) net.mtime = os.path.getmtime(network_on_disk.filename) - lora_cache[name] = net + # lora_cache[name] = net t1 = time.time() timer['load'] += t1 - t0 return net @@ -202,6 +204,8 @@ def load_networks(names, te_multipliers=None, unet_multipliers=None, dyn_dims=No shared.opts.cuda_compile = backup_cuda_compile loaded_networks.clear() + diffuser_loaded.clear() + diffuser_scales.clear() for i, (network_on_disk, name) in enumerate(zip(networks_on_disk, names)): net = None if network_on_disk is not None: @@ -211,19 +215,18 @@ def load_networks(names, te_multipliers=None, unet_multipliers=None, dyn_dims=No try: if recompile_model: shared.compiled_model_state.lora_model.append(f"{name}:{te_multipliers[i] if te_multipliers else 1.0}") - if shared.native and shared.opts.lora_force_diffusers: # OpenVINO only works with Diffusers LoRa loading - net = load_diffusers(name, network_on_disk, lora_scale=te_multipliers[i] if te_multipliers else 1.0) - elif shared.native and network_overrides.check_override(shorthash): + if shared.native and (shared.opts.lora_force_diffusers or network_overrides.check_override(shorthash)): # OpenVINO only works with Diffusers LoRa loading net = load_diffusers(name, network_on_disk, lora_scale=te_multipliers[i] if te_multipliers else 1.0) else: net = load_network(name, network_on_disk) + if net is not None: + net.mentioned_name = name + network_on_disk.read_hash() except Exception as e: shared.log.error(f"LoRA load failed: file={network_on_disk.filename} {e}") if debug: errors.display(e, f"LoRA load failed file={network_on_disk.filename}") continue - net.mentioned_name = name - network_on_disk.read_hash() if net is None: failed_to_load_networks.append(name) shared.log.error(f"LoRA unknown type: network={name}") @@ -238,6 +241,12 @@ def load_networks(names, te_multipliers=None, unet_multipliers=None, dyn_dims=No while len(lora_cache) > shared.opts.lora_in_memory_limit: name = next(iter(lora_cache)) lora_cache.pop(name, None) + if len(diffuser_loaded) > 0: + shared.log.debug(f'LoRA loaded={diffuser_loaded} scales={diffuser_scales}') + shared.sd_model.set_adapters(adapter_names=diffuser_loaded, adapter_weights=diffuser_scales) + if shared.opts.lora_fuse_diffusers: + shared.sd_model.fuse_lora(adapter_names=diffuser_loaded, lora_scale=1.0, fuse_unet=True, fuse_text_encoder=True) + shared.sd_model.unload_lora_weights() if len(loaded_networks) > 0 and debug: shared.log.debug(f'LoRA loaded={len(loaded_networks)} cache={list(lora_cache)}') devices.torch_gc() @@ -433,7 +442,7 @@ def network_QConv2d_forward(self, input): # pylint: disable=W0622 if shared.opts.lora_functional: return network_forward(self, input, originals.Conv2d_forward) network_apply_weights(self) - return self._conv_forward(input, self.qweight, self.bias) + return self._conv_forward(input, self.qweight, self.bias) # pylint: disable=protected-access def network_Conv2d_load_state_dict(self, *args, **kwargs): diff --git a/html/reference.json b/html/reference.json index 6b98e2018..58b08b637 100644 --- a/html/reference.json +++ b/html/reference.json @@ -113,6 +113,50 @@ "extras": "width: 1024, height: 1024, sampler: Default, cfg_scale: 7.0" }, + "Black Forest Labs FLUX.1 Dev": { + "path": "black-forest-labs/FLUX.1-dev", + "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": "width: 1024, height: 1024, sampler: Default, cfg_scale: 3.5" + }, + "Black Forest Labs FLUX.1 Schnell": { + "path": "black-forest-labs/FLUX.1-schnell", + "preview": "black-forest-labs--FLUX.1-schnell.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. Trained using latent adversarial diffusion distillation, FLUX.1 [schnell] can generate high-quality images in only 1 to 4 steps", + "skip": true, + "extras": "width: 1024, height: 1024, 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": "width: 1024, height: 1024, 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": "width: 1024, height: 1024, 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", + "skip": true, + "extras": "width: 1024, height: 1024, sampler: Default, cfg_scale: 3.5" + }, + + "AuraFlow 0.1": { + "path": "https://huggingface.co/fal/AuraFlow", + "desc": "AuraFlow v0.1, an Open Exploration of Large Rectified Flow Models is inspired by SD3 and is by far the largest text-to-image generation model that comes with an Apache 2.0 license. This model achieves state-of-the-art results on the GenEval benchmark.", + "preview": "fal--AuraFlow.jpg", + "skip": true, + "extras": "width: 1024, height: 1024" + }, + "Segmind Vega": { "path": "huggingface/segmind/Segmind-Vega", "preview": "segmind--Segmind-Vega.jpg", @@ -185,14 +229,14 @@ "Tencent HunyuanDiT 1.2": { "path": "Tencent-Hunyuan/HunyuanDiT-v1.2-Diffusers", "desc": "Hunyuan-DiT : A Powerful Multi-Resolution Diffusion Transformer with Fine-Grained Chinese Understanding.", - "preview": "Tencent-Hunyuan-HunyuanDiT.jpg", + "preview": "Tencent-Hunyuan--HunyuanDiT-v1.2-Diffusers.jpg", "extras": "width: 1024, height: 1024, sampler: Default, cfg_scale: 2.0" }, "AlphaVLLM Lumina Next SFT": { "path": "Alpha-VLLM/Lumina-Next-SFT-diffusers", "desc": "The Lumina-Next-SFT is a Next-DiT model containing 2B parameters and utilizes Gemma-2B as the text encoder, enhanced through high-quality supervised fine-tuning (SFT).", - "preview": "Alpha-VLLM-Lumina-Next-SFT-diffusers.jpg", + "preview": "Alpha-VLLM--Lumina-Next-SFT-diffusers.jpg", "skip": true, "extras": "width: 1024, height: 1024, sampler: Default" }, @@ -200,19 +244,11 @@ "Kwai Kolors": { "path": "Kwai-Kolors/Kolors-diffusers", "desc": "Kolors is a large-scale text-to-image generation model based on latent diffusion, developed by the Kuaishou Kolors team. Trained on billions of text-image pairs, Kolors exhibits significant advantages over both open-source and proprietary models in visual quality, complex semantic accuracy, and text rendering for both Chinese and English characters. Furthermore, Kolors supports both Chinese and English inputs", - "preview": "Kwai-Kolors.jpg", + "preview": "Kwai-Kolors--Kolors-diffusers.jpg", "skip": true, "extras": "width: 1024, height: 1024" }, - "AuraFlow 0.1": { - "path": "https://huggingface.co/fal/AuraFlow", - "desc": "AuraFlow v0.1, an Open Exploration of Large Rectified Flow Models is inspired by SD3 and is by far the largest text-to-image generation model that comes with an Apache 2.0 license. This model achieves state-of-the-art results on the GenEval benchmark.", - "preview": "fal-AuraFlow.jpg", - "skip": true, - "extras": "width: 1024, height: 1024" - }, - "Kandinsky 2.1": { "path": "kandinsky-community/kandinsky-2-1", "desc": "Kandinsky 2.1 is a text-conditional diffusion model based on unCLIP and latent diffusion, composed of a transformer-based image prior model, a unet diffusion model, and a decoder. Kandinsky 2.1 inherits best practices from Dall-E 2 and Latent diffusion while introducing some new ideas. It uses the CLIP model as a text and image encoder, and diffusion image prior (mapping) between latent spaces of CLIP modalities. This approach increases the visual performance of the model and unveils new horizons in blending images and text-guided image manipulation.", diff --git a/installer.py b/installer.py index 7ce4de203..292e26f1b 100644 --- a/installer.py +++ b/installer.py @@ -651,7 +651,7 @@ def check_torch(): pass elif is_cuda_available(allow_cuda): log.info('nVidia CUDA toolkit detected: nvidia-smi present') - torch_command = os.environ.get('TORCH_COMMAND', 'torch torchvision --index-url https://download.pytorch.org/whl/cu121') + torch_command = os.environ.get('TORCH_COMMAND', 'torch torchvision --index-url https://download.pytorch.org/whl/cu124') install('onnxruntime-gpu', 'onnxruntime-gpu', ignore=True, quiet=True) elif allow_rocm and rocm.is_installed: torch_command = install_rocm_zluda(torch_command) diff --git a/models/Reference/Alpha-VLLM-Lumina-Next-SFT-diffusers.jpg b/models/Reference/Alpha-VLLM--Lumina-Next-SFT-diffusers.jpg similarity index 100% rename from models/Reference/Alpha-VLLM-Lumina-Next-SFT-diffusers.jpg rename to models/Reference/Alpha-VLLM--Lumina-Next-SFT-diffusers.jpg diff --git a/models/Reference/Kwai-Kolors.jpg b/models/Reference/Kwai-Kolors--Kolors-diffusers.jpg similarity index 100% rename from models/Reference/Kwai-Kolors.jpg rename to models/Reference/Kwai-Kolors--Kolors-diffusers.jpg diff --git a/models/Reference/Tencent-Hunyuan-HunyuanDiT.jpg b/models/Reference/Tencent-Hunyuan--HunyuanDiT-v1.2-Diffusers.jpg similarity index 100% rename from models/Reference/Tencent-Hunyuan-HunyuanDiT.jpg rename to models/Reference/Tencent-Hunyuan--HunyuanDiT-v1.2-Diffusers.jpg diff --git a/models/Reference/black-forest-labs--FLUX.1-dev.jpg b/models/Reference/black-forest-labs--FLUX.1-dev.jpg new file mode 100644 index 0000000000000000000000000000000000000000..621de90dab9e0b8b441e5157142a9d94fe6a909b GIT binary patch literal 63060 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 PQj*%}bHelLosa+7evw`| literal 0 HcmV?d00001 diff --git a/models/Reference/black-forest-labs--FLUX.1-schnell.jpg b/models/Reference/black-forest-labs--FLUX.1-schnell.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4b05081383fdd3a3c14249e50afc86b9dd59edf GIT binary patch literal 88001 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 literal 0 HcmV?d00001 diff --git a/models/Reference/fal-AuraFlow.jpg b/models/Reference/fal--AuraFlow.jpg similarity index 100% rename from models/Reference/fal-AuraFlow.jpg rename to models/Reference/fal--AuraFlow.jpg diff --git a/modules/devices.py b/modules/devices.py index ad008add4..1d6ae3703 100644 --- a/modules/devices.py +++ b/modules/devices.py @@ -3,8 +3,8 @@ import gc import sys import time import contextlib -import torch from functools import wraps +import torch from modules.errors import log from modules import cmd_args, shared, memstats, errors diff --git a/modules/model_flux.py b/modules/model_flux.py index 757717494..899e75af8 100644 --- a/modules/model_flux.py +++ b/modules/model_flux.py @@ -1,17 +1,16 @@ +import os import json import torch import diffusers import transformers from safetensors.torch import load_file -from huggingface_hub import hf_hub_download - +from accelerate.utils import compute_module_sizes from modules import shared, devices - def load_quanto_transformer(repo_path): - from optimum.quanto import requantize - with open(repo_path + "/" + "transformer/quantization_map.json", "r") as f: + from optimum.quanto import requantize # pylint: disable=no-name-in-module + with open(repo_path + "/" + "transformer/quantization_map.json", "r", encoding='utf8') as f: quantization_map = json.load(f) state_dict = load_file(repo_path + "/" + "transformer/diffusion_pytorch_model.safetensors") dtype = state_dict['context_embedder.bias'].dtype @@ -23,10 +22,10 @@ def load_quanto_transformer(repo_path): def load_quanto_text_encoder_2(repo_path): - from optimum.quanto import requantize - with open(repo_path + "/" + "text_encoder_2/quantization_map.json", "r") as f: + from optimum.quanto import requantize # pylint: disable=no-name-in-module + with open(repo_path + "/" + "text_encoder_2/quantization_map.json", "r", encoding='utf8') as f: quantization_map = json.load(f) - with open(repo_path + "/" + "text_encoder_2/config.json") as f: + with open(repo_path + "/" + "text_encoder_2/config.json", encoding='utf8') as f: t5_config = transformers.T5Config(**json.load(f)) state_dict = load_file(repo_path + "/" + "text_encoder_2/model.safetensors") dtype = state_dict['encoder.block.0.layer.0.SelfAttention.relative_attention_bias.weight'].dtype @@ -36,12 +35,35 @@ def load_quanto_text_encoder_2(repo_path): text_encoder_2.eval() return text_encoder_2 + def load_flux(checkpoint_info, diffusers_load_config): - if "qint8" in checkpoint_info.name.lower() or "qint4" in checkpoint_info.name.lower(): - shared.log.debug(f'Loading FLUX: model="{checkpoint_info.name}" quant=True') + if "qint8" in checkpoint_info.path.lower(): + quant = 'qint8' + elif "qint4" in checkpoint_info.path.lower(): + quant = 'qint4' + elif "nf4" in checkpoint_info.path.lower(): + quant = 'nf4' + else: + quant = None + shared.log.debug(f'Loading FLUX: model="{checkpoint_info.name}" quant={quant}') + if quant == 'nf4': + from installer import install + install('bitsandbytes', quiet=True) + try: + import bitsandbytes # pylint: disable=unused-import + except Exception as e: + shared.log.error(f"FLUX: Failed to import bitsandbytes: {e}") + raise + from modules.model_flux_nf4 import load_flux_nf4 + pipe = load_flux_nf4(checkpoint_info, diffusers_load_config) + elif quant == 'qint8' or quant == 'qint4': from installer import install install('optimum-quanto', quiet=True) - from optimum import quanto + try: + from optimum import quanto # pylint: disable=no-name-in-module + except Exception as e: + shared.log.error(f"FLUX: Failed to import optimum-quanto: {e}") + raise quanto.tensor.qbits.QBitsTensor.create = lambda *args, **kwargs: quanto.tensor.qbits.QBitsTensor(*args, **kwargs) pipe = diffusers.FluxPipeline.from_pretrained(checkpoint_info.path, cache_dir=shared.opts.diffusers_dir, transformer=None, text_encoder_2=None, **diffusers_load_config) pipe.transformer = load_quanto_transformer(checkpoint_info.path) @@ -50,18 +72,18 @@ def load_flux(checkpoint_info, diffusers_load_config): try: pipe.transformer = pipe.transformer.to(dtype=devices.dtype) except Exception: - shared.log.error(f"FLUX: Failed to cast the transformer to {devices.dtype}! Set dtype to {pipe.transformer.dtype}") + shared.log.error(f"FLUX: Failed to cast transformer to {devices.dtype}, set dtype to {pipe.transformer.dtype}") raise if pipe.text_encoder_2.dtype != devices.dtype: try: pipe.text_encoder_2 = pipe.text_encoder_2.to(dtype=devices.dtype) except Exception: - shared.log.error(f"FLUX: Failed to cast the text encoder to {devices.dtype}! Set dtype to {pipe.text_encoder_2.dtype}") + shared.log.error(f"FLUX: Failed to cast text encoder to {devices.dtype}, set dtype to {pipe.text_encoder_2.dtype}") raise else: pipe = diffusers.FluxPipeline.from_pretrained(checkpoint_info.path, cache_dir=shared.opts.diffusers_dir, **diffusers_load_config) - shared.log.debug(f'Loading FLUX: model="{checkpoint_info.name}" quant=False') if devices.dtype == torch.float16 and not shared.opts.no_half_vae: - shared.log.warning("FLUX VAE doesn't support FP16! Enabling no-half-vae") + shared.log.warning("FLUX: does not support FP16 VAE, enabling no-half-vae") shared.opts.no_half_vae = True + shared.log.debug(f'FLUX computed size: {round(compute_module_sizes(pipe.transformer)[""] / 1024 / 1204)}') return pipe diff --git a/modules/model_flux_nf4.py b/modules/model_flux_nf4.py new file mode 100644 index 000000000..fe74d6330 --- /dev/null +++ b/modules/model_flux_nf4.py @@ -0,0 +1,190 @@ +""" +Copied from: https://github.com/huggingface/diffusers/issues/9165 +""" + +import os +import torch +import torch.nn as nn +import bitsandbytes as bnb +from transformers.quantizers.quantizers_utils import get_module_from_name +from huggingface_hub import hf_hub_download +from accelerate import init_empty_weights +from accelerate.utils import set_module_tensor_to_device +from diffusers import FluxTransformer2DModel, FluxPipeline +from diffusers.loaders.single_file_utils import convert_flux_transformer_checkpoint_to_diffusers +import safetensors.torch +from modules import shared, devices + + +def _replace_with_bnb_linear( + model, + method="nf4", + has_been_replaced=False, +): + """ + Private method that wraps the recursion for module replacement. + + Returns the converted model and a boolean that indicates if the conversion has been successfull or not. + """ + for name, module in model.named_children(): + if isinstance(module, nn.Linear): + with init_empty_weights(): + in_features = module.in_features + out_features = module.out_features + + if method == "llm_int8": + model._modules[name] = bnb.nn.Linear8bitLt( # pylint: disable=protected-access + in_features, + out_features, + module.bias is not None, + has_fp16_weights=False, + threshold=6.0, + ) + has_been_replaced = True + else: + model._modules[name] = bnb.nn.Linear4bit( # pylint: disable=protected-access + in_features, + out_features, + module.bias is not None, + compute_dtype=torch.bfloat16, + compress_statistics=False, + quant_type="nf4", + ) + has_been_replaced = True + # Store the module class in case we need to transpose the weight later + model._modules[name].source_cls = type(module) # pylint: disable=protected-access + # Force requires grad to False to avoid unexpected errors + model._modules[name].requires_grad_(False) # pylint: disable=protected-access + + if len(list(module.children())) > 0: + _, has_been_replaced = _replace_with_bnb_linear( + module, + has_been_replaced=has_been_replaced, + ) + # Remove the last key for recursion + return model, has_been_replaced + + +def check_quantized_param( + model, + param_name: str, +) -> bool: + module, tensor_name = get_module_from_name(model, param_name) + if isinstance(module._parameters.get(tensor_name, None), bnb.nn.Params4bit): # pylint: disable=protected-access + # Add here check for loaded components' dtypes once serialization is implemented + return True + elif isinstance(module, bnb.nn.Linear4bit) and tensor_name == "bias": + # bias could be loaded by regular set_module_tensor_to_device() from accelerate, + # but it would wrongly use uninitialized weight there. + return True + else: + return False + + +def create_quantized_param( + model, + param_value: "torch.Tensor", + param_name: str, + target_device: "torch.device", + state_dict=None, + unexpected_keys=None, + pre_quantized=False +): + module, tensor_name = get_module_from_name(model, param_name) + + if tensor_name not in module._parameters: # pylint: disable=protected-access + raise ValueError(f"{module} does not have a parameter or a buffer named {tensor_name}.") + + old_value = getattr(module, tensor_name) + + if tensor_name == "bias": + if param_value is None: + new_value = old_value.to(target_device) + else: + new_value = param_value.to(target_device) + + new_value = torch.nn.Parameter(new_value, requires_grad=old_value.requires_grad) + module._parameters[tensor_name] = new_value # pylint: disable=protected-access + return + + if not isinstance(module._parameters[tensor_name], bnb.nn.Params4bit): # pylint: disable=protected-access + raise ValueError("this function only loads `Linear4bit components`") + if ( + old_value.device == torch.device("meta") + and target_device not in ["meta", torch.device("meta")] + and param_value is None + ): + raise ValueError(f"{tensor_name} is on the meta device, we need a `value` to put in on {target_device}.") + + if pre_quantized: + if (param_name + ".quant_state.bitsandbytes__fp4" not in state_dict) and ( + param_name + ".quant_state.bitsandbytes__nf4" not in state_dict + ): + raise ValueError( + f"Supplied state dict for {param_name} does not contain `bitsandbytes__*` and possibly other `quantized_stats` components." + ) + + quantized_stats = {} + for k, v in state_dict.items(): + # `startswith` to counter for edge cases where `param_name` + # substring can be present in multiple places in the `state_dict` + if param_name + "." in k and k.startswith(param_name): + quantized_stats[k] = v + if unexpected_keys is not None and k in unexpected_keys: + unexpected_keys.remove(k) + + new_value = bnb.nn.Params4bit.from_prequantized( + data=param_value, + quantized_stats=quantized_stats, + requires_grad=False, + device=target_device, + ) + + else: + new_value = param_value.to("cpu") + kwargs = old_value.__dict__ + new_value = bnb.nn.Params4bit(new_value, requires_grad=False, **kwargs).to(target_device) + + module._parameters[tensor_name] = new_value # pylint: disable=protected-access + + +def load_flux_nf4(checkpoint_info, diffusers_load_config): + if os.path.exists(checkpoint_info.path) and os.path.isfile(checkpoint_info.path): + ckpt_path = checkpoint_info.path + else: + ckpt_path = hf_hub_download(checkpoint_info.path, filename="diffusion_pytorch_model.safetensors", cache_dir=shared.opts.diffusers_dir) + original_state_dict = safetensors.torch.load_file(ckpt_path) + + if 'sayakpaul/flux.1-dev-nf4' in checkpoint_info.path: + converted_state_dict = original_state_dict # already converted + else: + try: + converted_state_dict = convert_flux_transformer_checkpoint_to_diffusers(original_state_dict) + except Exception as e: + from modules import errors + errors.display(e, 'FLUX convert:') + raise + + with init_empty_weights(): + # config = FluxTransformer2DModel.load_config(checkpoint_info.path) + config = FluxTransformer2DModel.load_config("black-forest-labs/flux.1-dev", subfolder="transformer") + model = FluxTransformer2DModel.from_config(config).to(devices.dtype) + expected_state_dict_keys = list(model.state_dict().keys()) + + _replace_with_bnb_linear(model, "nf4") + + for param_name, param in converted_state_dict.items(): + if param_name not in expected_state_dict_keys: + continue + is_param_float8_e4m3fn = hasattr(torch, "float8_e4m3fn") and param.dtype == torch.float8_e4m3fn + if torch.is_floating_point(param) and not is_param_float8_e4m3fn: + param = param.to(devices.dtype) + if not check_quantized_param(model, param_name): + set_module_tensor_to_device(model, param_name, device=0, value=param) + else: + create_quantized_param(model, param, param_name, target_device=0, state_dict=original_state_dict, pre_quantized=True) + + del original_state_dict + pipe = FluxPipeline.from_pretrained("black-forest-labs/flux.1-dev", transformer=model, cache_dir=shared.opts.diffusers_dir, **diffusers_load_config) + devices.torch_gc(force=True) + return pipe diff --git a/modules/model_sd3.py b/modules/model_sd3.py index 8fc2de233..5c0d76767 100644 --- a/modules/model_sd3.py +++ b/modules/model_sd3.py @@ -13,7 +13,7 @@ def load_sd3(fn=None, cache_dir=None, config=None): if fn is not None and fn.endswith('.safetensors') and os.path.exists(fn): model_id = fn loader = diffusers.StableDiffusion3Pipeline.from_single_file - _diffusers_major, diffusers_minor, diffusers_micro = int(diffusers.__version__.split('.')[0]), int(diffusers.__version__.split('.')[1]), int(diffusers.__version__.split('.')[2]) + _diffusers_major, diffusers_minor, diffusers_micro = int(diffusers.__version__.split('.')[0]), int(diffusers.__version__.split('.')[1]), int(diffusers.__version__.split('.')[2]) # pylint: disable=use-maxsplit-arg fn_size = os.path.getsize(fn) if (diffusers_minor <= 29 and diffusers_micro < 1) or fn_size < 5e9: # te1/te2 do not get loaded correctly in diffusers 0.29.0 if model is without te1/te2 kwargs = { diff --git a/modules/processing_diffusers.py b/modules/processing_diffusers.py index 1e0715e01..a5714e775 100644 --- a/modules/processing_diffusers.py +++ b/modules/processing_diffusers.py @@ -314,7 +314,7 @@ def process_diffusers(p: processing.StableDiffusionProcessing): shared.log.debug(f'Generated: frames={len(output.frames[0])}') output.images = output.frames[0] if hasattr(shared.sd_model, "_unpack_latents") and hasattr(shared.sd_model, "vae_scale_factor"): # FLUX - output.images = shared.sd_model._unpack_latents(output.images, p.height, p.width, shared.sd_model.vae_scale_factor) + output.images = shared.sd_model._unpack_latents(output.images, p.height, p.width, shared.sd_model.vae_scale_factor) # pylint: disable=protected-access if torch.is_tensor(output.images) and len(output.images) > 0 and any(s >= 512 for s in output.images.shape): results = output.images.float().cpu().numpy() elif hasattr(shared.sd_model, "vae") and output.images is not None and len(output.images) > 0: diff --git a/modules/sd_models.py b/modules/sd_models.py index 88a27a58e..995defcde 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -79,13 +79,15 @@ class CheckpointInfo: self.filename = filename self.sha256 = hashes.sha256_from_cache(self.filename, f"checkpoint/{relname}") self.type = ext + if 'nf4' in filename: + self.type = 'transformer' else: # maybe a diffuser if self.hash is None: repo = [r for r in modelloader.diffuser_repos if self.filename == r['name']] else: repo = [r for r in modelloader.diffuser_repos if self.hash == r['hash']] if len(repo) == 0: - self.name = relname + self.name = filename self.filename = filename self.sha256 = None self.type = 'unknown' @@ -707,7 +709,7 @@ def set_diffuser_options(sd_model, vae = None, op: str = 'model', offload=True): except Exception as e: shared.log.error(f'Error enabling fused projections: {e}') if shared.opts.diffusers_eval: - def eval_model(model, op=None, sd_model=None): + def eval_model(model, op=None, sd_model=None): # pylint: disable=unused-argument if hasattr(model, "requires_grad_"): model.requires_grad_(False) model.eval() @@ -782,7 +784,7 @@ def apply_balanced_offload(sd_model): offload_dir = getattr(module, "offload_dir", os.path.join(shared.opts.accelerate_offload_path, module.__class__.__name__)) module = dispatch_model(module, device_map=device_map, offload_dir=offload_dir) module = add_hook_to_module(module, dispatch_from_cpu_hook(), append=True) - module._hf_hook.execution_device = torch.device(devices.device) + module._hf_hook.execution_device = torch.device(devices.device) # pylint: disable=protected-access return args, kwargs def post_forward(self, module, output): return output @@ -802,7 +804,7 @@ def apply_balanced_offload(sd_model): module = module.to("cpu") module.offload_dir = offload_dir module = add_hook_to_module(module, dispatch_from_cpu_hook(), append=True) - module._hf_hook.execution_device = torch.device(devices.device) + module._hf_hook.execution_device = torch.device(devices.device) # pylint: disable=protected-access devices.torch_gc() apply_balanced_offload_to_module(sd_model) @@ -1029,7 +1031,7 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No shared.log.debug(f'Diffusers loading: path="{checkpoint_info.path}"') pipeline, model_type = detect_pipeline(checkpoint_info.path, op) - if os.path.isdir(checkpoint_info.path) or checkpoint_info.type == 'huggingface': + if os.path.isdir(checkpoint_info.path) or checkpoint_info.type == 'huggingface' or checkpoint_info.type == 'transformer': files = shared.walk_files(checkpoint_info.path, ['.safetensors', '.bin', '.ckpt']) if 'variant' not in diffusers_load_config and any('diffusion_pytorch_model.fp16' in f for f in files): # deal with diffusers lack of variant fallback when loading diffusers_load_config['variant'] = 'fp16' diff --git a/modules/sd_models_compile.py b/modules/sd_models_compile.py index 5819866ef..2ec8b26a8 100644 --- a/modules/sd_models_compile.py +++ b/modules/sd_models_compile.py @@ -96,7 +96,7 @@ def ipex_optimize(sd_model): try: t0 = time.time() - def ipex_optimize_model(model, op=None, sd_model=None): + def ipex_optimize_model(model, op=None, sd_model=None): # pylint: disable=unused-argument import intel_extension_for_pytorch as ipex # pylint: disable=import-error, unused-import model.eval() model.training = False @@ -133,7 +133,7 @@ def nncf_send_to_device(model): def nncf_compress_model(model, op=None, sd_model=None): import nncf - global quant_last_model_name, quant_last_model_device + global quant_last_model_name, quant_last_model_device # pylint: disable=global-statement model.eval() backup_embeddings = None if hasattr(model, "get_input_embeddings"): @@ -164,7 +164,7 @@ def nncf_compress_weights(sd_model): try: t0 = time.time() shared.log.info(f"NNCF Compress Weights: {shared.opts.nncf_compress_weights}") - global quant_last_model_name, quant_last_model_device + global quant_last_model_name, quant_last_model_device # pylint: disable=global-statement from installer import install install('nncf==2.7.0', quiet=True) @@ -186,8 +186,8 @@ def nncf_compress_weights(sd_model): return sd_model def optimum_quanto_model(model, op=None, sd_model=None, weights=None, activations=None): - from optimum import quanto - global quant_last_model_name, quant_last_model_device + from optimum import quanto # pylint: disable=no-name-in-module + global quant_last_model_name, quant_last_model_device # pylint: disable=global-statement if sd_model is not None and "Flux" in sd_model.__class__.__name__: # LayerNorm is not supported exclude_list = ["transformer_blocks.*.norm1.norm", "transformer_blocks.*.norm2", "transformer_blocks.*.norm1_context.norm", "transformer_blocks.*.norm2_context", "single_transformer_blocks.*.norm.norm", "norm_out.norm"] else: @@ -228,14 +228,14 @@ def optimum_quanto_model(model, op=None, sd_model=None, weights=None, activation def optimum_quanto_weights(sd_model): try: if shared.opts.diffusers_offload_mode in {"balanced", "sequential"}: - shared.log.warn(f"Optimum Quanto Weights is incompatible with {shared.opts.diffusers_offload_mode} offload!") + shared.log.warning(f"Optimum Quanto Weights is incompatible with {shared.opts.diffusers_offload_mode} offload!") return sd_model t0 = time.time() shared.log.info(f"Optimum Quanto Weights: {shared.opts.optimum_quanto_weights}") - global quant_last_model_name, quant_last_model_device + global quant_last_model_name, quant_last_model_device # pylint: disable=global-statement from installer import install install('optimum-quanto', quiet=True) - from optimum import quanto + from optimum import quanto # pylint: disable=no-name-in-module quanto.tensor.qbits.QBitsTensor.create = lambda *args, **kwargs: quanto.tensor.qbits.QBitsTensor(*args, **kwargs) sd_model = apply_compile_to_model(sd_model, optimum_quanto_model, shared.opts.optimum_quanto_weights, op="optimum-quanto") @@ -255,7 +255,7 @@ def optimum_quanto_weights(sd_model): activations = None if activations is not None: - def optimum_quanto_freeze(model, op=None, sd_model=None): + def optimum_quanto_freeze(model, op=None, sd_model=None): # pylint: disable=unused-argument quanto.freeze(model) return model if shared.opts.diffusers_offload_mode == "model": @@ -382,7 +382,7 @@ def compile_torch(sd_model): torch._dynamo.reset() # pylint: disable=protected-access shared.log.debug(f"Model compile available backends: {torch._dynamo.list_backends()}") # pylint: disable=protected-access - def torch_compile_model(model, op=None, sd_model=None): + def torch_compile_model(model, op=None, sd_model=None): # pylint: disable=unused-argument if model.device.type != "meta": return_device = model.device model = torch.compile(model.to(devices.device), diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py index fbd8cb913..4db88dbe7 100644 --- a/modules/sd_samplers.py +++ b/modules/sd_samplers.py @@ -69,6 +69,10 @@ def create_sampler(name, model): return sampler elif shared.native: sampler = config.constructor(model) + if shared.sd_model_type == 'FluxPipeline': + if 'base_image_seq_len' not in sampler.sampler.config or 'max_image_seq_len' not in sampler.sampler.config or 'base_shift' not in sampler.sampler.config or 'max_shift' not in sampler.sampler.config: + shared.log.warning('FLUX sampler: attempting to use a non compatible scheduler') + return None if not hasattr(model, 'scheduler_config'): model.scheduler_config = sampler.sampler.config.copy() model.scheduler = sampler.sampler diff --git a/modules/shared.py b/modules/shared.py index 0b341fbd4..e187cc137 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -3,12 +3,12 @@ import os import sys import time import json -import psutil import threading import contextlib from types import SimpleNamespace from urllib.parse import urlparse from enum import Enum +import psutil import requests import gradio as gr import fasteners diff --git a/requirements.txt b/requirements.txt index 709091894..e55e13ced 100644 --- a/requirements.txt +++ b/requirements.txt @@ -27,7 +27,7 @@ fasteners orjson invisible-watermark pi-heif -diffusers==0.30.0 +diffusers==0.30.1 safetensors==0.4.4 tensordict==0.1.2 peft==0.11.1 @@ -43,7 +43,7 @@ accelerate==0.33.0 opencv-contrib-python-headless==4.9.0.80 einops==0.4.1 gradio==3.43.2 -huggingface_hub==0.24.5 +huggingface_hub==0.24.6 numexpr==2.8.8 numpy==1.26.4 numba==0.59.1 @@ -53,7 +53,7 @@ pandas protobuf==4.25.3 pytorch_lightning==1.9.4 tokenizers==0.19.1 -transformers==4.44.0 +transformers==4.44.2 urllib3==1.26.19 Pillow==10.4.0 timm==0.9.16 diff --git a/wiki b/wiki index 574224b9e..205a79397 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 574224b9e8849176a737a2304916bb99ce8e5029 +Subproject commit 205a79397883bfb77dc1a9b3616a7d6e7da4cd7f