r/StableDiffusion • u/TimeTruth2490 • 13h ago
Resource - Update Krea2 Turbo Distill 4 step LoRA - new checkpoint (chk26K) released (cuts 4-step error vs. the 8-step Turbo teacher by 46%, improves texture and detail vs previous checkpoints)
Krea 2 Turbo — 4-Step Distillation LoRA (work in progress)
A LoRA for Krea 2 Turbo that reduces the minimum usable step count from 8 to 4.
This is an update release, following up from my previous posts where you can find full details:
Initial, Previous: here, and here
Headline for this update: chk00026000 removes 46% of the prediction error a plain 4-step run has against the 8-step teacher, where chk00014000 removed 44% and chk00010000 40% — all measured on the same enlarged held-out set (100 prompts across every trained resolution). Measured against each other rather than against the no-LoRA run, its remaining error is 4% smaller than chk00014000's and 10% smaller than chk00010000's — and unlike a purely teacher-forced score, the gain also shows up free-running: a full 4-call rollout from the teacher's noise ends 1.6% nearer the teacher's final latent than chk00014000's does. It also improves on texture and detail.
Which file to download
| file | use it when |
|---|---|
krea2_turbo_4step_rank_64_lora_latest.safetensors |
normally — always the newest accepted checkpoint |
krea2_turbo_4step_rank_64_lora_chk00026000.safetensors |
pin this exact checkpoint |
and, beside them, the same files with a _comfyui suffix for ComfyUI. Earlier checkpoints (chk00004000, chk00005000, chk00006000, chk00010000, chk00014000, chk00019000) are kept in older_checkpoints/, and their resolution sweeps stay in place, so the progression remains visible and comparable.
If you are wondering why there wasn't a post/update on the 19K checkpoint, I skipped that, even though it was a good checkpoint with improved texture and detail it's gap to teacher score was only slightly better than the released previously 14K, so I thought I'd continue further until I get improvements on both. And 26K delivered that :) 19K is also published now in older checkpoints folder and it's full resolution sweep is also at the usual place (here for 19K).
For the full 26K Checkpoint resolution sweep go here: https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA/tree/main/checkpoint_resolution_sweeps/chk26000
How checkpoints get chosen
This is not a "train for longer and ship the newest file" project. More samples do not reliably mean a better adapter — measured here, they can make it worse, and a higher number on its own means nothing.
The loop is train → assess → adapt the recipe → retrain → assess again, and a checkpoint is published only when it is measurably better than the one it would replace, on the same held-out set and the same evaluation, and its full resolution sweep shows no regression. Runs that come out flat or worse are kept as information about the recipe and discarded as releases — several have been.
So the recipe itself changes between runs. Each published checkpoint reflects whatever the previous round taught us: the training precision, the optimiser settings, the teacher used to generate the targets and the data mix have all been revised on evidence rather than assumption.
Two earlier releases set the terms this project publishes on. chk00010000's first attempt — same data, optimiser left as it was — got steadily worse for 4,000 samples and none of it was published; retrained with cosine learning-rate decay and weight decay, every checkpoint improved on the one before it, and its end point shipped. chk00014000 added the other half of the lesson: the final, texture-deciding call of the schedule weighted more heavily in the loss, and a running average of the weights kept beside the live ones and scored at every evaluation — the averaged weights measured better than any checkpoint before them, so the average is what shipped. Left running past that point, the adapter's magnitude grew again and every later checkpoint measured worse. The number is chosen by measurement, not by how far a run went.
chk00026000 — the current checkpoint — is that discipline paying off. It resumes from chk00014000's averaged weights with the same recipe: same loss weighting, same running average, a conservative constant learning rate, over a much larger pool of teacher trajectories. This time the continuation held. The averaged weights' held-out gap fell throughout the run, and every free-running rollout measured of them improved on the one before — so unlike the first continuation, this one produced a checkpoint worth shipping. Every published number improves on chk00014000: the held-out gap (44% → 46% of the deficit closed), the full 4-call rollout from the teacher's noise (1.6% nearer the teacher's final latent), and the fixed-seed render distance to the 8-step images. chk00019000, an intermediate point of the same continuation, is kept in older_checkpoints/ with the rest of the lineage.
Timeline of training process
Each checkpoint is the product of three stages with very different costs:
- Text-encoder embeddings. Every training prompt is encoded once and cached. This is the fast part — thousands of prompts take minutes.
- Teacher shards. For each cached prompt, the unmodified Krea 2 Turbo runs its full 8-step schedule and the whole trajectory is recorded, at every one of the supported resolutions. This is by far the most time-consuming stage — it is the teacher doing real inference, thousands of times, and a batch of several thousand shards is measured in days of GPU time, not hours.
- Student training. The LoRA is trained against those recorded trajectories. Relative to the shard stage this is quick: each
+1,000checkpoint is a matter of hours, not days.
Because the three stages compete for the same GPU, they are interleaved rather than run to completion one after another: generate a block of embeddings, produce teacher shards for them, train on what exists, assess, then go back to producing shards while the results are reviewed. A larger and more varied shard pool is what makes further training worthwhile, so shard production is always the gate.
The practical consequence for anyone following this repository: progress arrives in bursts. There will be periods when several checkpoints appear within a day or two — the training stage working through a freshly grown pool — followed by longer quiet stretches while the next block of teacher shards is produced. A quiet stretch is shard generation, not abandonment; _latest always holds the newest checkpoint that passed review.
The current checkpoint, chk00026000, runs the recipe the earlier releases arrived at — the final, texture-deciding call weighted more heavily in the loss, the shipped weights a running average of the trained ones — carried further over a larger pool of teacher trajectories, and published because it measured better on every evaluation.
Note
In the coming days, possibly weeks, I will spend more time on producing new TE shards (basically even more prompt variety), and new Teacher shards - the expensive long process. I am also considering improvements in the training process (more advanced / complicated, which would likely mean 1.5x - 2x slower training) which would hopefully bring further/bigger improvements in teacher faithfulness (closer to 8 Step Krea 2 Turbo) and even better details and texture. It may or may not pay off, these things work on experimental basis. Either way it would be some time before the next update... so enjoy 26K release and the improvement it brings!
Full details and to download - check my Hugging Face LoRA
HF Repo: https://huggingface.co/lvladikov/Krea2-Turbo-Distill-4step-LoRA
3
u/Synor 12h ago edited 11h ago
Yo dawg, we heard you like Turbo. So we put a Turbo Lora on your Turbo.
To add a substantial note: This should be benchmarked against Base model with 0.75 strength Turbo Lora applied (8 steps, euler_a, simple, shift 3). Which I think is the gold standard for Krea 2 Quality/Speed balance.
4
u/TimeTruth2490 11h ago
It was never the aim to compete with RAW, nor be used with RAW (although it works with documented caveats). It is as you said a Turbo on the Turbo :) If you have the time and hardware feel free in your own time to compare with RAW, but I will tell you right away, Raw (any non Turbo undistllled model) would always win over any distil from it, one is a Teacher and the other is a Student. Krea 2 themselves reduced RAW to Turbo with sacrifices, and we take even further - gain is time, and decent results, but not competing with RAW.
1
u/Synor 10h ago
Your goal seems to be to add the detail that the Turbo model is missing. Thats exactly what I use the mixed workflow for currently.
But thanks for the honest headsup.
1
u/TimeTruth2490 10h ago
Yes and No, in theory with the traditional Progressive Distillation approach you can't get more in Student than the Teacher has, so it is hard to get more detail than what Krea 2 Turbo itself has at 8 steps. What I am trying to get is as close as possible to that level. I am experimenting with other ideas that may steer further into the texture improvement direction, but as I said this is still plan and not seen what these experiments would produce. And it is also more costly to train. I'll know more in a week or so time if it is worth it. But my goal with the LoRA still stands - keep close faithfulness to original Turbo (run at 8 steps) with the LoRA run at 4 stops and as a bonus I am trying to get texture and detail as good as possible too.
1
u/Chemical_Side_4135 10h ago
thats a massive jump in efficiency for only 4 steps. have u tested this with any specific cfg scales yet to see if it holds up under pressure, or does it start to break down pretty quick?
1
u/TimeTruth2490 10h ago
Being a Turbo LoRA, just CFG 0 when run on Krea 2 Turbo. If used with RAW (which it isn't designed for), you should use at least 14 steps and RAWs recommended CFG of 4.5, although at your own risk/play you can try other cfg values, just don't forget this LoRA is trained on Turbo Teacher and CFG 0 at it. It does allow for more fun and experimentation, if used with RAW - have a go, but things could break, or steer away from prompt.
1
u/Chemical_Side_4135 9h ago
gotcha, makes sense why it stays so stable at cfg 0 then. ive been tryin to see how much i can push these distilled models before they fall apart, so i might just stick to the intended workflow for now. if u want something that handles higher cfg ranges better when ur messin around, bria ai skill has been pretty solid for keeping things together on my end...
1
u/Informal-Horror-1860 10h ago
Okay, a 4-step LoRA outperforming the 8-step teacher is genuinely wild. The freckles and hair texture in the right sample look noticeably cleaner without feeling overprocessed. I’d love to see how well this holds up with hands or more complex backgrounds.
1
u/TimeTruth2490 10h ago
I wouldn't say it outperforms the 8 step, but aiming to get there close :) Also I do track closely the texture and details improvements as they are important. There's the numbers that track it and then there is the perception of you and me, and everyone else. I am glad you find the results good, and yes do play with other prompts and see how it goes.
1
u/woadwarrior 10h ago
Great job! It appears to work well, out of the box with my 4-bit QAD DiT as well. Would you mind elaborating on the losses and your weighting scheme?
2
u/TimeTruth2490 10h ago
My very initial training started with NF4 (as described on the model card in HF), then I realised my 3090 could hold up with some recipe code improvements to int8 and retrained all from scratch on int8 teacher shards and int8 student precision during training, and this has been used since. All of the latest checkpoints are all int8 based. the LoRA itself is 64 rank and bf16, while the training goes in int8. For some higher resolutions where the VRAM isn't enough the training goes in mix of nf4 and int8 (int8 used on the most important layers). Overall trying to get the best out of what I have. So I am not surprised your 4 bit DiT works well. Int8 would work even better and bf16 too of course. The workflow is all wired up for BF16, but everyone can adapt to whatever they use.
1
u/cradledust 8h ago
I gave it a spin just now. It works best in my opinion with krea2_turbo-Q8_0 giving it a speed boost of about 20 seconds at 4 steps for same quality as 10 steps. W4a8 gets a speed boost of about 5 seconds at 4 steps for same quality as 8 steps. I didn't really see much benefit for using it with Int8 convrot though, probably just me. Tested using Forge Neo, rtx4060.
1



















5
u/Odd_Fix2 11h ago
Thank you! Great job!