mrfakename commited on
Commit
b3c38d3
·
verified ·
1 Parent(s): cd8d2bf

Mirror briaai/Fibo-2.0-dev

Browse files
.gitattributes CHANGED
@@ -33,3 +33,18 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/fibo2_edit_strip.jpg filter=lfs diff=lfs merge=lfs -text
37
+ assets/fibo2_showcase.mp4 filter=lfs diff=lfs merge=lfs -text
38
+ assets/fibo2_showcase_poster.jpg filter=lfs diff=lfs merge=lfs -text
39
+ assets/fibo2_t2i_collage.jpg filter=lfs diff=lfs merge=lfs -text
40
+ assets/t2i/still_life_alignment.png filter=lfs diff=lfs merge=lfs -text
41
+ fonts/DejaVuSans.ttf filter=lfs diff=lfs merge=lfs -text
42
+ processor/tokenizer.json filter=lfs diff=lfs merge=lfs -text
43
+ assets/fibo2_t2i_collage_opd.jpg filter=lfs diff=lfs merge=lfs -text
44
+ assets/t2i/origami_whale.png filter=lfs diff=lfs merge=lfs -text
45
+ assets/edit/red_jacket.png filter=lfs diff=lfs merge=lfs -text
46
+ assets/edit/masked_suitcase.png filter=lfs diff=lfs merge=lfs -text
47
+ assets/edit/multiref_dress.png filter=lfs diff=lfs merge=lfs -text
48
+ assets/t2i/inspire_blue_whale.png filter=lfs diff=lfs merge=lfs -text
49
+ assets/benchmarks/aa_image_editing_v2.1.png filter=lfs diff=lfs merge=lfs -text
50
+ assets/benchmarks/aa_image_t2i_v2.1.png filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,344 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: bria-fibo
4
+ license_link: https://creativecommons.org/licenses/by-nc/4.0/deed.en
5
+ language:
6
+ - en
7
+ library_name: diffusers
8
+ pipeline_tag: text-to-image
9
+ tags:
10
+ - image-editing
11
+ - text-to-image
12
+ - image-to-image
13
+ - inpainting
14
+ - multi-reference
15
+ - fine-tuning
16
+ - structured-prompts
17
+ - vgl
18
+ - fibo
19
+ ---
20
+ > Mirror of [briaai/Fibo-2.0-dev](https://huggingface.co/briaai/Fibo-2.0-dev). All credit to Bria AI. Not an official release from them. License unchanged: [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/deed.en), non-commercial use only. Commercial use requires a separate agreement with Bria AI.
21
+
22
+ <p align="center">
23
+ <img src="https://bria-public.s3.us-east-1.amazonaws.com/Bria-logo.svg" width="200"/>
24
+ </p>
25
+
26
+ <p align="center">
27
+ <a href="https://platform.bria.ai/"><img src="https://img.shields.io/badge/Bria-Platform-0EA5E9?style=for-the-badge"/></a>
28
+ <a href="https://discord.com/invite/Nxe9YW9zHS"><img src="https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white&style=for-the-badge"/></a>
29
+ <a href="https://arxiv.org/abs/2511.06876"><img src="https://img.shields.io/badge/Tech%20Paper-lightgrey?logo=arxiv&logoColor=red&style=for-the-badge"/></a>
30
+ </p>
31
+
32
+ # Fibo 2.0 Dev
33
+
34
+ 🏆 **#1 in image editing** and 🥈 **#2 in text-to-image** among open-weights models on [Artificial Analysis](https://artificialanalysis.ai) (October 20, 2026).
35
+
36
+ **One model to edit and generate images, and the foundation to build your own.**
37
+
38
+ Fibo 2.0 is the next generation of Bria's FIBO family. For the first time, **image editing and image generation live in a single unified model**. It keeps the foundation that made FIBO the most controllable open image model: training on long, structured captions through the [Visual GenAI Language (VGL)](https://docs.bria.ai/vgl). On top of that foundation it adds high-quality, general-purpose editing and a leap in text rendering, texture and anatomy. Like every FIBO model, it is trained exclusively on licensed data.
39
+
40
+ **Fibo 2.0 Dev** is the full, non-distilled base model. It runs with classifier-free guidance for maximum quality and control, and it is the starting point for **professional fine-tuning**. For few-step production editing, use [Fibo 2.0 Edit Turbo](https://huggingface.co/briaai/Fibo-2.0-edit-turbo).
41
+
42
+ 🚀 **Coming soon: multi-turn editing.** Chain edit after edit, each one building on the last, while the rest of the image stays pixel-stable.
43
+
44
+ ---
45
+
46
+ ## 🖼️ Text-to-Image
47
+
48
+ <p align="center">
49
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/fibo2_t2i_collage_opd.jpg" width="75%"/>
50
+ </p>
51
+
52
+ ---
53
+
54
+ ## ✏️ Image Editing
55
+
56
+ <p align="center">
57
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/fibo2_edit_strip.jpg" width="100%"/>
58
+ </p>
59
+
60
+ <!-- TODO: confirm the exact edit instructions used; add them as captions if desired. -->
61
+
62
+ ---
63
+
64
+ ## ✨ What's New in Fibo 2.0
65
+
66
+ | | |
67
+ |---|---|
68
+ | 🎯 **High-quality general editing** | Instruction-based edits that generalize across a wide range of tasks while preserving everything you didn't ask to change: identity, layout, lighting and fine detail. Masked and multi-reference edits are supported. |
69
+ | 🔀 **Unified editing + generation** | A single model handles image editing, text-to-image and iterative refinement. One deployment covers both. |
70
+ | 🔤 **Better text, texture and anatomy** | Clear gains in legible in-image typography, realistic material and surface texture, and correct human anatomy (hands, faces, poses). |
71
+ | ⚡ **Dev and Edit Turbo variants** | **[Edit Turbo](https://huggingface.co/briaai/Fibo-2.0-edit-turbo)** is distilled for few-step, low-latency image editing. **Dev** (this model) is the full-quality base, built for professional fine-tuning and research. |
72
+ | 📐 **Still structured, still state of the art** | Still trained on structured captions, which gives Fibo 2.0 state-of-the-art prompt adherence and controllability among open models. |
73
+ | 🛡️ **Still 100% licensed** | Trained exclusively on licensed data, like every FIBO release. |
74
+
75
+ ---
76
+
77
+ ## 🛣️ Coming Soon
78
+
79
+ Fibo 2.0 is a platform, and we're already building on it:
80
+
81
+ | Release | What it does |
82
+ |---|---|
83
+ | 🔁 **Multi-Turn Local Editing LoRA** | Chain many localized edits in a row while the rest of the image stays pixel-stable, for true conversational editing. |
84
+ | ✂️ **Background Removal** | Clean, production-grade subject cutouts, built natively on Fibo 2.0. |
85
+ | 📦 **Product Shot LoRA** | Studio-quality product photography and placement for e-commerce and catalogs. |
86
+ | 📷 **Boring Reality Style** | Authentic, unpolished, everyday photo realism that looks captured, not generated. |
87
+ | 🧽 **Eraser by Mask** | Paint a mask and remove any object, with seamless, context-aware fill. |
88
+ | 🖼️ **Image Expansion** | Extend images beyond their borders (outpainting) to any aspect ratio, with a coherent continuation of the scene. |
89
+
90
+ Follow [Bria on Hugging Face](https://huggingface.co/briaai) and join our [Discord](https://discord.com/invite/Nxe9YW9zHS) to be the first to know.
91
+
92
+ ---
93
+
94
+ ## 🌍 What's Fibo?
95
+
96
+ Most image models excel at imagination but not at control. FIBO was built for professional workflows. It was trained on structured JSON captions of up to 1,000+ words that describe lighting, composition, color, camera and depth of field explicitly. This gives the model **native disentanglement**: you can change one attribute, such as the camera angle, the time of day or a subject's outfit, without the rest of the scene drifting.
97
+
98
+ Fibo 2.0 applies the same principle to editing. An edit is a precise, structured change to a visual blueprint, not a loose text prompt, so the results are **explicit, interpretable and repeatable**.
99
+
100
+ ### 📐 The VGL Paradigm
101
+
102
+ Fibo 2.0 is natively built on **[Visual GenAI Language (VGL)](https://docs.bria.ai/vgl)**. VGL replaces vague natural-language descriptions with explicit JSON that both humans and machines can read. Lighting, composition, style, camera parameters and every object in the scene are separate, addressable fields. Generation becomes "render this blueprint," and editing becomes "apply this diff to the blueprint."
103
+
104
+ You never have to write JSON by hand. [`bria-vgl`](https://github.com/Bria-AI/vgl), the same open-source package behind Bria's API, turns short prompts and plain-language edit instructions into full structured prompts for you.
105
+
106
+ ---
107
+
108
+ ## 🎨 One Model, Every Workflow
109
+
110
+ | Mode | Input | What happens |
111
+ |---|---|---|
112
+ | **Edit** ✨ | Source image + instruction | Add, remove or replace objects, or change style, lighting, background, materials or text. Everything you didn't ask to change is preserved. |
113
+ | **Masked edit** ✨ | Source image + mask + instruction | The edit is confined to the masked region, and the rest of the image is left untouched. |
114
+ | **Multi-reference** ✨ | Up to 4 reference images + instruction | Information from every reference is combined into one result, for reference-guided composition, virtual try-on, product integration, and style or appearance transfer. |
115
+ | **Generate** | Short text prompt | The VLM expands your idea into a rich structured prompt, and Fibo 2.0 renders it. You get the image *and* the full JSON. |
116
+ | **Inspire** | Reference image + short prompt | A new structured prompt borrows the reference's subject, style or composition; Fibo 2.0 generates it from text and never sees the image. |
117
+
118
+ ---
119
+
120
+ ## 🔑 Key Features
121
+
122
+ - **Built for fine-tuning.** The full, non-distilled base model with classifier-free guidance. Train LoRAs or full fine-tunes for your own domain, style or editing task.
123
+ - **Unified architecture.** One set of weights for image editing *and* text-to-image: one model, one pipeline, one deployment.
124
+ - **High-fidelity editing.** Strong preservation of identity, structure and untouched regions across a wide range of edit types, with native mask and multi-reference support.
125
+ - **Structured JSON control.** Define images and edits with explicit parameters (lighting, composition, camera, style) for deterministic, reproducible results.
126
+ - **Disentangled refinement.** Tweak a single attribute without breaking the scene, and iterate without prompt drift.
127
+ - **Improved realism.** Sharper text rendering, richer textures and more reliable anatomy than previous FIBO releases.
128
+ - **Enterprise-grade.** 100% licensed training data, with governance, attribution traceability and legal clarity for commercial use.
129
+ - **Built for production.** At 8B parameters, it balances high-fidelity output with efficiency. Available as open weights, API endpoints and ComfyUI nodes.
130
+
131
+ ---
132
+
133
+ ## 📊 Evaluation
134
+
135
+ <!-- TODO: add benchmark results once available (editing benchmarks, T2I alignment/aesthetics, text rendering, Turbo vs. Dev quality/latency). -->
136
+
137
+ 🏆 **#1 in image editing** and 🥈 **#2 in text-to-image** among open-weights models on the [Artificial Analysis](https://artificialanalysis.ai) Image Arena.
138
+
139
+ <p align="center">
140
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/benchmarks/aa_image_editing_v2.1.png" width="49%"/>
141
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/benchmarks/aa_image_t2i_v2.1.png" width="49%"/>
142
+ </p>
143
+
144
+ <p align="center"><sub>Rankings as of October 20, 2026.</sub></p>
145
+
146
+ ### 🎯 Prompt Alignment
147
+
148
+ <table>
149
+ <tr>
150
+ <td width="30%"><img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/t2i/still_life_alignment.png" width="100%"/></td>
151
+ <td>
152
+
153
+ *"On a white windowsill, a row of exactly **five red apples** and **one green pear**, the pear in the **second position from the left**. A **small brass bell** sits on top of the third apple from the right. Morning light, minimal still life."*
154
+
155
+ Structured captions make Fibo 2.0 follow counts, positions and attributes precisely.
156
+
157
+ </td>
158
+ </tr>
159
+ </table>
160
+
161
+ ---
162
+
163
+ ## ⚡ Quick Start
164
+
165
+ | | Text-to-image | Image editing |
166
+ |---|---|---|
167
+ | 🚀 **Try it now** | [Generate sandbox](https://platform.bria.ai/image-generation/fibo-generate/sandbox) | [Edit sandbox](https://platform.bria.ai/image-editing/fibo-image-edit/sandbox) |
168
+ | ⚡ **Fal.ai** | [bria/fibo-2/generate](https://fal.ai/models/bria/fibo-2/generate) | [bria/fibo-2/edit](https://fal.ai/models/bria/fibo-2/edit) |
169
+ | 🤗 **Hugging Face Space** | [Fibo-2.0-T2I](https://huggingface.co/spaces/briaai/Fibo-2.0-T2I) | [Fibo-2.0-editing](https://huggingface.co/spaces/briaai/Fibo-2.0-editing) (runs Edit Turbo) |
170
+
171
+ **Bria API:** [docs.bria.ai](https://docs.bria.ai/) · **Bria Create:** [create.bria.ai](https://create.bria.ai/)
172
+
173
+ **ComfyUI:** [Bria ComfyUI nodes](https://github.com/Bria-AI/ComfyUI-BRIA-API) · **Agents:** [Bria agent skill](https://github.com/Bria-AI/bria-skill)
174
+
175
+ **License:** Creative Commons Attribution–Non-Commercial (CC BY-NC 4.0)<br>
176
+ The model is released under a CC BY-NC 4.0 license for non-commercial use.<br>
177
+ Commercial use is subject to a commercial agreement with BRIA. Available [here](https://platform.bria.ai/licensing/pricing?model=fibo-2).
178
+
179
+ ### Installation
180
+
181
+ `BriaFibo2Pipeline` is being added to diffusers ([PR #14991](https://github.com/huggingface/diffusers/pull/14991)). Until it is merged, install diffusers from the PR branch. [`bria-vgl`](https://github.com/Bria-AI/vgl) writes the structured prompts, with the same prompts and model as the Bria API and fal endpoints.
182
+
183
+ ```bash
184
+ pip install -U "git+https://github.com/muhammadali-afridi/diffusers@ali/fibo2" torch torchvision transformers accelerate
185
+ ```
186
+
187
+ Install `bria-vgl` with pip or uv:
188
+
189
+ ```bash
190
+ pip install bria-vgl
191
+ # or
192
+ uv add bria-vgl
193
+ ```
194
+
195
+ `bria-vgl` runs on Gemini; set your key ([get one here](https://aistudio.google.com/apikey)):
196
+
197
+ ```bash
198
+ export GEMINI_API_KEY="your-api-key"
199
+ ```
200
+
201
+ > 🛠️ **Full base model.** Use `num_inference_steps=50` and `guidance_scale=5.0`. For few-step, guidance-free editing, use [Fibo 2.0 Edit Turbo](https://huggingface.co/briaai/Fibo-2.0-edit-turbo).
202
+
203
+ ### Setup
204
+
205
+ Fibo 2.0 reads structured VGL captions. `bria-vgl` turns a short prompt, or images plus a plain-language instruction, into one: `create()` for generation, `modify()` for edits.
206
+
207
+ ```python
208
+ import json
209
+ import torch
210
+ from PIL import Image
211
+ from diffusers import BriaFibo2Pipeline
212
+ from huggingface_hub import hf_hub_download
213
+ from bria_vgl import create, modify
214
+ from bria_vgl.dialects.thales import EditImages, EditImageWithMask, Generate, Inspire
215
+
216
+ pipe = BriaFibo2Pipeline.from_pretrained("briaai/Fibo-2.0-dev", dtype=torch.bfloat16).to("cuda")
217
+ # On Hopper GPUs (H100), FlashAttention-3 is faster:
218
+ # pipe.transformer.set_attention_backend("_flash_3_varlen_hub")
219
+
220
+ # Fibo 2.0 sees each text in the caption drawn as a small image.
221
+ fonts = [hf_hub_download("briaai/Fibo-2.0-dev", name, subfolder="fonts") for name in ("Aileron-Regular.otf", "DejaVuSans.ttf")]
222
+
223
+ # Negative prompts: text-to-image steers away from soft, featureless, artifact-laden images; edits use the empty caption the model was trained with.
224
+ NEGATIVE_T2I = '{"short_description":"","objects":[{"description":"the main subject","texture":"smooth, featureless, plastic-like, airbrushed, no fine surface detail","appearance_details":"soft blurred edges, simplified shapes, no fine detail","skin_tone_and_texture":"waxy airbrushed skin, poreless, plastic smooth"}],"background_setting":"a plain seamless studio backdrop, perfectly smooth gradient, blurred and featureless, no visible texture","lighting":{},"aesthetics":{"artifacts":["oversaturated colours","neon colour cast","overexposed highlights","lens flare","slight blur","motion blur","haze"]},"photographic_characteristics":{"depth_of_field":"shallow, heavy bokeh obscuring most of the frame","focus":"soft, slightly out of focus, lacking fine texture"},"style_medium":"","context":"","artistic_style":""}'
225
+ NEGATIVE_EDIT = '{"short_description":"","objects":[],"background_setting":"","lighting":{},"aesthetics":{},"photographic_characteristics":{},"style_medium":"","context":"","artistic_style":""}'
226
+
227
+
228
+ # bria-vgl's scene as the JSON prompt the pipeline reads
229
+ def vgl(scene) -> str:
230
+ return json.dumps(scene.model_dump(exclude_none=True), ensure_ascii=False)
231
+ ```
232
+
233
+ ### Generate (text-to-image)
234
+
235
+ ```python
236
+ scene = create(Generate(prompt="An origami whale swimming through paper clouds"), seed=0)
237
+ image = pipe(prompt=vgl(scene), negative_prompt=NEGATIVE_T2I, width=1424, height=800, num_inference_steps=50, guidance_scale=5.0, fonts=fonts).images[0]
238
+ image.save("generate.png")
239
+ ```
240
+
241
+ `width` and `height` set the output size. Use multiples of 16 at about one megapixel, the area Fibo 2.0 was trained at: for example `1024×1024` (the default), `1424×800` (16:9) or `1248×832` (3:2).
242
+
243
+ <p align="center">
244
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/t2i/origami_whale.png" width="75%"/>
245
+ </p>
246
+
247
+ You get the image *and* its full structured caption (`scene`), which you can inspect, edit and render again.
248
+
249
+ ### Edit
250
+
251
+ ```python
252
+ source = Image.open("photo.jpg").convert("RGB")
253
+ scene = modify(EditImages(prompt="replace the jacket with a red leather one", images=[source]), seed=0)
254
+ print(scene.edit_instruction) # the instruction, rewritten in the form Fibo 2.0 was trained on
255
+
256
+ edited = pipe(prompt=vgl(scene), negative_prompt=NEGATIVE_EDIT, image=source, num_inference_steps=50, guidance_scale=5.0, fonts=fonts).images[0]
257
+ edited.save("edited.png")
258
+ ```
259
+
260
+ <p align="center">
261
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/edit/red_jacket.png" width="100%"/>
262
+ </p>
263
+
264
+ ### Masked edit
265
+
266
+ White marks the region to regenerate; everything else is kept. The mask goes to both `bria-vgl` and the pipeline.
267
+
268
+ ```python
269
+ source = Image.open("suitcase.png").convert("RGB")
270
+ mask = Image.open("suitcase_mask.png").convert("L") # same size as the source
271
+ scene = modify(EditImageWithMask(prompt="replace the suitcase with a vintage brown leather one", image=source, mask=mask), seed=0)
272
+ edited = pipe(prompt=vgl(scene), negative_prompt=NEGATIVE_EDIT, image=source, mask=mask, num_inference_steps=50, guidance_scale=5.0, fonts=fonts).images[0]
273
+ ```
274
+
275
+ <p align="center">
276
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/edit/masked_suitcase.png" width="100%"/>
277
+ </p>
278
+
279
+ ### Multiple references
280
+
281
+ Up to 4 images, referred to in order as `<image_1>`, `<image_2>`, and so on.
282
+
283
+ ```python
284
+ references = [Image.open("person.png").convert("RGB"), Image.open("dress.png").convert("RGB")]
285
+ scene = modify(EditImages(prompt="dress the person in <image_1> in the dress from <image_2>", images=references), seed=0)
286
+ result = pipe(prompt=vgl(scene), negative_prompt=NEGATIVE_EDIT, image=references, num_inference_steps=50, guidance_scale=5.0, fonts=fonts).images[0]
287
+ ```
288
+
289
+ <p align="center">
290
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/edit/multiref_dress.png" width="100%"/>
291
+ </p>
292
+
293
+ ### Inspire
294
+
295
+ Text-to-image with a reference image. `bria-vgl` looks at the image and writes a structured prompt for the scene you describe, carrying over what you ask for from the reference: its subject, style, colours or composition. The pipeline then generates from that prompt alone, without seeing the image, so the result is inspired by the reference rather than a copy of it.
296
+
297
+ ```python
298
+ reference = Image.open("generate.png").convert("RGB") # the whale from the Generate example
299
+ scene = create(Inspire(prompt="the same scene, the whale is blue and the clouds are orange", image=reference), seed=0)
300
+ image = pipe(prompt=vgl(scene), negative_prompt=NEGATIVE_T2I, num_inference_steps=50, guidance_scale=5.0, fonts=fonts).images[0]
301
+ ```
302
+
303
+ <p align="center">
304
+ <img src="https://d1uqrfwi55x6ib.cloudfront.net/fibo-2.0-dev/assets/t2i/inspire_blue_whale.png" width="50%"/>
305
+ </p>
306
+
307
+ ---
308
+
309
+ ## 🛠️ Fine-Tuning
310
+
311
+ Generation and editing share one set of weights, so a single fine-tune can teach Fibo 2.0 Dev a new style or domain *and* how to edit within it. Typical uses:
312
+
313
+ - **Brand and style LoRAs** that lock in a visual identity across every generated and edited asset.
314
+ - **Domain specialists** for product photography, fashion, interiors, food, or any vertical with its own visual language.
315
+ - **Task-specific editors**: narrow, highly reliable edit operations, like the upcoming Fibo 2.0 LoRAs.
316
+
317
+ Fine-tuning code: [`fine_tuning/`](fine_tuning/README.md) holds a single-GPU LoRA trainer for editing and text-to-image, with a guide to preparing data.
318
+
319
+ ---
320
+
321
+ ## 🧠 Training and Architecture
322
+
323
+ Fibo 2.0 is an **8B-parameter flow-matching model** operating in the latent space of the **FLUX.2 VAE**. Prompts are encoded by **Qwen3-VL-4B-Instruct**, and context images for editing are encoded by both the VLM and the VAE. A two-layer Perceiver resampler compresses the VLM output into **256–512 "gist" tokens**, with more tokens for longer prompts. These are prepended to the image tokens (the noisy latent and, when editing, the clean context latents) and processed by a **single-stream DiT with 44 blocks**. Internal VLM layers also feed five of those blocks directly through cross-attention.
324
+
325
+ Fibo 2.0 Dev is the base checkpoint of the release. [Fibo 2.0 Edit Turbo](https://huggingface.co/briaai/Fibo-2.0-edit-turbo) is distilled from it for few-step editing, with the same architecture.
326
+
327
+ **Data:** trained exclusively on licensed data, curated from Bria's ~1B-image dataset and paired with long, structured captions.
328
+
329
+ ---
330
+
331
+ FIBO is inspired by the Fibonacci sequence, where math meets beauty through the golden ratio, nature's and design's timeless key to harmony.
332
+
333
+ If you have questions, feedback or want to contribute, we welcome your discussions and pull requests in this model's [Community tab](https://huggingface.co/briaai/Fibo-2.0-dev/discussions). If you're passionate about fundamental research, we're hiring full-time employees and research interns. Reach out to us at hr@bria.ai.
334
+
335
+ ## Citation
336
+
337
+ ```bibtex
338
+ @article{gutflaish2025generating,
339
+ title={Generating an Image From 1,000 Words: Enhancing Text-to-Image With Structured Captions},
340
+ author={Gutflaish, Eyal and Kachlon, Eliran and Zisman, Hezi and Hacham, Tal and Sarid, Nimrod and Visheratin, Alexander and Huberman, Saar and Davidi, Gal and Bukchin, Guy and Goldberg, Kfir and others},
341
+ journal={arXiv preprint arXiv:2511.06876},
342
+ year={2025}
343
+ }
344
+ ```
assets/benchmarks/aa_image_editing_v2.1.png ADDED

Git LFS Details

  • SHA256: ebbdd89dda3becd4f0618a807cbf4fd71261ccc5f1b8e2a4d1d7365635bf989e
  • Pointer size: 131 Bytes
  • Size of remote file: 368 kB
assets/benchmarks/aa_image_t2i_v2.1.png ADDED

Git LFS Details

  • SHA256: 456969d3ffe5d8a7ab9d9e4862e3728e146276923f9da9b9dccbd85d20281431
  • Pointer size: 131 Bytes
  • Size of remote file: 408 kB
assets/edit/masked_suitcase.png ADDED

Git LFS Details

  • SHA256: d98cdf0d385cdc282a7584232569c6ab7ce6f341c9e2e4c4b2fde009012d7d50
  • Pointer size: 132 Bytes
  • Size of remote file: 2.1 MB
assets/edit/multiref_dress.png ADDED

Git LFS Details

  • SHA256: d503f4f842e3ab45999aaf44b4bf14a96b120950e274e40f433dc5a4f62502e5
  • Pointer size: 132 Bytes
  • Size of remote file: 2.14 MB
assets/edit/red_jacket.png ADDED

Git LFS Details

  • SHA256: a5bec8056a35590f7dfc66d773df8f0a96748a9c857f7f8dd2a5572e9f22ac5b
  • Pointer size: 132 Bytes
  • Size of remote file: 1.46 MB
assets/fibo2_edit_strip.jpg ADDED

Git LFS Details

  • SHA256: ed738e9e3ccb55f253295438c230f2ac39f14adadaff8171fc113fe3d340334b
  • Pointer size: 131 Bytes
  • Size of remote file: 631 kB
assets/fibo2_showcase.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0912b1ac57c53b14ddb663a95511510f43e54ab5e8eae2a4819f2227c560b85e
3
+ size 7934028
assets/fibo2_showcase_poster.jpg ADDED

Git LFS Details

  • SHA256: 24e0ea5e6e0f95e45f5cb95e221cdf2b88c8888380ba7bf72e4f70ff02ae6eb6
  • Pointer size: 131 Bytes
  • Size of remote file: 105 kB
assets/fibo2_t2i_collage_opd.jpg ADDED

Git LFS Details

  • SHA256: 28c87ceaf3e970c6d79ce7a59daa1245fba72fb7f6560260b2a5bc7289383c84
  • Pointer size: 131 Bytes
  • Size of remote file: 448 kB
assets/t2i/inspire_blue_whale.png ADDED

Git LFS Details

  • SHA256: 6b502d2a6cdfa451a90e1fa1913ce26f51a77336df82af26b64a499891a40a05
  • Pointer size: 132 Bytes
  • Size of remote file: 1.35 MB
assets/t2i/origami_whale.png ADDED

Git LFS Details

  • SHA256: 257674d37acac2d70f7e722e36dddf3d7c3fb77b44897e828d49a1c4277f3f71
  • Pointer size: 132 Bytes
  • Size of remote file: 1.32 MB
assets/t2i/still_life_alignment.png ADDED

Git LFS Details

  • SHA256: e2b654a1c242a8c186032ea0fc5f78ece0e996b0869996cf15e64412a55b8cc8
  • Pointer size: 132 Bytes
  • Size of remote file: 1.38 MB
fine_tuning/README.md ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Fibo 2.0 LoRA fine-tuning
2
+
3
+ `train_lora.py` trains a LoRA on Fibo 2.0 Dev for image editing or text-to-image. It runs on one
4
+ GPU and uses the diffusers `BriaFibo2Pipeline` to encode its training data exactly as the pipeline
5
+ encodes prompts and images at inference. The module docstring has the full details.
6
+
7
+ ## Install
8
+
9
+ `BriaFibo2Pipeline` is being added to diffusers in
10
+ [PR #14991](https://github.com/huggingface/diffusers/pull/14991). Until it is merged, install the
11
+ branch the model card uses:
12
+
13
+ ```bash
14
+ pip install "torch==2.10.*" torchvision "transformers>=5.19" peft safetensors pillow numpy click \
15
+ "diffusers @ git+https://github.com/muhammadali-afridi/diffusers@ali/fibo2"
16
+ ```
17
+
18
+ Then get the script. The model repo is gated, so accept its terms on Hugging Face and log in first:
19
+
20
+ ```bash
21
+ hf auth login
22
+ hf download briaai/Fibo-2.0-dev --include "fine_tuning/*" --local-dir .
23
+ ```
24
+
25
+ ## Base model
26
+
27
+ `--base` defaults to `briaai/Fibo-2.0-dev`, which is downloaded on first use. It also takes a local
28
+ folder in the same diffusers layout.
29
+
30
+ ## Data
31
+
32
+ The trainer picks the mode from the data folder. If `<data>/edits.jsonl` exists it trains edits,
33
+ otherwise text-to-image. `--mode` overrides this.
34
+
35
+ ### Edit
36
+
37
+ `<data>/edits.jsonl` holds one row per training pair. Image paths are relative to `<data>`.
38
+
39
+ - `sources`: 1 to 4 input images. With several, the instruction can name them `<image_1>`,
40
+ `<image_2>` and so on.
41
+ - `target`: the edited result.
42
+ - `instruction`: the prompt.
43
+
44
+ The pipeline accepts edit prompts in two forms, and the `instruction` can use either:
45
+
46
+ - **Plain instruction:** the edit instruction alone.
47
+ - **Instruction with a caption of the result:** a structured JSON caption of the target image,
48
+ with the instruction under `edit_instruction`. This is what
49
+ [`bria-vgl`](https://github.com/Bria-AI/vgl)'s `modify()` writes, and what the model card's
50
+ inference examples use.
51
+
52
+ The two forms give different text embeddings, so train in the form you will prompt with at
53
+ inference. Rows can mix the two forms.
54
+
55
+ #### Plain instruction
56
+
57
+ ```json
58
+ {"sources": ["images/0001_src.jpg"], "target": "images/0001_tgt.jpg", "instruction": "Remove the lamp."}
59
+ ```
60
+
61
+ #### Instruction with a caption of the result
62
+
63
+ The pipeline sends the instruction and the caption to the text encoder as separate fields. Write
64
+ the caption as a JSON object, or as that object serialised into a string. A JSON caption without
65
+ `edit_instruction` is an error.
66
+
67
+ ```json
68
+ {"sources": ["images/0002_src.jpg"], "target": "images/0002_tgt.jpg", "instruction": {"short_description": "An empty oak desk by a window.", "objects": [], "edit_instruction": "Remove the lamp."}}
69
+ ```
70
+
71
+ The caption can also sit under a `structured_caption` key, next to `edit_instruction` and nothing
72
+ else. The pipeline drops empty values and the `aesthetic_score` and `preference_score` keys from a
73
+ caption.
74
+
75
+ ### Text-to-image
76
+
77
+ Put each image next to a caption file with the same name: `<name>.json` for a structured caption,
78
+ or `<name>.txt` for a plain sentence. Subfolders are searched too.
79
+
80
+ ```
81
+ my_t2i/
82
+ ├── bicycle.jpg
83
+ ├── bicycle.json
84
+ └── street/
85
+ ├── 0001.webp
86
+ └── 0001.txt
87
+ ```
88
+
89
+ - Images can be `png`, `jpg`, `jpeg` or `webp`.
90
+ - Images without a caption are skipped. If both caption files exist, the `.json` is used.
91
+ - The folder must not contain `edits.jsonl`, or the trainer switches to edit mode.
92
+
93
+ Prefer `.json` captions: the model was trained on structured captions, the same format you prompt
94
+ with at inference. [`bria-vgl`](https://github.com/Bria-AI/vgl)'s `create()` writes them. Leave
95
+ out keys you don't need. The trainer cleans and compacts the JSON as the pipeline does, and
96
+ handles `text_render` entries the same way too. For example, `bicycle.json`:
97
+
98
+ ```json
99
+ {
100
+ "short_description": "A red bicycle leaning against a white brick wall on a sunny morning.",
101
+ "objects": [{"description": "a red city bicycle with a wicker basket", "location": "center"}],
102
+ "background_setting": "a white brick wall with a green door",
103
+ "lighting": {"conditions": "bright morning sun", "direction": "from the right"},
104
+ "style_medium": "photograph"
105
+ }
106
+ ```
107
+
108
+ ## Train
109
+
110
+ ```bash
111
+ python fine_tuning/train_lora.py --data my_edits/ --output-dir out/ \
112
+ --resolution 1024 --rank 64 --lr 1e-4 --steps 1000 --grad-accum 8
113
+ ```
114
+
115
+ The first run encodes every sample once and caches it in `<output-dir>/cache`. Checkpoints go to
116
+ `out/checkpoint-<step>/` and `out/final/`. The loss per step is in `out/loss.csv`. That loss uses a
117
+ random noise level per sample, so expect a noisy, flat-looking curve.
118
+
119
+ ## Use the LoRA
120
+
121
+ ```python
122
+ import torch
123
+ from diffusers import BriaFibo2Pipeline
124
+
125
+ pipe = BriaFibo2Pipeline.from_pretrained("briaai/Fibo-2.0-dev", dtype=torch.bfloat16).to("cuda")
126
+ pipe.transformer.load_lora_adapter("out/final", weight_name="pytorch_lora_weights.safetensors")
127
+ ```
128
+
129
+ `weight_name` is required. Without it diffusers looks for a `.bin` file.
130
+
131
+ ## Notes
132
+
133
+ - **Memory:** an edit LoRA at 1024, rank 128, grad accum 8 peaked at 31 GiB, at about 58 s per
134
+ step on an L40S.
135
+ - **Defaults:** AdamW, LR 1e-4 constant, LoRA on all 415 linear layers, LoRA weights kept in fp32.
136
+ - **Adapter size:** a rank-128 adapter is about 2.1 GB in fp32.
137
+ - **Gradient checkpointing** is on by default. Turn it off with `--no-gradient-checkpointing`.
fine_tuning/train_lora.py ADDED
@@ -0,0 +1,500 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """LoRA trainer for Fibo 2.0 (edit and text-to-image) on the diffusers `BriaFibo2Pipeline`.
2
+
3
+ Self-contained: needs only torch, diffusers (with `BriaFibo2Pipeline`: until PR
4
+ huggingface/diffusers#14991 is merged, branch ali/fibo2 of muhammadali-afridi/diffusers, tested
5
+ at e158bdea), torchvision (Qwen3-VL's processor needs it), transformers, peft, safetensors,
6
+ pillow, numpy and click.
7
+
8
+ What it does
9
+ ------------
10
+ 1. Pre-encodes every training sample once with the pipeline's own methods (`encode_prompt`,
11
+ `prepare_image_latents`, `image_processor`, the pipeline's caption cleaning and its text
12
+ images, drawn in the base repo's fonts), writes the result to
13
+ `<cache-dir>/<idx>.safetensors`, then frees Qwen3-VL and the VAE.
14
+ 2. Loads the transformer in bf16 (frozen), adds a LoRA to every `nn.Linear`, keeps the LoRA
15
+ weights in fp32, and trains them with flow matching (batch 1, gradient accumulation).
16
+ 3. Saves `<output-dir>/checkpoint-<step>/` every `--save-every` steps and `<output-dir>/final/`
17
+ (`pytorch_lora_weights.safetensors`, see "Load the result"). Also writes `loss.csv`.
18
+
19
+ Data
20
+ ----
21
+ edit mode (`<data>/edits.jsonl` exists, or `--mode edit`): one JSON object per line,
22
+ {"sources": ["a/src.jpg", ...1 to 4 paths], "target": "a/tgt.jpg", "instruction": "..."}
23
+ paths are relative to `<data>`. The instruction may refer to the sources as <image_1>, <image_2>.
24
+ "instruction" is a plain string, or a structured JSON caption of the target (an object, or that
25
+ object serialised) with an "edit_instruction" key; the pipeline splits it into the two.
26
+ t2i mode: images (png/jpg/jpeg/webp) anywhere under `<data>`. Each image's caption is a file next
27
+ to it with the same name: `<name>.json` (a structured caption object, re-serialised compact) or
28
+ `<name>.txt` (a plain sentence, used as is). The .json wins if both exist; uncaptioned images are
29
+ skipped. The README has an example.
30
+
31
+ Text images: a JSON caption with `text_render` entries gets an image of each entry's text, drawn
32
+ and shown to Qwen3-VL as the pipeline does at inference. Text-to-image samples also cache the
33
+ caption without them, used above noise level 0.9, where inference leaves them out.
34
+
35
+ Sizing: the result size is chosen on the 16-pixel grid within 10% of `--resolution`^2 pixels,
36
+ cropping the least from the first source (edit) or the target (t2i), exactly as the pipeline does
37
+ at inference (`image_processor.get_image_size` with area `--resolution`^2). Targets and extra
38
+ sources are cover-cropped to their sizes by `image_processor.preprocess`.
39
+
40
+ Run (1024 / rank 128 / grad accum 8 peaked at 31 GiB, about 58 s per step on an L40S)
41
+ --------------------------------------------------------------------------------------
42
+ python train_lora.py --base <hf-repo-or-local-dir> --data my_edits/ --output-dir out/ \\
43
+ --resolution 1024 --rank 64 --lr 1e-4 --steps 1000 --grad-accum 8
44
+
45
+ Load the result (`weight_name` is required: without it diffusers looks for a `.bin`):
46
+ pipe = BriaFibo2Pipeline.from_pretrained(base, dtype=torch.bfloat16)
47
+ pipe.transformer.load_lora_adapter("out/final", weight_name="pytorch_lora_weights.safetensors")
48
+
49
+ Recipe: sigma ~ sigmoid(N(shift, 1)) with prob 0.9 else U(0, 1), shift = 0.5 + 0.65 * (n - 256) /
50
+ 3840 for n target tokens; x_t = sigma * noise + (1 - sigma) * x0; target = noise - x0; fp32 MSE.
51
+ Text dropout swaps in the null caption embedding; context dropout (edit) removes the ref latents
52
+ but keeps what Qwen3-VL saw. AdamW (wd 0.01), constant LR, grad clip 1.0.
53
+ """
54
+
55
+ import csv
56
+ import gc
57
+ import json
58
+ import math
59
+ import random
60
+ import time
61
+ from pathlib import Path
62
+ from typing import Any
63
+
64
+ import click
65
+ import numpy as np
66
+ import torch
67
+ from PIL import Image, ImageOps
68
+ from safetensors import SafetensorError, safe_open
69
+ from safetensors.torch import load_file, save_file
70
+ from torch import nn
71
+
72
+ DEFAULT_BASE = "briaai/Fibo-2.0-dev"
73
+ EXPECTED_ADAPTED_MODULES = 415 # nn.Linear layers of the Fibo 2.0 transformer
74
+ IMAGE_SUFFIXES = {".png", ".jpg", ".jpeg", ".webp"}
75
+ FONT_FILES = ("Aileron-Regular.otf", "DejaVuSans.ttf")
76
+ SHIFT_BASE, SHIFT_MAX, SEQ_BASE, SEQ_MAX = 0.5, 1.15, 256, 4096
77
+ # text-to-image leaves out the text images above this noise level, as the pipeline does
78
+ TEXT_IMAGES_MAX_SIGMA = 0.9
79
+
80
+
81
+ # ------------------------------------------------------------------------------------ data
82
+ def compact(caption: dict) -> str:
83
+ return json.dumps(caption, separators=(",", ":"), ensure_ascii=False)
84
+
85
+
86
+ def as_prompt(value: str | dict) -> str:
87
+ """A caption object serialised compactly, as Fibo 2.0 was trained, or a plain string as is."""
88
+ if isinstance(value, dict):
89
+ return compact(value)
90
+ return value
91
+
92
+
93
+ def edit_prompt(instruction: str | dict) -> str:
94
+ """An edit row's prompt. A JSON caption must hold the "edit_instruction" key."""
95
+ prompt = as_prompt(instruction)
96
+ try:
97
+ caption = json.loads(prompt)
98
+ except json.JSONDecodeError:
99
+ return prompt
100
+ if not isinstance(caption, dict):
101
+ return prompt
102
+ if "edit_instruction" not in caption:
103
+ raise click.ClickException(
104
+ f'JSON instruction has no "edit_instruction" key: {prompt[:200]}'
105
+ )
106
+ if "structured_caption" in caption and (
107
+ not isinstance(caption["structured_caption"], (dict, str)) or len(caption) > 2
108
+ ):
109
+ raise click.ClickException(
110
+ 'a "structured_caption" instruction holds only "structured_caption" (an object or a'
111
+ f' string) and "edit_instruction": {prompt[:200]}'
112
+ )
113
+ return prompt
114
+
115
+
116
+ def load_samples(data: Path, mode: str) -> list[dict[str, Any]]:
117
+ """Return [{'sources': [Path], 'target': Path, 'prompt': str}] (sources empty for t2i)."""
118
+ samples: list[dict[str, Any]] = []
119
+ if mode == "edit":
120
+ for line in (data / "edits.jsonl").read_text().splitlines():
121
+ if not line.strip():
122
+ continue
123
+ row = json.loads(line)
124
+ if not 1 <= len(row["sources"]) <= 4:
125
+ raise click.ClickException(f"need 1-4 sources, got {len(row['sources'])}")
126
+ samples.append(
127
+ {
128
+ "sources": [data / s for s in row["sources"]],
129
+ "target": data / row["target"],
130
+ "prompt": edit_prompt(row["instruction"]),
131
+ }
132
+ )
133
+ else:
134
+ for img in sorted(p for p in data.rglob("*") if p.suffix.lower() in IMAGE_SUFFIXES):
135
+ if img.with_suffix(".json").exists():
136
+ prompt = as_prompt(json.loads(img.with_suffix(".json").read_text()))
137
+ elif img.with_suffix(".txt").exists():
138
+ prompt = img.with_suffix(".txt").read_text().strip()
139
+ else:
140
+ continue
141
+ samples.append({"sources": [], "target": img, "prompt": prompt})
142
+ if not samples:
143
+ raise click.ClickException(f"no samples found in {data} (mode={mode})")
144
+ return samples
145
+
146
+
147
+ def load_image(path: Path) -> Image.Image:
148
+ return ImageOps.exif_transpose(Image.open(path)).convert("RGB")
149
+
150
+
151
+ # ----------------------------------------------------------------------- pre-encode phase
152
+ def cache_ok(path: Path, meta: dict[str, str]) -> bool:
153
+ if not path.exists():
154
+ return False
155
+ try:
156
+ with safe_open(path, "pt") as f:
157
+ got = f.metadata() or {}
158
+ except (OSError, SafetensorError): # partial or corrupt file: re-encode
159
+ return False
160
+ return all(got.get(k) == v for k, v in meta.items())
161
+
162
+
163
+ def load_fonts(base: str) -> list[Any]:
164
+ """The fonts the base model's training drew text images with, from its `fonts` folder."""
165
+ from diffusers.pipelines.bria_fibo2.text_images import load_font
166
+ from huggingface_hub import hf_hub_download
167
+
168
+ paths = [
169
+ str(Path(base) / "fonts" / name)
170
+ if Path(base).is_dir()
171
+ else hf_hub_download(base, name, subfolder="fonts")
172
+ for name in FONT_FILES
173
+ ]
174
+ return [load_font(path) for path in paths]
175
+
176
+
177
+ def text_images(caption: dict | str | None, fonts: list[Any]) -> list[Image.Image] | None:
178
+ """Images of the caption's text_render entries that have text, drawn as the pipeline does."""
179
+ from diffusers.pipelines.bria_fibo2.text_images import draw_text_image
180
+
181
+ entries = (caption.get("text_render") or []) if isinstance(caption, dict) else []
182
+ images = [
183
+ draw_text_image(e["text"], fonts)
184
+ for e in entries
185
+ if isinstance(e, dict) and isinstance(e.get("text"), str) and e["text"]
186
+ ]
187
+ return images or None
188
+
189
+
190
+ def pre_encode(
191
+ base: str,
192
+ samples: list[dict[str, Any]],
193
+ mode: str,
194
+ resolution: int,
195
+ cache_dir: Path,
196
+ dev: torch.device,
197
+ ) -> None:
198
+ from diffusers import BriaFibo2Pipeline
199
+ from diffusers.pipelines.bria_fibo2.pipeline_bria_fibo2 import (
200
+ DEFAULT_NEGATIVE_PROMPT,
201
+ )
202
+
203
+ cache_dir.mkdir(parents=True, exist_ok=True)
204
+ # "encoding" changes whenever the cached embeddings would: older caches are re-encoded
205
+ meta = {"resolution": str(resolution), "mode": mode, "encoding": "3"}
206
+ todo = [i for i in range(len(samples)) if not cache_ok(cache_dir / f"{i}.safetensors", meta)]
207
+ need_null = not cache_ok(cache_dir / "null.safetensors", meta)
208
+ print(f"[encode] {len(samples)} samples, {len(todo)} to encode (cache: {cache_dir})")
209
+ if not todo and not need_null:
210
+ return
211
+
212
+ pipe = BriaFibo2Pipeline.from_pretrained(base, transformer=None, dtype=torch.bfloat16)
213
+ pipe.to(dev)
214
+ pipe.text_encoder.eval()
215
+ proc = pipe.image_processor
216
+ area = resolution * resolution
217
+ fonts = load_fonts(base)
218
+ tdtype = torch.bfloat16
219
+
220
+ def pack(emb: torch.Tensor, mask: torch.Tensor | None) -> dict[str, torch.Tensor]:
221
+ out = {"emb": emb.to(tdtype).cpu().contiguous()}
222
+ if mask is not None:
223
+ out["mask"] = mask.to(torch.uint8).cpu().contiguous()
224
+ return out
225
+
226
+ with torch.no_grad():
227
+ if need_null:
228
+ emb, mask = pipe.encode_prompt(DEFAULT_NEGATIVE_PROMPT, None, dev)
229
+ save_file(pack(emb, mask), cache_dir / "null.safetensors", metadata=meta)
230
+ for n, i in enumerate(todo):
231
+ s = samples[i]
232
+ target = load_image(s["target"])
233
+ caption, _ = pipe._parse_prompt(s["prompt"])
234
+ texts = text_images(caption, fonts)
235
+ extra = {}
236
+ if mode == "edit":
237
+ srcs = [load_image(p) for p in s["sources"]]
238
+ width, height = proc.get_image_size(srcs[0].width / srcs[0].height, area=area)
239
+ # one source: cropped to the result size; several: each to its own aspect's size
240
+ vae_srcs, thumbs = proc.preprocess(
241
+ srcs,
242
+ height=height,
243
+ width=width,
244
+ area=area,
245
+ text_encoder_image_size=pipe.text_encoder_image_size,
246
+ )
247
+ emb, mask = pipe.encode_prompt(s["prompt"], thumbs, dev, text_images=texts)
248
+ refs = pipe.prepare_image_latents(vae_srcs, 1, dev, torch.float32)
249
+ else:
250
+ width, height = proc.get_image_size(target.width / target.height, area=area)
251
+ # a JSON caption in its trained form; a plain sentence as is
252
+ prompt = s["prompt"] if isinstance(caption, str) else compact(caption or {})
253
+ emb, mask = pipe.encode_prompt(prompt, None, dev, text_images=texts)
254
+ refs = []
255
+ if texts:
256
+ # the caption without its text images, which inference uses at high noise
257
+ base_emb, base_mask = pipe.encode_prompt(
258
+ compact(pipe._mark_text_images(json.loads(prompt), "")), None, dev
259
+ )
260
+ extra = {f"base_{k}": v for k, v in pack(base_emb, base_mask).items()}
261
+ tgt, _ = proc.preprocess(target, height=height, width=width)
262
+ x0 = pipe.prepare_image_latents(tgt, 1, dev, torch.float32)[0]
263
+ tensors = {"x0": x0.cpu().contiguous(), **pack(emb, mask), **extra}
264
+ for k, r in enumerate(refs):
265
+ tensors[f"ref{k}"] = r.cpu().contiguous()
266
+ save_file(tensors, cache_dir / f"{i}.safetensors", metadata=meta)
267
+ if (n + 1) % 20 == 0 or n + 1 == len(todo):
268
+ print(f"[encode] {n + 1}/{len(todo)}")
269
+ del pipe
270
+ gc.collect()
271
+ torch.cuda.empty_cache()
272
+
273
+
274
+ def load_cached(path: Path, dev: torch.device) -> dict[str, Any]:
275
+ t = load_file(path)
276
+ refs = [t[f"ref{k}"].to(dev) for k in range(4) if f"ref{k}" in t]
277
+
278
+ def mask(key: str) -> torch.Tensor | None:
279
+ return t[key].to(dev).bool() if key in t else None
280
+
281
+ return {
282
+ "x0": t["x0"].to(dev),
283
+ "emb": t["emb"].to(dev),
284
+ "mask": mask("mask"),
285
+ "base_emb": t["base_emb"].to(dev) if "base_emb" in t else None,
286
+ "base_mask": mask("base_mask"),
287
+ "refs": refs or None,
288
+ }
289
+
290
+
291
+ # ---------------------------------------------------------------------------------- model
292
+ def build_model(
293
+ base: str, rank: int, alpha: int, grad_ckpt: bool, expect: int, dev: torch.device
294
+ ) -> tuple[nn.Module, list[nn.Parameter]]:
295
+ from diffusers import BriaFibo2Transformer2DModel
296
+ from peft import LoraConfig
297
+ from peft.tuners.lora import LoraLayer
298
+
299
+ model = BriaFibo2Transformer2DModel.from_pretrained(
300
+ base, subfolder="transformer", dtype=torch.bfloat16
301
+ )
302
+ model.to(dev).requires_grad_(False)
303
+ linears = [n for n, m in model.named_modules() if isinstance(m, nn.Linear)]
304
+ model.add_adapter(
305
+ LoraConfig(r=rank, lora_alpha=alpha, init_lora_weights=True, target_modules=linears)
306
+ )
307
+ adapted = sum(isinstance(m, LoraLayer) for m in model.modules())
308
+ print(f"[model] nn.Linear layers: {len(linears)}, LoRA-adapted modules: {adapted}")
309
+ assert adapted == len(linears), "some Linear layers were not adapted"
310
+ if expect:
311
+ assert adapted == expect, f"expected {expect} adapted modules, got {adapted}"
312
+ params = []
313
+ for name, p in model.named_parameters():
314
+ if "lora_" in name:
315
+ # fp32 LoRA weights: bf16 would round small AdamW updates to zero
316
+ p.data = p.data.float()
317
+ p.requires_grad_(True)
318
+ params.append(p)
319
+ else:
320
+ assert not p.requires_grad, name
321
+ assert all(p.dtype == torch.float32 for p in params)
322
+ print(f"[model] LoRA params: {sum(p.numel() for p in params) / 1e6:.1f}M, all fp32")
323
+ if grad_ckpt:
324
+ model.enable_gradient_checkpointing()
325
+ model.train()
326
+ return model, params
327
+
328
+
329
+ def save_adapter(model: nn.Module, directory: Path) -> None:
330
+ """Write the LoRA in the diffusers pipeline format: keys and metadata prefixed `transformer.`.
331
+
332
+ (`transformer.save_lora_adapter` writes unprefixed keys, which `load_lora_adapter` with its
333
+ default prefix silently ignores, leaving the model un-adapted.)
334
+ """
335
+ from peft.utils import get_peft_model_state_dict
336
+
337
+ state = get_peft_model_state_dict(model, adapter_name="default")
338
+ state = {f"transformer.{k}": v.detach().contiguous() for k, v in state.items()}
339
+ cfg = {
340
+ k: sorted(v) if isinstance(v, set) else v
341
+ for k, v in model.peft_config["default"].to_dict().items()
342
+ }
343
+ meta = {f"transformer.{k}": v for k, v in cfg.items()}
344
+ directory.mkdir(parents=True, exist_ok=True)
345
+ save_file(
346
+ state,
347
+ directory / "pytorch_lora_weights.safetensors",
348
+ metadata={
349
+ "format": "pt",
350
+ "lora_adapter_metadata": json.dumps(meta, indent=2, sort_keys=True),
351
+ },
352
+ )
353
+
354
+
355
+ def sample_sigma(gen: torch.Generator, n_tokens: int) -> float:
356
+ if torch.rand(1, generator=gen).item() < 0.1:
357
+ return torch.rand(1, generator=gen).item()
358
+ shift = SHIFT_BASE + (SHIFT_MAX - SHIFT_BASE) * (n_tokens - SEQ_BASE) / (SEQ_MAX - SEQ_BASE)
359
+ z = torch.randn(1, generator=gen).item() + shift
360
+ return 1.0 / (1.0 + math.exp(-z))
361
+
362
+
363
+ # ------------------------------------------------------------------------------------ CLI
364
+ @click.command()
365
+ @click.option("--base", default=DEFAULT_BASE, show_default=True, help="HF repo id or local dir.")
366
+ @click.option(
367
+ "--data",
368
+ type=click.Path(exists=True, file_okay=False, path_type=Path),
369
+ required=True,
370
+ )
371
+ @click.option("--mode", type=click.Choice(["edit", "t2i"]), default=None, help="Default: auto.")
372
+ @click.option("--output-dir", type=click.Path(path_type=Path), required=True)
373
+ @click.option("--resolution", default=1024, show_default=True, help="Target side; area = side^2.")
374
+ @click.option("--rank", default=64, show_default=True)
375
+ @click.option("--alpha", type=int, default=None, help="LoRA alpha. Default: rank.")
376
+ @click.option("--lr", default=1e-4, show_default=True)
377
+ @click.option("--steps", default=1000, show_default=True, help="Optimizer steps.")
378
+ @click.option("--grad-accum", default=8, show_default=True)
379
+ @click.option("--save-every", default=250, show_default=True)
380
+ @click.option("--text-drop", default=0.1, show_default=True)
381
+ @click.option("--context-drop", default=0.2, show_default=True, help="Edit mode only.")
382
+ @click.option("--seed", default=0, show_default=True)
383
+ @click.option("--cache-dir", type=click.Path(path_type=Path), default=None)
384
+ @click.option("--gradient-checkpointing/--no-gradient-checkpointing", default=True)
385
+ @click.option(
386
+ "--expect-modules",
387
+ default=EXPECTED_ADAPTED_MODULES,
388
+ show_default=True,
389
+ help="Assert this many adapted Linear layers (0 disables; for other bases).",
390
+ )
391
+ def main(
392
+ base: str,
393
+ data: Path,
394
+ mode: str | None,
395
+ output_dir: Path,
396
+ resolution: int,
397
+ rank: int,
398
+ alpha: int | None,
399
+ lr: float,
400
+ steps: int,
401
+ grad_accum: int,
402
+ save_every: int,
403
+ text_drop: float,
404
+ context_drop: float,
405
+ seed: int,
406
+ cache_dir: Path | None,
407
+ gradient_checkpointing: bool,
408
+ expect_modules: int,
409
+ ) -> None:
410
+ """Train a LoRA on Fibo 2.0 from a folder of edit pairs or captioned images."""
411
+ if not torch.cuda.is_available():
412
+ raise click.ClickException("a CUDA GPU is required")
413
+ dev = torch.device("cuda")
414
+ mode = mode or ("edit" if (data / "edits.jsonl").exists() else "t2i")
415
+ alpha = alpha if alpha is not None else rank
416
+ cache_dir = cache_dir or output_dir / "cache"
417
+ output_dir.mkdir(parents=True, exist_ok=True)
418
+ (output_dir / "train_args.json").write_text(
419
+ json.dumps({k: str(v) for k, v in locals().items() if k != "dev"}, indent=2)
420
+ )
421
+ random.seed(seed)
422
+ np.random.seed(seed)
423
+ torch.manual_seed(seed)
424
+
425
+ samples = load_samples(data, mode)
426
+ print(f"[data] mode={mode}, {len(samples)} samples, resolution={resolution}")
427
+ pre_encode(base, samples, mode, resolution, cache_dir, dev)
428
+ nt = load_file(cache_dir / "null.safetensors")
429
+ null_emb = nt["emb"].to(dev)
430
+ null_mask = nt["mask"].to(dev).bool() if "mask" in nt else None
431
+
432
+ model, params = build_model(base, rank, alpha, gradient_checkpointing, expect_modules, dev)
433
+ opt = torch.optim.AdamW(params, lr=lr, betas=(0.9, 0.999), eps=1e-8, weight_decay=0.01)
434
+ torch.cuda.reset_peak_memory_stats()
435
+
436
+ gen = torch.Generator().manual_seed(seed)
437
+ order: list[int] = []
438
+ log_path = output_dir / "loss.csv"
439
+ with open(log_path, "w", newline="") as f:
440
+ csv.writer(f).writerow(["step", "loss", "mean_sigma", "seconds_per_step"])
441
+ patch = model.config.patch_size
442
+
443
+ for step in range(1, steps + 1):
444
+ t0 = time.time()
445
+ losses: list[float] = []
446
+ sigmas: list[float] = []
447
+ for _ in range(grad_accum):
448
+ if not order:
449
+ order = torch.randperm(len(samples), generator=gen).tolist()
450
+ s = load_cached(cache_dir / f"{order.pop()}.safetensors", dev)
451
+ x0 = s["x0"]
452
+ n_tokens = (x0.shape[2] // patch) * (x0.shape[3] // patch)
453
+ sigma = sample_sigma(gen, n_tokens)
454
+ emb, mask, refs = s["emb"], s["mask"], s["refs"]
455
+ if s["base_emb"] is not None and sigma > TEXT_IMAGES_MAX_SIGMA:
456
+ emb, mask = s["base_emb"], s["base_mask"]
457
+ if torch.rand(1, generator=gen).item() < text_drop:
458
+ emb, mask = null_emb, null_mask
459
+ if mode == "edit" and torch.rand(1, generator=gen).item() < context_drop:
460
+ refs = None
461
+ noise = torch.randn(x0.shape, generator=gen).to(dev)
462
+ x_t = sigma * noise + (1.0 - sigma) * x0
463
+ pred = model(
464
+ hidden_states=x_t.to(torch.bfloat16),
465
+ timestep=torch.full((1,), sigma, dtype=torch.float32, device=dev),
466
+ encoder_hidden_states=emb,
467
+ encoder_attention_mask=mask,
468
+ context_latents=None if refs is None else [r.to(torch.bfloat16) for r in refs],
469
+ return_dict=False,
470
+ )[0]
471
+ loss = torch.nn.functional.mse_loss(pred.float(), noise - x0)
472
+ (loss / grad_accum).backward()
473
+ losses.append(loss.item())
474
+ sigmas.append(sigma)
475
+ torch.nn.utils.clip_grad_norm_(params, 1.0)
476
+ opt.step()
477
+ opt.zero_grad(set_to_none=True)
478
+
479
+ dt = time.time() - t0
480
+ mean_loss = float(np.mean(losses))
481
+ if not math.isfinite(mean_loss):
482
+ raise RuntimeError(f"non-finite loss at step {step}")
483
+ with open(log_path, "a", newline="") as f:
484
+ csv.writer(f).writerow(
485
+ [step, f"{mean_loss:.6f}", f"{np.mean(sigmas):.4f}", f"{dt:.2f}"]
486
+ )
487
+ if step == 1 or step % 10 == 0 or step == steps:
488
+ peak = torch.cuda.max_memory_allocated() / 2**30
489
+ print(f"step {step}/{steps} loss {mean_loss:.4f} {dt:.1f}s/step peak {peak:.1f} GiB")
490
+ if step % save_every == 0 and step != steps:
491
+ save_adapter(model, output_dir / f"checkpoint-{step}")
492
+ save_adapter(model, output_dir / "final")
493
+ if steps % save_every == 0:
494
+ save_adapter(model, output_dir / f"checkpoint-{steps}")
495
+ print(f"peak memory allocated: {torch.cuda.max_memory_allocated() / 2**30:.2f} GiB")
496
+ print(f"saved to {output_dir}")
497
+
498
+
499
+ if __name__ == "__main__":
500
+ main()
fonts/Aileron-Regular.otf ADDED
Binary file (27.6 kB). View file
 
fonts/DejaVuSans.ttf ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:437a5ecec2ec177cba9284cbffc56055311347f3e9fe4f2b4b40323d0290a6db
3
+ size 757076
fonts/LICENSE-Aileron.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Aileron Regular, version 1.102 (Aileron-Regular.otf)
2
+ Author: Sora Sagano (dot colon), https://www.dotcolon.net/font/aileron
3
+ Downloaded 2026-09-15 from https://www.dotcolon.net/files/fonts/aileron_0102.zip
4
+
5
+ Licence: CC0 1.0 Universal (Public Domain Dedication)
6
+ https://creativecommons.org/publicdomain/zero/1.0/
7
+
8
+ The font's own name table (nameID 0) reads: "No Rights Reserved."
9
+
10
+ To the extent possible under law, the author has waived all copyright and related or neighboring
11
+ rights to this work. You can copy, modify, distribute and perform the work, even for commercial
12
+ purposes, all without asking permission. The work is provided "as is", without warranty of any kind.
fonts/LICENSE-DejaVu.txt ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2
+ Upstream-Name: DejaVu fonts
3
+ Upstream-Author: Stepan Roh <src@users.sourceforge.net> (original author),
4
+ see /usr/share/doc/ttf-dejavu/AUTHORS for full list
5
+ Source: http://dejavu-fonts.org/
6
+
7
+ Files: *
8
+ Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved.
9
+ Bitstream Vera is a trademark of Bitstream, Inc.
10
+ DejaVu changes are in public domain.
11
+ License: bitstream-vera
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of the fonts accompanying this license ("Fonts") and associated
14
+ documentation files (the "Font Software"), to reproduce and distribute the
15
+ Font Software, including without limitation the rights to use, copy, merge,
16
+ publish, distribute, and/or sell copies of the Font Software, and to permit
17
+ persons to whom the Font Software is furnished to do so, subject to the
18
+ following conditions:
19
+ .
20
+ The above copyright and trademark notices and this permission notice shall
21
+ be included in all copies of one or more of the Font Software typefaces.
22
+ .
23
+ The Font Software may be modified, altered, or added to, and in particular
24
+ the designs of glyphs or characters in the Fonts may be modified and
25
+ additional glyphs or characters may be added to the Fonts, only if the fonts
26
+ are renamed to names not containing either the words "Bitstream" or the word
27
+ "Vera".
28
+ .
29
+ This License becomes null and void to the extent applicable to Fonts or Font
30
+ Software that has been modified and is distributed under the "Bitstream
31
+ Vera" names.
32
+ .
33
+ The Font Software may be sold as part of a larger software package but no
34
+ copy of one or more of the Font Software typefaces may be sold by itself.
35
+ .
36
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
37
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
38
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
39
+ TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
40
+ FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
41
+ ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
42
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
43
+ THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
44
+ FONT SOFTWARE.
45
+ .
46
+ Except as contained in this notice, the names of Gnome, the Gnome
47
+ Foundation, and Bitstream Inc., shall not be used in advertising or
48
+ otherwise to promote the sale, use or other dealings in this Font Software
49
+ without prior written authorization from the Gnome Foundation or Bitstream
50
+ Inc., respectively. For further information, contact: fonts at gnome dot
51
+ org.
52
+
53
+ Files: debian/*
54
+ Copyright: (C) 2005-2006 Peter Cernak <pce@users.sourceforge.net>
55
+ (C) 2006-2011 Davide Viti <zinosat@tiscali.it>
56
+ (C) 2011-2013 Christian Perrier <bubulle@debian.org>
57
+ (C) 2013 Fabian Greffrath <fabian+debian@greffrath.com>
58
+ License: GPL-2+
59
+ This program is free software; you can redistribute it
60
+ and/or modify it under the terms of the GNU General Public
61
+ License as published by the Free Software Foundation; either
62
+ version 2 of the License, or (at your option) any later
63
+ version.
64
+ .
65
+ This program is distributed in the hope that it will be
66
+ useful, but WITHOUT ANY WARRANTY; without even the implied
67
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
68
+ PURPOSE. See the GNU General Public License for more
69
+ details.
70
+ .
71
+ You should have received a copy of the GNU General Public
72
+ License along with this package; if not, write to the Free
73
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor,
74
+ Boston, MA 02110-1301 USA
75
+ .
76
+ On Debian systems, the full text of the GNU General Public
77
+ License version 2 can be found in the file
78
+ /usr/share/common-licenses/GPL-2'.
fonts/README.md ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # fonts
2
+
3
+ Fallback fonts for drawing the images of a caption's text (`render_text_images=True` in
4
+ `BriaFibo2Pipeline`), the way fibo-2's training drew them.
5
+
6
+ Each `text_render` text is drawn black on white at size 20. A character is drawn with the first of
7
+ these that has a glyph for it:
8
+
9
+ | order | font | source | licence |
10
+ |---|---|---|---|
11
+ | 1 | Pillow's built-in font, `ImageFont.load_default(20)` (a subset of Aileron Regular) | bundled with Pillow, not in this folder | — |
12
+ | 2 | `Aileron-Regular.otf`, Aileron Regular 1.102 | https://www.dotcolon.net/font/aileron | CC0 1.0, `LICENSE-Aileron.txt` |
13
+ | 3 | `DejaVuSans.ttf`, DejaVu Sans 2.37 | https://dejavu-fonts.github.io | Bitstream Vera licence, `LICENSE-DejaVu.txt` |
14
+
15
+ | file | bytes | md5 |
16
+ |---|---|---|
17
+ | `Aileron-Regular.otf` | 27,644 | `d321fa78bb7190a8ca7e14213ef63203` |
18
+ | `DejaVuSans.ttf` | 757,076 | `517a360397bbb5a7573c2558e78fa4ea` |
19
+
20
+ Training used Pillow 12.2. Characters none of the three fonts covers (CJK, emoji) are drawn as the
21
+ built-in font's missing-glyph box, as in training.
model_index.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "BriaFibo2Pipeline",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "processor": [
5
+ "transformers",
6
+ "Qwen3VLProcessor"
7
+ ],
8
+ "scheduler": [
9
+ "diffusers",
10
+ "FlowMatchEulerDiscreteScheduler"
11
+ ],
12
+ "text_encoder": [
13
+ "transformers",
14
+ "Qwen3VLForConditionalGeneration"
15
+ ],
16
+ "transformer": [
17
+ "diffusers",
18
+ "BriaFibo2Transformer2DModel"
19
+ ],
20
+ "vae": [
21
+ "diffusers",
22
+ "AutoencoderKLFlux2"
23
+ ]
24
+ }
processor/chat_template.jinja ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- if tools %}
2
+ {{- '<|im_start|>system\n' }}
3
+ {%- if messages[0].role == 'system' %}
4
+ {%- if messages[0].content is string %}
5
+ {{- messages[0].content }}
6
+ {%- else %}
7
+ {%- for content in messages[0].content %}
8
+ {%- if 'text' in content %}
9
+ {{- content.text }}
10
+ {%- endif %}
11
+ {%- endfor %}
12
+ {%- endif %}
13
+ {{- '\n\n' }}
14
+ {%- endif %}
15
+ {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
16
+ {%- for tool in tools %}
17
+ {{- "\n" }}
18
+ {{- tool | tojson }}
19
+ {%- endfor %}
20
+ {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
21
+ {%- else %}
22
+ {%- if messages[0].role == 'system' %}
23
+ {{- '<|im_start|>system\n' }}
24
+ {%- if messages[0].content is string %}
25
+ {{- messages[0].content }}
26
+ {%- else %}
27
+ {%- for content in messages[0].content %}
28
+ {%- if 'text' in content %}
29
+ {{- content.text }}
30
+ {%- endif %}
31
+ {%- endfor %}
32
+ {%- endif %}
33
+ {{- '<|im_end|>\n' }}
34
+ {%- endif %}
35
+ {%- endif %}
36
+ {%- set image_count = namespace(value=0) %}
37
+ {%- set video_count = namespace(value=0) %}
38
+ {%- for message in messages %}
39
+ {%- if message.role == "user" %}
40
+ {{- '<|im_start|>' + message.role + '\n' }}
41
+ {%- if message.content is string %}
42
+ {{- message.content }}
43
+ {%- else %}
44
+ {%- for content in message.content %}
45
+ {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}
46
+ {%- set image_count.value = image_count.value + 1 %}
47
+ {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}
48
+ <|vision_start|><|image_pad|><|vision_end|>
49
+ {%- elif content.type == 'video' or 'video' in content %}
50
+ {%- set video_count.value = video_count.value + 1 %}
51
+ {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}
52
+ <|vision_start|><|video_pad|><|vision_end|>
53
+ {%- elif 'text' in content %}
54
+ {{- content.text }}
55
+ {%- endif %}
56
+ {%- endfor %}
57
+ {%- endif %}
58
+ {{- '<|im_end|>\n' }}
59
+ {%- elif message.role == "assistant" %}
60
+ {{- '<|im_start|>' + message.role + '\n' }}
61
+ {%- if message.content is string %}
62
+ {{- message.content }}
63
+ {%- else %}
64
+ {%- for content_item in message.content %}
65
+ {%- if 'text' in content_item %}
66
+ {{- content_item.text }}
67
+ {%- endif %}
68
+ {%- endfor %}
69
+ {%- endif %}
70
+ {%- if message.tool_calls %}
71
+ {%- for tool_call in message.tool_calls %}
72
+ {%- if (loop.first and message.content) or (not loop.first) %}
73
+ {{- '\n' }}
74
+ {%- endif %}
75
+ {%- if tool_call.function %}
76
+ {%- set tool_call = tool_call.function %}
77
+ {%- endif %}
78
+ {{- '<tool_call>\n{"name": "' }}
79
+ {{- tool_call.name }}
80
+ {{- '", "arguments": ' }}
81
+ {%- if tool_call.arguments is string %}
82
+ {{- tool_call.arguments }}
83
+ {%- else %}
84
+ {{- tool_call.arguments | tojson }}
85
+ {%- endif %}
86
+ {{- '}\n</tool_call>' }}
87
+ {%- endfor %}
88
+ {%- endif %}
89
+ {{- '<|im_end|>\n' }}
90
+ {%- elif message.role == "tool" %}
91
+ {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
92
+ {{- '<|im_start|>user' }}
93
+ {%- endif %}
94
+ {{- '\n<tool_response>\n' }}
95
+ {%- if message.content is string %}
96
+ {{- message.content }}
97
+ {%- else %}
98
+ {%- for content in message.content %}
99
+ {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}
100
+ {%- set image_count.value = image_count.value + 1 %}
101
+ {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}
102
+ <|vision_start|><|image_pad|><|vision_end|>
103
+ {%- elif content.type == 'video' or 'video' in content %}
104
+ {%- set video_count.value = video_count.value + 1 %}
105
+ {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}
106
+ <|vision_start|><|video_pad|><|vision_end|>
107
+ {%- elif 'text' in content %}
108
+ {{- content.text }}
109
+ {%- endif %}
110
+ {%- endfor %}
111
+ {%- endif %}
112
+ {{- '\n</tool_response>' }}
113
+ {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
114
+ {{- '<|im_end|>\n' }}
115
+ {%- endif %}
116
+ {%- endif %}
117
+ {%- endfor %}
118
+ {%- if add_generation_prompt %}
119
+ {{- '<|im_start|>assistant\n' }}
120
+ {%- endif %}
processor/processor_config.json ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "image_processor": {
3
+ "do_convert_rgb": true,
4
+ "do_normalize": true,
5
+ "do_rescale": true,
6
+ "do_resize": true,
7
+ "image_mean": [
8
+ 0.5,
9
+ 0.5,
10
+ 0.5
11
+ ],
12
+ "image_processor_type": "Qwen2VLImageProcessor",
13
+ "image_std": [
14
+ 0.5,
15
+ 0.5,
16
+ 0.5
17
+ ],
18
+ "merge_size": 2,
19
+ "patch_size": 16,
20
+ "resample": 3,
21
+ "rescale_factor": 0.00392156862745098,
22
+ "size": {
23
+ "longest_edge": 1605632,
24
+ "shortest_edge": 3136
25
+ },
26
+ "temporal_patch_size": 2
27
+ },
28
+ "processor_class": "Qwen3VLProcessor",
29
+ "video_processor": {
30
+ "do_convert_rgb": true,
31
+ "do_normalize": true,
32
+ "do_rescale": true,
33
+ "do_resize": true,
34
+ "do_sample_frames": true,
35
+ "fps": 2,
36
+ "image_mean": [
37
+ 0.5,
38
+ 0.5,
39
+ 0.5
40
+ ],
41
+ "image_std": [
42
+ 0.5,
43
+ 0.5,
44
+ 0.5
45
+ ],
46
+ "max_frames": 768,
47
+ "max_video_tokens": 768,
48
+ "merge_size": 2,
49
+ "min_frames": 4,
50
+ "patch_size": 16,
51
+ "resample": 3,
52
+ "rescale_factor": 0.00392156862745098,
53
+ "return_metadata": false,
54
+ "size": {
55
+ "longest_edge": 25165824,
56
+ "shortest_edge": 4096
57
+ },
58
+ "temporal_patch_size": 2,
59
+ "video_processor_type": "Qwen3VLVideoProcessor"
60
+ }
61
+ }
processor/tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:be75606093db2094d7cd20f3c2f385c212750648bd6ea4fb2bf507a6a4c55506
3
+ size 11422650
processor/tokenizer_config.json ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "backend": "tokenizers",
4
+ "bos_token": null,
5
+ "clean_up_tokenization_spaces": false,
6
+ "eos_token": "<|im_end|>",
7
+ "errors": "replace",
8
+ "extra_special_tokens": [
9
+ "<|im_start|>",
10
+ "<|im_end|>",
11
+ "<|object_ref_start|>",
12
+ "<|object_ref_end|>",
13
+ "<|box_start|>",
14
+ "<|box_end|>",
15
+ "<|quad_start|>",
16
+ "<|quad_end|>",
17
+ "<|vision_start|>",
18
+ "<|vision_end|>",
19
+ "<|vision_pad|>",
20
+ "<|image_pad|>",
21
+ "<|video_pad|>"
22
+ ],
23
+ "is_local": true,
24
+ "local_files_only": false,
25
+ "model_max_length": 262144,
26
+ "pad_token": "<|endoftext|>",
27
+ "processor_class": "Qwen3VLProcessor",
28
+ "split_special_tokens": false,
29
+ "tokenizer_class": "Qwen2Tokenizer",
30
+ "unk_token": null
31
+ }
scheduler/scheduler_config.json ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "FlowMatchEulerDiscreteScheduler",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "base_image_seq_len": 256,
5
+ "base_shift": 0.5,
6
+ "invert_sigmas": false,
7
+ "max_image_seq_len": 4096,
8
+ "max_shift": 1.15,
9
+ "num_train_timesteps": 1000,
10
+ "shift": 3.0,
11
+ "shift_terminal": null,
12
+ "stochastic_sampling": false,
13
+ "time_shift_type": "exponential",
14
+ "use_beta_sigmas": false,
15
+ "use_dynamic_shifting": true,
16
+ "use_exponential_sigmas": false,
17
+ "use_karras_sigmas": false
18
+ }
text_encoder/config.json ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "Qwen3VLForConditionalGeneration"
4
+ ],
5
+ "dtype": "bfloat16",
6
+ "image_token_id": 151655,
7
+ "model_type": "qwen3_vl",
8
+ "text_config": {
9
+ "attention_bias": false,
10
+ "attention_dropout": 0.0,
11
+ "bos_token_id": 151643,
12
+ "dtype": "bfloat16",
13
+ "eos_token_id": 151645,
14
+ "head_dim": 128,
15
+ "hidden_act": "silu",
16
+ "hidden_size": 2560,
17
+ "initializer_range": 0.02,
18
+ "intermediate_size": 9728,
19
+ "max_position_embeddings": 262144,
20
+ "model_type": "qwen3_vl_text",
21
+ "num_attention_heads": 32,
22
+ "num_hidden_layers": 36,
23
+ "num_key_value_heads": 8,
24
+ "pad_token_id": null,
25
+ "rms_norm_eps": 1e-06,
26
+ "rope_parameters": {
27
+ "mrope_interleaved": true,
28
+ "mrope_section": [
29
+ 24,
30
+ 20,
31
+ 20
32
+ ],
33
+ "rope_theta": 5000000,
34
+ "rope_type": "default"
35
+ },
36
+ "tie_word_embeddings": true,
37
+ "use_cache": true,
38
+ "vocab_size": 151936
39
+ },
40
+ "tie_word_embeddings": true,
41
+ "transformers_version": "5.20.1",
42
+ "video_token_id": 151656,
43
+ "vision_config": {
44
+ "deepstack_visual_indexes": [
45
+ 5,
46
+ 11,
47
+ 17
48
+ ],
49
+ "depth": 24,
50
+ "dtype": "bfloat16",
51
+ "hidden_act": "gelu_pytorch_tanh",
52
+ "hidden_size": 1024,
53
+ "in_channels": 3,
54
+ "initializer_range": 0.02,
55
+ "intermediate_size": 4096,
56
+ "model_type": "qwen3_vl_vision",
57
+ "num_heads": 16,
58
+ "num_position_embeddings": 2304,
59
+ "out_hidden_size": 2560,
60
+ "patch_size": 16,
61
+ "rope_parameters": {
62
+ "rope_theta": 10000.0,
63
+ "rope_type": "axial"
64
+ },
65
+ "spatial_merge_size": 2,
66
+ "temporal_patch_size": 2
67
+ },
68
+ "vision_end_token_id": 151653,
69
+ "vision_start_token_id": 151652
70
+ }
text_encoder/generation_config.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 151643,
3
+ "do_sample": true,
4
+ "eos_token_id": [
5
+ 151645,
6
+ 151643
7
+ ],
8
+ "pad_token_id": 151643,
9
+ "repetition_penalty": 1.0,
10
+ "temperature": 0.7,
11
+ "top_k": 20,
12
+ "top_p": 0.8,
13
+ "transformers_version": "5.20.1"
14
+ }
text_encoder/model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f0b24fc5c8d7c0ea6ca909da14c20af5cac53f22506be942c6c956f838b9630f
3
+ size 8875719408
transformer/config.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "BriaFibo2Transformer2DModel",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "axes_dims": [
5
+ 32,
6
+ 48,
7
+ 48
8
+ ],
9
+ "axes_lens": [
10
+ 2048,
11
+ 512,
12
+ 512
13
+ ],
14
+ "cap_feat_dim": 7680,
15
+ "dim": 3584,
16
+ "gist_max_text_len": 2048,
17
+ "gist_min_text_len": 256,
18
+ "gist_step": 64,
19
+ "in_channels": 32,
20
+ "injection_layer_ids": [
21
+ 6,
22
+ 14,
23
+ 22,
24
+ 30,
25
+ 38
26
+ ],
27
+ "max_num_gist_tokens": 512,
28
+ "min_num_gist_tokens": 256,
29
+ "n_heads": 28,
30
+ "n_layers": 44,
31
+ "n_refiner_layers": 2,
32
+ "norm_eps": 1e-05,
33
+ "patch_size": 2,
34
+ "perceiver_num_layers": 2,
35
+ "rope_theta": 256.0,
36
+ "t_scale": 1000.0
37
+ }
transformer/diffusion_pytorch_model-00001-of-00002.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a7c0121ba051a8f9d5e447ab4d11e1e202a94971313936c5cce1daaf31c897f6
3
+ size 9991176550
transformer/diffusion_pytorch_model-00002-of-00002.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0edf2f2d5e8338f126f7992561e7691909392417dc4d484a9d3865709ef84a73
3
+ size 6263592868
transformer/diffusion_pytorch_model.safetensors.index.json ADDED
@@ -0,0 +1,790 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "total_size": 16254684426
4
+ },
5
+ "weight_map": {
6
+ "final_layer.adaLN_modulation.1.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
7
+ "final_layer.adaLN_modulation.1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
8
+ "final_layer.linear.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
9
+ "final_layer.linear.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
10
+ "layers.0.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
11
+ "layers.0.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
12
+ "layers.0.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
13
+ "layers.0.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
14
+ "layers.0.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
15
+ "layers.0.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
16
+ "layers.0.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
17
+ "layers.0.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
18
+ "layers.0.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
19
+ "layers.0.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
20
+ "layers.0.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
21
+ "layers.0.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
22
+ "layers.0.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
23
+ "layers.0.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
24
+ "layers.0.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
25
+ "layers.1.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
26
+ "layers.1.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
27
+ "layers.1.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
28
+ "layers.1.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
29
+ "layers.1.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
30
+ "layers.1.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
31
+ "layers.1.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
32
+ "layers.1.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
33
+ "layers.1.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
34
+ "layers.1.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
35
+ "layers.1.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
36
+ "layers.1.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
37
+ "layers.1.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
38
+ "layers.1.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
39
+ "layers.1.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
40
+ "layers.10.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
41
+ "layers.10.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
42
+ "layers.10.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
43
+ "layers.10.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
44
+ "layers.10.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
45
+ "layers.10.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
46
+ "layers.10.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
47
+ "layers.10.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
48
+ "layers.10.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
49
+ "layers.10.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
50
+ "layers.10.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
51
+ "layers.10.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
52
+ "layers.10.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
53
+ "layers.10.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
54
+ "layers.10.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
55
+ "layers.11.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
56
+ "layers.11.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
57
+ "layers.11.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
58
+ "layers.11.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
59
+ "layers.11.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
60
+ "layers.11.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
61
+ "layers.11.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
62
+ "layers.11.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
63
+ "layers.11.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
64
+ "layers.11.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
65
+ "layers.11.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
66
+ "layers.11.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
67
+ "layers.11.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
68
+ "layers.11.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
69
+ "layers.11.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
70
+ "layers.12.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
71
+ "layers.12.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
72
+ "layers.12.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
73
+ "layers.12.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
74
+ "layers.12.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
75
+ "layers.12.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
76
+ "layers.12.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
77
+ "layers.12.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
78
+ "layers.12.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
79
+ "layers.12.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
80
+ "layers.12.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
81
+ "layers.12.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
82
+ "layers.12.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
83
+ "layers.12.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
84
+ "layers.12.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
85
+ "layers.13.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
86
+ "layers.13.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
87
+ "layers.13.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
88
+ "layers.13.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
89
+ "layers.13.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
90
+ "layers.13.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
91
+ "layers.13.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
92
+ "layers.13.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
93
+ "layers.13.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
94
+ "layers.13.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
95
+ "layers.13.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
96
+ "layers.13.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
97
+ "layers.13.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
98
+ "layers.13.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
99
+ "layers.13.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
100
+ "layers.14.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
101
+ "layers.14.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
102
+ "layers.14.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
103
+ "layers.14.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
104
+ "layers.14.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
105
+ "layers.14.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
106
+ "layers.14.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
107
+ "layers.14.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
108
+ "layers.14.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
109
+ "layers.14.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
110
+ "layers.14.cross_attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
111
+ "layers.14.cross_attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
112
+ "layers.14.cross_attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
113
+ "layers.14.cross_attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
114
+ "layers.14.cross_attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
115
+ "layers.14.cross_attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
116
+ "layers.14.cross_attn_gate": "diffusion_pytorch_model-00001-of-00002.safetensors",
117
+ "layers.14.cross_attn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
118
+ "layers.14.cross_attn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
119
+ "layers.14.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
120
+ "layers.14.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
121
+ "layers.14.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
122
+ "layers.14.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
123
+ "layers.14.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
124
+ "layers.15.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
125
+ "layers.15.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
126
+ "layers.15.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
127
+ "layers.15.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
128
+ "layers.15.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
129
+ "layers.15.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
130
+ "layers.15.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
131
+ "layers.15.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
132
+ "layers.15.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
133
+ "layers.15.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
134
+ "layers.15.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
135
+ "layers.15.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
136
+ "layers.15.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
137
+ "layers.15.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
138
+ "layers.15.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
139
+ "layers.16.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
140
+ "layers.16.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
141
+ "layers.16.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
142
+ "layers.16.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
143
+ "layers.16.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
144
+ "layers.16.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
145
+ "layers.16.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
146
+ "layers.16.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
147
+ "layers.16.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
148
+ "layers.16.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
149
+ "layers.16.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
150
+ "layers.16.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
151
+ "layers.16.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
152
+ "layers.16.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
153
+ "layers.16.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
154
+ "layers.17.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
155
+ "layers.17.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
156
+ "layers.17.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
157
+ "layers.17.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
158
+ "layers.17.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
159
+ "layers.17.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
160
+ "layers.17.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
161
+ "layers.17.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
162
+ "layers.17.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
163
+ "layers.17.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
164
+ "layers.17.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
165
+ "layers.17.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
166
+ "layers.17.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
167
+ "layers.17.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
168
+ "layers.17.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
169
+ "layers.18.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
170
+ "layers.18.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
171
+ "layers.18.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
172
+ "layers.18.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
173
+ "layers.18.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
174
+ "layers.18.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
175
+ "layers.18.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
176
+ "layers.18.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
177
+ "layers.18.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
178
+ "layers.18.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
179
+ "layers.18.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
180
+ "layers.18.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
181
+ "layers.18.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
182
+ "layers.18.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
183
+ "layers.18.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
184
+ "layers.19.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
185
+ "layers.19.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
186
+ "layers.19.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
187
+ "layers.19.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
188
+ "layers.19.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
189
+ "layers.19.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
190
+ "layers.19.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
191
+ "layers.19.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
192
+ "layers.19.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
193
+ "layers.19.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
194
+ "layers.19.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
195
+ "layers.19.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
196
+ "layers.19.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
197
+ "layers.19.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
198
+ "layers.19.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
199
+ "layers.2.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
200
+ "layers.2.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
201
+ "layers.2.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
202
+ "layers.2.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
203
+ "layers.2.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
204
+ "layers.2.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
205
+ "layers.2.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
206
+ "layers.2.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
207
+ "layers.2.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
208
+ "layers.2.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
209
+ "layers.2.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
210
+ "layers.2.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
211
+ "layers.2.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
212
+ "layers.2.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
213
+ "layers.2.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
214
+ "layers.20.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
215
+ "layers.20.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
216
+ "layers.20.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
217
+ "layers.20.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
218
+ "layers.20.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
219
+ "layers.20.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
220
+ "layers.20.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
221
+ "layers.20.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
222
+ "layers.20.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
223
+ "layers.20.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
224
+ "layers.20.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
225
+ "layers.20.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
226
+ "layers.20.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
227
+ "layers.20.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
228
+ "layers.20.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
229
+ "layers.21.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
230
+ "layers.21.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
231
+ "layers.21.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
232
+ "layers.21.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
233
+ "layers.21.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
234
+ "layers.21.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
235
+ "layers.21.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
236
+ "layers.21.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
237
+ "layers.21.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
238
+ "layers.21.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
239
+ "layers.21.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
240
+ "layers.21.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
241
+ "layers.21.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
242
+ "layers.21.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
243
+ "layers.21.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
244
+ "layers.22.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
245
+ "layers.22.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
246
+ "layers.22.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
247
+ "layers.22.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
248
+ "layers.22.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
249
+ "layers.22.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
250
+ "layers.22.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
251
+ "layers.22.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
252
+ "layers.22.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
253
+ "layers.22.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
254
+ "layers.22.cross_attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
255
+ "layers.22.cross_attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
256
+ "layers.22.cross_attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
257
+ "layers.22.cross_attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
258
+ "layers.22.cross_attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
259
+ "layers.22.cross_attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
260
+ "layers.22.cross_attn_gate": "diffusion_pytorch_model-00001-of-00002.safetensors",
261
+ "layers.22.cross_attn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
262
+ "layers.22.cross_attn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
263
+ "layers.22.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
264
+ "layers.22.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
265
+ "layers.22.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
266
+ "layers.22.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
267
+ "layers.22.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
268
+ "layers.23.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
269
+ "layers.23.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
270
+ "layers.23.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
271
+ "layers.23.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
272
+ "layers.23.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
273
+ "layers.23.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
274
+ "layers.23.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
275
+ "layers.23.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
276
+ "layers.23.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
277
+ "layers.23.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
278
+ "layers.23.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
279
+ "layers.23.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
280
+ "layers.23.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
281
+ "layers.23.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
282
+ "layers.23.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
283
+ "layers.24.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
284
+ "layers.24.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
285
+ "layers.24.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
286
+ "layers.24.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
287
+ "layers.24.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
288
+ "layers.24.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
289
+ "layers.24.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
290
+ "layers.24.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
291
+ "layers.24.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
292
+ "layers.24.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
293
+ "layers.24.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
294
+ "layers.24.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
295
+ "layers.24.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
296
+ "layers.24.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
297
+ "layers.24.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
298
+ "layers.25.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
299
+ "layers.25.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
300
+ "layers.25.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
301
+ "layers.25.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
302
+ "layers.25.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
303
+ "layers.25.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
304
+ "layers.25.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
305
+ "layers.25.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
306
+ "layers.25.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
307
+ "layers.25.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
308
+ "layers.25.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
309
+ "layers.25.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
310
+ "layers.25.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
311
+ "layers.25.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
312
+ "layers.25.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
313
+ "layers.26.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
314
+ "layers.26.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
315
+ "layers.26.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
316
+ "layers.26.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
317
+ "layers.26.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
318
+ "layers.26.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
319
+ "layers.26.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
320
+ "layers.26.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
321
+ "layers.26.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
322
+ "layers.26.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
323
+ "layers.26.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
324
+ "layers.26.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
325
+ "layers.26.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
326
+ "layers.26.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
327
+ "layers.26.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
328
+ "layers.27.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
329
+ "layers.27.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
330
+ "layers.27.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
331
+ "layers.27.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
332
+ "layers.27.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
333
+ "layers.27.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
334
+ "layers.27.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
335
+ "layers.27.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
336
+ "layers.27.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
337
+ "layers.27.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
338
+ "layers.27.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
339
+ "layers.27.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
340
+ "layers.27.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
341
+ "layers.27.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
342
+ "layers.27.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
343
+ "layers.28.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
344
+ "layers.28.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
345
+ "layers.28.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
346
+ "layers.28.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
347
+ "layers.28.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
348
+ "layers.28.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
349
+ "layers.28.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
350
+ "layers.28.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
351
+ "layers.28.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
352
+ "layers.28.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
353
+ "layers.28.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
354
+ "layers.28.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
355
+ "layers.28.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
356
+ "layers.28.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
357
+ "layers.28.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
358
+ "layers.29.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
359
+ "layers.29.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
360
+ "layers.29.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
361
+ "layers.29.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
362
+ "layers.29.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
363
+ "layers.29.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
364
+ "layers.29.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
365
+ "layers.29.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
366
+ "layers.29.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
367
+ "layers.29.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
368
+ "layers.29.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
369
+ "layers.29.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
370
+ "layers.29.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
371
+ "layers.29.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
372
+ "layers.29.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
373
+ "layers.3.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
374
+ "layers.3.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
375
+ "layers.3.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
376
+ "layers.3.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
377
+ "layers.3.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
378
+ "layers.3.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
379
+ "layers.3.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
380
+ "layers.3.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
381
+ "layers.3.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
382
+ "layers.3.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
383
+ "layers.3.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
384
+ "layers.3.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
385
+ "layers.3.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
386
+ "layers.3.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
387
+ "layers.3.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
388
+ "layers.30.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
389
+ "layers.30.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
390
+ "layers.30.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
391
+ "layers.30.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
392
+ "layers.30.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
393
+ "layers.30.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
394
+ "layers.30.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
395
+ "layers.30.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
396
+ "layers.30.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
397
+ "layers.30.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
398
+ "layers.30.cross_attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
399
+ "layers.30.cross_attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
400
+ "layers.30.cross_attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
401
+ "layers.30.cross_attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
402
+ "layers.30.cross_attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
403
+ "layers.30.cross_attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
404
+ "layers.30.cross_attn_gate": "diffusion_pytorch_model-00002-of-00002.safetensors",
405
+ "layers.30.cross_attn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
406
+ "layers.30.cross_attn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
407
+ "layers.30.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
408
+ "layers.30.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
409
+ "layers.30.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
410
+ "layers.30.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
411
+ "layers.30.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
412
+ "layers.31.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
413
+ "layers.31.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
414
+ "layers.31.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
415
+ "layers.31.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
416
+ "layers.31.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
417
+ "layers.31.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
418
+ "layers.31.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
419
+ "layers.31.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
420
+ "layers.31.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
421
+ "layers.31.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
422
+ "layers.31.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
423
+ "layers.31.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
424
+ "layers.31.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
425
+ "layers.31.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
426
+ "layers.31.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
427
+ "layers.32.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
428
+ "layers.32.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
429
+ "layers.32.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
430
+ "layers.32.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
431
+ "layers.32.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
432
+ "layers.32.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
433
+ "layers.32.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
434
+ "layers.32.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
435
+ "layers.32.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
436
+ "layers.32.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
437
+ "layers.32.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
438
+ "layers.32.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
439
+ "layers.32.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
440
+ "layers.32.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
441
+ "layers.32.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
442
+ "layers.33.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
443
+ "layers.33.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
444
+ "layers.33.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
445
+ "layers.33.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
446
+ "layers.33.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
447
+ "layers.33.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
448
+ "layers.33.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
449
+ "layers.33.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
450
+ "layers.33.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
451
+ "layers.33.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
452
+ "layers.33.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
453
+ "layers.33.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
454
+ "layers.33.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
455
+ "layers.33.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
456
+ "layers.33.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
457
+ "layers.34.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
458
+ "layers.34.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
459
+ "layers.34.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
460
+ "layers.34.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
461
+ "layers.34.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
462
+ "layers.34.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
463
+ "layers.34.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
464
+ "layers.34.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
465
+ "layers.34.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
466
+ "layers.34.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
467
+ "layers.34.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
468
+ "layers.34.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
469
+ "layers.34.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
470
+ "layers.34.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
471
+ "layers.34.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
472
+ "layers.35.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
473
+ "layers.35.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
474
+ "layers.35.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
475
+ "layers.35.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
476
+ "layers.35.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
477
+ "layers.35.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
478
+ "layers.35.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
479
+ "layers.35.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
480
+ "layers.35.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
481
+ "layers.35.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
482
+ "layers.35.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
483
+ "layers.35.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
484
+ "layers.35.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
485
+ "layers.35.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
486
+ "layers.35.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
487
+ "layers.36.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
488
+ "layers.36.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
489
+ "layers.36.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
490
+ "layers.36.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
491
+ "layers.36.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
492
+ "layers.36.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
493
+ "layers.36.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
494
+ "layers.36.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
495
+ "layers.36.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
496
+ "layers.36.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
497
+ "layers.36.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
498
+ "layers.36.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
499
+ "layers.36.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
500
+ "layers.36.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
501
+ "layers.36.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
502
+ "layers.37.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
503
+ "layers.37.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
504
+ "layers.37.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
505
+ "layers.37.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
506
+ "layers.37.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
507
+ "layers.37.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
508
+ "layers.37.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
509
+ "layers.37.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
510
+ "layers.37.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
511
+ "layers.37.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
512
+ "layers.37.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
513
+ "layers.37.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
514
+ "layers.37.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
515
+ "layers.37.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
516
+ "layers.37.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
517
+ "layers.38.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
518
+ "layers.38.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
519
+ "layers.38.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
520
+ "layers.38.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
521
+ "layers.38.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
522
+ "layers.38.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
523
+ "layers.38.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
524
+ "layers.38.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
525
+ "layers.38.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
526
+ "layers.38.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
527
+ "layers.38.cross_attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
528
+ "layers.38.cross_attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
529
+ "layers.38.cross_attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
530
+ "layers.38.cross_attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
531
+ "layers.38.cross_attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
532
+ "layers.38.cross_attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
533
+ "layers.38.cross_attn_gate": "diffusion_pytorch_model-00002-of-00002.safetensors",
534
+ "layers.38.cross_attn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
535
+ "layers.38.cross_attn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
536
+ "layers.38.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
537
+ "layers.38.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
538
+ "layers.38.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
539
+ "layers.38.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
540
+ "layers.38.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
541
+ "layers.39.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
542
+ "layers.39.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
543
+ "layers.39.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
544
+ "layers.39.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
545
+ "layers.39.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
546
+ "layers.39.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
547
+ "layers.39.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
548
+ "layers.39.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
549
+ "layers.39.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
550
+ "layers.39.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
551
+ "layers.39.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
552
+ "layers.39.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
553
+ "layers.39.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
554
+ "layers.39.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
555
+ "layers.39.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
556
+ "layers.4.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
557
+ "layers.4.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
558
+ "layers.4.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
559
+ "layers.4.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
560
+ "layers.4.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
561
+ "layers.4.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
562
+ "layers.4.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
563
+ "layers.4.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
564
+ "layers.4.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
565
+ "layers.4.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
566
+ "layers.4.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
567
+ "layers.4.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
568
+ "layers.4.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
569
+ "layers.4.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
570
+ "layers.4.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
571
+ "layers.40.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
572
+ "layers.40.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
573
+ "layers.40.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
574
+ "layers.40.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
575
+ "layers.40.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
576
+ "layers.40.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
577
+ "layers.40.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
578
+ "layers.40.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
579
+ "layers.40.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
580
+ "layers.40.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
581
+ "layers.40.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
582
+ "layers.40.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
583
+ "layers.40.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
584
+ "layers.40.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
585
+ "layers.40.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
586
+ "layers.41.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
587
+ "layers.41.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
588
+ "layers.41.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
589
+ "layers.41.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
590
+ "layers.41.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
591
+ "layers.41.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
592
+ "layers.41.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
593
+ "layers.41.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
594
+ "layers.41.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
595
+ "layers.41.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
596
+ "layers.41.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
597
+ "layers.41.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
598
+ "layers.41.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
599
+ "layers.41.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
600
+ "layers.41.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
601
+ "layers.42.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
602
+ "layers.42.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
603
+ "layers.42.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
604
+ "layers.42.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
605
+ "layers.42.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
606
+ "layers.42.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
607
+ "layers.42.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
608
+ "layers.42.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
609
+ "layers.42.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
610
+ "layers.42.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
611
+ "layers.42.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
612
+ "layers.42.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
613
+ "layers.42.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
614
+ "layers.42.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
615
+ "layers.42.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
616
+ "layers.43.adaLN_modulation.0.bias": "diffusion_pytorch_model-00002-of-00002.safetensors",
617
+ "layers.43.adaLN_modulation.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
618
+ "layers.43.attention.norm_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
619
+ "layers.43.attention.norm_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
620
+ "layers.43.attention.to_k.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
621
+ "layers.43.attention.to_out.0.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
622
+ "layers.43.attention.to_q.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
623
+ "layers.43.attention.to_v.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
624
+ "layers.43.attention_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
625
+ "layers.43.attention_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
626
+ "layers.43.feed_forward.w1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
627
+ "layers.43.feed_forward.w2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
628
+ "layers.43.feed_forward.w3.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
629
+ "layers.43.ffn_norm1.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
630
+ "layers.43.ffn_norm2.weight": "diffusion_pytorch_model-00002-of-00002.safetensors",
631
+ "layers.5.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
632
+ "layers.5.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
633
+ "layers.5.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
634
+ "layers.5.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
635
+ "layers.5.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
636
+ "layers.5.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
637
+ "layers.5.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
638
+ "layers.5.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
639
+ "layers.5.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
640
+ "layers.5.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
641
+ "layers.5.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
642
+ "layers.5.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
643
+ "layers.5.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
644
+ "layers.5.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
645
+ "layers.5.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
646
+ "layers.6.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
647
+ "layers.6.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
648
+ "layers.6.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
649
+ "layers.6.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
650
+ "layers.6.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
651
+ "layers.6.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
652
+ "layers.6.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
653
+ "layers.6.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
654
+ "layers.6.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
655
+ "layers.6.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
656
+ "layers.6.cross_attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
657
+ "layers.6.cross_attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
658
+ "layers.6.cross_attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
659
+ "layers.6.cross_attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
660
+ "layers.6.cross_attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
661
+ "layers.6.cross_attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
662
+ "layers.6.cross_attn_gate": "diffusion_pytorch_model-00001-of-00002.safetensors",
663
+ "layers.6.cross_attn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
664
+ "layers.6.cross_attn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
665
+ "layers.6.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
666
+ "layers.6.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
667
+ "layers.6.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
668
+ "layers.6.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
669
+ "layers.6.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
670
+ "layers.7.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
671
+ "layers.7.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
672
+ "layers.7.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
673
+ "layers.7.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
674
+ "layers.7.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
675
+ "layers.7.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
676
+ "layers.7.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
677
+ "layers.7.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
678
+ "layers.7.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
679
+ "layers.7.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
680
+ "layers.7.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
681
+ "layers.7.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
682
+ "layers.7.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
683
+ "layers.7.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
684
+ "layers.7.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
685
+ "layers.8.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
686
+ "layers.8.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
687
+ "layers.8.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
688
+ "layers.8.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
689
+ "layers.8.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
690
+ "layers.8.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
691
+ "layers.8.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
692
+ "layers.8.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
693
+ "layers.8.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
694
+ "layers.8.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
695
+ "layers.8.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
696
+ "layers.8.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
697
+ "layers.8.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
698
+ "layers.8.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
699
+ "layers.8.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
700
+ "layers.9.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
701
+ "layers.9.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
702
+ "layers.9.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
703
+ "layers.9.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
704
+ "layers.9.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
705
+ "layers.9.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
706
+ "layers.9.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
707
+ "layers.9.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
708
+ "layers.9.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
709
+ "layers.9.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
710
+ "layers.9.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
711
+ "layers.9.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
712
+ "layers.9.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
713
+ "layers.9.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
714
+ "layers.9.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
715
+ "noise_refiner.0.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
716
+ "noise_refiner.0.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
717
+ "noise_refiner.0.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
718
+ "noise_refiner.0.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
719
+ "noise_refiner.0.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
720
+ "noise_refiner.0.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
721
+ "noise_refiner.0.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
722
+ "noise_refiner.0.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
723
+ "noise_refiner.0.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
724
+ "noise_refiner.0.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
725
+ "noise_refiner.0.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
726
+ "noise_refiner.0.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
727
+ "noise_refiner.0.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
728
+ "noise_refiner.0.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
729
+ "noise_refiner.0.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
730
+ "noise_refiner.1.adaLN_modulation.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
731
+ "noise_refiner.1.adaLN_modulation.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
732
+ "noise_refiner.1.attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
733
+ "noise_refiner.1.attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
734
+ "noise_refiner.1.attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
735
+ "noise_refiner.1.attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
736
+ "noise_refiner.1.attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
737
+ "noise_refiner.1.attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
738
+ "noise_refiner.1.attention_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
739
+ "noise_refiner.1.attention_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
740
+ "noise_refiner.1.feed_forward.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
741
+ "noise_refiner.1.feed_forward.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
742
+ "noise_refiner.1.feed_forward.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
743
+ "noise_refiner.1.ffn_norm1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
744
+ "noise_refiner.1.ffn_norm2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
745
+ "perceiver.latent_queries": "diffusion_pytorch_model-00001-of-00002.safetensors",
746
+ "perceiver.layers.0.cross_attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
747
+ "perceiver.layers.0.cross_attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
748
+ "perceiver.layers.0.cross_attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
749
+ "perceiver.layers.0.cross_attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
750
+ "perceiver.layers.0.cross_attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
751
+ "perceiver.layers.0.cross_attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
752
+ "perceiver.layers.0.cross_attn_norm.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
753
+ "perceiver.layers.0.ffn.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
754
+ "perceiver.layers.0.ffn.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
755
+ "perceiver.layers.0.ffn.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
756
+ "perceiver.layers.0.ffn_norm.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
757
+ "perceiver.layers.0.self_attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
758
+ "perceiver.layers.0.self_attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
759
+ "perceiver.layers.0.self_attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
760
+ "perceiver.layers.0.self_attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
761
+ "perceiver.layers.0.self_attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
762
+ "perceiver.layers.0.self_attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
763
+ "perceiver.layers.0.self_attn_norm.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
764
+ "perceiver.layers.1.cross_attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
765
+ "perceiver.layers.1.cross_attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
766
+ "perceiver.layers.1.cross_attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
767
+ "perceiver.layers.1.cross_attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
768
+ "perceiver.layers.1.cross_attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
769
+ "perceiver.layers.1.cross_attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
770
+ "perceiver.layers.1.cross_attn_norm.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
771
+ "perceiver.layers.1.ffn.w1.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
772
+ "perceiver.layers.1.ffn.w2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
773
+ "perceiver.layers.1.ffn.w3.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
774
+ "perceiver.layers.1.ffn_norm.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
775
+ "perceiver.layers.1.self_attention.norm_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
776
+ "perceiver.layers.1.self_attention.norm_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
777
+ "perceiver.layers.1.self_attention.to_k.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
778
+ "perceiver.layers.1.self_attention.to_out.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
779
+ "perceiver.layers.1.self_attention.to_q.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
780
+ "perceiver.layers.1.self_attention.to_v.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
781
+ "perceiver.layers.1.self_attn_norm.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
782
+ "perceiver.norm_out.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
783
+ "t_embedder.mlp.0.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
784
+ "t_embedder.mlp.0.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
785
+ "t_embedder.mlp.2.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
786
+ "t_embedder.mlp.2.weight": "diffusion_pytorch_model-00001-of-00002.safetensors",
787
+ "x_embedder.bias": "diffusion_pytorch_model-00001-of-00002.safetensors",
788
+ "x_embedder.weight": "diffusion_pytorch_model-00001-of-00002.safetensors"
789
+ }
790
+ }
vae/config.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_class_name": "AutoencoderKLFlux2",
3
+ "_diffusers_version": "0.41.0.dev0",
4
+ "_name_or_path": "/tmp/fibo2_hf_release/hf/hub/models--briaai--fibo-2/snapshots/9e70dcfc6f8acf39cba59484947cf643293b5233",
5
+ "act_fn": "silu",
6
+ "batch_norm_eps": 0.0001,
7
+ "batch_norm_momentum": 0.1,
8
+ "block_out_channels": [
9
+ 128,
10
+ 256,
11
+ 512,
12
+ 512
13
+ ],
14
+ "decoder_block_out_channels": null,
15
+ "down_block_types": [
16
+ "DownEncoderBlock2D",
17
+ "DownEncoderBlock2D",
18
+ "DownEncoderBlock2D",
19
+ "DownEncoderBlock2D"
20
+ ],
21
+ "in_channels": 3,
22
+ "latent_channels": 32,
23
+ "layers_per_block": 2,
24
+ "mid_block_add_attention": true,
25
+ "norm_num_groups": 32,
26
+ "out_channels": 3,
27
+ "patch_size": [
28
+ 2,
29
+ 2
30
+ ],
31
+ "sample_size": 1024,
32
+ "up_block_types": [
33
+ "UpDecoderBlock2D",
34
+ "UpDecoderBlock2D",
35
+ "UpDecoderBlock2D",
36
+ "UpDecoderBlock2D"
37
+ ],
38
+ "use_post_quant_conv": true,
39
+ "use_quant_conv": true
40
+ }
vae/diffusion_pytorch_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d64f3a68e1cc4f9f4e29b6e0da38a0204fe9a49f2d4053f0ec1fa1ca02f9c4b5
3
+ size 336213556