Black Forest Labs发布FLUX.3 Image Klein:单模型支持布局控制,Diffusers首日接入
Hugging Face博客称,FLUX.3 Image Klein同日上线Diffusers,一个模型同时处理文生图、多参考图生图与边界框布局控制;蒸馏检查点默认 16 步生成 1024×1024 图像,H100上约 2 秒。
AI解读:Hugging Face博客介绍,Black Forest Labs的FLUX.3 Image Klein发布当天即可在Diffusers中运行。该模型用一个模型覆盖文生图、多参考图生图,并新增布局控制功能。
布局控制的做法是把边界框写进提示词:文本提示后附一段JSON区域列表,每个区域包含id、bbox和desc,边界框按 [y_min, x_min, y_max, x_max] 的 0–1000 归一化坐标书写,因此同一坐标框可适配任意输出尺寸。
图像编辑时,每个区域用src_bbox指定内容在参考图中的来源位置、tgt_bbox指定在输出中的目标位置;来源与目标相同的区域保持原位。博客以移动毛线编织骑士为例。
FLUX.3 Image Klein collection提供两个开放检查点:蒸馏版black-forest-labs/flux-3-image-klein默认 16 步、不使用CFG;基础版black-forest-labs/flux-3-image-klein-base默认 50 步并启用CFG,博客称后者适合微调。
博客给出的性能数据:单张H100 80GB、无offloading条件下,文生图 1024×1024 平均 1.93 秒,图生图(一张 1024×1024 参考图)3.87 秒,布局编辑(1360×768 参考图)4.10 秒;参考图大致使耗时翻倍,因为 1024×1024 参考图每次transformer调用增加 4096 个token。
显存方面,博客列出峰值分配:nvfp4(RTX6000)加载后 13.4 GiB、推理后 15.3 GiB;fp8r(H100)14.35/16.27 GiB;bf16(H100)18.80/20.72 GiB。低显存可加载量化transformer、单独运行文本编码器后释放,或启用自动CPU offloading(博客称未对此做基准测试)。
Hugging Face博客介绍,Black Forest Labs的FLUX.3 Image Klein发布当天即可在Diffusers中运行。博客称,这一个模型同时处理文生图、多参考图生图,并新增了布局控制:用户把边界框写进提示词,说明图像各部分应放在哪里,或参考图中哪些部分要移动。
博客列出两个开放检查点:black-forest-labs/flux-3-image-klein为时间步蒸馏版,默认 16 步、不使用CFG,适合快速推理;black-forest-labs/flux-3-image-klein-base为基础模型,默认 50 步并启用CFG,博客称它是用于微调的那个。两个检查点都在FLUX.3 Image Klein collection中。
布局控制的写法与边界
布局控制的做法是:在文本提示后附加一段JSON区域列表,每个区域包含id、bbox和desc,提示词中用占位标记引用对应区域。边界框按 [y_min, x_min, y_max, x_max] 书写,y在前,使用 0–1000 的归一化尺度,因此同一个框在任意图像尺寸下都成立。
图像编辑时,每个区域额外说明内容从哪里来(src_bbox,在参考图中)和到哪里去(tgt_bbox,在输出中);两个框相同的区域保持原位。博客给出的示例把毛线编织骑士向左上方移动,同时固定背景、悬崖、织针、龙和火焰的位置。
- 新增能力是布局控制:把每个区域的desc绘制在其bbox内。
- 边界框格式为 [y_min, x_min, y_max, x_max],0–1000 归一化,y在前。
- 编辑时用src_bbox与tgt_bbox分别表示来源和目标位置;两个框相同即保持原位。
- 多参考图生图时,按传入image的顺序在提示词中用ref_image_0、ref_image_1等引用。
检查点、量化版本与微调
博客称Black Forest Labs还以单文件形式提供transformer,包括bf16以及两种量化格式fp8r(逐行FP8)和nvfp4,可用from_single_file加载,再按名称加载其他组件以避免重复下载bf16 transformer。博客的兼容性表格写明:fp8r在计算能力 8.9+(Ada、Hopper、Blackwell)上可用快速内核,但在其他GPU上权重每步反量化,只降低内存、不加速;nvfp4面向Blackwell,需同版本的flashinfer-python和flashinfer-cubin,在其他GPU上表现同上。
Diffusers附带面向文生图和图像编辑的DreamBooth LoRA训练脚本,也可用Ostris的AI Toolkit训练。文生图示例基于multimodalart/1920-raider-waite-tarot-public-domain数据集学习塔罗牌风格,触发词为trtcrd。博客给出降低显存的选项:--gradient_checkpointing在反向传播中重算激活以降低VRAM、略慢;--cache_latents预编码图像并释放VAE;--use_8bit_adam以 8 位保存优化器状态。
- 基础检查点默认 50 步并启用CFG;博客称它适合微调。
- 蒸馏检查点默认 16 步、不使用CFG。
- 量化单文件:fp8r与nvfp4;nvfp4需要Blackwell及同版本flashinfer组件。
- 图像编辑的LoRA训练脚本是train_dreambooth_lora_flux3_klein_img2img.py,在(参考图、目标图、指令)三元组上训练,参考图在提示词中用ref_image_0等引用。
成本与架构细节
博客给出的速度数据来自单张H100 80GB、无offloading、默认注意力后端,经预热后取三次运行平均:文生图 1024×1024 为 1.93 秒、峰值显存 23.8 GiB;图生图(一张 1024×1024 参考图)3.87 秒;布局编辑(1360×768 参考图)4.10 秒。博客解释参考图大致使时间翻倍,因为参考token与文本和生成图像进入同一序列,一张 1024×1024 参考图每次transformer调用增加 4096 个token。
架构方面,博客称FLUX.3是潜空间流模型,使用与Flux.2相同的VAE:每个方向压缩 8 倍、32 通道,再按 2×2 打包成 128 通道token,因此一个token覆盖 16×16 像素,1024×1024 图像对应 64×64、共 4096 个token。文本编码器是Qwen3-VL,模型不只取最后一层,而是读取其 36 层中 8 层(第 4、8……32 层)的隐藏状态并堆叠,再经线性层投影到transformer的 3072 宽度。
博客称transformer分两阶段:第一阶段各流(文本、噪声图像、参考图)各用 5 个独立权重块、只关注自身;第二阶段把各流拼接成 [text | image | reference] 后经过 28 个共享权重块,所有token互相注意。蒸馏检查点是流映射,还会被告知每一步跳转的时间步,并有单独嵌入加到每个token的调制中。位置编码使用 (t, h, w, l) 四个轴,每个注意力头 128 维中每个轴占 32 维;参考图与输出图像共用 (h, w) 坐标,博客称这正是src_bbox / tgt_bbox编辑的依据。
- 文生图 1024×1024:1.93 秒,峰值显存 23.8 GiB(H100 80GB,无offloading)。
- 图生图:3.87 秒;布局编辑:4.10 秒。
- 1024×1024 参考图每次调用增加 4096 个token,参考图大致使耗时翻倍。
- 文本编码器Qwen3-VL只运行一次,在去噪前;博客建议低显存时可单独运行后释放。
- 每个token调制不同:噪声图像token用当前时间步t,文本和参考token始终用时间步 0。