一张生成的标题卡写着“FLUX 3 Image Klein vs FLUX 3 Image Klein Pup”,副标题为“一个生成图像,一个编写提示词”。左侧卡片写着“Klein:5.6B 生成器,5.6 GB FP8,INT8 从 8 GB 起”,右侧卡片写着“Pup:9B Qwen3.5 微调版,18.8 GB BF16,Apache 2.0”,页脚写着“两项数据均依据 Hugging Face 模型卡。”OrcaRouter 标志位于右下角。
Guides & Insights

FLUX 3 Image Klein 对比 FLUX 3 Image Klein Pup:模型对抗自身的提示词编写器

作者

Magnus Corvin

发布日期

最新模型 · 20查看全部模型 →
基准测试:Artificial Analysis · 每日更新
返回全部文章

仓库上的名称会引来一种并不存在的比较。FLUX 3 Image Klein 和 FLUX 3 Image Klein Pup 看起来像是同一家族中的两个模型,就像本博客上其他每个“vs”页面都会把两个各有优势的生成器配成一对那样。但它们并非如此。FLUX 3 Image Klein 是 2026 年 10 月 15 日发布的 5.6B 图像模型。FLUX 3 Image Klein Pup——在其模型卡上题为“Prompt Upsampler”——是一个 9B 语言模型,其全部工作就是把你的简短提示词改写成图像模型训练时所接收的那种长而详细的说明文字。

所以真正的问题不在于哪一个更好,而在于第二个是否可选。Black Forest Labs 表示并非如此:模型卡明确写道,Klein“不应在没有提示词上采样器置于其前的情况下运行”,并且按原样发送的简短提示词只会得到泛泛的输出。这个说法值得审视,因为接受它会改变你的内存预算、延迟、许可义务,以及——在一个特定情形下——你的编辑精度。

这两者各自实际上是什么

这种划分比命名所暗示的更清晰。一个模型具备视觉能力,另一个则没有,而且只有其中一个会真正接触到像素。

• 角色 — Klein 负责生成和编辑图像;Pup 只输出文本,从不渲染任何内容

• 参数 — 生成器为 5.6B,上采样器为 9B,因此辅助模型是更大的那个

• 谱系 — Klein 是 FLUX 3 谱系的图像模型;Pup 是 Qwen/Qwen3.5-9B 的全参数微调版本,而 Qwen/Qwen3.5-9B 本身派生自 Qwen3.5-9B-Base

• 磁盘上的权重 — Klein 在 BF16 下为 11.2 GB,在 FP8 下为 5.6 GB;Pup 的 safetensors 在 BF16 下为 18.8 GB

• 许可 — Klein 采用 FLUX Kommunity 许可证,并设有 500 万美元的营收门槛;Pup 采用 Apache 2.0

• 输入项 — Klein 接收文本、参考图像和边界框;Pup 接收相同的请求,外加最多 10 张参考图像,并返回一条提示词

• 输出 — 像素与英文文本的对比

最后一行是大家常常忽略的那一行。Pup 的输出语言始终是英语,即使输入请求使用的是另一种语言。如果你的流水线会记录提示词以供审核,那么审核人员看到的提示词并不是你的用户所输入的提示词。

8 GB 这个数字无法在默认流水线中保留下来。

关于 Klein 最受关注的硬件主张是:INT8 版本可以在显存低至 8 GB 的 RTX 显卡上运行。这一主张针对的是生成器,而且就其自身而言似乎成立——量化检查点正是为此而构建,随附发布的计时数据也由 NVIDIA 实测得出。

现在加上默认管线。Pup 的权重在 BF16 下、在任何运行时开销之前就是 18.8 GB。你无法把 18.8 GB 的权重塞进 8 GB 的 VRAM 里。这两个数字描述的是两件不同的事,而发布材料把它们放得足够近,以至于读者有理由得出整个东西能在老显卡上运行的结论。它并不能,至少在 BFL 所说的模型预期配置下不能。

有三种诚实的出路,它们的代价各不相同:

• 量化上采样器 —— Pup 已有社区 GGUF 构建版本,提供 Q8_0、Q5_K_M、IQ4_XS 和 IQ3_S 变体,并配有独立的视觉投影器;这会大幅缩小辅助模型的体积,代价是提示质量会有所下降

• 在其他位置运行上采样器——它是一个文本模型,因此无需与生成器共用 GPU,只需一次网络跃点

• 使用 --no-pup 跳过它——免费、即时,且是 BFL 建议避免的选项

内存算术是理解这一组合时最有用的东西。它也解释了一类抱怨:有人报告说 Klein 很慢或放不下,而他们实际报告的是,他们在为精简版配置的硬件上运行了文档中给出的流水线。

Pup 会对提示词做什么

它会进行扩写。像“一个男人带着他的狗散步,午后阳光”这样的请求,会变成一段完整的场景描述,涵盖主体、环境、光线、镜头与构图——模型卡中说明,在中等设置下,其输出是一段大约两三百词的长描述。随后,图像模型便以这段描述而非你写的那句话作为条件输入。

这是一种真实的能力,而非噱头。扩散式图像模型对提示词的具体程度很敏感,而五个词的提示词几乎把每一个构图决策都留给了模型的先验。上采样器会明确且一致地做出这些决策,因此默认流水线的输出看起来比把原始句子直接输入同一检查点所得到的输出更显精心设计。

这也是一种失控,而且这种失控是无声的。你的句子不会被标注——它会被替换。如果上采样器认定午后的光线是黄金时刻,狗是边境牧羊犬,生成器就无从知道你并非此意。对于探索性工作,这是一项特性。对于镜头清单,这是一个你没要求过的变量。

四种模式,以及为什么模式比提示词更重要

Pup 并不是一个只有一种行为的模型。它会根据任务选择系统提示词,共有四种:文生图、图生图、带边界框的文生图,以及带边界框的图生图。错误的模式会为错误的任务生成写得很好的提示词,这种失败看起来像是模型质量问题,但其实并不是。

采样设置也因模式而异,而且这种差异并非表面上的。在温度为零时,解码采用贪心策略,最多生成 3,584 个新 token,并禁用思考。存在惩罚在文生图时为 1.5,在编辑时为 0。这个零是有意为之:重复惩罚会鼓励模型引入新内容,而当任务是要忠实地复述编辑指令时,这恰恰是你不想看到的。参考图像也会根据你提供的数量以不同方式调整尺寸——一张时约为 1 兆像素,两张时为 724²,三张或更多时为 512²——因此,一个使用十张参考图的任务所依据的图像,要比只使用一张参考图的任务小得多。

A generated two-card memory diagram titled 'The default pipeline does not fit in 8 GB'. The left card, headed 'FLUX 3 Image Klein', lists 'Parameters 5.6B', 'FP8 weights 5.6 GB', 'BF16 weights 11.2 GB' and 'INT8 build from 8 GB VRAM'. The right card, headed 'FLUX 3 Image Klein Pup', lists 'Parameters 9B', 'BF16 weights 18.8 GB' and 'Licence Apache 2.0'. A bar across the bottom reads 'Default pipeline: generator plus 18.8 GB of upsampler weights'. A footer reads 'Weights per the Hugging Face model cards; the 8 GB claim covers the INT8 generator alone.' The OrcaRouter logo sits bottom-right.

许可证从正中间一分为二

这部分几乎无人关注,但或许恰恰最该关注。这条流水线的两半采用不同的许可证。Klein 采用 FLUX Kommunity License:年收入低于 500 万美元可免费商用,超过则需付费授权。Pup 采用 Apache 2.0,完全没有任何收入条件。

因此,超过阈值的公司可以自由使用提示词上采样器,但仍需获得许可证才能使用它接入的生成器。而低于阈值的公司如果想微调提示词侧,其自由度远高于想微调图像侧的公司。如果你计划发布产品,请分别阅读两份许可证,不要把“Klein stack”当作一个整体。宽松的那一半,正是容易被忽视的那一半。

关掉它之后,实际会发生什么变化

关闭 Pup 只需设置一个标志位,而且其影响在不同任务之间并不对称。

• 文生图——最大的退步。短提示词会变得泛泛而谈,而这正是 BFL 所警告的失败情形,而且提示词越短,差距就越大

• 多参考 — 上采样器正是将“把这三个人放进同一个房间”转化为一段能兼顾全部三张参考图的描述的关键;没有它,参考一致性会明显下降

• 边界框布局——这种模式的意义在于把空间意图转换为能保留该意图的说明文字,因此取消它就会把这份负担重新交还给你的措辞

• 精确编辑——最不明确的一种情况,也是关闭它可能有帮助的情况

最后一条是反直觉的,它和零存在惩罚出自同一个地方。编辑指令通常很窄:改变这个物体、移动这个元素、移除这个东西。上采样器的职责是扩展,所以它不仅会扩展指令本身,也会扩展指令周围的场景。当编辑确实是局部的时候,这种周边扩展充其量只是噪声。当它与画面中的某个东西相矛盾时,它比噪声更糟。

我们在本地化编辑上运行 Klein 的自身经验——改动一个对象、把一个元素移入有界区域、保持画面其余部分不变——是:正是在这种狭窄模式下,模型才最具说服力。这让上采样器的问题变得更尖锐而非更缓和:生成器最强的任务,也正是辅助工具的扩展最不受欢迎的任务。在做出决定之前,请用你自己的编辑提示词测试两种设置。在这种情况下,厂商的一刀切建议与你的具体工作负载可以合理地不一致。

A screenshot of the Hugging Face model card for black-forest-labs/flux-3-image-klein-pup, showing the title FLUX 3 Image Klein Prompt Upsampler, a description of a 9B vision-language model that expands a short image request into a detailed prompt for FLUX 3 Image, the statement that Klein is not meant to run without a prompt upsampler in front of it, the worked example turning 'A man walking with his dog, afternoon sun' into a 220-word caption, an Apache 2.0 licence, 9B parameters in BF16, and a model tree showing a fine-tune of Qwen3.5-9B.A screenshot of the Hugging Face model card for black-forest-labs/flux-3-image-klein, showing a gated-model notice asking the visitor to agree to share contact information, a sample image grid, a model size of 6B parameters in BF16, the tag 'License: flux-kommunity-license', 3,241 downloads in the last month, and model-tree counts of 1 adapter, 4 fine-tunes and 5 quantizations.

实践中的决策

如果你调用的是厂商 API 而不是下载任何内容,那么本文大部分内容都无关紧要。托管端点会在服务端自行应用提示词上采样和像素修复,因此无论你是否考虑过这一点,你实际上已经在享受扩展提示词带来的行为了。只有当你拿到权重时,这个选择才真正成为问题。

当你这样做时,大致可以这样划分。如果你的提示词很短、你的工作是探索性的,或者你是在生成而不是编辑,就保留 Pup。如果你的显卡较小、你的编辑范围狭窄且字面化,或者你的提示词已经足够长且足够具体,以至于扩展主要只会增加杜撰内容,就放弃它,或者运行量化构建。如果你两者都想要,并且能接受一定的提示词质量损失,以换取将整个流水线装到一台设备上,就对其进行量化。

关于低成本尝试这一点,有一个实用提示:这两部分会各自独立失败,而路由层通常是避免把生产路径押在单一端点上的常用做法。OrcaRouter 通过一个兼容 OpenAI 的 API 覆盖 200 多个模型,加价 0%——即按提供商的原价原样传递——并在多个提供商之间自动故障转移,因此某个端点性能下降不会变成任务失败。这对 Klein 本身没有帮助,它不在我们 210 个模型的目录中,也不是我们提供的服务。对于这条流水线来说,权重和厂商 API 才是路由;而路由这套论证真正重要的是你围绕它使用的那些模型。

什么会改变答案

一项已发表的消融实验。还没有人发布过由实验室以外的人评分的、Klein 在相同提示词下启用与不启用 Pup 的并排对比,而正是这张缺失的表格,让这件事仍然只能靠主观判断。在它出现之前,站得住脚的立场是不那么讨喜的那个:上采样器本就是按设计属于系统的一部分,8 GB 的说法并不涵盖它,而你可能有理由覆盖默认设置的那个工作负载,正是这个模型表现最强的那个工作负载。