File size: 27,907 Bytes
f0fdea0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
daa5f92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5c3d67c
daa5f92
3429062
daa5f92
f0fdea0
7d6036f
 
daa5f92
7d6036f
 
 
daa5f92
 
 
 
 
 
 
 
 
7d6036f
daa5f92
 
 
 
 
 
 
 
 
7d6036f
 
 
 
 
 
 
 
 
daa5f92
7d6036f
 
 
 
 
 
 
 
 
 
daa5f92
 
 
7d6036f
daa5f92
7d6036f
daa5f92
 
 
 
 
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
 
 
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
 
 
 
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
 
 
 
 
 
 
 
7d6036f
daa5f92
5c3d67c
daa5f92
5c3d67c
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
 
 
 
 
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
7d6036f
daa5f92
7d6036f
daa5f92
 
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
 
7d6036f
daa5f92
f0fdea0
daa5f92
 
 
f0fdea0
 
 
 
 
 
 
 
daa5f92
7d6036f
daa5f92
7d6036f
f0fdea0
 
daa5f92
7d6036f
daa5f92
 
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
 
 
 
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
 
 
 
 
daa5f92
7d6036f
 
 
daa5f92
7d6036f
 
 
 
 
daa5f92
7d6036f
 
 
daa5f92
7d6036f
 
 
 
 
daa5f92
7d6036f
 
 
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
 
 
 
 
 
 
 
 
 
 
 
7d6036f
 
 
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
 
 
daa5f92
7d6036f
daa5f92
7d6036f
 
 
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
daa5f92
7d6036f
 
 
daa5f92
7d6036f
daa5f92
7d6036f
 
f0fdea0
daa5f92
f0fdea0
daa5f92
f0fdea0
daa5f92
f0fdea0
daa5f92
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
---
base_model: krea/Krea-2-Turbo
base_model_relation: adapter
license: other
license_name: krea-2-community-license
license_link: https://huggingface.co/lvladikov/Krea2-Turbo-Distill-2step-LoRA/blob/main/LICENSE.pdf
library_name: diffusers
tags:
  - lora
  - text-to-image
  - distillation
  - step-distillation
  - distribution-matching
  - krea-2
pipeline_tag: text-to-image
---

# Krea 2 Turbo β€” 2-Step Distillation LoRA

**A quarter of the steps Β· 4.2Γ— faster denoising Β· fine detail at 1.01–1.17Γ— the teacher's across all 12 trained resolutions Β· 1 point missing of 240 on a blind prompt-adherence rubric Β· teacher preferred on 11 of 45 judged renders Β· 17,464 training samples on the 4-step project's recorded trajectories Β· 7 days on one RTX 3090 Β· still in training.**

A LoRA for **[Krea 2 Turbo](https://huggingface.co/krea/Krea-2-Turbo)** that takes the model from **8 steps down to 2** β€” Turbo's own weights and sigmas, guidance 0.0, a quarter of the denoising passes β€” aiming at the best quality two steps can give. It is for **fast previews and drafts**; the **[4-step LoRA](https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA)** remains the recommendation for quality renders.

- ⚑ **A quarter of the steps** β€” 8 β†’ 2, on Turbo's own deployment sigmas `[1.0, 0.7595]`
- ⏱️ **4.2Γ— faster denoising** β€” 81.4 s β†’ 19.5 s at 1024Γ—1024; the adapter's own cost per call is within measurement noise
- 🎯 **Fine detail at or just above the teacher's** β€” **1.01–1.17Γ—** the teacher's fine-texture energy at every trained resolution (stock Turbo at 2 steps: **0.39–0.57Γ—**); from 1 megapixel up, closer to the teacher than the 4-step adapter
- πŸ“Š **Distribution matching, not imitation** β€” matches what the teacher would plausibly produce rather than its exact trajectory, so the student commits instead of averaging into blur and doubled edges
- πŸ—£οΈ **Prompt-conditioned throughout** β€” teacher and fake scores both read each prompt's conditioning; a blind rubric finds **1 point missing of 240** (objects, counts, attributes, relations), and a judge prefers the 8-step teacher on **11 of 45** (4-step adapter: 6), mostly on style
- πŸ“ **12 trained resolutions** β€” multi-aspect from 512Γ—512 up to 1440Γ—1440
- πŸ”Œ **Drop-in, no exceptions** β€” plain LoRA, stock Euler, diffusers / ComfyUI / MLX. No custom nodes, no custom sampler
- 🧬 **Same shape as the [4-step adapter](https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA)** β€” rank 64 on the same 228 modules
- 🎲 **13,750 recorded teacher trajectories** from the 4-step project, reused β€” not one new teacher run
- πŸ”’ **17,464 training samples** in the 2-step stages, on top of the 4-step LoRA's 78,000
- πŸ“… **7 days** from the first 2-step launch to this checkpoint, on a single RTX 3090 β€” training continues
- πŸ” **26 recipe adjustments** across two methods β€” each kept only when the renders did not get worse

> πŸ§ͺ **Fast-preview adapter, still in training.** Subjects that are close and fill a good part of the frame β€” a portrait, a single figure, an object up close β€” hold up well at two steps. Small subjects are where it still falls short: faces in a crowd or figures in a wide scene can come out ghosted or smeared. For those, and whenever quality matters more than speed, use the [4-step LoRA](https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA). See [Known Issues](#known-issues).
>
> πŸ“ **The saved steps can also go into resolution.** A larger render makes a small subject bigger, and at a quarter of the teacher's steps, renders up to 2048Γ—2048 β€” Krea's published maximum recommended resolution, beyond this adapter's largest trained size β€” come within easy reach. Past 2048Γ—2048, stock Krea 2 itself begins to duplicate subjects, with or without this adapter.
>
> πŸ”€ **Also compatible with Krea 2 Raw** β€” with some prompts, at 7+ steps and light guidance. See [Using it on Raw](#using-it-on-raw).

[![The 15 test prompts, rendered by Krea 2 Turbo with this LoRA at 2 steps](assets/thumbs/poster.jpg)](assets/poster.jpg)

---

## Files

| file                                                                                                     | what it is                                                                                     |
| -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `krea2_turbo_2step_rank_64_lora.safetensors`                                                             | LoRA in diffusers key format β€” see [diffusers](#diffusers)                                     |
| `krea2_turbo_2step_rank_64_lora_comfyui.safetensors`                                                     | Same weights under ComfyUI key names β€” see [ComfyUI](#comfyui)                                 |
| `krea2_turbo_2step_lora_t2i.json`                                                                        | Ready ComfyUI workflow, stock nodes only                                                       |
| `krea2_raw_7step_lora_experiment_t2i.json`                                                               | ComfyUI workflow of the Krea 2 Raw 7-step experiment β€” see [Using it on Raw](#using-it-on-raw) |
| [`krea2_turbo_2step_rank_64_lora_checkpoint_info.md`](krea2_turbo_2step_rank_64_lora_checkpoint_info.md) | **Which checkpoint the two weight files are** β€” updated with every release                     |
| `LICENSE.pdf`                                                                                            | Krea 2 Community License Agreement                                                             |
| `NOTICE.txt`                                                                                             | Required attribution notice                                                                    |

Both weight files are one adapter β€” only key names differ. Both carry training details in safetensors metadata. File names never change: a better checkpoint replaces both in place, and every published checkpoint stays in [`_archive/checkpoints/`](_archive/checkpoints/) under its number.

---

## Quick Start

### diffusers

```bash
pip install git+https://github.com/huggingface/diffusers.git
```

```python
import torch
from diffusers import Krea2Pipeline
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file

pipe = Krea2Pipeline.from_pretrained("krea/Krea-2-Turbo", torch_dtype=torch.bfloat16).to("cuda")

lora = hf_hub_download("lvladikov/Krea2-Turbo-Distill-2step-LoRA", "krea2_turbo_2step_rank_64_lora.safetensors")
state = load_file(lora)
state = {f"transformer.{k}": v for k, v in state.items() if not k.endswith(".alpha")}
pipe.load_lora_weights(state, adapter_name="2step")

image = pipe("a fox in the snow", num_inference_steps=2, guidance_scale=0.0).images[0]
image.save("krea2_2step.png")
```

- **`num_inference_steps=2` is the whole config.** Pipeline applies Turbo's fixed timestep shift (ΞΌ = 1.15) and evaluates at Οƒ = 1.0, 0.7595 β€” exactly the two points the LoRA was trained on. Keep `guidance_scale=0.0`.
- Strength: `pipe.set_adapters(["2step"], adapter_weights=[0.75])`. Stock Turbo for comparison: `pipe.unload_lora_weights()` + `num_inference_steps=8`.
- Use the diffusers file, not `_comfyui` β€” diffusers reads Krea's own key naming, not ComfyUI's `lora_down`/`lora_up`.

### ComfyUI

| file                                                                                                                         | put it in                          |
| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| `krea2_turbo_2step_rank_64_lora_comfyui.safetensors`                                                                         | `ComfyUI/models/loras/`            |
| `krea2_turbo_bf16.safetensors` (from [Comfy-Org/Krea-2](https://huggingface.co/Comfy-Org/Krea-2/tree/main/diffusion_models)) | `ComfyUI/models/diffusion_models/` |
| `qwen3vl_4b_bf16.safetensors` (same repo)                                                                                    | `ComfyUI/models/text_encoders/`    |
| `qwen_image_vae.safetensors` (same repo)                                                                                     | `ComfyUI/models/vae/`              |

Load [`krea2_turbo_2step_lora_t2i.json`](krea2_turbo_2step_lora_t2i.json). Full bf16, no quantisation, runs on CUDA / Apple Silicon / CPU unchanged. Smaller Turbo builds work too β€” ComfyUI's loader applies the LoRA to any build β€” except `fp8_scaled` on Apple Silicon (MPS has no `Float8_e4m3fn`).

**Settings:** steps **2**, **cfg 1.0**, sampler `euler` / `simple`, LoRA strength **1.0**.

> βš™οΈ **cfg 1.0, not 0.0.** ComfyUI expresses "no CFG" as 1.0 (one forward pass); diffusers uses 0.0. Setting 0.0 in ComfyUI is not the same thing.

### Using it on Raw

Trained on Turbo, for Turbo β€” it loads on **Krea 2 Raw** because the architecture is shared, a side effect rather than a supported mode. The same quarter of Raw's usual 28 steps, **7**, is the place to start; some prompts hold at 4–5 for a quick preview. Keep guidance **light**: `guidance_scale=1.0` in diffusers, **cfg 2.0** in ComfyUI β€” 4.5 crushes most images to near-black at 7 steps, and no guidance leaves them flat.

Results are mixed and subject-dependent. All 15 prompts at 1024Γ—768, what worked and what didn't, and the workflow ([`krea2_raw_7step_lora_experiment_t2i.json`](krea2_raw_7step_lora_experiment_t2i.json)) are in the [experiment's README](assets/resolution_sweeps/raw-LoRA-7steps-experiment/README.md).

---

## Performance (1024Γ—1024, Apple Silicon MLX bf16)

|                               | denoise    | per model call | GPU peak |
| ----------------------------- | ---------- | -------------- | -------- |
| Turbo 8 steps (quality bar)   | 81.4 s     | 10.2 s         | 25.2 GiB |
| Turbo 2 steps, no LoRA        | 20.4 s     | 10.2 s         | 25.2 GiB |
| **Turbo 2 steps + this LoRA** | **19.5 s** | 9.8 s          | 25.2 GiB |

**Denoising is 4.2Γ— faster than the 8-step bar** β€” two model calls instead of eight. The adapter adds no measurable cost per call and no measurable memory; the runs with it came in marginally faster, which is noise, not a speed-up.

Prompt encoding and VAE decode don't change with step count, so end to end sits below 4.2Γ— and rises toward it as the render grows. Denoise times at every trained resolution (6.4 s at 512Γ—512 to 39.8 s at 1440Γ—1440) are in the [Detailed Model Card](DETAILED-README.md).

---

## LoRA Strength

| strength      | what happens                                                                                                             |
| ------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **below 1.0** | Correction only partly applied β€” softer skin and hair, less fine structure, closer to 2 steps without the adapter        |
| **1.0**       | Trained point, recommended                                                                                               |
| **1.0–1.5**   | Extrapolation β€” texture denser than the subject warrants, fine structure reads wiry rather than sharp. Usable per prompt |
| **above 1.5** | Not recommended, not measured                                                                                            |

At two steps the dial scales the adapter's whole job β€” turning two coarse calls into a finished image β€” so there is less reason to go below 1.0 than with a 4-step adapter. Reach for **steps before strength**: when quality matters more than speed, the [4-step adapter](https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA) is the better tool.

[![LoRA strength comparison](assets/thumbs/portrait_strength_sweep.jpg)](assets/portrait_strength_sweep.jpg)

---

## Current Checkpoint

**`chk00017464`** (14 Sep 2026) replaces `chk00013663` (12 Sep 2026). It is 3,801 training samples later, all aimed at what distribution matching leaves behind β€” grain and grid pattern at large sizes, small faces, dense detail β€” through five recipe changes, among them the artefact, photo and face critics taking turns and four detail terms.

| axis                                          | `chk00013663` | `chk00017464`   |
| --------------------------------------------- | ------------- | --------------- |
| fine texture vs the teacher, 1280Β² / 1440Β²    | 1.20 / 1.34   | **1.09 / 1.17** |
| 16-px grid band, 1280Β² / 1440Β²                | 1.16 / 1.25   | **1.08 / 1.08** |
| grain in flat areas, sweep median             | 1.36Γ—         | **1.26Γ—**       |
| distance to the teacher, sweep mean           | 0.413         | **0.406**       |
| judge prefers the teacher (of 45)             | **6**         | 11              |
| blind adherence rubric, points missing of 240 | **0**         | 1               |
| saturation vs the teacher, sweep mean         | **0.94Γ—**     | 0.93Γ—           |

Fine texture and both grid bands came closer to the teacher at 10 of 12 resolutions. Prompt-following on stylised prompts and colour did not improve β€” both are what the next recipe changes target. [`krea2_turbo_2step_rank_64_lora_checkpoint_info.md`](krea2_turbo_2step_rank_64_lora_checkpoint_info.md) always names the checkpoint in the weight files; the full comparison is in the [Detailed Model Card](DETAILED-README.md).

---

## Known Issues

The usual costs of two steps, in order of how often they show:

- **Small subjects** β€” the weak spot, people and objects alike. Faces in a crowd, a figure in a wide scene, the machines at the back of a room can come out ghosted, smeared or misshapen; a portrait-sized face or an object up close holds up
- **Fine structure** β€” feathers, hair strands and signage can be soft or a few pixels out of register, most at 1280Γ—1280 and above; a faint doubled contour can show on limbs
- **Style** β€” on stylised prompts, _how_ the picture should look (crisp linework, brush strokes, fingerprints in clay, a matte-painting finish) is followed less faithfully than _what_ should be in it
- **Repeats** β€” on busy action or crowd scenes the composition can repeat itself: an extra hand or held object, a figure duplicated in a crowd
- **Different composition** β€” two steps is a shorter path from the same noise, so framing, pose or arrangement can differ from the 8-step render at the same seed. Treat the teacher's render as a quality reference, not the picture two steps will reproduce
- **Skin and colour** β€” skin slightly smoother and less saturated than the teacher's, colour a little under it at the largest sizes; freckles gather into clusters rather than separate dots
- **Grain** β€” a fine grain remains on the most textured subjects at the largest sizes, lighter than in the previous checkpoint

Every one is being worked on; none is hidden in the sweeps or the examples.

---

## Method

**Distribution matching (DMD2 family) with a trajectory anchor**, Krea 2 Turbo as its own teacher, on the recorded 8-step trajectories.

The student makes two calls, at Οƒ = 1.0 and 0.7595 β€” the first and fifth points of the teacher's 8-step grid at ΞΌ = 1.15 β€” with stock Euler between them. Euler's first step lands **exactly** on the flow-matching interpolant at Οƒ = 0.7595, so the first call's output is a legitimate image prediction and is judged as one.

- **Distribution term** β€” the frozen teacher and a _fake-score_ adapter (rank 32, trained online on the student's current output, 4 updates per student step, discarded at the end) each denoise a freshly noised copy of the student's image; where they disagree is the direction toward the teacher's work. Averaging is never rewarded, so the student commits
- **Trajectory anchor** β€” regression on the recorded chords at half weight keeps the student on the teacher's two-step grid

**On top, each capped relative to the distribution term:**

- **Spectral match** β€” student and teacher images compared through radial power spectra, on the whole latent and a decoded 256-px window, two-sided β€” the term that reached the 16/8-px grid grain at large sizes
- **Three critics taking turns** β€” artefact, photo (half real photographs) and face heads on the frozen base's mid-network features; one pushes per step, filtered to structure finer than 32 px (photo critic: 24 px)
- **Four detail terms** β€” anchor counts fine-detail error twice; one-sided photo floor at 3–10 px; the teacher's finish of the student's first call as the second call's target; smoothness limit on the fake adapter

Shipped adapter is the **running (EMA) average** of the weights, not the last live state.

---

## What the LoRA Touches

Rank **64**, alpha = rank (scale 1.0), bf16 β€” the same **228 modules** as the [4-step adapter](https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA):

- **224 block linears** β€” all 28 transformer blocks: `to_q`, `to_k`, `to_v`, `to_gate`, `to_out.0`, `ff.gate`, `ff.up`, `ff.down`
- **4 global linears** β€” `time_embed.linear_1`, `time_embed.linear_2`, `time_mod_proj`, `final_layer.linear` β€” the ones a step-count change needs most

Nothing about the base model changes.

---

## Training Data

- **13,750 recorded teacher trajectories** from the [4-step project](https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA), prompts from [Lakonik/t2i-prompts-3m](https://huggingface.co/datasets/Lakonik/t2i-prompts-3m) β€” Turbo's own 8 steps at ΞΌ = 1.15, guidance 0.0, every latent and velocity stored; a 2-step chord is two 4-step chords end to end
- **203 held-out prompts** β€” measure the student–teacher gap, never receive a gradient
- **43,044 real-photo crops** from the 4-step project β€” set the photo floor (one precomputed statistic) and make up half of the photo critic's real examples

Only the photo critic's head sees the photos; the student and the fake adapter receive only its filtered, capped push. No new prompts, text embeddings or teacher runs.

---

## Resolutions (12 buckets)

|           |           |           |
| --------- | --------- | --------- |
| 512Γ—512   | 512Γ—768   | 768Γ—512   |
| 768Γ—768   | 768Γ—1024  | 1024Γ—768  |
| 1024Γ—1024 | 960Γ—1280  | 1280Γ—960  |
| 1280Γ—1280 | 1440Γ—1280 | 1440Γ—1440 |

Same 12 buckets as the 4-step adapter, interleaved in proportion to their remaining samples.

---

## Hardware

Trained on a **single RTX 3090 (24 GB)**. Frozen base **weight-only int8**. Every term fits up to 1440Γ—1440 via:

- Checkpointed block inputs staged to pinned host memory above 0.3 MP
- Student, fake adapter, spectral and detail terms, critic and teacher finish each build and free their own graph β€” peaks never overlap
- Hard memory ceiling below the driver's paging threshold, so a step that doesn't fit fails loudly

A full step with every term live reserves ~22.4 GB at 1440Γ—1440. Throughput is **~107 samples/hour** against the 4-step recipe's 470 β€” roughly a dozen model runs per sample instead of two. That is the objective's cost, not teacher generation: the trajectories were recorded once and are read from disk.

Released LoRA is **bf16**.

---

## Usage Notes

- 🎯 **Krea 2 Turbo only** β€” trained against Turbo's weights and schedule; on Raw it is a side effect (see [Using it on Raw](#using-it-on-raw))
- 🚫 **Keep guidance at 0.0** (ComfyUI: **cfg 1.0**, not 0.0)
- πŸ“ **Keep ΞΌ = 1.15** β€” the two training sigmas are anchored to that grid
- πŸ§ͺ **Not a finished adapter** β€” for previews and drafts; a later checkpoint replaces this one only when the sweeps and I visually agree it is better
- πŸ”¬ Training used an int8 base; released LoRA is bf16

---

## Examples

Every sheet below: base model (8 steps), base at 2 steps **without** LoRA, base at 2 steps **with** LoRA β€” same seed throughout. Compare panels 2 vs 3 to isolate LoRA effect; panel 1 is the quality bar, not a pixel target. NFE = steps (Turbo is CFG-free).

### Portrait of a young woman with freckles and windswept auburn hair...

[![portrait comparison](assets/thumbs/portrait_compare_turbo.jpg)](assets/portrait_compare_turbo.jpg)

| Turbo 8 steps                                                                         | Turbo 2 steps, no LoRA                                                                | **Turbo 2 steps + LoRA**                                                                               |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| [![8 steps](assets/thumbs/portrait_turbo_8step.jpg)](assets/portrait_turbo_8step.jpg) | [![2 steps](assets/thumbs/portrait_turbo_2step.jpg)](assets/portrait_turbo_2step.jpg) | [![2 steps + LoRA](assets/thumbs/portrait_turbo_2step_lora.jpg)](assets/portrait_turbo_2step_lora.jpg) |

---

### Kingfisher bursting out of water...

[![kingfisher comparison](assets/thumbs/kingfisher_compare_turbo.jpg)](assets/kingfisher_compare_turbo.jpg)

| Turbo 8 steps                                                                             | Turbo 2 steps, no LoRA                                                                    | **Turbo 2 steps + LoRA**                                                                                   |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [![8 steps](assets/thumbs/kingfisher_turbo_8step.jpg)](assets/kingfisher_turbo_8step.jpg) | [![2 steps](assets/thumbs/kingfisher_turbo_2step.jpg)](assets/kingfisher_turbo_2step.jpg) | [![2 steps + LoRA](assets/thumbs/kingfisher_turbo_2step_lora.jpg)](assets/kingfisher_turbo_2step_lora.jpg) |

---

### Rainy night city street with glowing neon signs...

[![neonstreet comparison](assets/thumbs/neonstreet_compare_turbo.jpg)](assets/neonstreet_compare_turbo.jpg)

| Turbo 8 steps                                                                             | Turbo 2 steps, no LoRA                                                                    | **Turbo 2 steps + LoRA**                                                                                   |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [![8 steps](assets/thumbs/neonstreet_turbo_8step.jpg)](assets/neonstreet_turbo_8step.jpg) | [![2 steps](assets/thumbs/neonstreet_turbo_2step.jpg)](assets/neonstreet_turbo_2step.jpg) | [![2 steps + LoRA](assets/thumbs/neonstreet_turbo_2step_lora.jpg)](assets/neonstreet_turbo_2step_lora.jpg) |

---

### (12 more examples, and a two-panel sheet against the teacher for every prompt, in the [full version](DETAILED-README.md) β€” see [assets/](assets/) for all 15 prompts)

---

## Resolution Sweeps

[`assets/resolution_sweeps/`](assets/resolution_sweeps/) β€” **this LoRA at every trained resolution for all 15 test prompts** (same prompts, seed, 2 steps, strength 1.0). Nothing cherry-picked.

[`_teacher-8step/`](assets/resolution_sweeps/_teacher-8step/) β€” official Krea 2 Turbo 8-step reference renders for the same prompts/seeds/resolutions. [`_turbo-base-NO-LoRA-2step/`](assets/resolution_sweeps/_turbo-base-NO-LoRA-2step/) β€” stock Turbo at 2 steps, the floor.

Layout:

```
assets/resolution_sweeps/
β”œβ”€β”€ _teacher-8step/              8-step stock Turbo reference
β”‚   β”œβ”€β”€ 512x512/
β”‚   β”œβ”€β”€ 1024x1024/
β”‚   └── ... (all 12 buckets)
β”œβ”€β”€ _turbo-base-NO-LoRA-2step/   Same tree, stock Turbo at 2 steps (the floor)
β”œβ”€β”€ 2step-LoRA/                  Same tree, this LoRA at 2 steps (the published checkpoint)
β”œβ”€β”€ _turbo-base-NO-LoRA-1step/   Stock Turbo at 1 step (bonus section)
β”œβ”€β”€ 1step-LoRA-extreme/          This LoRA at 1 step, with side-by-side strips (bonus section)
└── raw-LoRA-7steps-experiment/  Krea 2 Raw + this LoRA at 7 steps (Using it on Raw)
```

---

## Bonus: 1-Step Extreme Test

> **Out-of-spec experiment β€” not recommended for any use.** Trained for 2 steps; at 1 step it runs half its trained count and an eighth of the teacher's.

Stock Turbo returns a smear at one step β€” a colour field with a ghost of the subject. With the LoRA the same single call is a coherent picture: subject, composition, lighting and colours all there. Missing is the detail the second step adds β€” soft skin, streaked hair and fur, little of the finest structure (feathers, falling snow, small text). A rough **preview of composition and colour** at an eighth of the teacher's cost, nothing more.

Full set at all 12 resolutions, render + side-by-side strip per prompt: [`assets/resolution_sweeps/1step-LoRA-extreme/`](assets/resolution_sweeps/1step-LoRA-extreme/). Stock Turbo at 1 step: [`_turbo-base-NO-LoRA-1step/`](assets/resolution_sweeps/_turbo-base-NO-LoRA-1step/)

> πŸ”­ **A 1-step adapter is a possible follow-on** β€” a booster on top of this LoRA, trained by distribution matching alone and judged on seed variety as much as detail. Expectation: a usable preview at an eighth of the teacher's cost, not the quality bar.

---

## Archive

Every published checkpoint and its resolution sweep under [`_archive/`](_archive/) β€” [`checkpoints/`](_archive/checkpoints/) and [`resolution_sweeps/`](_archive/resolution_sweeps/), each under its number. Superseded, not maintained.

---

## What's next

Training continues from this checkpoint, one recipe change at a time, each kept only if the pictures do not degrade at any resolution β€” aiming at the best quality two steps can give, not at matching the [4-step LoRA](https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA).

Next, aimed at the [Known Issues](#known-issues): a first call that blends two layouts caught where the blend happens; detail held to the teacher region by region, with a ceiling as well as a floor; photographic grain kept off illustration, anime and 3D; sharper eyes, nose and lips with skin kept the teacher's; colour at large sizes held up to the teacher's; a more even mix of resolutions. After that, prompt adherence on stylised prompts β€” none of it allowed to cost the sharpness this checkpoint gained.

A better checkpoint replaces this one when the sweeps and I visually agree; until then the 4-step adapter remains the recommendation for quality renders, and this one is the fast preview.

---

## Detailed Model Card

For more details, if interested, have a look at the [Detailed Model Card](DETAILED-README.md).

---

## License

This adapter is a **Derivative of Krea 2 Turbo** under the [Krea 2 Community License Agreement](LICENSE.pdf). Everything the agreement says about Krea 2 Turbo applies to this LoRA: [Acceptable Use Policy](https://krea.ai/krea-2-use-policy), revenue threshold for commercial use, content-filtering duty for deployments.

Copy of agreement: [`LICENSE.pdf`](LICENSE.pdf), required notice: [`NOTICE.txt`](NOTICE.txt). See [krea.ai/krea-2-licensing](https://krea.ai/krea-2-licensing).

**Not an official Krea product, not endorsed by Krea.** Base model is Krea's; adapter weights and everything else in this repo are mine.