alt.freeweights.text / flux-3-image-klein-pup
From: black-forest-labs <huggingface.co/black-forest-labs>Newsgroups: alt.freeweights.textSubject:

flux-3-image-klein-pup

Date: 2026-11-15Commit: a578995Signed: 2DC28CC7B26A283B ✓

Image text to text model with 9.4B parameters. Safetensors weights, 18.8 GB in all. Published by black-forest-labs under Apache-2.0.

9.4B params18.8GBflux-3-image-klein-pupsafetensorspermissive
FactsParams9.4BSize18.8 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get black-forest-labs/flux-3-image-klein-pup
# manifest sha256 6d09eff4f01b… · 18.8 GB · 12 files
$ fw verify ./flux-3-image-klein-pup black-forest-labs/flux-3-image-klein-pup
From sourceHosted (signed)black-forest-labs/flux-3-image-klein-pupLast check: 2026-11-15 02:32 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of Qwen3.5-9B.

Works with

Overview

Size
18.8 GB
Weights
18.8 GB (safetensors)
Parameters
9.4B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
12, each with a sha256
Publisher
black-forest-labs
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

Base model: Qwen/Qwen3.5-9B

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 02:32 UTCpassed

Model card

From the publisher at commit a578995. Shown as plain text with links; images open at the publisher.

FLUX 3 Image Klein Prompt Upsampler#

FLUX 3 Image Klein Prompt Upsampler is a 9B vision-language model that expands an image editing, text-to-image or layout request into the detailed prompt FLUX 3 Image Klein works best with. It takes the request, up to 10 reference images and an optional list of bounding boxes, and returns one prompt. It is a fine-tune of Qwen3.5-9B.

Always run a prompt upsampler with FLUX 3 Image Klein, for editing, text-to-image and layout alike. This one is tuned for it, see Training. Any other LLM can do the job with the system prompts in system_prompts.json. The inference code in black-forest-labs/flux-3-image-klein loads it by default. The Diffusers modular pipeline runs it automatically; the Transformers block below shows how to run it on its own. In ComfyUI, the text-to-image templates on flux-3-image-klein-comfy have an enable_prompt_upsampler switch.

Request

A man walking with his dog, afternoon sun

Prompt

Full-color outdoor photograph, eye-level medium-wide shot in late afternoon sunlight, showing a man walking his dog along a neighborhood sidewalk. The low sun shines from the upper right, casting long shadows across the pavement and lighting the man's face and clothing with warm side light. Slightly left of center, a white man in his thirties with fair skin, short brown hair, and light stubble walks toward frame-left at an easy pace. He wears a faded olive overshirt over a plain grey T-shirt, dark blue jeans, and worn brown leather shoes. [...]

220 words in full, with the image it made, in examples/base/man_dog.json.

Key Features#

  1. One model for editing with reference images, text-to-image and layout with bounding boxes. The system prompt selects the mode.
  2. Prompts with everything the image model needs decided: medium and style, scene, lighting and camera, each subject with its colors, materials and position in the frame. Text to render stays verbatim, in quotes.
  3. For an edit it looks at the references and writes the instruction around what is in them: what changes, what stays, by appearance.
  4. Bounding boxes you pass are kept exactly, as a box table after the prompt; the prompt cites each box by id, so the image model places that element where the box says.
  5. Released under the Apache License 2.0.

Training#

A full fine-tune of Qwen3.5-9B with the vision tower frozen, in two stages: supervised training on pairs of short requests and their expanded prompts, then preference tuning on pairs of the model's own prompts, rendered with FLUX 3 Image Klein at the same seed and ranked on the resulting image.

Files#

FileContent
model.safetensorsthe model, bfloat16, 18.8 GB
system_prompts.jsonthe four system prompts: t2i, i2i, t2i_bbox, i2i_bbox
config.json, generation_config.json, tokenizer.json, tokenizer_config.json, chat_template.jinja, processor_config.json, preprocessor_config.jsonTransformers configuration, tokenizer, chat template, image processor

Usage#

With the FLUX 3 inference code#

hf download black-forest-labs/flux-3-image-klein-pup --local-dir weights/pup
python scripts/cli.py "A man walking with his dog, afternoon sun" --out out.png

The upsampler is on by default; --no-pup sends the prompt as typed. To upsample without generating: python -m flux3.pup --prompt "..." --out caption.txt. Install, references and the box format: black-forest-labs/flux-3-image-klein.

With Transformers#

import json

import torch
from huggingface_hub import hf_hub_download
from transformers import AutoProcessor, Qwen3_5ForConditionalGeneration

model_id = "black-forest-labs/flux-3-image-klein-pup"
processor = AutoProcessor.from_pretrained(model_id)
model = Qwen3_5ForConditionalGeneration.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto").eval()
prompts = json.load(open(hf_hub_download(model_id, "system_prompts.json")))

messages = [{"role": "system", "content": prompts["t2i"]},
            {"role": "user", "content": "A man walking with his dog, afternoon sun"}]
inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_dict=True,
                                       return_tensors="pt", enable_thinking=False).to(model.device)
with torch.no_grad():
    out = model.generate(**inputs, max_new_tokens=3584, do_sample=False)
caption = processor.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True).strip()
print(caption)

For an edit, use prompts["i2i"] and a user message with the reference images first ({"type": "image", "image": pil_image} per reference) and then this text, three lines:

Reference images follow in order (the first image, the second image, ...).
User request: put a red bandana around the dog's neck
Output the caption.

Decoding: greedy, top_p 0.95, top_k 20, presence penalty 1.5 for text-to-image and 0 for edits. The *_bbox prompts take the boxes as JSON after the request and return the prompt with a box table; the exact scaffolds are flux3/pup.py and flux3/bbox.py in the inference code.

Limitations#

  • Output is English. The request can be in any language.
  • The prompts are written for FLUX 3 Image Klein; no other image model was part of training.
  • Reference images are resized before the model sees them (at most 1 MP for one reference, less for several), so small details in a reference can be described wrongly.
  • The model does not refuse requests. The inference code wraps it with optional prompt and image checks (--safety).

License#

This model is released under the Apache License 2.0. It is derived from Qwen3.5-9B by the Qwen team at Alibaba Cloud, released under the Apache License 2.0.

Trademarks & IP#

This project may contain trademarks or logos for projects, products, or services. Use of Black Forest Labs and FLUX trademarks or logos in modified versions of this project must not cause confusion or imply sponsorship or endorsement. Any use of third-party trademarks, intellectual property or logos are subject to those third-party's policies.

Citation#

If you use FLUX 3 Image in your work, please cite:

@misc{bfl2026flux3image,
  author       = {{Black Forest Labs}},
  title        = {{FLUX} 3 Image Klein},
  year         = {2026},
  url          = {https://bfl.ai/blog/flux-3-image-klein},
}

Files

12 files · 18.8 GBWeights 18.8 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 12 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
README.md7.17 KB9ac1b630c0fb51aa4a7db7654379dfa636162dd87c511ea4d5af3598b8b63a7c
chat_template.jinja7.76 KBa4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715
config.json2.90 KB7d7fc026d8bcb9f1fc505af1004779330fe59bb3256fe0271ec2568e8dc89db1
generation_config.json163 Be92258e3c39afbaa73fd53a98640c56f6d42fb091e1664697bd5396a1dcbb761
model.safetensors18.8 GBf5062a1fba3e63afe5c88349a311903fec06c959b362f1247127e63d5c860ed4
preprocessor_config.json443 B3a159dfec9978a186a72ba085e0ad6a050f3968d8b364218d7bd13f5c89381f2
processor_config.json1.19 KBd89ef49ce9cd37fbf510158e13c1ef063d9286411c1ec9049932dbe0487143b1
system_prompts.json12.6 KBb5da3ed8bc04ab59dbdb747930f7dbff847e868903fed8028f85ee1a4ac82fb4
tokenizer.json20.0 MB06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
tokenizer_config.json1.16 KB7488550a894dcf741616126e322ea31d66cf9457b59ec5825f4c7efdced421f8
video_preprocessor_config.json550 Bbd96830cce1312679aa1f2ea43ed17da20e8ebbcea2398cfa64e2d275a96fdd7
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
a57899549f pinned now2026-11-15 02:32 UTC12 files · 18.8 GB

Use it

$ fw get black-forest-labs/flux-3-image-klein-pup
# manifest sha256 6d09eff4f01b… · 18.8 GB · 12 files
$ fw verify ./flux-3-image-klein-pup black-forest-labs/flux-3-image-klein-pup
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/black-forest-labs/flux-3-image-klein-pup.json --dir ./flux-3-image-klein-pup $ python3 fw.py verify ./flux-3-image-klein-pup ./black-forest-labs__flux-3-image-klein-pup.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download black-forest-labs/flux-3-image-klein-pup --revision a57899549f8f6f64c6c4d88db30827d496ff76d0 --local-dir ./flux-3-image-klein-pup
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("black-forest-labs/flux-3-image-klein-pup", revision="a57899549f8f6f64c6c4d88db30827d496ff76d0") model = AutoModelForImageTextToText.from_pretrained("black-forest-labs/flux-3-image-klein-pup", revision="a57899549f8f6f64c6c4d88db30827d496ff76d0", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve black-forest-labs/flux-3-image-klein-pup --revision a57899549f8f6f64c6c4d88db30827d496ff76d0

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
9ac1b630c0fb51aa4a7db7654379dfa636162dd87c511ea4d5af3598b8b63a7c
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: black-forest-labs <huggingface.co/black-forest-labs>Newsgroups: alt.freeweights.textSubject: flux-3-image-klein-pupDate: 2026-11-15Commit: a578995Signed: 2DC28CC7B26A283B ✓
Upstream
black-forest-labs/flux-3-image-klein-pup
Pinned commit
a57899549f8f6f64c6c4d88db30827d496ff76d0
Manifest
flux-3-image-klein-pup.json · .minisig
Manifest sha256
6d09eff4f01b9622b7271c052ffd65fec14e5d3cdff7857e7c45b3815b76e624
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:32 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/black-forest-labs/flux-3-image-klein-pup.json $ curl -O https://freeweights.allternit.com/manifests/black-forest-labs/flux-3-image-klein-pup.json.minisig $ minisign -Vm flux-3-image-klein-pup.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

Qwen/Qwen3.5-9B · this model is a finetune of it

3 models in the catalog name this one as their parent.

Quantizations
3
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download black-forest-labs/flux-3-image-klein-pup
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. flux-3-image-klein-pup.json. Provenance. Takedown history: none.

Variants

3 quantized or adapter builds of flux-3-image-klein-pup. Each has its own license check and page.

From: laion <huggingface.co/laion>Subject: a2-rl-e2egit_large-50-32B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-large-15-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-v2-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_pymethods2test-large-80-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_unitsyn-python-large-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_mix_h2_language_proportional-65-8B