From d314aa6889fc230382c8f52c90b3d405c1caacce Mon Sep 17 00:00:00 2001 From: Filip Strand Date: Tue, 14 Oct 2025 00:34:27 +0200 Subject: [PATCH] Release 0.11.0 (#271) --- CHANGELOG.md | 73 ++++++++++++++++++ Makefile | 2 +- README.md | 27 +++++-- pyproject.toml | 6 +- src/mflux/config/model_config.py | 4 +- src/mflux/info.py | 2 +- .../models/common/lora/mapping/lora_loader.py | 65 +++++++++++----- .../qwen/variants/txt2img/qwen_image.py | 4 + .../models/qwen/weights/qwen_model_saver.py | 56 ++++++++++++++ .../qwen/weights/qwen_weight_handler.py | 62 +++++++++++++++ src/mflux/post_processing/metadata_builder.py | 3 +- src/mflux/save.py | 12 ++- .../reference_controlnet_dev_lora_depth.png | Bin 47229 -> 46955 bytes uv.lock | 48 ++++++------ 14 files changed, 303 insertions(+), 61 deletions(-) create mode 100644 src/mflux/models/qwen/weights/qwen_model_saver.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a53666..0d168e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,79 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.11.0] - 2025-10-12 + +# MFLUX v.0.11.0 Release Notes + +### 🎨 New Model Support + +- **Qwen Image Support**: Added support for the Qwen Image text-to-image model, enabling a new generation of visual content creation +- **New command**: `mflux-generate` now supports Qwen models for image generation +- **Qwen-specific features**: Full LoRA support with Qwen naming conventions, img2img support, and optimized weight handling +- **Qwen-Image-mflux-6bit Model**: Added [filipstrand/Qwen-Image-mflux-6bit](https://huggingface.co/filipstrand/Qwen-Image-mflux-6bit) quantized model to HF + +### 🏗️ Major Architecture Improvements + +- **Package Restructure**: Complete reorganization of the codebase to support multiple model architectures + - Moved from flat structure to organized `models/` hierarchy (`models/flux/`, `models/qwen/`, `models/depth_pro/`) + - Better separation of concerns with dedicated model, variant, tokenizer, and weight handler modules + - Improved maintainability and extensibility for future model additions +- **Namespace Package**: Converted mflux to a namespace package (in preparation for mflux.mcp extension) +- **Common Module**: Extracted shared functionality into `models/common/` for better code reuse + - Unified LoRA handling across different model types + - Shared attention utilities + - Common download and weight management utilities + +### 📊 Metadata Enhancements + +- **XMP/IPTC Metadata Support**: Added comprehensive metadata support for professional workflows + - Write XMP and IPTC metadata to generated images + - Industry-standard metadata formats for better compatibility with professional image tools + - Enhanced metadata reading and writing capabilities +- **New `mflux-info` command**: Display detailed metadata information from generated images + - View generation parameters, model information, and settings + - Extract metadata from any mflux-generated image + - Professional-grade metadata inspection + +### 🔧 Scheduler System + +- **Scheduler Interface**: Introduced a new scheduler abstraction for better extensibility + - Clean interface for implementing custom sampling schedulers + - Foundation for future scheduler additions (Euler, DPM++, etc.) + - Current implementation: Linear scheduler (existing behavior preserved) +- **Scheduler Selection**: Added `--scheduler` command-line argument for choosing schedulers + +### 🐛 Bug Fixes + +- **Non-Quantized Model Loading**: Fixed critical bug where locally saved non-quantized models failed to load properly +- **Model Weight Handling**: Improved weight loading reliability for edge cases + +### 🔧 Developer Experience + +- **MLX 0.29.2 Support**: Updated MLX dependency to support the latest version (mlx>=0.27.0,<0.30.0) +- **Python 3.13 Support**: Unblocked sentencepiece and torch dependencies for Python 3.13 + - Updated dependency specifications for better Python 3.13 compatibility + - Ensured smooth experience on latest Python versions +- **Test Improvements**: Enhanced image comparison logic to allow similar images that are "close enough" + - More robust test suite that accommodates minor numerical differences + - Reduced false positives in image generation tests +- **CI Updates**: Removed Claude CI agent (replacement coming soon) + +### 🔄 Breaking Changes + +⚠️ **Import Path Changes**: Due to the package restructure, some internal import paths have changed. If you're using mflux as a library and importing internal modules directly, you may need to update your imports: +- Flux modules moved from `mflux.flux.*` to `mflux.models.flux.*` +- Common utilities moved to `mflux.models.common.*` +- CLI tools remain unchanged and fully backward compatible + +### 👩‍💻 Contributors + +- **Filip Strand (@filipstrand)**: Qwen model support, package restructure, core development +- **Alessandro Rizzo (@azrahello)**: XMP/IPTC metadata support, info command implementation +- **Anthony Wu (@anthonywu)**: Scheduler interface, namespace package conversion, Python 3.13 improvements, bug fixes + +--- + ## [0.10.0] - 2025-08-04 # MFLUX v.0.10.0 Release Notes diff --git a/Makefile b/Makefile index 67e227e..be58b5c 100644 --- a/Makefile +++ b/Makefile @@ -93,7 +93,7 @@ check: ensure-ruff .PHONY: test test: ensure-pytest # 🏗️ Running tests... - uv pip install mlx==0.27.1 # Install pinned MLX version specifically for testing + uv pip install mlx==0.29.2 # Install pinned MLX version specifically for testing $(PYTHON) -m pytest # ✅ Tests completed diff --git a/README.md b/README.md index ed790ee..cf0a0db 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ All models are implemented from scratch in MLX and only the tokenizers are used [Huggingface Transformers](https://github.com/huggingface/transformers) library. Other than that, there are only minimal dependencies like [Numpy](https://numpy.org) and [Pillow](https://pypi.org/project/pillow/) for simple image post-processing. +As of v.0.11.0, MFLUX now supports the Qwen Image model. --- ### 💿 Installation @@ -152,6 +153,12 @@ This example uses the more powerful `dev` model with 25 time steps: mflux-generate --model dev --prompt "Luxury food photograph" --steps 25 --seed 2 -q 8 ``` +This example uses the `qwen` model with 20 time steps: + +```sh +mflux-generate --model qwen --prompt "Luxury food photograph" --steps 20 --seed 2 -q 6 +``` + You can also pipe prompts from other commands using stdin: ```sh @@ -168,8 +175,8 @@ from mflux.config.config import Config # Load the model flux = Flux1.from_name( - model_name="schnell", # "schnell", "dev", or "krea-dev" - quantize=8, # 3, 4, 5, 6, or 8 + model_name="schnell", # "schnell", "dev", "krea-dev", or "qwen" + quantize=8, # 3, 4, 5, 6, or 8 ) # Generate an image @@ -177,7 +184,7 @@ image = flux.generate_image( seed=2, prompt="Luxury food photograph", config=Config( - num_inference_steps=2, # "schnell" works well with 2-4 steps, "dev" and "krea-dev" work well with 20-25 steps + num_inference_steps=2, # "schnell" works well with 2-4 steps, "dev", "krea-dev", and "qwen" work well with 20-25 steps height=1024, width=1024, ) @@ -188,7 +195,7 @@ image.save(path="image.png") For more advanced Python usage and additional configuration options, you can explore the entry point files in the source code, such as [`generate.py`](src/mflux/generate.py), [`generate_controlnet.py`](src/mflux/generate_controlnet.py), [`generate_fill.py`](src/mflux/generate_fill.py), and others in the [`src/mflux/`](src/mflux/) directory. These files demonstrate how to use the Python API for various features and provide examples of advanced configurations. -⚠️ *If the specific model is not already downloaded on your machine, it will start the download process and fetch the model weights (~34GB in size for the Schnell or Dev model respectively). See the [quantization](#%EF%B8%8F-quantization) section for running compressed versions of the model.* ⚠️ +⚠️ *If the specific model is not already downloaded on your machine, it will start the download process and fetch the model weights (~34GB for Schnell/Dev models, ~58GB for Qwen). See the [quantization](#%EF%B8%8F-quantization) section for running compressed versions of the model.* ⚠️ *By default, mflux caches files in `~/Library/Caches/mflux/`. The Hugging Face model files themselves are cached separately in the Hugging Face cache directory (e.g., `~/.cache/huggingface/`).* @@ -228,9 +235,9 @@ mflux-generate \ - **`--prompt`** (required, `str`): Text description of the image to generate. Use `-` to read the prompt from stdin (e.g., `echo "A beautiful sunset" | mflux-generate --prompt -`). -- **`--model`** or **`-m`** (required, `str`): Model to use for generation. Can be one of the official models (`"schnell"`, `"dev"`, or `"krea-dev"`) or a HuggingFace repository ID for a compatible third-party model (e.g., `"Freepik/flux.1-lite-8B-alpha"`). +- **`--model`** or **`-m`** (required, `str`): Model to use for generation. Can be one of the official models (`"schnell"`, `"dev"`, `"krea-dev"`, or `"qwen"`) or a HuggingFace repository ID for a compatible third-party model (e.g., `"Freepik/flux.1-lite-8B-alpha"`). -- **`--base-model`** (optional, `str`, default: `None`): Specifies which base architecture a third-party model is derived from (`"schnell"`, `"dev"`, or `"krea-dev"`). Required when using third-party models from HuggingFace. +- **`--base-model`** (optional, `str`, default: `None`): Specifies which base architecture a third-party model is derived from (`"schnell"`, `"dev"`, `"krea-dev"`, or `"qwen"`). Required when using third-party models from HuggingFace. - **`--output`** (optional, `str`, default: `"image.png"`): Output image filename. If `--seed` or `--auto-seeds` establishes multiple seed values, the output filename will automatically be modified to include the seed value (e.g., `image_seed_42.png`). @@ -244,7 +251,7 @@ mflux-generate \ - **`--steps`** (optional, `int`, default: `4`): Number of inference steps. -- **`--guidance`** (optional, `float`, default: `3.5`): Guidance scale (only used for `"dev"` model). +- **`--guidance`** (optional, `float`, default: `3.5`): Guidance scale (only used for `"dev"`, `"krea-dev"` and `qwen` models). - **`--path`** (optional, `str`, default: `None`): Path to a local model on disk. @@ -745,6 +752,8 @@ mflux-save \ --quantize 8 ``` +The `mflux-save` command works with both Flux and Qwen models. + *Note that when saving a quantized version, you will need the original huggingface weights.* It is also possible to specify [LoRA](#-lora) adapters when saving the model, e.g @@ -792,6 +801,7 @@ In other words, you can reclaim the 34GB diskspace (per model) by deleting the f - [dhairyashil/FLUX.1-dev-mflux-4bit](https://huggingface.co/dhairyashil/FLUX.1-dev-mflux-4bit) - [akx/FLUX.1-Kontext-dev-mflux-4bit](https://huggingface.co/akx/FLUX.1-Kontext-dev-mflux-4bit) - [filipstrand/FLUX.1-Krea-dev-mflux-4bit](https://huggingface.co/filipstrand/FLUX.1-Krea-dev-mflux-4bit) + - [filipstrand/Qwen-Image-mflux-6bit](https://huggingface.co/filipstrand/Qwen-Image-mflux-6bit) Using the [community model support](#-third-party-huggingface-model-support), the quantized weights can be also be automatically downloaded when running the generate command: @@ -940,7 +950,7 @@ mflux-generate --prompt "pikachu, Paper Cutout Style" --model schnell --steps 4 *Note that LoRA trained weights are typically trained with a **trigger word or phrase**. For example, in the latter case, the sentence should include the phrase **"Paper Cutout Style"**.* -*Also note that the same LoRA weights can work well with both the `schnell` and `dev` models. Refer to the original LoRA repository to see what mode it was trained for.* +*Also note that the same LoRA weights can work well with both the `schnell` and `dev` models. Qwen models support LoRA but may require Qwen-specific LoRA weights. Refer to the original LoRA repository to see what mode it was trained for.* #### Multi-LoRA @@ -1863,6 +1873,7 @@ See `uv run tools/rename_images.py --help` for full CLI usage help. - Set up shell aliases for required args examples: - shortcut for dev model: `alias mflux-dev='mflux-generate --model dev'` - shortcut for schnell model *and* always save metadata: `alias mflux-schnell='mflux-generate --model schnell --metadata'` + - shortcut for qwen model: `alias mflux-qwen='mflux-generate --model qwen'` - For systems with limited memory, use the `--low-ram` flag to reduce memory usage by constraining the MLX cache size and releasing components after use - On battery-powered Macs, use `--battery-percentage-stop-limit` (or `-B`) to prevent your laptop from shutting down during long generation sessions - When generating multiple images with different seeds, use `--seed` with multiple values or `--auto-seeds` to automatically generate a series of random seeds diff --git a/pyproject.toml b/pyproject.toml index 987f132..3e34f9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ source-exclude = [ [project] name = "mflux" -version = "0.10.0" +version = "0.11.0" description = "A MLX port of FLUX based on the Huggingface Diffusers implementation." readme = "README.md" keywords = ["diffusers", "flux", "mlx"] @@ -30,7 +30,7 @@ dependencies = [ "filelock>=3.18.0", "huggingface-hub>=0.24.5,<1.0", "matplotlib>=3.9.2,<4.0", - "mlx>=0.27.0,<0.28.0", + "mlx>=0.27.0,<0.30.0", "numpy>=2.0.1,<3.0", "opencv-python>=4.10.0,<5.0", "piexif>=1.1.3,<2.0", @@ -68,7 +68,7 @@ dev = [ "matplotlib>3.10,<4.0", "pytest>=8.3.0,<9.0", "pytest-timer>=1.0,<2.0", - "mlx==0.27.1", # Used ONLY during test runs to ensure deterministic test results + "mlx==0.29.2", # Used ONLY during test runs to ensure deterministic test results ] [project.urls] diff --git a/src/mflux/config/model_config.py b/src/mflux/config/model_config.py index 092122e..87e7e90 100644 --- a/src/mflux/config/model_config.py +++ b/src/mflux/config/model_config.py @@ -128,7 +128,9 @@ class ModelConfig: default_base = next((b for b in base_models if base_model == b.model_name or base_model in b.aliases), None) else: # Infer from model_name substring - prefer longer matches (more specific) - matching_bases = [(b, alias) for b in base_models for alias in b.aliases if alias and alias in model_name] + # Use case-insensitive matching for better compatibility + model_name_lower = model_name.lower() + matching_bases = [(b, alias) for b in base_models for alias in b.aliases if alias and alias.lower() in model_name_lower] if matching_bases: # Sort by alias length descending, then by priority ascending diff --git a/src/mflux/info.py b/src/mflux/info.py index d88b37b..591a291 100644 --- a/src/mflux/info.py +++ b/src/mflux/info.py @@ -56,7 +56,7 @@ def format_metadata(metadata: dict) -> str: if lora_paths := exif.get("lora_paths"): lines.append("") lines.append(f"LoRAs ({len(lora_paths)}):") - lora_scales = exif.get("lora_scales", []) + lora_scales = exif.get("lora_scales") or [] for i, lora in enumerate(lora_paths): scale = lora_scales[i] if i < len(lora_scales) else 1.0 lora_name = Path(lora).name diff --git a/src/mflux/models/common/lora/mapping/lora_loader.py b/src/mflux/models/common/lora/mapping/lora_loader.py index 9632447..4f15826 100644 --- a/src/mflux/models/common/lora/mapping/lora_loader.py +++ b/src/mflux/models/common/lora/mapping/lora_loader.py @@ -174,33 +174,49 @@ class LoRALoader: effective_scale = scale # Create new LoRA layer - if hasattr(current_module, 'weight'): - # Create LoRA layer - lora_layer = LoRALinear.from_linear( - current_module, - r=lora_A.shape[1], - scale=effective_scale - ) - - # Set the LoRA matrices - use the correct dimensions from the LoRA file - lora_layer.lora_A = lora_A - lora_layer.lora_B = lora_B - - # Apply alpha scaling to the matrices if present - if "alpha" in lora_data: - lora_layer.lora_B = lora_layer.lora_B * alpha_scale - + # Check if it's a linear layer (either nn.Linear, LoRALinear, or FusedLoRALinear) + is_linear = hasattr(current_module, 'weight') + is_lora_linear = isinstance(current_module, LoRALinear) + is_fused_linear = isinstance(current_module, FusedLoRALinear) + + if is_linear or is_lora_linear or is_fused_linear: # Handle fusion: if the current module is already a LoRA layer, fuse them - if isinstance(current_module, LoRALinear): + if is_lora_linear: print(f" 🔀 Fusing with existing LoRA at {target_path}") + # Create a temporary LoRA layer from the base linear of the existing LoRA + lora_layer = LoRALinear.from_linear( + current_module.linear, + r=lora_A.shape[1], + scale=effective_scale + ) + # Set the LoRA matrices + lora_layer.lora_A = lora_A + lora_layer.lora_B = lora_B + # Apply alpha scaling to the matrices if present + if "alpha" in lora_data: + lora_layer.lora_B = lora_layer.lora_B * alpha_scale + # Create fused layer with the existing LoRA and the new one fused_layer = FusedLoRALinear( base_linear=current_module.linear, loras=[current_module, lora_layer] ) replacement_layer = fused_layer - elif isinstance(current_module, FusedLoRALinear): + elif is_fused_linear: print(f" 🔀 Adding to existing fusion at {target_path}") + # Create a temporary LoRA layer from the base linear + lora_layer = LoRALinear.from_linear( + current_module.base_linear, + r=lora_A.shape[1], + scale=effective_scale + ) + # Set the LoRA matrices + lora_layer.lora_A = lora_A + lora_layer.lora_B = lora_B + # Apply alpha scaling to the matrices if present + if "alpha" in lora_data: + lora_layer.lora_B = lora_layer.lora_B * alpha_scale + # Add to existing fusion fused_layer = FusedLoRALinear( base_linear=current_module.base_linear, @@ -209,6 +225,19 @@ class LoRALoader: replacement_layer = fused_layer else: # First LoRA on this layer + # Create LoRA layer + lora_layer = LoRALinear.from_linear( + current_module, + r=lora_A.shape[1], + scale=effective_scale + ) + # Set the LoRA matrices - use the correct dimensions from the LoRA file + lora_layer.lora_A = lora_A + lora_layer.lora_B = lora_B + # Apply alpha scaling to the matrices if present + if "alpha" in lora_data: + lora_layer.lora_B = lora_layer.lora_B * alpha_scale + replacement_layer = lora_layer # Replace the layer in the parent module diff --git a/src/mflux/models/qwen/variants/txt2img/qwen_image.py b/src/mflux/models/qwen/variants/txt2img/qwen_image.py index 0d681f1..546fde5 100644 --- a/src/mflux/models/qwen/variants/txt2img/qwen_image.py +++ b/src/mflux/models/qwen/variants/txt2img/qwen_image.py @@ -13,6 +13,7 @@ from mflux.models.qwen.model.qwen_text_encoder.qwen_text_encoder import QwenText from mflux.models.qwen.model.qwen_transformer.qwen_transformer import QwenTransformer from mflux.models.qwen.model.qwen_vae.qwen_vae import QwenVAE from mflux.models.qwen.qwen_initializer import QwenImageInitializer +from mflux.models.qwen.weights.qwen_model_saver import QwenModelSaver from mflux.post_processing.array_util import ArrayUtil from mflux.post_processing.generated_image import GeneratedImage from mflux.post_processing.image_util import ImageUtil @@ -168,6 +169,9 @@ class QwenImage(nn.Module): negative_prompt=negative_prompt, ) + def save_model(self, base_path: str) -> None: + QwenModelSaver.save_model(self, self.bits, base_path) + @staticmethod def _compute_guided_noise( noise: mx.array, diff --git a/src/mflux/models/qwen/weights/qwen_model_saver.py b/src/mflux/models/qwen/weights/qwen_model_saver.py new file mode 100644 index 0000000..be98a63 --- /dev/null +++ b/src/mflux/models/qwen/weights/qwen_model_saver.py @@ -0,0 +1,56 @@ +from pathlib import Path + +import mlx.core as mx +from mlx import nn +from mlx.utils import tree_flatten +from transformers import Qwen2Tokenizer + +from mflux.utils.version_util import VersionUtil + + +class QwenModelSaver: + @staticmethod + def save_model(model, bits: int, base_path: str): + # Save the tokenizer + QwenModelSaver._save_tokenizer(base_path, model.qwen_tokenizer.tokenizer, "tokenizer") + + # Save the models + QwenModelSaver.save_weights(base_path, bits, model.vae, "vae") + QwenModelSaver.save_weights(base_path, bits, model.transformer, "transformer") + QwenModelSaver.save_weights(base_path, bits, model.text_encoder, "text_encoder") + + @staticmethod + def _save_tokenizer(base_path: str, tokenizer: Qwen2Tokenizer, subdir: str): + path = Path(base_path) / subdir + tokenizer.save_pretrained(path) + + @staticmethod + def save_weights(base_path: str, bits: int, model: nn.Module, subdir: str): + path = Path(base_path) / subdir + path.mkdir(parents=True, exist_ok=True) + weights = QwenModelSaver._split_weights(base_path, dict(tree_flatten(model.parameters()))) + for i, weight in enumerate(weights): + mx.save_safetensors( + str(path / f"{i}.safetensors"), + weight, + { + "quantization_level": str(bits), + "mflux_version": VersionUtil.get_mflux_version(), + }, + ) + + @staticmethod + def _split_weights(base_path: str, weights: dict, max_file_size_gb: int = 2) -> list: + # Copied from mlx-examples repo + max_file_size_bytes = max_file_size_gb << 30 + shards = [] + shard, shard_size = {}, 0 + for k, v in weights.items(): + if shard_size + v.nbytes > max_file_size_bytes: + shards.append(shard) + shard, shard_size = {}, 0 + shard[k] = v + shard_size += v.nbytes + shards.append(shard) + return shards + diff --git a/src/mflux/models/qwen/weights/qwen_weight_handler.py b/src/mflux/models/qwen/weights/qwen_weight_handler.py index b70e04d..39b3235 100644 --- a/src/mflux/models/qwen/weights/qwen_weight_handler.py +++ b/src/mflux/models/qwen/weights/qwen_weight_handler.py @@ -56,18 +56,80 @@ class QwenWeightHandler: @staticmethod def load_transformer(root_path: Path) -> tuple[dict, int | None, str | None]: flat = QwenWeightHandler._load_safetensors_shards(root_path / "transformer", loading_mode="multi_glob") + + # Check if this is a saved quantized model (with metadata) or HuggingFace weights + # Saved models from mflux-save are already in MLX structure and don't need manual mapping + quantization_level = None + mflux_version = None + + # Try to get metadata from the first weight shard + import mlx.core as mx + from mlx.utils import tree_unflatten + + file_glob = sorted((root_path / "transformer").glob("*.safetensors")) + if file_glob: + data = mx.load(str(file_glob[0]), return_metadata=True) + if len(data) > 1: + quantization_level = data[1].get("quantization_level") + mflux_version = data[1].get("mflux_version") + + # If this is a saved model (has metadata), use tree_unflatten directly + if quantization_level is not None or mflux_version is not None: + return tree_unflatten(list(flat.items())), quantization_level, mflux_version + + # Otherwise, it's HuggingFace weights that need manual mapping mapped_weights = QwenWeightHandler._manual_transformer_mapping(flat) return mapped_weights, None, None @staticmethod def _load_qwen_text_encoder(root_path: Path) -> tuple[dict, int | None, str | None]: + import mlx.core as mx + from mlx.utils import tree_unflatten + + # Check for saved model metadata FIRST to determine loading mode + quantization_level = None + mflux_version = None + file_glob = sorted((root_path / "text_encoder").glob("*.safetensors")) + if file_glob: + data = mx.load(str(file_glob[0]), return_metadata=True) + if len(data) > 1: + quantization_level = data[1].get("quantization_level") + mflux_version = data[1].get("mflux_version") + + # If this is a saved model, load without expecting index.json + if quantization_level is not None or mflux_version is not None: + all_weights = QwenWeightHandler._load_safetensors_shards( + root_path / "text_encoder", loading_mode="multi_glob" + ) + return tree_unflatten(list(all_weights.items())), quantization_level, mflux_version + + # Otherwise, it's HuggingFace weights that need manual mapping all_weights = QwenWeightHandler._load_safetensors_shards(root_path / "text_encoder", loading_mode="multi_json") mapped_weights = QwenWeightHandler._manual_text_encoder_mapping(all_weights) return mapped_weights, None, None @staticmethod def _load_vae(root_path: Path) -> tuple[dict, int | None, str | None]: + import mlx.core as mx + from mlx.utils import tree_unflatten + weights = QwenWeightHandler._load_safetensors_shards(root_path / "vae", loading_mode="single") + + # Check for saved model metadata + quantization_level = None + mflux_version = None + file_glob = sorted((root_path / "vae").glob("*.safetensors")) + if file_glob: + data = mx.load(str(file_glob[0]), return_metadata=True) + if len(data) > 1: + quantization_level = data[1].get("quantization_level") + mflux_version = data[1].get("mflux_version") + + # If this is a saved model, use tree_unflatten directly + if quantization_level is not None or mflux_version is not None: + return tree_unflatten(list(weights.items())), quantization_level, mflux_version + + # Otherwise, it's HuggingFace weights that need manual mapping and reshaping reshaped_weights = [QwenWeightUtil.reshape_weights(k, v) for k, v in weights.items()] reshaped_weights = QwenWeightUtil.flatten(reshaped_weights) weights = dict(reshaped_weights) diff --git a/src/mflux/post_processing/metadata_builder.py b/src/mflux/post_processing/metadata_builder.py index a0dffbd..9818f86 100644 --- a/src/mflux/post_processing/metadata_builder.py +++ b/src/mflux/post_processing/metadata_builder.py @@ -214,7 +214,8 @@ class MetadataBuilder: Returns: Comma-separated string of LoRA names and scales, or empty string """ - if "lora_paths" not in metadata or not metadata["lora_paths"]: + # Check if lora_paths exists and is not None/empty + if "lora_paths" not in metadata or metadata["lora_paths"] is None or not metadata["lora_paths"]: return "" lora_list = [] diff --git a/src/mflux/save.py b/src/mflux/save.py index 13790b4..2c6ab7d 100644 --- a/src/mflux/save.py +++ b/src/mflux/save.py @@ -1,23 +1,27 @@ from mflux.config.model_config import ModelConfig from mflux.models.flux.variants.txt2img.flux import Flux1 +from mflux.models.qwen.variants.txt2img.qwen_image import QwenImage from mflux.ui.cli.parsers import CommandLineParser def main(): # 0. Parse command line arguments - parser = CommandLineParser(description="Save a quantized version of Flux.1 to disk.") # fmt: off + parser = CommandLineParser(description="Save a quantized version of a model to disk.") # fmt: off parser.add_model_arguments(path_type="save", require_model_arg=True) parser.add_lora_arguments() args = parser.parse_args() - # 1. Load, quantize and save the model - flux = Flux1( + # 1. Determine model class based on model name + model_class = QwenImage if "qwen" in args.model.lower() else Flux1 + + # 2. Load, quantize and save the model + model = model_class( model_config=ModelConfig.from_name(args.model, base_model=args.base_model), quantize=args.quantize, lora_paths=args.lora_paths, lora_scales=args.lora_scales, ) - flux.save_model(args.path) + model.save_model(args.path) if __name__ == "__main__": diff --git a/tests/resources/reference_controlnet_dev_lora_depth.png b/tests/resources/reference_controlnet_dev_lora_depth.png index 8ea75a634e3e40411c33030347e3846bb952385a..0cd2da4193259cf900b234dee97d27fb9038fe31 100644 GIT binary patch literal 46955 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
?1p7PZ*Lja(imFt3KjCL85 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 T1w_^Q00000NkvXXu0mjfj1Uf2 literal 47229 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