AI · Model-Specific Setups

Flux.2 — Klein 4B

4 steps, 36 seconds, better results than Flux.1 dev — and Apache 2.0.

The Swiss Army knife of diffusion models

My tests started with Flux.2 dev — the flagship of the family, 32 billion parameters, and by all accounts the current state of the art in AI image generation. It runs on a MacBook Pro with 64 GB Unified Memory. But at render times around 45 minutes per image, that's not a workflow — that's waiting. Flux.2 dev simply isn't built for local operation on normal hardware.

Klein 9B was the next step. Smaller, faster — but the encoder for 9B is 8 GB, the model itself another ~10 GB. Model and encoder both need to be in memory simultaneously, alongside Stability Matrix and a browser. On 16 GB that gets tight to impossible.

Klein 4B was the surprise.

Flux2 klein 4B

Flux2 klein 4B

What Klein 4B is

Klein 4B is a distilled model — trained to reach in 4 steps a result equivalent to a full Flux run at 20–25 steps. The diffusion model is 4.3 GB. The encoder in the quantized variant (Q6) is 3.66 GB. Both fit on 16 GB — together with Stability Matrix and open browser tabs, without clearing anything.

The encoder is Qwen 3, a 4-billion-parameter language model. No CLIP, no T5 split, no two-field interface. One text field, continuous prose. The prompt logic from 2.4.3 — Prompts for Flux transfers directly.

What it delivers

Benchmark figures — all at 1024×1024, warm (models already in memory):

Model MacBook Pro 64 GB MacBook Air 16 GB
SDXL 143 s ~300 s
Flux.1 dev 360 s — (OOM)
Klein 4B 36 s 90 s

Factor 10 against Flux.1 dev on the Pro. Factor 3.3 against SDXL on the Air — on a machine where Flux.1 dev doesn't run at all.

That alone would be remarkable. What my tests showed in addition: Klein 4B delivers better results than Flux.1 dev — consistently, not as an isolated case. With decorative elements, lighting direction, material transitions. A model with a third of the parameters, computing in a tenth of the time, and convincing on quality — that was the real revelation of these tests.

Flux.1 dev has 12 billion parameters — three times as many — and takes ten times as long. That Klein 4B doesn't fall behind qualitatively but comes out ahead suggests that Flux.2 does something architecturally different — not just scaled down.

Setup

Files and target folders

16 GB (MacBook Air) — 90 s warm:

File Size Target folder
flux-2-klein-4b-Q8_0.gguf 4.3 GB diffusion_models/
Qwen3-4B-UD-Q6_K_XL.gguf 3.66 GB text_encoders/
flux2-vae.safetensors ~335 MB vae/

Total footprint ~8.3 GB. Stability Matrix and browser tabs can stay open — no clearing required.

64 GB (MacBook Pro) — 36 s warm:

Same configuration, optionally with qwen_3_4b.safetensors (BF16, 8 GB) instead of the quantized encoder. The diffusion model stays GGUF in either case — so the custom node and Python package need to be installed regardless of encoder choice.

Sources

File Repository
flux-2-klein-4b-Q8_0.gguf unsloth/FLUX.2-klein-4B-GGUF
Qwen3-4B-UD-Q6_K_XL.gguf unsloth/Qwen3-4B-GGUF
qwen_3_4b.safetensors (BF16) Comfy-Org/vae-text-encorder-for-flux-klein-4b
→ split_files/text_encoders/
flux2-vae.safetensors Comfy-Org/flux2-dev
→ split_files/vae/

Nodes in ComfyUI

Klein 4B requires different nodes from Flux.1 dev:

Task Node
Load diffusion model Unet Loader (GGUF) — not Load Diffusion Model
Encoder BF16 CLIPLoader, type = flux2
Encoder GGUF CLIPLoader (GGUF), type = flux2
Enter text CLIP Text Encode — not CLIPTextEncodeFlux

No two-field interface, no clip_l/t5xxl split. One text field.

MPS rule

Anything with fp8 or fp4 in the filename won't run on Apple Silicon — MPS cannot process these formats. The official ComfyUI documentation links exactly these files as the default. Use BF16 or GGUF instead.

Required step: setting up GGUF support

The diffusion model is in GGUF format — a quantization format that originated in the LLM world. ComfyUI can't load GGUF files natively; it needs a custom node (ComfyUI-GGUF by city96) and a Python package.

Step 1 — Install Python package

Stability Matrix → ComfyUI package → three-dot menu → Python Packages+ → search for gguf → install. This step must come first.

Step 2 — Install custom node

ComfyUI → ManagerInstall via Git URLhttps://github.com/city96/ComfyUI-GGUF → install.

Then stop ComfyUI and restart. Verify: Add Node → bootleg → Unet Loader (GGUF) — if the node appears, everything is installed correctly.

The most common mistake: the custom node installs without error but doesn't show up anywhere. The cause is almost always the missing Python package — which is why Step 1 comes first. Whether this stumbling block occurs identically on Windows I haven't tested.

Parameters

CFG 1.0 means: no functioning negative prompt. Rephrase unwanted elements positively — exactly as with Flux.1 dev, only more consistently.

Steps:      4  (Flux2Scheduler)
CFG:        1.0  (CFG Guider)
Sampler:    euler
Scheduler:  simple

License

Klein 4B is the only model in the Flux family under Apache 2.0 — no usage restrictions, no open legal questions for commercial work. Klein 9B and Flux.2 dev run under Black Forest Labs' non-commercial license, with the same open questions as Flux.1 dev. More on this in 2.1.4 — Understanding licensing.

And RAY-L?

Klein 4B has convinced me enough that integration into RAY-L is decided — as soon as ControlNet Canny for Klein 4B becomes available. Currently it doesn't exist: no ComfyUI-compatible ControlNet Canny exists for either 4B or 9B. For RAY-L v1.0, Flux.1 dev remains the choice.

But Klein 4B belongs on the watch list from here on. Factor 10 faster, better results, Apache 2.0, runs on 16 GB — when ControlNet Canny arrives, the integration follows.