Downloads · 30 days
15
20% of all-time downloads
sintecs/flux2-klein-9b-snofs-v1-4-merged
flux2-klein-9b-snofs-v1-4-merged is a text-to-image model from sintecs. Use it when you need an image from a text prompt. It is set up for diffusers.
black-forest-labs/FLUX.2-klein-9B (the distilled 9B Klein, isdistilled: true) with the SNOFS v1.4 LoKr checkpoint merged into the transformer weights at strength 1.0.
Downloads · 30 days
15
20% of all-time downloads
All-time downloads
75
Public
Parameters
9.1B
34.7 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors34.7 GB · 100%
From the Hugging Face model README
black-forest-labs/FLUX.2-klein-9B
(the distilled 9B Klein, is_distilled: true) with the SNOFS v1.4 LoKr
checkpoint merged into the transformer weights at strength 1.0.
LoRA source:
Ashen3/SNOFS -> Klein9b/klein_snofs_v1_4.safetensors.
SNOFS v1.4 ships as a direct LoKr checkpoint: 112 modules of lokr_w1 /
lokr_w2 (+ alpha). diffusers has no LoKr support, and the delta
kron(w1, w2) is full-rank - not the low-rank A/B decomposition the PEFT
adapter machinery expects - so there is no load_lora_weights() path for it.
The only way to apply it inside diffusers is an in-place merge into the
transformer weights, which is what this repo contains.
Practical consequence: the LoRA is baked in at a fixed strength and cannot be re-weighted per request. Ordinary LoRA adapters still attach on top of this model normally.
Merged on CPU, in bfloat16, before moving to the GPU:
delta = torch.kron(w1.float(), w2.float()).reshape(target_shape)
module.weight.data.add_(delta.to(module.weight.dtype), alpha=1.0)
Fused QKV deltas are split by output dim across to_q / to_k / to_v
(and add_q_proj / add_k_proj / add_v_proj), mirroring ComfyUI's direct
LoKr path. alpha is intentionally ignored, as ComfyUI does on that path.
Verification of this build: 144 target modules received a delta, 0 errored,
no unmatched keys, no non-finite weights. The nine modules the checkpoint
does not touch - x_embedder, context_embedder, both timestep_embedder
layers, proj_out, norm_out.linear and the three *_modulation.linear -
are absent from the LoKr file, which only covers the attention and MLP
linears inside the blocks.
import torch
from diffusers import Flux2KleinPipeline
pipe = Flux2KleinPipeline.from_pretrained(
"sintecs/flux2-klein-9b-snofs-v1-4-merged", torch_dtype=torch.bfloat16
).to("cuda")
image = pipe(
prompt="...",
num_inference_steps=8,
guidance_scale=1.0,
generator=torch.Generator(device="cpu").manual_seed(0),
).images[0]
Needs diffusers from main - Flux2KleinPipeline is not in a tagged
release yet. The base is distilled, so guidance_scale is ignored by the
pipeline; 8 steps is the intended budget.
Use is governed by the licence of the base model (FLUX.2 Klein) and by the terms of the SNOFS LoRA. This repository adds no separate grant.