KI · Modellspezifische Setups

Flux.3 — Klein

Ein Modell, das auf 16 GB läuft, Bilder nach Koordinaten komponiert — und einen JSON-Prompt direkt versteht.

Zwei Tage nach dem Release

Am 15. Oktober 2026 hat Black Forest Labs Flux.3 Image Klein veröffentlicht, das erste Modell der Flux-3-Familie mit offenen Gewichten. Zwei Tage später lief es auf beiden Testmaschinen. Nicht auf Anhieb: Das erste Bild war schwarz, das zweite eine Fläche ohne Motiv. Beide Fehler kamen ohne Fehlermeldung, und genau deshalb stehen sie weiter unten in einem eigenen Kasten.

Danach lief es. Auf dem MacBook Pro in voller Präzision, auf dem MacBook Air mit 16 GB quantisiert — und dort mit einer Bildqualität, die nah an Flux.2 Klein 9B herankommt, das auf dieser Maschine gar nicht startet.

Das eigentlich Neue ist aber nicht die Geschwindigkeit. Flux.3 Klein nimmt Koordinaten an: Man legt fest, wo im Bild etwas stehen soll, und es steht dort. Zusammen mit einem strukturierten JSON-Prompt wird daraus eine Steuerbarkeit, die es bei den bisherigen Modellen nicht gab.

Das Modell ist bei mir ausgiebig im Test. Was hier steht, ist der Stand nach den ersten Messreihen — kein Urteil, sondern ein Zwischenbericht, der mitwächst.

Ferienhaus in den Dünen, unscharfes Gras im Vordergrund links — Flux.3 Klein, JSON-Prompt mit Bounding Boxes
Flux.3 Klein · BF16 · MacBook Pro · 16:9 · JSON-Prompt mit Bounding Boxes

Was Flux.3 Klein ist

Anders als Flux.2 Klein gibt es Flux.3 Klein nur in einer Größe: 5,6 Milliarden Parameter. Die Wahl liegt woanders, zwischen zwei Formen desselben Modells. Die distillierte Variante kommt in 4 bis 16 Steps zu einem fertigen Bild, ohne CFG. Die Base-Variante braucht 50 Steps bei CFG 3.5 und ist für Fine-Tuning und LoRA-Training gedacht. Für die Bildarbeit ist die distillierte die richtige.

Der Text-Encoder ist Qwen3-VL-4B — ein Sprachmodell, das auch Bilder versteht. Das ist mehr als ein technisches Detail: Ein Sprachmodell liest einen Prompt so, wie ein Mensch ihn liest, und das wird beim Prompten wichtig. Die VAE ist dieselbe wie bei Flux.2. Wer Flux.2 Klein eingerichtet hat, hat sie schon im Ordner.

Neben Text-zu-Bild kann das Modell vorhandene Bilder bearbeiten, bis zu zehn Referenzbilder kombinieren und Bildelemente über Bounding Boxes platzieren. Black Forest Labs sieht Flux.3 Klein in den eigenen Vergleichen vor Flux.2 Klein 9B. Das sind Herstellerangaben — die eigenen Vergleiche folgen unten.

Was es leistet

Die Messwerte — alle bei 1024×1024, warm (Modelle im Speicher), 16 Steps:

Modell MacBook Pro 64 GB MacBook Air 16 GB
Flux.2 Klein 4B 36 s 90 s
Flux.2 Klein 9B 75–85 s — (nicht praktikabel)
Flux.3 Klein 171 s (BF16) 378 s (Q4_K_M + int8)
Flux.1 dev 360 s — (OOM)

Flux.3 Klein ist langsamer: auf dem Pro rund fünfmal so lange wie Flux.2 Klein 4B, doppelt so lange wie Flux.2 Klein 9B. Die interessantere Zeile ist die rechte Spalte. Auf dem Air läuft Flux.3 Klein in gut sechs Minuten — schneller als Flux.1 dev auf dem Pro, das auf dem Air gar nicht erst startet.

Bei der Qualität liegt Flux.3 Klein auch in der quantisierten Fassung nah an Flux.2 Klein 9B. Gleicher Prompt, gleicher Seed: Die Grundcharakteristik der Bilder ist sehr ähnlich. Flux.2 Klein 4B setzt denselben Prompt ebenfalls um, zeigt aber deformierte Elemente und weniger Details. Für 16-GB-Hardware heißt das: Bisher war Flux.2 Klein 4B die einzige Option, jetzt gibt es eine zweite, die eine Stufe höher liegt.

16 Steps sind der Standard von Black Forest Labs. In meinen Tests haben 12 Steps keinen sichtbaren Verlust gebracht — auf dem Air 272 statt 378 Sekunden. Die Step-Reihe mit 4, 6, 8, 12 und 16 Steps läuft.

Flux.2 Klein 4B im Vergleich

Flux.2 Klein 4B

Flux.2 Klein 9B im Vergleich

Flux.2 Klein 9B

Flux.3 Klein im Vergleich

Flux.3 Klein · Q4_K_M · Air

Setup

Dateien und Zielordner

64 GB (MacBook Pro) — 171 s warm:

Datei Größe Zielordner
flux3-image-klein-bf16.safetensors 11,1 GB diffusion_models/
qwen3vl_4b_bf16.safetensors 8,9 GB text_encoders/
flux2-vae.safetensors 336 MB vae/

Volle Präzision ohne Quantisierung. Auf 64 GB ist Speicher kein Engpass, und BF16 ist die Referenz, an der sich jede quantisierte Fassung messen muss.

16 GB (MacBook Air) — 378 s warm:

Datei Größe Zielordner
flux-3-image-klein-Q4_K_M.gguf 3,67 GB diffusion_models/
qwen3vl_4b_int8_convrot.safetensors 4,9 GB text_encoders/
flux2-vae.safetensors 336 MB vae/

Gesamtbedarf knapp 9 GB. Die Speicheranzeige bleibt dabei grün. Der BF16-Encoder würde mit 8,9 GB allein mehr als die Hälfte des Speichers belegen — die int8-Fassung halbiert das und läuft auf Apple Silicon, dazu mehr in der MPS-Regel unten. Das Diffusionsmodell im GGUF-Format braucht den Custom Node ComfyUI-GGUF und das Python-Package gguf, eingerichtet wie auf der Flux.2-Klein-Seite beschrieben.

Bezugsquellen

Datei Repository
flux3-image-klein-bf16.safetensors black-forest-labs/flux-3-image-klein-comfy
→ diffusion_models/
qwen3vl_4b_bf16.safetensors
qwen3vl_4b_int8_convrot.safetensors
black-forest-labs/flux-3-image-klein-comfy
→ text_encoders/
flux-3-image-klein-Q4_K_M.gguf unsloth/flux-3-image-klein-GGUF
→ nicht das Repo mit „-base“
flux2-vae.safetensors black-forest-labs/flux-3-image-klein-comfy
→ vae/ (identisch mit der Flux.2-VAE)

Die Repositories sind zugangsbeschränkt: Erst auf der Modellseite bei Hugging Face die Lizenzbedingungen akzeptieren, dann herunterladen. Und auf die Dateinamen achten. Black Forest Labs hat sie einen Tag nach dem Release umbenannt: Die distillierte Variante heißt jetzt flux3-image-klein-… mit Bindestrichen, die Base-Variante trägt -base- im Namen. Die ComfyUI-Dokumentation nennt zum Teil noch die alten Namen mit Unterstrich und dem Kürzel _sd_ für die distillierte Variante.

Den Prompt Upsampler aus demselben Repository brauche ich nicht. Er ist ein eigenes Sprachmodell mit 9 Milliarden Parametern, das kurze Prompts vor der Generierung ausformuliert. Wer seine Prompts selbst schreibt, will genau das nicht — und auf 16 GB ist dafür ohnehin kein Platz.

Nodes in ComfyUI

Flux.3 Klein braucht ComfyUI ab Version 0.41. Die mitgelieferten Templates („Flux.3 Image Klein Distilled: Text to Image“) sind ein guter Ausgangspunkt. Sie haben den Upsampler standardmäßig eingeschaltet — über enable_prompt_upsampler ausschalten.

Aufgabe Node
Diffusionsmodell BF16 Load Diffusion Model
Diffusionsmodell GGUF Unet Loader (GGUF)
Encoder BF16 und int8 CLIPLoader, type = flux3 — nicht CLIPLoader (GGUF)
Text eingeben CLIP Text Encode

MPS-Regel

Wie bei Flux.2 Klein: Alles mit fp8 oder nvfp4 im Dateinamen ist auf Apple Silicon nicht lauffähig. Neu ist int8_convrot: ein Format, das für NVIDIA-Karten optimiert wurde, aber über einen allgemeinen PyTorch-Pfad auch auf dem Mac rechnet. Getestet mit dem Encoder auf dem Air — er läuft, mit halbem Speicherbedarf gegenüber BF16.

Drei stille Fehler

Ein Fehler mit Meldung ist schnell gefunden. Diese drei laufen ohne Meldung durch und liefern ein Bild — nur das falsche.

Schwarzes Bild

Ursache: ComfyUI läuft mit der Startoption --force-fp16, früher eine verbreitete Empfehlung für den Mac. Flux.3 Klein ist in BF16 trainiert. In fp16 laufen Zwischenwerte über, am Ende stehen ungültige Werte im Bild, und die VAE macht daraus Schwarz. Lösung: die Option in Stability Matrix unter Launch Options entfernen.

Bild ohne Motiv

Ursache: Der int8-Encoder hängt am CLIPLoader (GGUF) statt am normalen CLIPLoader. Er lädt ohne Warnung, aber die Gewichte werden nicht richtig zurückgerechnet. Das Modell bekommt keinen brauchbaren Prompt und malt eine Textur. Lösung: Encoder als safetensors immer im normalen CLIPLoader laden, den GGUF-Loader nur für das Diffusionsmodell.

Boxen an der falschen Stelle

Ursache: Koordinaten in der falschen Reihenfolge oder in Pixeln. Flux.3 Klein erwartet [y_oben, x_links, y_unten, x_rechts] auf einer Skala von 0 bis 1000 — y zuerst. Wer aus Gewohnheit x zuerst schreibt, bekommt ein gespiegeltes Layout. Mehr dazu im Abschnitt zum Prompten.

Parameter

Für die distillierte Variante. CFG 1.0 bedeutet auch hier: kein funktionierender negativer Prompt.

Steps:      16  (12 ohne sichtbaren Verlust)
CFG:        1.0  (CFG Guider)
Sampler:    euler
Scheduler:  Flux2Scheduler

Prompten: JSON und Bounding Boxes

Einen Negativ-Prompt gibt es nicht. Unerwünschtes wird positiv umformuliert, wie bei Flux.2 Klein: „ein leerer Strand“ statt „keine Menschen“. Das Neue liegt woanders.

Der Prompt als JSON

Ein Prompt wird nicht geparst. Er geht als Ganzes durch ein Sprachmodell, und das liest Struktur so, wie ein Mensch sie liest. Deshalb versteht Flux.3 Klein — wie schon Flux.2 Klein — einen frei gegliederten JSON-Prompt direkt: Kamera, Licht, Elemente, Wechselwirkungen, jeweils in einem eigenen Feld. Syntaxfehler verzeiht das Sprachmodell dabei, eigene Feldnamen interpretiert es richtig.

Der Vorteil zeigt sich beim Prüfen. Jedes Feld wird zu einem Punkt, den man am Bild abhaken kann. Und was ein eigenes Feld bekommt, kommt auch ins Bild: Die beiden Wechselwirkungen im Testprompt — das Dünengras überlappt die Kante des Decks, der Himmel spiegelt sich in der Glastür — standen jeweils in einem eigenen Feld, und beide wurden umgesetzt.

Was JSON allein nicht schafft, ist die Komposition. „Himmel über zwei Drittel des Bildes, Haus tief im Bild“ hat kein Modell umgesetzt, weder Flux.2 Klein noch Flux.3 Klein, auch nicht mit höchster Priorität im Feld. Eine Rangfolge hebt die Wichtigkeit, sie setzt keine Koordinaten.

Bounding Boxes

Hier setzt Flux.3 Klein an. Jedes Bildelement bekommt eine eigene Box mit Koordinaten und eine eigene Beschreibung. Die Koordinaten sind relativ, von 0 bis 1000, und gelten deshalb für jede Bildgröße — nur das Seitenverhältnis muss feststehen, bevor man die Boxen anlegt, denn das Raster dehnt sich mit dem Format.

Black Forest Labs dokumentiert dafür ein festes Format: Fließtext mit Markern, danach eine Liste der Boxen. Es geht aber auch direkt im JSON. Die Boxen stehen einfach als Feld bbox bei den Elementen:

{
  "id": "roof_1",
  "rank": 1,
  "bbox": [500, 180, 580, 820],
  "caption": "a barrel-vaulted corrugated metal roof",
  "desc": "A shallow barrel-vaulted roof of dark corrugated
           metal, one continuous gentle arch from the left
           eave to the right eave."
}

Die Struktur ist frei, die Koordinaten sind Konvention. Das Sprachmodell verzeiht ein fehlendes Komma, aber keine vertauschten Achsen: [y_oben, x_links, y_unten, x_rechts], y zuerst.

Der vollständige Prompt des Einleitungsbilds — zehn Elemente mit Boxen, Kamera, Licht und Seed — steht am Ende der Seite zum Kopieren.

Eine Bildstrecke

Derselbe Prompt wie auf der Flux.2-Klein-Seite, derselbe Seed, vier Schritte. Als Prosa und als JSON sitzt das Haus zu hoch, und das gewölbte Dach wird ein Satteldach. Mit Boxen stimmen Himmel, Haus und Dach — nur die Liegen werden Sessel. Die Box war fast quadratisch, und in eine quadratische Box passt ein aufrechter Sessel, keine flache Liege. Die Form der Box bringt Geometrie mit. Eine flache, breite Box, sonst nichts geändert: Die Liegen stimmen, und der Rest des Bildes ist praktisch unverändert geblieben.

Prosa-Prompt: Satteldach, Haus zu hoch im Bild

1 · Prosa

JSON-Prompt: Wechselwirkungen umgesetzt, Komposition nicht

2 · JSON

JSON mit Bounding Boxes: Komposition und Dach stimmen, Sessel statt Liegen

3 · JSON mit Boxen

Korrigierte Box für die Liegen, Rest unverändert

4 · Box der Liegen korrigiert

Daraus ergibt sich ein Arbeitsweg: Komposition mit Boxen anlegen, Seed festhalten, Bild prüfen, nur das fehlerhafte Element ändern. Eine gezielte Korrektur ohne Maske und ohne Inpainting. Das alles beruht bisher auf einem Motiv und einem Seed. Die Gegenproben mit weiteren Seeds und Motiven laufen, und diese Seite wird mit den Ergebnissen nachgezogen.

Wie man Prompts aus einer solchen Struktur aufbaut, behandelt die Promptschule ausführlich (in Vorbereitung).

Koordinaten ohne Messen

Von Hand lassen sich Koordinaten ausrechnen: Pixel von oben durch Bildhöhe mal 1000, Pixel von links durch Bildbreite mal 1000. Bequemer geht es in ComfyUI selbst. Im Node Create Bounding Boxes zieht man die Boxen auf einer Leinwand im Format des Ausgabebilds auf, FLUX.3 Layout Prompt hängt sie im richtigen Format an den Prompt an. Die Boxen heißen dann obj_1, obj_2 und so weiter, und der Fehler mit der Achsenreihenfolge kann nicht mehr passieren.

Bearbeiten und Referenzbilder

Flux.3 Klein kann vorhandene Bilder nach Anweisung bearbeiten und bis zu zehn Referenzbilder kombinieren, im Prompt angesprochen als <ref_image_0>, <ref_image_1> und so weiter. Black Forest Labs verspricht, dass bei einer Bearbeitung der Rest des Bildes erhalten bleibt. Die eigenen Beispiele zeigen, was das heißt: Je nach Eingriff bleiben zwischen 68 und 94 Prozent der Pixel identisch, nicht alle.

Für Produktbilder, Serien mit wiederkehrenden Figuren und Objekte, die exakt bleiben sollen, ist das der spannendste Teil des Modells. Die eigenen Tests dazu folgen.

Lokal oder über die API

Die Dokumentation von Black Forest Labs beschreibt das API-Modell. Einiges davon gibt es lokal nicht: Über die API recherchiert das Modell auf Wunsch im Web, um reale Dinge richtig darzustellen; es bietet feste Seitenverhältnisse und Auflösungsstufen bis 4K; es baut kurze Prompts automatisch aus; und es stellt unbearbeitete Bereiche nach einer Bearbeitung zusätzlich wieder her. Lokal setzt man Breite und Höhe direkt, der Upsampler ist ein eigenes Modell, und die Websuche fehlt ganz. Wer Beispiele aus der BFL-Dokumentation lokal nachbaut, sollte das wissen.

Lizenz

Flux.3 Klein steht unter einer neuen Lizenz, der FLUX Kommunity License. Sie liegt zwischen Apache 2.0 und der bisherigen Non-Commercial-Lizenz. Wer zusammen mit verbundenen Unternehmen weniger als 5 Millionen US-Dollar Jahresumsatz hat, darf die erzeugten Bilder kommerziell nutzen und das Modell dafür produktiv betreiben, ohne Lizenzgebühr. Darüber braucht es eine Lizenz von Black Forest Labs. Für Freiberufler und kleine Studios ist das eine gute Nachricht. Für die Marketingabteilung eines großen Unternehmens heißt es: vor dem produktiven Einsatz lizenzieren.

Die Lizenz verlangt außerdem, dass die erzeugten Bilder vor der Verbreitung gefiltert oder geprüft werden, und dass sie als KI-erzeugt gekennzeichnet sind, soweit das Gesetz es verlangt. Sicherheitsmechanismen des Modells zu umgehen ist ausdrücklich untersagt. Der Text-Encoder steht separat unter Apache 2.0.

Gegenüber Flux.2 Klein fällt damit ein Vorteil weg: Flux.2 Klein 4B steht unter Apache 2.0 und ist ohne Umsatzgrenze frei nutzbar. Mehr dazu in 2.1.4 — Lizenzmodelle verstehen. Maßgeblich ist die jeweils aktuelle Fassung der Lizenz; Orientierung, keine Rechtsberatung.

Und RAY-L?

Für Flux.3 Klein gibt es bisher kein ControlNet Canny. Damit fehlt, was RAY-L ausmacht: Geometrie aus Blender, Material und Licht aus dem Modell. Der Dach-Test zeigt, warum das zählt. Eine Dachform ist Geometrie, und Geometrie lässt sich einem Diffusionsmodell nur über Umwege vorgeben — über Wortwahl, Boxen und Seeds.

Die Bounding Boxes öffnen trotzdem eine Tür. Sie sind keine Geometrie, aber eine Komposition aus Koordinaten. Und Koordinaten kann Blender liefern: Für jedes Objekt lässt sich berechnen, wo es in der Kameraansicht liegt. Der Node Create Bounding Boxes nimmt Boxen auch von außen an. Ob und wann daraus eine Funktion in RAY-L wird, ist offen. Bis dahin bleiben Flux.1 dev und Krea dev im ControlNet-Slot gesetzt, mehr dazu unter 2.3.3 — Flux.1 Krea dev.

Flux.3 Klein, Q4_K_M auf dem MacBook Air mit 16 GB

Flux.3 Klein · Q4_K_M + int8 · MacBook Air 16 GB · 12 Steps · gleicher Prompt und Seed wie das Einleitungsbild

Der Prompt zum Einleitungsbild

Das Bild am Anfang und das Bild am Ende der Seite stammen aus demselben Prompt mit demselben Seed — einmal in BF16 auf dem MacBook Pro, einmal quantisiert auf dem MacBook Air. Hier ist der Prompt vollständig: Kamera und Objektiv als eigene Felder, zehn Elemente mit Box, zwei Wechselwirkungen, Licht, Stimmung und Stil. Mit demselben Seed lässt sich das Bild nachbauen und dann Box für Box verändern.

Format:     1360 × 768 (16:9)
Seed:       703147524784380
CFG:        1.0 · euler · Flux2Scheduler

Pro:        BF16 · 16 Steps    (Bild am Seitenanfang)
Air:        Q4_K_M + int8 · 12 Steps    (Bild oben)
JSON-Prompt anzeigen + aufklappen
{
  "format": { "aspect_ratio": "16:9" },
  "camera": "low eye-level viewpoint, as if someone is peering through tall dune grass; two-point perspective; the house is slightly rotated, its front facade turned about 20 degrees toward the image center, so a narrow part of the house's right side wall is visible",
  "lens": "long lens with a wide aperture, very shallow depth of field: the grass close to the camera is heavily blurred, the house is in sharp focus",
  "elements": [
    {
      "id": "grass_fg_1", "rank": 1, "bbox": [0, 0, 1000, 360],
      "caption": "tall dune grass very close to the camera",
      "desc": "Tall golden dune grass blades directly in front of the lens, strongly out of focus, soft creamy blur, filling the left third of the frame from top to bottom."
    },
    {
      "id": "house_1", "rank": 1, "bbox": [420, 380, 780, 940],
      "caption": "a minimalist single-story holiday house",
      "desc": "A minimalist single-story house clad in dark, charred vertical wood planks, slightly rotated toward the image center, sharp and in focus."
    },
    {
      "id": "side_wall_1", "rank": 2, "bbox": [440, 860, 770, 940],
      "caption": "the right side wall of the house",
      "desc": "A narrow strip of the house's right side wall in dark charred wood, receding in perspective."
    },
    {
      "id": "roof_1", "rank": 1, "bbox": [420, 380, 510, 940],
      "caption": "a barrel-vaulted corrugated metal roof",
      "desc": "A shallow barrel-vaulted roof of dark corrugated metal, one continuous gentle arch from eave to eave, its curved end visible above the right side wall."
    },
    {
      "id": "chimney_1", "rank": 3, "bbox": [350, 790, 430, 810],
      "caption": "a slim stainless steel chimney flue",
      "desc": "A slim stainless steel chimney flue rising vertically from the right part of the curved roof."
    },
    {
      "id": "doors_1", "rank": 2, "bbox": [540, 560, 750, 700],
      "caption": "large glass sliding doors",
      "desc": "Large glass sliding doors with slim black frames in the front facade, revealing a dining table with chairs and a pendant lamp inside."
    },
    {
      "id": "deck_1", "rank": 2, "bbox": [750, 340, 830, 900],
      "caption": "a weathered gray wooden deck",
      "desc": "A weathered gray wooden deck along the house front, its edges converging slightly in perspective."
    },
    {
      "id": "loungers_1", "rank": 3, "bbox": [700, 420, 770, 540],
      "caption": "two sun loungers",
      "desc": "Two low reclining sun loungers of light wood with pale cushions, backrests slightly raised, side by side on the deck left of the sliding doors."
    },
    {
      "id": "sky_1", "rank": 2, "bbox": [0, 330, 520, 1000],
      "caption": "a cloudy overcast sky",
      "desc": "A soft cloudy overcast sky in light grays above the house."
    },
    {
      "id": "dunes_1", "rank": 3, "bbox": [800, 330, 1000, 1000],
      "caption": "pale sand and dune grass",
      "desc": "Pale sand and lower dune grass in front of the deck, gradually softening in focus toward the camera."
    }
  ],
  "interactions": [
    "a few blurred grass blades from the foreground cross into the frame toward the house, overlapping the left edge of the deck",
    "the overcast sky is softly reflected in the glass sliding doors"
  ],
  "light": "soft, diffused overcast light, even illumination, gentle shadows",
  "atmosphere": "calm, muted Nordic mood, a quiet observing glance",
  "style": "high-end architectural photograph, photorealistic, house tack-sharp, strong optical depth from the foreground blur"
}
body.appendChild(ta); ta.select(); document.execCommand('copy'); ta.remove(); done(); } }); });