
FLUX 3 Image Klein vs FLUX 3 Image Klein Pup: A Model Against Its Own Prompt Writer
- OrcaNEWOrcaCyber: DeepSeek V4.1 Flash Abliterated2026-10-23$0.70 / $1.60 per 1M tokens · 162 tok/s
- OrcaNEWOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1M tokens · 14 tok/s
- deepseekNEWDeepSeek: DeepSeek V4.1 Flash 10172026-10-1745Intelligence
- DeepSeekNEWDeepSeek: DeepSeek V4.1 Flash2026-10-1740Intelligence
- OrcaNEWOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1M tokens · 151 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952Intelligence
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856Intelligence
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1M tokens · 1061 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238Intelligence
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Intelligence
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Intelligence
- xAIGrok 4.72026-09-2146Intelligence
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 per 1M tokens · 157 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 per 1M tokens · 1840 tok/s
- OpenAIOpenAI: GPT-6 Astra2026-09-0453Intelligence77Coding
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241Intelligence76Coding
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245Intelligence76Coding
- AnthropicAnthropic: Claude Fable 5.12026-09-0153Intelligence82Coding
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 per 1M tokens · 49 tok/s
- AlibabaQwen: Qwen3.8 Flash2026-08-26$0.15 / $0.47 per 1M tokens · 103 tok/s
The name on the repository invites a comparison that does not exist. FLUX 3 Image Klein and FLUX 3 Image Klein Pup look like two models in a family, the way every other "vs" page on this blog pairs two generators with different strengths. They are not that. FLUX 3 Image Klein is the 5.6B image model that shipped on 15 October 2026. FLUX 3 Image Klein Pup — titled "Prompt Upsampler" on its model card — is a 9B language model whose entire job is to rewrite your short prompt into the long, detailed caption that the image model was trained to receive.
So the real question is not which one is better. It is whether the second one is optional. Black Forest Labs says it is not: the model card states plainly that Klein is "not meant to run without a prompt upsampler in front of it," and that a short prompt sent as typed gives generic output. That claim is the thing worth examining, because accepting it changes your memory budget, your latency, your licence obligations and — in one specific case — the precision of your edits.
What each of the two actually is
The split is cleaner than the naming suggests. One model has vision, the other does not, and only one of them ever touches a pixel.
• Role — Klein generates and edits images; Pup emits text and never renders anything
• Parameters — 5.6B for the generator, 9B for the upsampler, so the helper is the larger model
• Lineage — Klein is a FLUX 3 lineage image model; Pup is a full fine-tune of Qwen/Qwen3.5-9B, itself derived from Qwen3.5-9B-Base
• Weights on disk — 11.2 GB at BF16 and 5.6 GB at FP8 for Klein; 18.8 GB for Pup's safetensors at BF16
• Licence — FLUX Kommunity License for Klein, with its $5M revenue line; Apache 2.0 for Pup
• Inputs — Klein takes text, reference images and bounding boxes; Pup takes the same request plus up to 10 reference images and returns one prompt
• Output — pixels versus English text
That last row is the one people miss. Pup's output language is always English, even when the input request is in another language. If your pipeline logs prompts for review, the prompt your reviewer sees is not the prompt your user typed.
The 8 GB number does not survive the default pipeline
The headline hardware claim for Klein is that the INT8 build runs on an RTX card with as little as 8 GB of VRAM. That claim is about the generator, and on its own terms it appears to hold — the quantized checkpoint is built for it, and the timings published alongside it were measured by NVIDIA.
Now add the default pipeline. Pup's weights are 18.8 GB at BF16 before any runtime overhead. You cannot fit 18.8 GB of weights into 8 GB of VRAM. The two numbers describe two different things, and the release material puts them close enough together that a reader can reasonably conclude the whole thing runs on an old card. It does not, not in the configuration BFL says the model expects.
There are three honest ways out, and they cost different things:
• Quantize the upsampler — community GGUF builds exist for Pup in Q8_0, Q5_K_M, IQ4_XS and IQ3_S variants with a separate vision projector, which shrinks the helper substantially at some cost to prompt quality
• Run the upsampler elsewhere — it is a text model, so it does not need to share a GPU with the generator, only a network hop
• Skip it with --no-pup — free, immediate, and the option BFL advises against
The memory arithmetic is the single most useful thing to understand about this pairing. It also explains a genre of complaint: someone reports that Klein is slow or does not fit, and what they are actually reporting is that they ran the documented pipeline on hardware sized for the stripped-down one.
What the Pup does to a prompt
It expands. A request like "a man walking with his dog, afternoon sun" becomes a full-scene caption covering subject, setting, lighting, camera and composition — the model card describes the output as a long caption of roughly a couple of hundred words at its medium setting. The image model then conditions on that caption instead of on your sentence.
This is a real capability, not a gimmick. Diffusion-style image models are sensitive to prompt specificity, and a five-word prompt leaves almost every compositional decision to the model's priors. An upsampler makes those decisions explicitly and consistently, which is why output from the default pipeline looks more deliberate than output from the same checkpoint fed the raw sentence.
It is also a loss of control, and the loss is silent. Your sentence is not annotated — it is replaced. If the upsampler decides the afternoon light is golden hour and the dog is a border collie, the generator has no way to know you did not mean that. For exploratory work that is a feature. For a shot list, it is a variable you did not ask for.
Four modes, and why the mode matters more than the prompt
Pup is not one model with one behaviour. It selects a system prompt based on the task, and there are four: text-to-image, image-to-image, text-to-image with bounding boxes, and image-to-image with bounding boxes. The wrong mode produces a well-written prompt for the wrong task, which is a failure that looks like a model quality problem and is not.
The sampling settings differ by mode too, and the difference is not cosmetic. Decoding is greedy at temperature zero with a max of 3,584 new tokens and thinking disabled. The presence penalty is 1.5 for text-to-image and 0 for edits. That zero is deliberate: a repetition penalty encourages the model to introduce new material, which is exactly what you do not want when the job is to restate an edit instruction faithfully. Reference images are also resized differently depending on how many you supply — around 1 megapixel for one, 724² for two, 512² for three or more — so a ten-reference job is conditioning on much smaller images than a one-reference job.

The licence is split down the middle
This is the part that gets almost no attention and probably should. The two halves of the pipeline are under different licences. Klein is FLUX Kommunity License: free for commercial use under $5M annual revenue, paid licensing above it. Pup is Apache 2.0, with no revenue condition at all.
So a company above the threshold can use the prompt upsampler freely and still needs a licence to use the generator it feeds. And a company below the threshold that wants to fine-tune the prompt side has far more latitude than one that wants to fine-tune the image side. If you are planning to ship, read the two licences separately rather than treating "the Klein stack" as one thing. The permissive half is the half that is easy to overlook.
What actually changes when you turn it off
Turning Pup off is one flag, and the effects are asymmetric across tasks.
• Text-to-image — the largest regression. Short prompts go generic, which is precisely the failure BFL warns about, and the gap widens the shorter your prompt is
• Multi-reference — the upsampler is what turns "put these three people in a room" into a description that accounts for all three references; without it, reference adherence gets noticeably looser
• Bounding-box layout — the mode exists to convert spatial intent into a caption that preserves it, so removing it puts the burden back on your phrasing
• Precise editing — the least clear-cut case, and the one where turning it off can help
That last bullet is the counter-intuitive one and it comes from the same place as the zero presence penalty. An edit instruction is usually narrow: change this object, move this element, remove this thing. The upsampler's job is to expand, so it expands the scene around your instruction as well as the instruction itself. When the edit is genuinely local, that surrounding expansion is noise at best. When it contradicts something in the frame, it is worse than noise.
Our own experience running Klein on localised edits — changing one object, moving an element into a bounded region, keeping the rest of the frame intact — is that the model is at its most convincing in exactly this narrow mode. Which makes the upsampler question sharper rather than softer: the task where the generator is strongest is also the task where the helper's expansion is least welcome. Test both settings on your own edit prompts before deciding. This is a case where the vendor's blanket advice and your specific workload can legitimately disagree.


The decision, in practice
If you are calling the vendor API rather than downloading anything, most of this is moot. The hosted endpoint applies its own prompt upsampling and pixel restoration server-side, so you are already buying the expanded-prompt behaviour whether or not you think about it. The choice only becomes real when you take the weights.
When you do, the split is roughly this. Keep Pup if your prompts are short, your work is exploratory, or you are generating rather than editing. Drop it, or run a quantized build, if your card is small, your edits are narrow and literal, or your prompts are already long and specific enough that expansion mostly adds invention. Quantize it if you want both and can accept some prompt-quality loss in exchange for fitting the whole pipeline on one device.
One practical note on trying this cheaply: the two halves fail independently, and a routing layer is the usual way to avoid betting a production path on a single endpoint. OrcaRouter runs one OpenAI-compatible API over 200+ models with 0% markup — the provider's list price passed through unchanged — and automatic failover across providers, so a degraded endpoint does not become a failed job. That does not help you with Klein itself, which is not in our catalogue of 210 models and is not something we serve. For this pipeline, the weights and the vendor API are the routes; the routing argument matters for the models you put around it.
What would change the answer
A published ablation. Nobody has released a side-by-side of Klein with and without Pup on the same prompts, scored by anyone other than the lab, and that single missing table is what keeps this a judgement call. Until it exists, the defensible position is the unglamorous one: the upsampler is part of the system as designed, the 8 GB claim does not cover it, and the one workload where you might reasonably override the default is the one where this model is strongest.
