From dffa75b95270ef3075c0d4660fbbabc71ecbe7cd Mon Sep 17 00:00:00 2001 From: molbal Date: Fri, 12 Jun 2026 15:20:00 +0200 Subject: [PATCH 1/6] . --- dequant.py | 3 + editor.md | 60 ++ fp8/transformer/config.json | 19 + ...usion_pytorch_model.safetensors.index.json | 1 + fp8/unconditional_transformer/config.json | 19 + ...usion_pytorch_model.safetensors.index.json | 1 + loader.py | 37 +- ops.py | 40 +- pr.md | 42 + tools/convert.py | 15 +- ui.html | 995 ++++++++++++++++++ 11 files changed, 1222 insertions(+), 10 deletions(-) create mode 100644 editor.md create mode 100644 fp8/transformer/config.json create mode 100644 fp8/transformer/diffusion_pytorch_model.safetensors.index.json create mode 100644 fp8/unconditional_transformer/config.json create mode 100644 fp8/unconditional_transformer/diffusion_pytorch_model.safetensors.index.json create mode 100644 pr.md create mode 100644 ui.html diff --git a/dequant.py b/dequant.py index 78f5f26..809db16 100644 --- a/dequant.py +++ b/dequant.py @@ -18,6 +18,9 @@ def dequantize_tensor(tensor, dtype=None, dequant_dtype=None): if qtype in TORCH_COMPATIBLE_QTYPES: return tensor.to(dtype) + elif qtype == gguf.GGMLQuantizationType.BF16: + tensor = torch.Tensor(tensor.data.view(torch.bfloat16).reshape(oshape)) + return tensor if dtype is None or dtype == torch.bfloat16 else tensor.to(dtype) elif qtype in dequantize_functions: dequant_dtype = dtype if dequant_dtype == "target" else dequant_dtype return dequantize(tensor.data, qtype, oshape, dtype=dequant_dtype).to(dtype) diff --git a/editor.md b/editor.md new file mode 100644 index 0000000..870afe8 --- /dev/null +++ b/editor.md @@ -0,0 +1,60 @@ +# Prompt Canvas Editor + +A single-file browser editor for building Ideogram-style structured JSON prompts with canvas-based bounding boxes. The app lives entirely in `ui.html`; there is no build step, package manager, or local server requirement. + +## Features + +- Set canvas width and height with sliders or by double-clicking the displayed values. +- Draw, move, resize, delete, and edit bounding boxes directly on the canvas. +- Cycle through selected boxes with the `<-` and `->` controls when boxes overlap. +- Edit global prompt fields, including high-level description, aesthetics, lighting, medium, style/photo mode, background, and color palette. +- Edit per-box mode, description, optional text content, and per-box color palette. +- Generate formatted JSON from the current canvas and form state. +- Paste existing prompt JSON into the JSON box and load it back into the editable canvas. + +## Usage + +Open `ui.html` directly in a modern browser. + +The Tailwind design system is loaded from the Tailwind CDN, so the page needs internet access for styling. The editor logic itself is plain HTML, CSS, and JavaScript. + +## Basic Workflow + +1. Set the canvas size. +2. Draw boxes on the canvas by clicking and dragging. +3. Select a box and edit its properties in the right panel. +4. Fill in the global prompt settings. +5. Click `Generate JSON` to write the prompt JSON into the textarea. +6. Copy or save the generated JSON wherever your workflow needs it. + +To edit an existing prompt, paste the JSON into the textarea and click `Load JSON`. The editor will rebuild the canvas boxes and form fields from the prompt. + +## JSON Shape + +The editor expects prompt JSON in this general form: + +```json +{ + "high_level_description": "", + "style_description": { + "aesthetics": "", + "lighting": "", + "medium": "", + "art_style": "", + "color_palette": [] + }, + "compositional_deconstruction": { + "background": "", + "elements": [ + { + "type": "obj", + "bbox": [0, 0, 1000, 1000], + "desc": "", + "color_palette": [] + } + ] + } +} +``` + +Bounding boxes use normalized coordinates from `0` to `1000` in `[y1, x1, y2, x2]` order. The editor converts those coordinates to the current canvas size when loading JSON, then converts them back to normalized coordinates when generating JSON. \ No newline at end of file diff --git a/fp8/transformer/config.json b/fp8/transformer/config.json new file mode 100644 index 0000000..da6e1e8 --- /dev/null +++ b/fp8/transformer/config.json @@ -0,0 +1,19 @@ +{ + "_class_name": "Ideogram4Transformer2DModel", + "_diffusers_version": "0.39.0.dev0", + "_name_or_path": "/home/jinli/.cache/huggingface/hub/models--ideogram-ai--debug-ideogram-v4/snapshots/41af6183c9fd9b6254864b0720319ef984535bfc/transformer", + "adaln_dim": 512, + "attention_head_dim": 256, + "in_channels": 128, + "intermediate_size": 12288, + "llm_features_dim": 53248, + "mrope_section": [ + 24, + 20, + 20 + ], + "norm_eps": 1e-05, + "num_attention_heads": 18, + "num_layers": 34, + "rope_theta": 5000000 +} diff --git a/fp8/transformer/diffusion_pytorch_model.safetensors.index.json b/fp8/transformer/diffusion_pytorch_model.safetensors.index.json new file mode 100644 index 0000000..ba1f6d8 --- /dev/null +++ b/fp8/transformer/diffusion_pytorch_model.safetensors.index.json @@ -0,0 +1 @@ +{"metadata": {"total_size": 9289722624}, "weight_map": {"adaln_proj.bias": "diffusion_pytorch_model.safetensors", "adaln_proj.weight": "diffusion_pytorch_model.safetensors", "adaln_proj.weight_scale": "diffusion_pytorch_model.safetensors", "embed_image_indicator.weight": "diffusion_pytorch_model.safetensors", "final_layer.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "final_layer.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "final_layer.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "final_layer.linear.bias": "diffusion_pytorch_model.safetensors", "final_layer.linear.weight": "diffusion_pytorch_model.safetensors", "final_layer.linear.weight_scale": "diffusion_pytorch_model.safetensors", "input_proj.bias": "diffusion_pytorch_model.safetensors", "input_proj.weight": "diffusion_pytorch_model.safetensors", "input_proj.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.0.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.0.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.0.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.1.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.1.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.1.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.1.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.10.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.10.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.10.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.10.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.11.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.11.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.11.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.11.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.12.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.12.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.12.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.12.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.13.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.13.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.13.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.13.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.14.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.14.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.14.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.14.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.15.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.15.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.15.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.15.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.16.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.16.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.16.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.16.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.17.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.17.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.17.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.17.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.18.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.18.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.18.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.18.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.19.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.19.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.19.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.19.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.2.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.2.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.2.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.2.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.20.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.20.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.20.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.20.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.21.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.21.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.21.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.21.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.22.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.22.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.22.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.22.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.23.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.23.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.23.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.23.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.24.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.24.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.24.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.24.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.25.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.25.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.25.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.25.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.26.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.26.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.26.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.26.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.27.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.27.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.27.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.27.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.28.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.28.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.28.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.28.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.29.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.29.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.29.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.29.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.3.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.3.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.3.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.3.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.30.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.30.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.30.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.30.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.31.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.31.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.31.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.31.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.32.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.32.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.32.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.32.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.33.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.33.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.33.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.33.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.4.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.4.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.4.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.4.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.5.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.5.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.5.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.5.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.6.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.6.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.6.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.6.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.7.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.7.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.7.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.7.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.8.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.8.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.8.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.8.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.9.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.9.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.9.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.9.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "llm_cond_norm.weight": "diffusion_pytorch_model.safetensors", "llm_cond_proj.bias": "diffusion_pytorch_model.safetensors", "llm_cond_proj.weight": "diffusion_pytorch_model.safetensors", "llm_cond_proj.weight_scale": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_in.bias": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_in.weight": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_in.weight_scale": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_out.bias": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_out.weight": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_out.weight_scale": "diffusion_pytorch_model.safetensors"}} \ No newline at end of file diff --git a/fp8/unconditional_transformer/config.json b/fp8/unconditional_transformer/config.json new file mode 100644 index 0000000..f40a02c --- /dev/null +++ b/fp8/unconditional_transformer/config.json @@ -0,0 +1,19 @@ +{ + "_class_name": "Ideogram4Transformer2DModel", + "_diffusers_version": "0.39.0.dev0", + "_name_or_path": "/home/jinli/.cache/huggingface/hub/models--ideogram-ai--debug-ideogram-v4/snapshots/41af6183c9fd9b6254864b0720319ef984535bfc/unconditional_transformer", + "adaln_dim": 512, + "attention_head_dim": 256, + "in_channels": 128, + "intermediate_size": 12288, + "llm_features_dim": 53248, + "mrope_section": [ + 24, + 20, + 20 + ], + "norm_eps": 1e-05, + "num_attention_heads": 18, + "num_layers": 34, + "rope_theta": 5000000 +} diff --git a/fp8/unconditional_transformer/diffusion_pytorch_model.safetensors.index.json b/fp8/unconditional_transformer/diffusion_pytorch_model.safetensors.index.json new file mode 100644 index 0000000..ba1f6d8 --- /dev/null +++ b/fp8/unconditional_transformer/diffusion_pytorch_model.safetensors.index.json @@ -0,0 +1 @@ +{"metadata": {"total_size": 9289722624}, "weight_map": {"adaln_proj.bias": "diffusion_pytorch_model.safetensors", "adaln_proj.weight": "diffusion_pytorch_model.safetensors", "adaln_proj.weight_scale": "diffusion_pytorch_model.safetensors", "embed_image_indicator.weight": "diffusion_pytorch_model.safetensors", "final_layer.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "final_layer.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "final_layer.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "final_layer.linear.bias": "diffusion_pytorch_model.safetensors", "final_layer.linear.weight": "diffusion_pytorch_model.safetensors", "final_layer.linear.weight_scale": "diffusion_pytorch_model.safetensors", "input_proj.bias": "diffusion_pytorch_model.safetensors", "input_proj.weight": "diffusion_pytorch_model.safetensors", "input_proj.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.0.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.0.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.0.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.0.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.0.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.0.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.1.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.1.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.1.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.1.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.1.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.1.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.1.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.10.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.10.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.10.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.10.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.10.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.10.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.10.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.11.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.11.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.11.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.11.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.11.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.11.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.11.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.12.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.12.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.12.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.12.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.12.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.12.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.12.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.13.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.13.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.13.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.13.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.13.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.13.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.13.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.14.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.14.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.14.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.14.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.14.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.14.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.14.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.15.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.15.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.15.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.15.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.15.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.15.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.15.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.16.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.16.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.16.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.16.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.16.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.16.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.16.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.17.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.17.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.17.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.17.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.17.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.17.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.17.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.18.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.18.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.18.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.18.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.18.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.18.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.18.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.19.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.19.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.19.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.19.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.19.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.19.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.19.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.2.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.2.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.2.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.2.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.2.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.2.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.2.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.20.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.20.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.20.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.20.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.20.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.20.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.20.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.21.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.21.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.21.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.21.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.21.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.21.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.21.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.22.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.22.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.22.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.22.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.22.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.22.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.22.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.23.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.23.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.23.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.23.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.23.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.23.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.23.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.24.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.24.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.24.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.24.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.24.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.24.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.24.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.25.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.25.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.25.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.25.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.25.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.25.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.25.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.26.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.26.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.26.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.26.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.26.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.26.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.26.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.27.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.27.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.27.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.27.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.27.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.27.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.27.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.28.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.28.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.28.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.28.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.28.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.28.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.28.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.29.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.29.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.29.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.29.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.29.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.29.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.29.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.3.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.3.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.3.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.3.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.3.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.3.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.3.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.30.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.30.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.30.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.30.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.30.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.30.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.30.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.31.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.31.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.31.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.31.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.31.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.31.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.31.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.32.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.32.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.32.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.32.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.32.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.32.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.32.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.33.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.33.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.33.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.33.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.33.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.33.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.33.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.4.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.4.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.4.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.4.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.4.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.4.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.4.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.5.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.5.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.5.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.5.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.5.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.5.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.5.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.6.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.6.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.6.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.6.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.6.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.6.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.6.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.7.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.7.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.7.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.7.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.7.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.7.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.7.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.8.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.8.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.8.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.8.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.8.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.8.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.8.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.9.adaln_modulation.bias": "diffusion_pytorch_model.safetensors", "layers.9.adaln_modulation.weight": "diffusion_pytorch_model.safetensors", "layers.9.adaln_modulation.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.attention.norm_k.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.norm_q.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.o.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.o.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.attention.qkv.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention.qkv.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.attention_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.9.attention_norm2.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w1.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w1.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w2.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w2.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w3.weight": "diffusion_pytorch_model.safetensors", "layers.9.feed_forward.w3.weight_scale": "diffusion_pytorch_model.safetensors", "layers.9.ffn_norm1.weight": "diffusion_pytorch_model.safetensors", "layers.9.ffn_norm2.weight": "diffusion_pytorch_model.safetensors", "llm_cond_norm.weight": "diffusion_pytorch_model.safetensors", "llm_cond_proj.bias": "diffusion_pytorch_model.safetensors", "llm_cond_proj.weight": "diffusion_pytorch_model.safetensors", "llm_cond_proj.weight_scale": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_in.bias": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_in.weight": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_in.weight_scale": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_out.bias": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_out.weight": "diffusion_pytorch_model.safetensors", "t_embedding.mlp_out.weight_scale": "diffusion_pytorch_model.safetensors"}} \ No newline at end of file diff --git a/loader.py b/loader.py index 7cefb11..64177f8 100644 --- a/loader.py +++ b/loader.py @@ -9,10 +9,23 @@ from .ops import GGMLTensor from .dequant import is_quantized, dequantize_tensor -IMG_ARCH_LIST = {"flux", "sd1", "sdxl", "sd3", "aura", "hidream", "cosmos", "ltxv", "hyvid", "wan", "lumina2", "qwen_image"} +IMG_ARCH_LIST = {"flux", "sd1", "sdxl", "sd3", "aura", "hidream", "cosmos", "ltxv", "hyvid", "wan", "lumina2", "qwen_image", "ideogram"} TXT_ARCH_LIST = {"t5", "t5encoder", "llama", "qwen2vl", "qwen3", "qwen3vl", "gemma3"} VIS_TYPE_LIST = {"clip-vision", "mmproj"} +def device_supports_bf16(): + """ + Return True if the active torch device can run bf16 natively. On devices + without native bf16 support, computation silently falls back to fp32 which + is very slow, so callers should load tensors as fp16 instead. + """ + try: + import comfy.model_management + return comfy.model_management.should_use_bf16(comfy.model_management.get_torch_device()) + except Exception: + # If support can't be determined, keep the previous bf16 behavior. + return True + def get_orig_shape(reader, tensor_name): field_key = f"comfy.gguf.orig_shape.{tensor_name}" field = reader.get_field(field_key) @@ -113,6 +126,9 @@ def gguf_sd_loader(path, handle_prefix="model.diffusion_model.", is_text_model=F logging.warning(f"Warning: This gguf model file is loaded in compatibility mode '{compat}' [arch:{arch_str}]") # main loading loop + # Devices without native bf16 fall back to slow fp32 compute, so load the + # full-precision BF16 storage tensors as fp16 there instead. + bf16_storage_dtype = torch.bfloat16 if device_supports_bf16() else torch.float16 state_dict = {} qtype_dict = {} for sd_key, tensor in tensors: @@ -138,9 +154,10 @@ def gguf_sd_loader(path, handle_prefix="model.diffusion_model.", is_text_model=F torch_tensor = torch_tensor.view(*shape) state_dict[sd_key] = GGMLTensor(torch_tensor, tensor_type=tensor.tensor_type, tensor_shape=shape) - # 1D tensors shouldn't be quantized, this is a fix for BF16 - if len(shape) <= 1 and tensor.tensor_type == gguf.GGMLQuantizationType.BF16: - state_dict[sd_key] = dequantize_tensor(state_dict[sd_key], dtype=torch.float32) + # BF16 GGUF tensors are full-precision storage, not compressed quants. + if tensor.tensor_type == gguf.GGMLQuantizationType.BF16: + dtype = torch.float32 if len(shape) <= 1 else bf16_storage_dtype + state_dict[sd_key] = dequantize_tensor(state_dict[sd_key], dtype=dtype) # keep track of loaded tensor types tensor_type_str = getattr(tensor.tensor_type, "name", repr(tensor.tensor_type)) @@ -501,6 +518,18 @@ def gguf_clip_loader(path): if arch == "qwen2vl": vsd = gguf_mmproj_loader(path) sd.update(vsd) + elif arch == "ideogram": + # Dequantize Ideogram model for inference + logging.info("Dequantizing Ideogram model for inference...") + # Use BF16 to save VRAM while maintaining quality, but fall back to FP16 + # on devices that don't support bf16 (avoids slow fp32 compute fallback). + target_dtype = torch.bfloat16 if device_supports_bf16() else torch.float16 + dequantized_count = 0 + for key in list(sd.keys()): + if is_quantized(sd[key]): + sd[key] = dequantize_tensor(sd[key], dtype=target_dtype) + dequantized_count += 1 + logging.info(f"Dequantized {dequantized_count} tensors for Ideogram model ({target_dtype})") else: pass return sd diff --git a/ops.py b/ops.py index 88a352e..9c26052 100644 --- a/ops.py +++ b/ops.py @@ -8,6 +8,18 @@ import comfy.model_management from .dequant import dequantize_tensor, is_quantized +def _valid_compute_dtype(dtype): + return dtype in {torch.float16, torch.bfloat16, torch.float32, torch.float64} + +def _infer_compute_dtype(tensor_type, fallback=None): + if _valid_compute_dtype(fallback): + return fallback + if tensor_type == gguf.GGMLQuantizationType.BF16: + return torch.bfloat16 + if tensor_type == gguf.GGMLQuantizationType.F32: + return torch.float32 + return torch.float16 + def chained_hasattr(obj, chained_attr): probe = obj for attr in chained_attr.split('.'): @@ -45,13 +57,14 @@ class GGMLTensor(torch.Tensor): """ Main tensor-like class for storing quantized weights """ - def __init__(self, *args, tensor_type, tensor_shape, patches=[], **kwargs): + def __init__(self, *args, tensor_type, tensor_shape, patches=[], compute_dtype=None, **kwargs): super().__init__() self.tensor_type = tensor_type self.tensor_shape = tensor_shape self.patches = patches + self.compute_dtype = compute_dtype - def __new__(cls, *args, tensor_type, tensor_shape, patches=[], **kwargs): + def __new__(cls, *args, tensor_type, tensor_shape, patches=[], compute_dtype=None, **kwargs): return super().__new__(cls, *args, **kwargs) def to(self, *args, **kwargs): @@ -59,6 +72,7 @@ def to(self, *args, **kwargs): new.tensor_type = getattr(self, "tensor_type", None) new.tensor_shape = getattr(self, "tensor_shape", new.data.shape) new.patches = getattr(self, "patches", []).copy() + new.compute_dtype = getattr(self, "compute_dtype", None) return new def clone(self, *args, **kwargs): @@ -81,9 +95,17 @@ def new_empty(self, size, *args, **kwargs): new_tensor, tensor_type = getattr(self, "tensor_type", None), tensor_shape = size, - patches = getattr(self, "patches", []).copy() + patches = getattr(self, "patches", []).copy(), + compute_dtype = getattr(self, "compute_dtype", None), ) + @property + def dtype(self): + qtype = getattr(self, "tensor_type", None) + if qtype in GGMLLayer.torch_compatible_tensor_types: + return torch.Tensor(self).dtype + return _infer_compute_dtype(qtype, getattr(self, "compute_dtype", None)) + @property def shape(self): if not hasattr(self, "tensor_shape"): @@ -121,8 +143,12 @@ def ggml_load_from_state_dict(self, state_dict, prefix, local_metadata, strict, prefix_len = len(prefix) for k,v in state_dict.items(): if k[prefix_len:] == "weight": + if isinstance(v, GGMLTensor): + v.compute_dtype = self._ggml_compute_dtype(v, "weight") self.weight = torch.nn.Parameter(v, requires_grad=False) elif k[prefix_len:] == "bias" and v is not None: + if isinstance(v, GGMLTensor): + v.compute_dtype = self._ggml_compute_dtype(v, "bias") self.bias = torch.nn.Parameter(v, requires_grad=False) else: unexpected_keys.append(k) @@ -137,6 +163,12 @@ def ggml_load_from_state_dict(self, state_dict, prefix, local_metadata, strict, if getattr(self.weight, "is_largest_weight", False): self.largest_layer = True + def _ggml_compute_dtype(self, tensor, param_name): + if self.dequant_dtype is not None and self.dequant_dtype != "target": + return self.dequant_dtype + model_dtype = getattr(self, f"{param_name}_comfy_model_dtype", None) + return _infer_compute_dtype(getattr(tensor, "tensor_type", None), model_dtype) + def _save_to_state_dict(self, *args, **kwargs): if self.is_ggml_quantized(): return self.ggml_save_to_state_dict(*args, **kwargs) @@ -238,6 +270,8 @@ def __init__(self, in_features, out_features, bias=True, device=None, dtype=None self.out_features = out_features self.weight = None self.bias = None + self.weight_comfy_model_dtype = dtype + self.bias_comfy_model_dtype = dtype def forward_ggml_cast_weights(self, input): weight, bias = self.cast_bias_weight(input) diff --git a/pr.md b/pr.md new file mode 100644 index 0000000..7ea8184 --- /dev/null +++ b/pr.md @@ -0,0 +1,42 @@ +# Summary + +This adds support for Ideogram GGUF models. + +# What Changed + +- Added `ideogram` to the supported image GGUF architectures. +- Added Ideogram model detection to the converter. +- Added GGUF dtype handling needed by Ideogram inference. +- Fixed the Ideogram inference failure where a packed GGUF weight dtype caused a byte tensor to reach CUDA linear. +- Adjusted BF16 GGUF loading so Ideogram can start inference faster. + +# Error Fixed + +Before this change, Ideogram GGUF models could load but failed during sampling with: + +```text +"addmm_cuda" not implemented for 'Byte' +``` + +# Tests + +Ran Python compile checks: + +```text +python -m py_compile dequant.py ops.py loader.py nodes.py tools\convert.py +``` + +Checked a synthetic GGUF linear forward: + +- packed storage stayed `torch.uint8` +- reported dtype was `torch.bfloat16` +- input dtype was `torch.bfloat16` +- output dtype was `torch.bfloat16` + +Checked BF16 loading behavior with finite values. + +# Notes + +Full ComfyUI inference was not run from this environment. + +Other GGUF quant types still use the existing dequant paths. diff --git a/tools/convert.py b/tools/convert.py index 5029c87..a9b76ea 100644 --- a/tools/convert.py +++ b/tools/convert.py @@ -145,8 +145,18 @@ class ModelLumina2(ModelTemplate): ("cap_embedder.1.weight", "context_refiner.0.attention.qkv.weight") ] +class ModelIdeogram(ModelTemplate): + arch = "ideogram" + keys_detect = [ + ( + "t_embedding.mlp_in.weight", + "layers.0.attention.qkv.weight", + "final_layer.linear.weight", + ) + ] + arch_list = [ModelFlux, ModelSD3, ModelAura, ModelHiDream, CosmosPredict2, - ModelLTXV, ModelHyVid, ModelWan, ModelSDXL, ModelSD1, ModelLumina2] + ModelLTXV, ModelHyVid, ModelWan, ModelSDXL, ModelSD1, ModelLumina2, ModelIdeogram] def is_model_arch(model, state_dict): # check if model is correct @@ -361,5 +371,4 @@ def convert_file(path, dst_path=None, interact=True, overwrite=False): if __name__ == "__main__": args = parse_args() - convert_file(args.src, args.dst) - + convert_file(args.src, args.dst) \ No newline at end of file diff --git a/ui.html b/ui.html new file mode 100644 index 0000000..740d44a --- /dev/null +++ b/ui.html @@ -0,0 +1,995 @@ + + + + + + + JSON Prompt Generation Tool + + + + + + + +
+
+
+
+
+ + 1024 +
+ +
+
+
+ + 1024 +
+ +
+ +
+
+ +
+
+
+
+

Prompt Canvas

+ 1024 x 1024 +
+
+
+
+
+
+
+
+
+ +
+
+
+

Prompt JSON

+
+ + +
+
+ +
+
+
+
+ + +
+
+ + + + + + From 16ddaa43a1a25b66e9ee7f02e9a4d97e759cba63 Mon Sep 17 00:00:00 2001 From: molbal Date: Wed, 24 Jun 2026 23:27:17 +0200 Subject: [PATCH 2/6] Add Krea-2 model support and batch converter for GGUF files - Updated IMG_ARCH_LIST to include 'krea2'. - Introduced ModelKrea2 class with architecture details and tensor handling. - Enhanced convert_file function to support quantization types. - Added tools/convert_krea2_gguf.py for batch conversion of Krea-2 models to multiple GGUF quant levels. --- loader.py | 2 +- tools/convert.py | 117 +++++++++++++++++++++++------ tools/convert_krea2_gguf.py | 144 ++++++++++++++++++++++++++++++++++++ tools/krea2_gguf_readme.md | 100 +++++++++++++++++++++++++ 4 files changed, 339 insertions(+), 24 deletions(-) create mode 100644 tools/convert_krea2_gguf.py create mode 100644 tools/krea2_gguf_readme.md diff --git a/loader.py b/loader.py index 64177f8..88f4713 100644 --- a/loader.py +++ b/loader.py @@ -9,7 +9,7 @@ from .ops import GGMLTensor from .dequant import is_quantized, dequantize_tensor -IMG_ARCH_LIST = {"flux", "sd1", "sdxl", "sd3", "aura", "hidream", "cosmos", "ltxv", "hyvid", "wan", "lumina2", "qwen_image", "ideogram"} +IMG_ARCH_LIST = {"flux", "sd1", "sdxl", "sd3", "aura", "hidream", "cosmos", "ltxv", "hyvid", "wan", "lumina2", "qwen_image", "ideogram", "krea2"} TXT_ARCH_LIST = {"t5", "t5encoder", "llama", "qwen2vl", "qwen3", "qwen3vl", "gemma3"} VIS_TYPE_LIST = {"clip-vision", "mmproj"} diff --git a/tools/convert.py b/tools/convert.py index a9b76ea..a79a395 100644 --- a/tools/convert.py +++ b/tools/convert.py @@ -155,8 +155,49 @@ class ModelIdeogram(ModelTemplate): ) ] -arch_list = [ModelFlux, ModelSD3, ModelAura, ModelHiDream, CosmosPredict2, - ModelLTXV, ModelHyVid, ModelWan, ModelSDXL, ModelSD1, ModelLumina2, ModelIdeogram] +class ModelKrea2(ModelTemplate): + """ + Krea-2 is a novel architecture from krea.ai — NOT Ideogram4. + Key structure (verified from Krea2_Turbo_fp8mixed.safetensors header): + blocks.N.attn.{wq,wk,wv,wo,gate} — separate Q/K/V/O projections + gating + blocks.N.attn.qknorm.{qnorm,knorm} — Q/K norms + blocks.N.mlp.{up,gate,down} — SwiGLU-style MLP + blocks.N.mod.lin — per-block modulation + blocks.N.{pre,post}norm.scale — RMSNorm scales + txtfusion.layerwise_blocks.N.* — layerwise text-image cross-attention + txtfusion.refiner_blocks.N.* — refiner text-image cross-attention + txtfusion.projector — text projector + first.weight / last.* — input / output projections + tmlp.N / tproj.N — timestep MLP / projection + + NOTE: ComfyUI core must have krea2 diffusion model support + (i.e. a detection branch for 'blocks.0.attn.wq.weight' in model_detection.py + and a matching supported_models entry) for the GGUF to load correctly. + Krea-2 was released 2026-06-22; verify your ComfyUI build is up to date. + """ + arch = "krea2" + keys_detect = [ + ( + "blocks.0.attn.wq.weight", + "txtfusion.projector.weight", + "first.weight", + ), + ( + "blocks.0.attn.wq.weight", + "txtfusion.layerwise_blocks.0.attn.wq.weight", + "last.linear.weight", + ), + ] + keys_hiprec = [ + "blocks.0.mod.lin", # modulation parameters — keep at full precision + "last.modulation.lin", + "tmlp.", + "tproj.", + ] + +arch_list = [ModelFlux, ModelSD3, ModelAura, ModelHiDream, CosmosPredict2, + ModelLTXV, ModelHyVid, ModelWan, ModelSDXL, ModelSD1, ModelLumina2, + ModelKrea2, ModelIdeogram] def is_model_arch(model, state_dict): # check if model is correct @@ -179,10 +220,30 @@ def detect_arch(state_dict): assert model_arch is not None, "Unknown model architecture!" return model_arch +QUANT_TYPE_MAP = { + "F16": (gguf.GGMLQuantizationType.F16, gguf.LlamaFileType.MOSTLY_F16), + "BF16": (gguf.GGMLQuantizationType.BF16, gguf.LlamaFileType.MOSTLY_BF16), + "Q8_0": (gguf.GGMLQuantizationType.Q8_0, gguf.LlamaFileType.MOSTLY_Q8_0), + "Q5_1": (gguf.GGMLQuantizationType.Q5_1, gguf.LlamaFileType.MOSTLY_Q5_1), + "Q5_0": (gguf.GGMLQuantizationType.Q5_0, gguf.LlamaFileType.MOSTLY_Q5_0), + "Q4_1": (gguf.GGMLQuantizationType.Q4_1, gguf.LlamaFileType.MOSTLY_Q4_1), + "Q4_0": (gguf.GGMLQuantizationType.Q4_0, gguf.LlamaFileType.MOSTLY_Q4_0), +} + def parse_args(): - parser = argparse.ArgumentParser(description="Generate F16 GGUF files from single UNET") - parser.add_argument("--src", required=True, help="Source model ckpt file.") - parser.add_argument("--dst", help="Output unet gguf file.") + parser = argparse.ArgumentParser( + description="Convert diffusion model safetensors/ckpt to GGUF." + " By default produces an F16/BF16 GGUF; use --quant-type to quantize." + ) + parser.add_argument("--src", required=True, help="Source model ckpt/safetensors file.") + parser.add_argument("--dst", help="Output GGUF file path.") + parser.add_argument( + "--quant-type", + choices=list(QUANT_TYPE_MAP.keys()), + default=None, + help="Target quantization type for eligible 2-D+ tensors " + "(1-D biases/scales stay F32). Defaults to F16/BF16 matching the source dtype.", + ) args = parser.parse_args() if not os.path.isfile(args.src): @@ -234,7 +295,7 @@ def load_state_dict(path): return strip_prefix(state_dict) -def handle_tensors(writer, state_dict, model_arch): +def handle_tensors(writer, state_dict, model_arch, quant_type=None): name_lengths = tuple(sorted( ((key, len(key)) for key in state_dict.keys()), key=lambda item: item[1], @@ -257,7 +318,7 @@ def handle_tensors(writer, state_dict, model_arch): data = data.to(torch.float32).numpy() # this is so we don't break torch 2.0.X elif data.dtype in [getattr(torch, "float8_e4m3fn", "_invalid"), getattr(torch, "float8_e5m2", "_invalid")]: - data = data.to(torch.float16).numpy() + data = data.to(torch.float32).numpy() # cast to f32 for correct downstream quant else: data = data.numpy() @@ -294,6 +355,10 @@ def handle_tensors(writer, state_dict, model_arch): # tensors that require max precision data_qtype = gguf.GGMLQuantizationType.F32 + elif quant_type is not None: + # caller-specified quantization type for all eligible tensors + data_qtype = quant_type + if (model_arch.shape_fix # NEVER reshape for models such as flux and n_dims > 1 # Skip one-dimensional tensors and n_params >= REARRANGE_THRESHOLD # Only rearrange tensors meeting the size requirement @@ -318,26 +383,32 @@ def handle_tensors(writer, state_dict, model_arch): writer.add_tensor(new_name, data, raw_dtype=data_qtype) -def convert_file(path, dst_path=None, interact=True, overwrite=False): +def convert_file(path, dst_path=None, interact=True, overwrite=False, quant_type_name=None): # load & run model detection logic state_dict = load_state_dict(path) model_arch = detect_arch(state_dict) logging.info(f"* Architecture detected from input: {model_arch.arch}") - # detect & set dtype for output file - dtypes = [x.dtype for x in state_dict.values()] - dtypes = {x:dtypes.count(x) for x in set(dtypes)} - main_dtype = max(dtypes, key=dtypes.get) - - if main_dtype == torch.bfloat16: - ftype_name = "BF16" - ftype_gguf = gguf.LlamaFileType.MOSTLY_BF16 - # elif main_dtype == torch.float32: - # ftype_name = "F32" - # ftype_gguf = None + # resolve quant type from name if provided + quant_type = None + if quant_type_name is not None and quant_type_name in QUANT_TYPE_MAP: + quant_type, ftype_gguf = QUANT_TYPE_MAP[quant_type_name] + ftype_name = quant_type_name else: - ftype_name = "F16" - ftype_gguf = gguf.LlamaFileType.MOSTLY_F16 + # detect & set dtype from source file + dtypes = [x.dtype for x in state_dict.values()] + dtypes = {x: dtypes.count(x) for x in set(dtypes)} + main_dtype = max(dtypes, key=dtypes.get) + + if main_dtype == torch.bfloat16: + ftype_name = "BF16" + ftype_gguf = gguf.LlamaFileType.MOSTLY_BF16 + # elif main_dtype == torch.float32: + # ftype_name = "F32" + # ftype_gguf = None + else: + ftype_name = "F16" + ftype_gguf = gguf.LlamaFileType.MOSTLY_F16 if dst_path is None: dst_path = f"{os.path.splitext(path)[0]}-{ftype_name}.gguf" @@ -356,7 +427,7 @@ def convert_file(path, dst_path=None, interact=True, overwrite=False): if ftype_gguf is not None: writer.add_file_type(ftype_gguf) - handle_tensors(writer, state_dict, model_arch) + handle_tensors(writer, state_dict, model_arch, quant_type=quant_type) writer.write_header_to_file(path=dst_path) writer.write_kv_data_to_file() writer.write_tensors_to_file(progress=True) @@ -371,4 +442,4 @@ def convert_file(path, dst_path=None, interact=True, overwrite=False): if __name__ == "__main__": args = parse_args() - convert_file(args.src, args.dst) \ No newline at end of file + convert_file(args.src, args.dst, quant_type_name=args.quant_type) \ No newline at end of file diff --git a/tools/convert_krea2_gguf.py b/tools/convert_krea2_gguf.py new file mode 100644 index 0000000..8e6fb4b --- /dev/null +++ b/tools/convert_krea2_gguf.py @@ -0,0 +1,144 @@ +""" +Batch GGUF converter for Krea-2 (Base and Turbo) models. + +Produces Q4_0, Q4_1, Q5_0, Q5_1, and Q8_0 GGUF files from a single +BF16/F16 safetensors source file. The converter auto-detects architecture +(ModelKrea2 or ModelIdeogram) from the tensor keys in the source file. + +Usage +----- +# Convert all five quant levels from a BF16 safetensors: +python tools/convert_krea2_gguf.py --src krea2_base_bf16.safetensors + +# Convert specific quant levels only: +python tools/convert_krea2_gguf.py --src krea2_turbo_bf16.safetensors --quant Q5_0 Q8_0 + +# Explicit output directory: +python tools/convert_krea2_gguf.py --src krea2_base_bf16.safetensors --outdir /path/to/output + +Notes +----- +- 1-D tensors (biases, norms, scales) are always kept in F32 regardless of + the requested quant type. +- Tensors with fewer than 1024 elements are kept in F32. +- No model weights are downloaded by this script. You must supply the source + safetensors file yourself. +- This script calls convert_file() from tools/convert.py; both files must be + on the Python path (they are when run from the repo root or from tools/). + +Approximate output sizes per quant level (Krea-2 ~24 B parameters): + Q4_0 ~ 14 GB Q4_1 ~ 15 GB Q5_0 ~ 17 GB Q5_1 ~ 18 GB Q8_0 ~ 26 GB +""" + +import os +import sys +import logging +import argparse +from tqdm import tqdm + +# Allow running directly from tools/ or from the repo root. +_HERE = os.path.dirname(os.path.abspath(__file__)) +_REPO = os.path.dirname(_HERE) +for _p in (_HERE, _REPO): + if _p not in sys.path: + sys.path.insert(0, _p) + +from convert import convert_file, QUANT_TYPE_MAP # noqa: E402 (tools/convert.py) + +logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") + +DEFAULT_QUANTS = ["Q4_0", "Q4_1", "Q5_0", "Q5_1", "Q8_0"] + + +def build_dst_path(src: str, quant: str, outdir: str | None) -> str: + """Derive an output path like -Q4_0.gguf next to the source.""" + stem = os.path.splitext(os.path.basename(src))[0] + filename = f"{stem}-{quant}.gguf" + directory = outdir if outdir else os.path.dirname(os.path.abspath(src)) + return os.path.join(directory, filename) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Batch-convert a Krea-2 safetensors file to multiple GGUF quant levels.", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=__doc__, + ) + parser.add_argument( + "--src", + required=True, + help="Path to the source BF16/F16 safetensors (or ckpt) file.", + ) + parser.add_argument( + "--outdir", + default=None, + help="Directory to write GGUF files into. Defaults to the same directory as --src.", + ) + parser.add_argument( + "--quant", + nargs="+", + choices=list(QUANT_TYPE_MAP.keys()), + default=DEFAULT_QUANTS, + metavar="QUANT", + help=( + "One or more quantization levels to produce. " + f"Choices: {list(QUANT_TYPE_MAP.keys())}. " + f"Default: {DEFAULT_QUANTS}" + ), + ) + parser.add_argument( + "--overwrite", + action="store_true", + help="Overwrite existing output files without prompting.", + ) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + + if not os.path.isfile(args.src): + logging.error(f"Source file not found: {args.src}") + sys.exit(1) + + if args.outdir: + os.makedirs(args.outdir, exist_ok=True) + + results: list[tuple[str, str, bool]] = [] # (quant, dst_path, success) + + for quant in tqdm(args.quant, desc="GGUF quant levels", unit="quant"): + dst = build_dst_path(args.src, quant, args.outdir) + logging.info(f"\n{'='*60}") + logging.info(f"Converting {os.path.basename(args.src)} → {os.path.basename(dst)}") + logging.info(f"Quant type : {quant}") + logging.info(f"Output : {dst}") + logging.info(f"{'='*60}") + + try: + out_path, model_arch = convert_file( + args.src, + dst_path=dst, + interact=False, + overwrite=args.overwrite, + quant_type_name=quant, + ) + logging.info(f"[OK] {quant} → {out_path} (arch={model_arch.arch})") + results.append((quant, out_path, True)) + except Exception as exc: + logging.error(f"[FAILED] {quant}: {exc}") + results.append((quant, dst, False)) + + # Summary + print(f"\n{'='*60}") + print("Conversion summary:") + for quant, path, ok in results: + status = "OK " if ok else "FAIL" + print(f" [{status}] {quant:6s} {path}") + print(f"{'='*60}") + + if not all(ok for _, _, ok in results): + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/tools/krea2_gguf_readme.md b/tools/krea2_gguf_readme.md new file mode 100644 index 0000000..5321d57 --- /dev/null +++ b/tools/krea2_gguf_readme.md @@ -0,0 +1,100 @@ +--- +license: other +license_name: krea-2-community-license +license_link: https://huggingface.co/krea/Krea-2-Turbo/blob/main/LICENSE +pipeline_tag: text-to-image +tags: + - image-generation + - diffusion + - flow-matching + - dit + - krea2 + - quantization + - comfyui +library_name: gguf +base_model: + - krea/Krea-2-Raw + - krea/Krea-2-Turbo +--- + +# Krea 2 GGUF + +Quantized GGUF diffusion transformer weights for [Krea 2](https://huggingface.co/krea/Krea-2-Turbo), +converted from the original BF16 releases for use with ComfyUI GGUF loader nodes. + +This repository provides GGUF files for two checkpoints of the Krea 2 model family: + +- `krea2_raw_bf16-*.gguf` — converted from [krea/Krea-2-Raw](https://huggingface.co/krea/Krea-2-Raw), the base release checkpoint. +- `krea2_turbo_bf16-*.gguf` — converted from [krea/Krea-2-Turbo](https://huggingface.co/krea/Krea-2-Turbo), the post-trained checkpoint with additional fine-tuning and distillation. + +Krea 2 is a 12-billion parameter Diffusion Transformer with a novel architecture featuring layerwise and refiner text-fusion blocks. It is not based on Flux or any prior open-weight architecture. + +These files are not a complete standalone Krea 2 package. Your workflow still needs the text encoder and VAE components. + +## ComfyUI Support + +Use these models with the ComfyUI nodes from [molbal/ComfyUI-GGUF](https://github.com/molbal/ComfyUI-GGUF). +Install that custom node repository into your ComfyUI `custom_nodes` folder, then restart ComfyUI. + +> **Important:** This repository requires [molbal/ComfyUI-GGUF](https://github.com/molbal/ComfyUI-GGUF), +> which is a fork of [city96/ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) with added support +> for the Krea 2 architecture. The original city96 plugin does **not** support these files. (as of 2026-06-24) + +Place the downloaded `.gguf` files in one of ComfyUI's diffusion model folders: + +``` +ComfyUI/models/diffusion_models/ +ComfyUI/models/unet/ +``` + +Load the file with `Unet Loader (GGUF)` in a Krea 2 workflow. Krea 2 uses a single transformer +(unlike Ideogram 4, there is no separate unconditional transformer component). + +## Files + +| Quant | Raw (base) | Turbo | Size | +|-------|-----------|-------------------|------| +| Q4_0 | krea2_raw_bf16-Q4_0.gguf | krea2_turbo_bf16-Q4_0.gguf | 7.74 GB | +| Q4_1 | krea2_raw_bf16-Q4_1.gguf | krea2_turbo_bf16-Q4_1.gguf | 8.47 GB | +| Q5_0 | krea2_raw_bf16-Q5_0.gguf | krea2_turbo_bf16-Q5_0.gguf | 9.20 GB | +| Q5_1 | krea2_raw_bf16-Q5_1.gguf | krea2_turbo_bf16-Q5_1.gguf | 9.93 GB | +| Q8_0 | krea2_raw_bf16-Q8_0.gguf | krea2_turbo_bf16-Q8_0.gguf | 13.56 GB | + +Choose either the Raw or Turbo variant depending on your workflow; they are not paired with each other. + +## Which Checkpoint to Use + +| Checkpoint | Steps | CFG | Notes | +|------------|-------|-----|-------| +| **Turbo** | 4–8 | 0.0 | Distilled; CFG-free. Fast, good for most use cases. | +| **Raw** | 20–30 | 3.0–7.0 | Full CFG; more controllable, higher inference cost. | + +The Turbo checkpoint has been post-trained with distillation and runs well at 8 steps with `CFG=1`. The Raw checkpoint behaves like a standard flow-matching DiT and benefits from more steps and positive CFG. + +## When GGUFs Are Worth the Tradeoff + +The BF16 source weights for Krea 2 are 26.6 GB each — far beyond what most consumer GPUs can hold entirely in VRAM. GGUFs make sense when: + +- **Limited VRAM:** Q4_0 at 7.74 GB fits entirely in an 8 GB GPU; Q5_1 at 9.93 GB targets 10–12 GB cards. Running BF16 on these GPUs would require heavy CPU offloading and become impractically slow. +- **CPU offload workflows:** If you are already offloading model layers to RAM, GGUF reduces the RAM footprint proportionally alongside VRAM, which is often the actual bottleneck. +- **Acceptable quality loss at Q5+:** At Q5_0 and above the visual output of Krea 2 is very close to BF16. Q4 levels show mild softening on fine detail but remain usable for most creative tasks. + +GGUFs are generally **not** worth it if you have a 24 GB+ GPU and want maximum fidelity — load the FP8 or BF16 source directly in that case. + +## Download + +Download the file you want from the Files tab, or use the Hugging Face CLI. For example: + +``` +huggingface-cli download molbal/krea2-gguf krea2_turbo_bf16-Q5_1.gguf --local-dir ComfyUI/models/diffusion_models +``` + +## Compatibility Notes + +These are non-K GGUF quantizations intended for PyTorch dequantization in ComfyUI. K-quants are not included because this ComfyUI loading path does not use fused quantized linear kernels. + +Krea 2 GGUF support requires ComfyUI to have the `krea2` architecture registered in its model detection system. If your ComfyUI installation does not recognise the checkpoint, update ComfyUI core and [molbal/ComfyUI-GGUF](https://github.com/molbal/ComfyUI-GGUF) to their latest versions. + +## License + +These files are derived from [krea/Krea-2-Raw](https://huggingface.co/krea/Krea-2-Raw) and [krea/Krea-2-Turbo](https://huggingface.co/krea/Krea-2-Turbo) and follow the [Krea 2 Community License](https://huggingface.co/krea/Krea-2-Turbo/blob/main/LICENSE). From cd2c9bdca2ee0f83760abd2822d9525b30c4fe6d Mon Sep 17 00:00:00 2001 From: molbal Date: Thu, 25 Jun 2026 11:06:51 +0200 Subject: [PATCH 3/6] Update README and loader.py for Krea-2 and Ideogram 4 GGUF support --- README.md | 5 +++++ loader.py | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/README.md b/README.md index 6915927..db4f912 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ # ComfyUI-GGUF GGUF Quantization support for native ComfyUI models +> [!NOTE] +> This is a fork of the original nodes, updated to support loading Ideogram 4 GGUFs and Krea 2 GGUFs. +> To use it, clone `https://github.com/city96/ComfyUI-GGUF`and not the original repo. + + This is currently very much WIP. These custom nodes provide support for model files stored in the GGUF format popularized by [llama.cpp](https://github.com/ggerganov/llama.cpp). While quantization wasn't feasible for regular UNET models (conv2d), transformer/DiT models such as flux seem less affected by quantization. This allows running it in much lower bits per weight variable bitrate quants on low-end GPUs. For further VRAM savings, a node to load a quantized version of the T5 text encoder is also included. diff --git a/loader.py b/loader.py index 88f4713..62a00a2 100644 --- a/loader.py +++ b/loader.py @@ -518,6 +518,23 @@ def gguf_clip_loader(path): if arch == "qwen2vl": vsd = gguf_mmproj_loader(path) sd.update(vsd) + if arch == "qwen3vl" and "model.visual.deepstack_merger_list.0.norm.weight" not in sd: + # Standard llama.cpp Qwen3-VL GGUFs omit the visual tower. Without it, + # detect_te_model() mis-classifies the state dict as QWEN3_4B/8B (Qwen3 LM) + # instead of QWEN3VL_4B/8B, so clip_type=KREA2 never selects the 12-layer + # tap encoder and conditioning has shape (B, seq, 2560) instead of (B, seq, 30720). + # Inject zero sentinel tensors with shapes that exactly match the model + # parameters so that load_state_dict(strict=False) doesn't raise a size + # mismatch error while still satisfying detect_te_model()'s key checks. + # deepstack_merger_list.0.norm -> LayerNorm(vis_hidden * 4) shape [merge_dim] + # merger.linear_fc2 -> Linear(merge_dim, lm_hidden) shape [lm_hidden, merge_dim] + ln_key = "model.layers.0.input_layernorm.weight" + lm_hidden = int(sd[ln_key].shape[0]) if ln_key in sd else 2560 + vis_hidden = 1024 if lm_hidden == 2560 else 1152 # Qwen3-VL-4B vs 8B + merge_dim = vis_hidden * 4 # spatial_merge_size=2 + sd["model.visual.deepstack_merger_list.0.norm.weight"] = torch.zeros(merge_dim) + sd["model.visual.merger.linear_fc2.weight"] = torch.zeros(lm_hidden, merge_dim) + logging.info(f"qwen3vl GGUF: injected visual marker tensors (lm_hidden={lm_hidden}, merge_dim={merge_dim}) for model type detection") elif arch == "ideogram": # Dequantize Ideogram model for inference logging.info("Dequantizing Ideogram model for inference...") From e532b7d77ab14860301f93d388105d0587fcf0b7 Mon Sep 17 00:00:00 2001 From: molbal Date: Thu, 25 Jun 2026 20:34:23 +0200 Subject: [PATCH 4/6] Update README to include new pre-quantized models and clarify quantization support limitations --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index db4f912..6ff410c 100644 --- a/README.md +++ b/README.md @@ -40,15 +40,22 @@ Simply use the GGUF Unet loader found under the `bootleg` category. Place the .g LoRA loading is experimental but it should work with just the built-in LoRA loader node(s). -Pre-quantized models: +Pre-quantized models (🍴 icon on ones added by this fork): - [flux1-dev GGUF](https://huggingface.co/city96/FLUX.1-dev-gguf) - [flux1-schnell GGUF](https://huggingface.co/city96/FLUX.1-schnell-gguf) - [stable-diffusion-3.5-large GGUF](https://huggingface.co/city96/stable-diffusion-3.5-large-gguf) - [stable-diffusion-3.5-large-turbo GGUF](https://huggingface.co/city96/stable-diffusion-3.5-large-turbo-gguf) +- [Krea 2 (Both Turbo and Raw)](https://huggingface.co/molbal/krea2-gguf) 🍴 +- [Ideogram 4](https://huggingface.co/molbal/ideogram-4-gguff) 🍴 + + +> [!IMPORTANT] +> Please note, that this fork does not support _K quants on diffusion models, only on text encoders. They may or may not load, but inference speed may be very slow. There may be other forks, or other custom nodes with better support for these quantization types. Initial support for quantizing T5 has also been added recently, these can be used using the various `*CLIPLoader (gguf)` nodes which can be used inplace of the regular ones. For the CLIP model, use whatever model you were using before for CLIP. The loader can handle both types of files - `gguf` and regular `safetensors`/`bin`. - [t5_v1.1-xxl GGUF](https://huggingface.co/city96/t5-v1_1-xxl-encoder-gguf) +- [Qwen3-VL-4B-Instruct-GGUF](https://huggingface.co/Qwen/Qwen3-VL-4B-Instruct-GGUF)🍴 See the instructions in the [tools](https://github.com/city96/ComfyUI-GGUF/tree/main/tools) folder for how to create your own quants. From f65d0d9e4f048583f740d82b2c8815a57474f760 Mon Sep 17 00:00:00 2001 From: molbal Date: Thu, 25 Jun 2026 22:30:26 +0200 Subject: [PATCH 5/6] fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ff410c..9024650 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Pre-quantized models (🍴 icon on ones added by this fork): - [stable-diffusion-3.5-large GGUF](https://huggingface.co/city96/stable-diffusion-3.5-large-gguf) - [stable-diffusion-3.5-large-turbo GGUF](https://huggingface.co/city96/stable-diffusion-3.5-large-turbo-gguf) - [Krea 2 (Both Turbo and Raw)](https://huggingface.co/molbal/krea2-gguf) 🍴 -- [Ideogram 4](https://huggingface.co/molbal/ideogram-4-gguff) 🍴 +- [Ideogram 4](https://huggingface.co/molbal/ideogram-4-gguf) 🍴 > [!IMPORTANT] From 73439d2120c2e465fbdf7eb9e98c17ef592e5da3 Mon Sep 17 00:00:00 2001 From: molbal Date: Sat, 27 Jun 2026 23:57:06 +0200 Subject: [PATCH 6/6] Enhance tensor handling in convert.py to drop incompatible FP8 scale tensors and skip 0-dim scalars during GGUF conversion --- tools/convert.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/convert.py b/tools/convert.py index a79a395..8faa0b2 100644 --- a/tools/convert.py +++ b/tools/convert.py @@ -296,6 +296,17 @@ def load_state_dict(path): return strip_prefix(state_dict) def handle_tensors(writer, state_dict, model_arch, quant_type=None): + # Pre-collect per-tensor FP8 scales (0-dim float32 tensors named "{key}_scale"). + # These must be applied to their FP8 weight tensors before GGUF quantization. + # The actual weight value is fp8_value * scale; ignoring scale produces wrong magnitudes. + fp8_scales = { + k[:-len("_scale")]: v.item() + for k, v in state_dict.items() + if k.endswith("_scale") and len(v.shape) == 0 and v.dtype == torch.float32 + } + if fp8_scales: + tqdm.write(f"Found {len(fp8_scales)} FP8 per-tensor scale(s); will apply before quantization.") + name_lengths = tuple(sorted( ((key, len(key)) for key in state_dict.keys()), key=lambda item: item[1], @@ -314,11 +325,27 @@ def handle_tensors(writer, state_dict, model_arch, quant_type=None): tqdm.write(f"Filtering ignored key: '{key}'") continue + # comfy_quant tensors are FP8 scale factors specific to ComfyUI's custom FP8 format. + # weight_scale tensors are 0-dim per-tensor FP8 scales (e.g. from torchao/fp8 fine-tunes). + # Both are meaningless after GGUF re-quantization and must be dropped so the loader + # does not try to apply them to already-GGUF-dequantized weights. + if key.endswith(".comfy_quant") or key.endswith("_scale") and len(data.shape) == 0: + tqdm.write(f"Dropping FP8 scale tensor: '{key}'") + continue + + # 0-dim (scalar) tensors cannot be stored in GGUF and have no meaningful weight data. + if len(data.shape) == 0: + tqdm.write(f"Skipping 0-dim scalar tensor: '{key}'") + continue + if data.dtype == torch.bfloat16: data = data.to(torch.float32).numpy() # this is so we don't break torch 2.0.X elif data.dtype in [getattr(torch, "float8_e4m3fn", "_invalid"), getattr(torch, "float8_e5m2", "_invalid")]: - data = data.to(torch.float32).numpy() # cast to f32 for correct downstream quant + data = data.to(torch.float32) + if key in fp8_scales: + data = data * fp8_scales[key] # apply per-tensor dequantization scale + data = data.numpy() else: data = data.numpy() @@ -341,7 +368,8 @@ def handle_tensors(writer, state_dict, model_arch, quant_type=None): for dim_size in data_shape: n_params *= dim_size - if old_dtype in (torch.float32, torch.bfloat16): + _FP8_DTYPES = {getattr(torch, "float8_e4m3fn", None), getattr(torch, "float8_e5m2", None)} - {None} + if old_dtype in (torch.float32, torch.bfloat16) or old_dtype in _FP8_DTYPES: if n_dims == 1: # one-dimensional tensors should be kept in F32 # also speeds up inference due to not dequantizing