Black Forest Labs 開源 5.6B 視覺生成與編輯模型 FLUX 3 Image Klein:架構原理、ComfyUI 部署與實戰指南
Black Forest Labs(BFL)於 2026 年 10 月 15 日正式發布 FLUX 3 Image Klein,這是繼機器人控制模型 FLUX 3 Action 之後,FLUX 3 多模態家族釋出的第二款開放權重(Open Weights)模型。同日,Hugging Face Diffusers 與 ComfyUI 也同步完成首日原生支援。
FLUX 3 Image Klein(Hugging Face 權重庫) 的影像生成 Transformer 參數規模為 56 億(5.6B),在單一模型權重中同時整合了文字生成影像(Text-to-Image)、指令驅動影像編輯(Instruction-Driven Image Editing)、最多 10 張參考圖的多圖合成(Multi-Reference Generation),以及原生 0–1000 座標邊界框(Bounding Boxes)佈局控制,並支援最高 原生 4K 解析度直出。透過與 NVIDIA 合作開發的 INT8 ConvRot 量化與 16 步時間步蒸餾(Step-Distilled)權重,該模型可在僅有 8GB VRAM 的消費級 RTX 顯卡上透過 ComfyUI 本地運行。
本文整合 Black Forest Labs 官方發布部落格、Hugging Face 官方模型卡、ComfyUI 官方部落格、ComfyUI 官方教學文件 以及 Hugging Face Diffusers 架構解析專文,完整梳理 FLUX 3 Image Klein 的兩階段流匹配架構、4D RoPE 位置編碼、硬體效能實測、提示詞擴寫(Prompt Upsampler)機制、邊界框語法,以及本地部署與 LoRA 微調指南。
核心功能與四大設計亮點
根據 Black Forest Labs 產品專頁 與 官方部落格 說明,FLUX 3 Image Klein 承襲了旗艦模型 FLUX 3 Image 的核心控制能力,並吸收了 FLUX 3 家族跨影像(空間細節)、影片(動態與物理規律)與音訊(事件與互動關係)的聯合學習成果,具備以下四項核心能力:
- 單一模型整合文字生圖、指令編輯與最多 10 張參考圖合成:文字生圖、單圖局部修改與多圖元素組合皆由同一組模型權重處理。在編輯與多圖合成時,使用者最多可同時傳入 10 張參考影像(在提示詞中依序以
<ref_image_0>、<ref_image_1>等標籤引用),支援角色跨場景一致性維持、物件替換、多輪連續加疊編輯(例如在空房間中分三次依序加入沙發、熟睡的貓與夕陽檯燈光影)以及參考圖風格轉移。 - 原生 0–1000 邊界框(Bounding Boxes)空間排版與搬移:不需額外外掛 ControlNet,即可直接在提示詞末端附加 JSON 格式的區域列表,在
0到1000的正規化畫布網格上指定各個元素的座標[y_min, x_min, y_max, x_max](即[上, 左, 下, 右])。這套座標系除了能在新圖中精準安排多個物件與文字區塊的位置,也能在編輯既有圖片時搭配來源框(src_bbox)與目標框(tgt_bbox),將畫面中的特定主體移動、縮放、改色或移除,並維持背景不變。 - 原生 4K 高解析度直出與精準文字渲染:模型支援直接生成最高 4K 解析度(API 最大支援至 16.8 MP,長寬可自訂於
64至6,256像素之間)的影像,省去事後透過放大模型(Upscaler)重繪的步驟。同時具備精準的版面文字渲染與既有文字改寫能力,適合製作書籍封面、復古郵票、海報標語與多步驟資訊圖表(Infographics)。 - 消費級 8GB GPU 本地部署與開源生態首日支援:官方一次釋出用於微調研究的未蒸餾基座模型 FLUX 3 Image Klein Base(50 步)與低延遲蒸餾模型 FLUX 3 Image Klein(16 步,無須 CFG 引導),並提供
BF16、FP8、INT8 (ConvRot)與NVFP4等多種精度格式。首日即支援 ComfyUI、Hugging Face Diffusers、官方 GitHub 推論工具、NVIDIA TensorRT-LLM、SGLang Diffusion 與 vLLM-Omni。
底層架構拆解:兩階段 Transformer、Qwen3-VL 編碼與 4D RoPE
根據 Hugging Face Diffusers 團隊發布的技術文章,FLUX 3 Image Klein 是基於潛空間流匹配(Latent-Space Flow Matching)的擴散 Transformer 模型,每次推論接收三種類型的輸入 Token:文字(Text)、生成中的雜訊影像(Noisy Image) 與 選填的參考影像(Reference Images)。其底層架構包含五項關鍵設計:
1. 像素到 Token:沿用 FLUX.2 VAE 的 16×16 區塊打包
FLUX 3 Image Klein 採用與 FLUX.2 相同的影像自編碼器(flux2-vae.safetensors)。VAE 先將輸入影像在長寬方向各壓縮 8 倍,轉為 32 通道的潛變數(Latents),接著將每 2 × 2 的潛變數網格打包(Pack)為單一具備 128 通道的 Token:
- 每個影像 Token 對應原始圖片上
16 × 16像素的區域。 - 一張
1024 × 1024的生成影像會轉換為64 × 64網格,共計 4,096 個 Token。 - 當傳入一張
1024 × 1024的參考影像進行編輯時,參考圖同樣會經由 VAE 編碼為 4,096 個 Token 並串接進序列中,使每次 Transformer 呼叫處理的總 Token 數從約 4,256 個(純文字生圖)倍增至約 8,272 個(單圖編輯)。
2. 提示詞到 Token:抽取 Qwen3-VL-4B 八個深度的隱藏狀態
模型採用 Qwen3-VL-4B-Instruct 視覺語言模型作為文字編碼器。不同於傳統模型僅取文字編碼器最後一層的輸出,FLUX 3 Image Klein 會同時讀取 Qwen3-VL 共 36 層中的 8 個深度層(第 4、8、12、16、20、24、28、32 層) 的隱藏狀態並加以堆疊,使每個文字 Token 先形成 8 × 2560 = 20,480 維的特徵向量,再透過線性層投影至 Transformer 的 3,072 通道寬度。這讓影像生成網路能同時獲得語言模型由淺至深的多層次語意與結構特徵(輸入提示詞長度會自動補齊至 80 Tokens 的倍數)。
3. 兩階段 Transformer 處理流程(Per-Mode Blocks + Joint Blocks)
在先前的 FLUX.2 架構中,雙流區塊(Double-stream blocks)雖然為文字與影像配置了獨立權重,但從第一層開始就讓兩者互相進行注意力計算。根據 Diffusers 架構分析,FLUX 3 改採「先完全隔離、後全面融合」的兩階段設計:
- 第一階段:5 層獨立模態區塊(Per-Mode Blocks):文字流、雜訊影像流與參考影像流各自通過 5 層擁有獨立權重的 Transformer 區塊。在此階段,每個資料流只能對自己進行自注意力計算(Self-Attention),讓文字、雜訊與參考圖先在各自的模態空間內完成初步特徵提煉。
- 第二階段:28 層聯合區塊(Joint Blocks):系統將三股資料流串接為
[text | image | reference]單一序列,共同通過 28 層共享同一組權重的聯合區塊。在此階段,所有 Token 皆可互相注意(Everything attends to everything),讓生成中的影像同時向文字提示詞與參考影像學習。最後系統會丟棄文字與參考圖 Token,僅保留影像 Token 進入輸出層預測去噪速度向量(Velocity)。
在單一區塊內部,Attention 與 SwiGLU MLP 會在同一個無學習參數的 LayerNorm 輸入上平行執行(Parallel Attention & MLP),再透過門控(Gate)加回殘差流(Residual Stream)。
4. 分流時間步調制(Per-Token Timestep Modulation)與流映射蒸餾
在 FLUX.1 與 FLUX.2 中,同一個時間步嵌入(Timestep Embedding)會同時調制所有 Token;但在 FLUX 3 中,調制訊號(Scale、Shift、Gate)取決於 Token 的類型:
- 雜訊影像 Token:由當前去噪時間步
t進行調制。 - 文字與參考影像 Token:始終固定由 時間步
0進行調制,代表「這是已經乾淨、無須去噪的已知上下文」。因此即使參考圖與目標輸出極為相似,模型也能明確區分哪些是既定參考條件、哪些是待生成的像素。 - 流映射蒸餾(Flow Map Distillation):16 步蒸餾版模型除了接收當前時間步
t外,還會接收「該步預計跳往的下一個時間步」的獨立嵌入向量,並疊加至每個 Token 的調制訊號中,使模型能在 4 至 16 步內完成大跨度的去噪預測。此外,FLUX 3 排程器採用高達6.93的時間偏移量(Time Shift),在 50 步基座模型中有 44 步集中在雜訊水準 $\sigma > 0.5$ 的高雜訊區間:前 10 步即確立主體姿勢與光影構圖,最後幾步則專門刻畫樹枝積雪與毛髮紋理等高頻細節。
5. 四維旋轉位置編碼(4D RoPE:時間、高度、寬度、序列)
為了讓注意力機制精準辨識跨模態與多張參考圖的空間位置,FLUX 3 Image Klein 將每個 128 維的注意力頭均分為四個 32 維度的座標軸 (t, h, w, l),分別對應時間步(Timestep)、高度(Height)、寬度(Width)與序列長度(Length):
| Token 類型 | t(時間步軸) | h(高度軸) | w(寬度軸) | l(序列長度軸) | 空間對齊意義 |
|---|---|---|---|---|---|
第 i 個文字 Token | 0 | 0 | 0 | i | 沿序列軸 l 依序排列,如同句子中的詞彙 |
生成影像 Token (row, col) | 0 | row / 2 | col / 2 | 0 | 在 (h, w) 平面構成 2D 網格,序列位置固定為 0 |
第 k 張參考圖 Token (row, col) | 0 | row / 2 | col / 2 | -(k + 1) | 與生成影像共用相同的 (h, w) 座標,並在 l 軸以負值區隔不同參考圖 |
由於參考圖與生成影像共享完全相同的 (h, w) 二維座標系,模型能直接理解「參考圖中的同一座標位置」,這正是 FLUX 3 Image Klein 能透過 src_bbox 與 tgt_bbox 實現精準局部固定與跨區域搬移的底層原因。
模型家族版本與權重檔案規格
Black Forest Labs 在 Hugging Face FLUX 3 Image Klein 合集 中釋出了四個核心模型倉庫,涵蓋主模型(蒸餾版)、Base 基座模型、9B 提示詞擴寫器以及專為 ComfyUI 打包的單一檔案權重庫。
1. 官方核心倉庫與設定對照
根據 GitHub 官方倉庫 與 Hugging Face 模型卡,各元件規格與預設取樣參數如下:
| 模型 / 元件名稱 | Hugging Face 倉庫 | 參數規模 | 預設步數 | 引導尺度 (CFG) | 支援最高解析度 | 主要用途 | 授權條款 |
|---|---|---|---|---|---|---|---|
| FLUX 3 Image Klein (Distilled) | black-forest-labs/flux-3-image-klein | 5.6B (DiT) | 16 步 (支援 4–16 步) | 無 (CFG = 1.0) | 原生 4K | 快速生成與編輯、本地部署、BFL API 線上模型(比 Base 快約 6 倍) | FLUX Kommunity License v1.0 |
| FLUX 3 Image Klein Base | black-forest-labs/flux-3-image-klein-base | 5.6B (DiT) | 50 步 | 3.5 (編輯為 1.0) | 原生 4K | 全模型微調、LoRA 訓練、學術研究 | FLUX Kommunity License v1.0 |
| Prompt Upsampler (PUP) | black-forest-labs/flux-3-image-klein-pup | 9B (Qwen3.5-9B 微調) | 自迴歸生成 | Greedy / Top-p 0.95 | 參考圖壓縮至 ≤1MP | 將簡短提示詞與參考圖擴寫為完整場景描述與邊界框表格 | Apache 2.0 |
| 文字編碼器 (Text Encoder) | 內建於主倉庫與 flux-3-image-klein-comfy | 4B (Qwen3-VL-4B-Instruct) | 單次前向編碼 | — | — | 提取 8 層深度隱藏狀態供 DiT 條件控制 | Apache 2.0 |
| 影像自編碼器 (VAE) | 內建 ae.safetensors / flux2-vae.safetensors | — | 編碼 / 解碼各一次 | — | — | 8× 空間壓縮與潛空間像素轉換 | FLUX Kommunity License v1.0 |
2. ComfyUI 單檔權重與量化版本明細
為了方便本地使用者按顯卡記憶體選用,官方在 black-forest-labs/flux-3-image-klein-comfy 倉庫中提供了重新打包的單一檔案(Single-File)權重:
| 資料夾分類 | 檔案名稱 | 對應元件與精度格式 | 檔案大小 | 硬體相容性說明 |
|---|---|---|---|---|
diffusion_models/ | flux3-image-klein-bf16.safetensors | Distilled 蒸餾版,BF16 | 11.1 GB | 建議高階顯卡或工作站使用 |
diffusion_models/ | flux3-image-klein-int8-convrot.safetensors | Distilled 蒸餾版,INT8 ConvRot | 5.8 GB | 推薦消費級顯卡使用,支援 8GB VRAM(如 RTX 3070)及不支援 FP8 的舊款顯卡 |
diffusion_models/ | flux3-image-klein-nvfp4.safetensors | Distilled 蒸餾版,NVFP4 | 5.3 GB | 需配備 NVIDIA Blackwell 架構 GPU(如 RTX 50 系列、B200、GB300) |
diffusion_models/ | flux3-image-klein-base-bf16.safetensors | Base 基座版,BF16 | 11.1 GB | 適合微調、LoRA 訓練與 50 步標準生成 |
diffusion_models/ | flux3-image-klein-base-int8-convrot.safetensors | Base 基座版,INT8 ConvRot | 5.8 GB | 支援 8GB VRAM 顯卡運行 50 步基座模型 |
diffusion_models/ | flux3-image-klein-base-nvfp4.safetensors | Base 基座版,NVFP4 | 5.3 GB | 需配備 NVIDIA Blackwell 架構 GPU |
text_encoders/ | qwen3vl_4b_bf16.safetensors | Qwen3-VL-4B 文字編碼器,BF16 | 8.9 GB | 原生精度文字編碼器 |
text_encoders/ | qwen3vl_4b_int8_convrot.safetensors | Qwen3-VL-4B 文字編碼器,INT8 | 4.9 GB | ComfyUI 預設模板使用的輕量文字編碼器 |
text_encoders/ | qwen3.5_9b_flux3_prompt_upsampler_bf16.safetensors | 9B 提示詞擴寫器,BF16 | 18.8 GB | 原生精度擴寫模型 |
text_encoders/ | qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors | 9B 提示詞擴寫器,INT8 | 9.8 GB | 平衡型量化擴寫模型 |
text_encoders/ | qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors | 9B 提示詞擴寫器,W4A8 | 6.7 GB | ComfyUI 文字生圖模板預設使用的低顯存擴寫模型 |
vae/ | flux2-vae.safetensors | FLUX.2 影像自編碼器 | 0.3 GB | 所有版本共用的 VAE 權重 |
(註:在 ComfyUI 官方文件 介紹的部分早期模板中,檔案名稱可能顯示為底線連接的 flux3_image_klein_sd_int8_convrot.safetensors 與 flux3_image_klein_base_int8_convrot.safetensors,對應同倉庫中的蒸餾版與基座版 INT8 權重。)
基準評測、GPU 生成速度與硬體需求分析
1. 官方內部 Elo 評測:以 5.6B 規模超越中大型開源與閉源模型
根據 Black Forest Labs 官方部落格 公布的內部人類偏好 Elo 評測,FLUX 3 Image Klein 在文字生成影像、多參考圖生成與影像編輯三大項目皆排名第一:
- 跨模型比較:以 5.6B 的最小模型體積,擊敗參數規模更大的開放權重模型 Qwen-Image 2.1(7B) 與 Krea 2(12.9B,不支援影像編輯),同時在評分與端到端 API 延遲表現上雙雙優於閉源模型 Ideogram V4.5 與自家的 FLUX.2 [pro]。
- 世代演進幅度:相較於前代小型模型 FLUX.2 [klein] 9B,FLUX 3 Image Klein 的生成網路參數減少了 38%,但在文字生成影像項目上提升了 +91 Elo,在影像編輯項目上提升了 +70 Elo,將開源視覺模型的「速度—品質帕累托前緣(Speed–Quality Pareto Frontier)」大幅向外推進。
2. 消費級與資料中心 GPU 生成速度實測
根據 Black Forest Labs 官方部落格、ComfyUI 官方部落格(由 AI速報 與 CGinterest 完整轉載之 NVIDIA 實測數據)以及 Diffusers 官方測試報告,在 1024 × 1024(1 MP)解析度下,各級硬體的單張圖片生成時間如下:
| 測試硬體 (GPU) | 測試環境與工作流 | Base 基座版 (BF16, 50 步) | Distilled 蒸餾版 (16 步最佳量化) | 加速倍率与補充說明 |
|---|---|---|---|---|
| NVIDIA GB300 | TensorRT-LLM / SGLang (NVFP4) | 1.70 秒 | 0.55 秒(低於 0.6 秒) | 掛載 LoRA 僅增加約 5% 生成時間(BFL Blog) |
| NVIDIA H100 (80GB) | Diffusers (BF16, 無 Offload) | — | 1.93 秒(純文字生圖) | 單圖參考編輯為 3.87 秒,邊界框編輯為 4.10 秒(HF Blog) |
| NVIDIA H200 | 官方參考程式碼 (1 MP) | 約 12.0 秒 | 約 3.0 秒 | 同種子碼對照測試(GitHub) |
| NVIDIA RTX PRO 6000 | ComfyUI (INT8 ConvRot, 含佈局) | 17.0 秒 | 3.91 秒 | 提速 4.3 倍(ComfyUI Blog / CGinterest) |
| GeForce RTX 5090 | ComfyUI (INT8 ConvRot, 含佈局) | 23.8 秒 | 4.12 秒(約 4 秒) | 提速 5.8 倍(BFL Blog / CGinterest) |
| GeForce RTX 5070 | ComfyUI (INT8 ConvRot, 含佈局) | 71.5 秒 | 7.71 秒(低於 8 秒) | 提速 9.3 倍(AI速報 / CGinterest) |
| GeForce RTX 4070 | ComfyUI (INT8 ConvRot, 含佈局) | 77.7 秒 | 8.87 秒(低於 9 秒) | 提速 8.8 倍(BFL Blog / AI速報) |
從上表可見,INT8 ConvRot 量化搭配 16 步蒸餾模型在消費級顯卡上的效益最為顯著:原本在 RTX 5070 與 RTX 4070 上需要超過 70 秒才能跑完的 50 步 BF16 推論,直接縮短至 8 到 9 秒內完成,使本地端互動式修圖與排版迭代變得切實可行。
3. VRAM 記憶體需求與 9B 提示詞擴寫器的資源取捨
在評估本地部署硬體時,開發者需要特別留意「生成模型本體」與「全管線含提示詞擴寫器」之間的顯存差異:
- ComfyUI 輕量化管線(支援 8GB VRAM):透過 ComfyUI 的記憶體管理機制,載入
int8-convrot量化版生圖模型(5.8 GB)、INT8 文字編碼器(4.9 GB)與 W4A8 量化版提示詞擴寫器(6.7 GB),模型各階段元件可依序置換進出顯存,因此能在 RTX 3070 / RTX 4070 等 8GB VRAM 顯卡上順利運行(flux-3-image-klein-comfy 模型卡)。 - Diffusers 模組化管線(不含 PUP 擴寫器):根據 Diffusers 官方測試,在不啟用 CPU Offload 的情況下,載入模型後的峰值推論顯存分別為:NVFP4 約 15.3 GiB(載入後 13.4 GiB)、FP8 (
fp8r) 約 16.27 GiB(載入後 14.35 GiB)、BF16 約 20.72 GiB(載入後 18.80 GiB;若包含參考圖編輯則約 23.8 GiB)。 - 官方參考 CLI(B200 測試)與 18.8GB 提示詞擴寫器開銷:根據 GitHub 官方說明 與 OrcaRouter 技術分析,若使用官方參考 CLI 在不卸載的情況下執行
1024 × 1024生成(關閉擴寫器--no-pup),峰值顯存為 BF16 31 GB、FP8 26 GB(Base 為 29 GB)、NVFP4 25 GB(Base 為 26 GB)。而預設開啟的 BF16 提示詞擴寫器(flux-3-image-klein-pup)本身權重達 18.8 GB,在 80GB 顯卡上同時常駐會額外增加約 28 GB 的顯存佔用。
因此,若你的顯卡無法同時容納生圖模型與 9B 擴寫器,官方建議採取三種替代方案:(1)在 ComfyUI 中使用 w4a8(6.7 GB)或 int8(9.8 GB)量化版擴寫器;(2)在 Diffusers 中啟用 enable_auto_cpu_offload 或先編碼提示詞再釋放文字編碼器;(3)先單獨執行擴寫器將提示詞存成文字檔,再以 --no-pup 傳入生圖模型,或直接呼叫外部 LLM 搭配官方提供的 system_prompts.json 進行擴寫。
提示詞擴寫機制與 Bounding Box 佈局語法指南
1. 為什麼官方強調「切勿在沒有 Prompt Upsampler 的情況下使用模型」?
在 Hugging Face 模型卡 與 GitHub README 中,Black Forest Labs 特別標註了醒目警告:請勿在未經提示詞擴寫器(Prompt Upsampler)處理的情況下直接使用此模型。
原因在於 FLUX 3 Image Klein 在訓練階段接收的都是長達 200 字以上、結構極為詳盡的「完整場景描述(Full Scene Captions)」,內容涵蓋媒材與畫風、場景構圖、光源方向與鏡頭焦段,以及每個主體的色彩、材質與畫面座標。
- 若直接輸入簡短的原始提示詞(例如
"a red fox"),模型只會產出平庸、缺乏細節的通用畫面。 - 在進行影像編輯時,若只輸入一行簡短指令(例如
"make it blue"),模型會直接重新構圖(Reframe the shot),導致原圖結構遺失。正確的編輯提示詞必須是「完整描述參考圖既有內容,並將修改項目自然融合進去」的長篇描述。 - 描述藝術風格時,官方建議直接描繪具體的視覺屬性(如色盤、筆觸、材質肌理),而非僅列舉藝術作品名稱。
為此,官方開源了基於 Qwen3.5-9B 微調的視覺語言模型 flux-3-image-klein-pup(採用 Apache 2.0 授權)。該模型在凍結視覺編碼器(Vision Tower)的前提下經過兩階段訓練:第一階段以「簡短請求—完整擴寫描述」配對進行監督式微調(SFT),第二階段則將模型自己產出的多組提示詞交由 FLUX 3 Image Klein 在相同種子碼下算圖,並根據最終圖片品質進行偏好對齊微調(Preference Tuning)。其倉庫內的 system_prompts.json 包含四組系統提示詞:t2i(文字生圖)、i2i(參考圖編輯)、t2i_bbox(文字生圖含邊界框)與 i2i_bbox(參考圖編輯含邊界框)。即使使用中文或其他語言輸入簡短需求,擴寫器也會自動將其轉寫為符合 FLUX 3 規範的英文完整場景描述。
2. 邊界框(Bounding Boxes)排版與編輯語法
FLUX 3 Image Klein 支援在完整提示詞後方直接附加一個 JSON 陣列,用來定義畫面中各個物件的位置與大小。
- 座標格式:在模型底層提示詞、Diffusers 與 BFL API 中,畫布長寬皆正規化為
0到1000的整數網格(與圖片長寬比無關),每個邊界框格式為[y_min, x_min, y_max, x_max](即[上, 左, 下, 右],注意y軸在前、x軸在後;若使用官方 CLI 的--boxes boxes.json參數,則輸入0到1的浮點數,CLI 會自動轉換為 0–1000 格式)。 - 標籤對應:JSON 中的每個物件皆有唯一的
"id",並在前方的文字描述中以<id>標籤引用。
範例一:文字生圖指定元素空間位置(Text-to-Image Layout Control)
根據 Hugging Face 模型卡 範例,每個區域包含 id、bbox 與 desc 三個欄位:
Minimalist graphic illustration featuring a black silhouette of a person <silhouette_1> centered against a solid, vibrant chartreuse background <background_1>. The figure is captured in a dynamic, mid-stride running pose, facing toward the left side of the frame. [{"id": "background_1", "bbox": [0, 0, 1000, 1000], "desc": "A flat field of neon yellow-green with a subtle paper texture and fine, organic grain."}, {"id": "silhouette_1", "bbox": [150, 150, 850, 850], "desc": "A black silhouette of a person in motion, made of dense stippled ink."}]
範例二:參考圖局部搬移與固定背景(Image Editing with Boxes)
在編輯既有圖片時,JSON 中的每個區域改用 from(例如 "ref_image_0")、src_bbox(在參考圖中的原始位置)與 tgt_bbox(在輸出圖中的目標位置):
- 移動物件:設定不同的
src_bbox與tgt_bbox(例如將針織騎士從[500, 150, 850, 350]移往左上方的[194, 55, 544, 255])。 - 鎖定背景與其他物件不動:將不希望變動的背景或物件(如山崖、背景、火龍)也列入 JSON,並將其
src_bbox與tgt_bbox設為相同座標。 - 新增、改色或移除物件:若為原地改色或新增元素,可將
from與src_bbox設為null並指定tgt_bbox;若要移除參考圖中的某個物件,則將其tgt_bbox設為null。
[
{
"id": "knight_1",
"from": "ref_image_0",
"src_bbox": [500, 150, 850, 350],
"tgt_bbox": [194, 55, 544, 255],
"desc": "A miniature amigurumi knight crocheted from thick grey woolen yarn."
},
{
"id": "backdrop_1",
"from": "ref_image_0",
"src_bbox": [0, 0, 1000, 1000],
"tgt_bbox": [0, 0, 1000, 1000],
"desc": "A soft, out-of-focus backdrop of cream and indigo knitted yarn."
}
]
本地部署與開發實戰:ComfyUI、Diffusers 與 API
方式一:在 ComfyUI 中本地運行(支援 8GB 顯卡)
根據 ComfyUI 官方教學文件,FLUX 3 Image Klein 已整合進 ComfyUI 核心節點,需要 ComfyUI 0.41.0 或更新版本(或 0.41.1 backport 版本)。
1. 下載 ComfyUI 專用權重
請先前往 black-forest-labs/flux-3-image-klein-comfy 登入 Hugging Face 並同意授權條款,接著使用 hf download 將 INT8 量化版模型、文字編碼器、VAE 與擴寫器直接下載至 ComfyUI/models 對應目錄:
hf download black-forest-labs/flux-3-image-klein-comfy \
diffusion_models/flux3-image-klein-int8-convrot.safetensors \
text_encoders/qwen3vl_4b_int8_convrot.safetensors \
vae/flux2-vae.safetensors \
text_encoders/qwen3.5_9b_flux3_prompt_upsampler_int8_convrot.safetensors \
--local-dir ComfyUI/models
檔案在 ComfyUI/models/ 資料夾下的標準擺放結構如下:
📂 ComfyUI/models/
├── 📂 diffusion_models/
│ ├── flux3-image-klein-int8-convrot.safetensors # 16步蒸餾版 (或 bf16 / nvfp4)
│ └── flux3-image-klein-base-int8-convrot.safetensors # 50步基座版 (選用)
├── 📂 text_encoders/
│ ├── qwen3vl_4b_int8_convrot.safetensors # 文字編碼器 (CLIPLoader 類型設為 flux3)
│ └── qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors # 或 int8_convrot 擴寫器
└── 📂 vae/
└── flux2-vae.safetensors # FLUX.2 VAE
2. 載入內建工作流模板與操作要點
更新 ComfyUI 後,打開左側 Workflow Templates(工作流模板) 面板,即可找到四組官方預設工作流:
- FLUX 3 Image Klein: Text to Image(50 步 Base 文字生圖,CFG 預設
3.5) - FLUX 3 Image Klein Distilled: Text to Image(4–16 步蒸餾版文字生圖,CFG 固定為
1.0) - FLUX 3 Image Klein: Image Edit(50 步 Base 單圖/多圖編輯,CFG 設為
1.0) - FLUX 3 Image Klein Distilled: Image Edit(4–16 步蒸餾版快速影像編輯,CFG 固定為
1.0)
在 ComfyUI 中操作時的四個實用技巧:
- 提示詞擴寫開關(
enable_prompt_upsampler):文字生圖子圖(Subgraph)預設開啟 Qwen3.5-9B 擴寫器,只需輸入簡短描述即可;若已自行準備好長篇描述,可將enable_prompt_upsampler關閉以節省時間與顯存。 - 多參考圖連接方式(
Set Reference Multi Latent):進行影像編輯時,將LoadImage節點連接至Set Reference Multi Latent節點,第一張圖對應<ref_image_0>、第二張對應<ref_image_1>,且參考圖需同時連入正向(Positive)與負向(Negative)條件輸入。 - 視覺化繪製邊界框(
Create Bounding Boxes節點):官方模板內建Create Bounding Boxes節點,可直接在來源圖片上用滑鼠拖曳畫框,並在Preview Any節點檢視座標列表以整合進提示詞。 - 參考圖尺寸與成本調節:模板預設會將每張參考圖縮放至約 1 MP(
1024 × 1024)以控制計算量;若想保留最高細節,也可維持原始解析度輸入(官方管線最高支援至約 16 MP)。
方式二:使用 Hugging Face Diffusers 模組化管線(ModularPipeline)
根據 Hugging Face 模型卡 與 Diffusers 官方部落格,FLUX 3 Image Klein 在 Diffusers 中以全新的 ModularPipeline 架構提供支援。由於 Diffusers 管線本身不會自動呼叫 9B 擴寫器,建議先透過 transformers 載入 flux-3-image-klein-pup 擴寫提示詞,再交由生圖管線生成:
import json
import torch
from diffusers import ModularPipeline
from huggingface_hub import hf_hub_download
from transformers import AutoProcessor, Qwen3_5ForConditionalGeneration
# 1. 載入 FLUX 3 Image Klein 蒸餾版管線
pipe = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda")
# 2. 載入 9B Prompt Upsampler (Qwen3.5-9B)
pup_id = "black-forest-labs/flux-3-image-klein-pup"
processor = AutoProcessor.from_pretrained(pup_id)
upsampler = Qwen3_5ForConditionalGeneration.from_pretrained(
pup_id, dtype=torch.bfloat16, device_map="auto"
).eval()
system_prompts = json.load(open(hf_hub_download(pup_id, "system_prompts.json")))
def upsample(prompt, images=()):
if images:
text = (
"Reference images follow in order (the first image, the second image, ...).\n"
f"User request: {prompt}\nOutput the caption."
)
content = [{"type": "image", "image": img} for img in images] + [{"type": "text", "text": text}]
messages = [{"role": "system", "content": system_prompts["i2i"]}, {"role": "user", "content": content}]
else:
messages = [{"role": "system", "content": system_prompts["t2i"]}, {"role": "user", "content": prompt}]
inputs = processor.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt", enable_thinking=False
).to(upsampler.device)
with torch.no_grad():
output = upsampler.generate(**inputs, max_new_tokens=3584, do_sample=False)
return processor.decode(output[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True).strip()
# 3. 文字生成影像 (Text-to-Image)
caption = upsample('A chunky knitted diorama: three white cable-knit icebergs with tiny pale blue houses, a cream banner embroidered "KNITTED ICEBERG VILLAGE", a giant magenta knitted whale tail bursting from a yarn sea')
image = pipe(prompt=caption, generator=torch.Generator().manual_seed(1), output="images")[0]
image.save("knitted.png")
# 4. 傳入參考圖進行指令編輯 (Image-to-Image Editing)
edit_caption = upsample("the same scene at night under a knitted full moon, embroidered stars above the peaks", [image])
night = pipe(prompt=edit_caption, image=image, generator=torch.Generator().manual_seed(1), output="images")[0]
night.save("knitted_night.png")
若顯卡記憶體較小,可在 Diffusers 中直接從單一檔案載入 fp8r(支援 Ada、Hopper、Blackwell 加速核心)或 nvfp4(支援 Blackwell)量化版 Transformer,並搭配 ComponentsManager 啟用自動 CPU 卸載:
import torch
from diffusers import BFLQuantizationConfig, ComponentsManager, Flux3Transformer2DModel, ModularPipeline
model_id = "black-forest-labs/flux-3-image-klein"
variant = "fp8r" # 或 "nvfp4"
# 載入單檔量化版 Transformer
transformer = Flux3Transformer2DModel.from_single_file(
f"https://huggingface.co/{model_id}/blob/main/variants/{variant}/model.safetensors",
config=model_id,
subfolder="transformer",
quantization_config=BFLQuantizationConfig(compute_dtype=torch.bfloat16),
dtype=torch.bfloat16,
)
# 啟用自動 CPU Offload 降低峰值 VRAM
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")
pipe = ModularPipeline.from_pretrained(model_id, components_manager=manager)
pipe.load_components(dtype={"vae": torch.float32, "default": torch.bfloat16})
pipe.update_components(transformer=transformer)
方式三:官方參考 CLI、LoRA 微調與 BFL 雲端 API
1. 官方參考 CLI 與兩階段省顯存跑法
使用 GitHub 官方參考程式碼倉庫 時,CLI 預設會自動呼叫提示詞擴寫器,也可啟動包含「Layout(手繪邊界框)」、「Text to image」與「Edit」三大分頁的 Gradio 網頁介面(python scripts/app.py)。當顯卡無法同時塞下擴寫器與生圖模型時,可分兩步執行:
# 第一步:單獨執行 9B 擴寫器並將詳細描述輸出至 prompt.txt
python -m flux3.pup --prompt "A man walking with his dog, afternoon sun" --out prompt.txt
# 第二步:加上 --no-pup 與 --fp8 載入量化生圖模型直接算圖
python scripts/cli.py "$(cat prompt.txt)" --model distilled --fp8 --no-pup --out out.png
2. DreamBooth LoRA 微調(Base 訓練、Distilled 推論)
若需訓練自訂畫風、角色或專屬指令編輯能力,請使用未蒸餾的 black-forest-labs/flux-3-image-klein-base。目前已支援三種訓練管道:
- Hugging Face Diffusers:內建
train_dreambooth_lora_flux3_klein.py(文字生圖 LoRA)與train_dreambooth_lora_flux3_klein_img2img.py(指令編輯 LoRA,以[參考圖, 目標圖, 編輯指令]三元組進行訓練),支援--gradient_checkpointing、--cache_latents與--use_8bit_adam等省顯存參數(Diffusers 部落格)。 - Ostris’s AI Toolkit:首日支援 FLUX 3 Image Klein LoRA 訓練。根據官方文件範例,使用 20 張約 1 MP 的圖片、設定
rank=32、alpha=32、學習率1e-4訓練 4,000 步,在單張 GPU 上約需 4.5 小時;在 Base 模型上訓練完成的 LoRA 權重,可直接掛載到 16 步 Distilled 蒸餾模型上高速推論(建議設定 16 步、CFG1.0、LoRA 權重強度0.75)。 - NVIDIA NeMo AutoModel:提供可直接讀取官方檢查點進行企業級微調的訓練配方(BFL 官方部落格)。
3. 呼叫 Black Forest Labs 官方雲端 API
若不想在本地管理硬體,可直接呼叫 BFL 官方 API(/v1/flux-3-image-klein)。雲端 API 預設整合了自動提示詞擴寫與像素還原機制(Pixel Restoration,確保未編輯區域的像素完全不變):
curl --request POST \
--url https://api.bfl.ai/v1/flux-3-image-klein \
--header "x-key: $BFL_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"prompt": "change the color of only one bird in the middle to #e01075",
"images": [
"https://cdn.sanity.io/images/2gpum2i6/production/4792198dfeba9223bf3ecf020fed2942de7f0bd7-1800x1200.webp"
],
"resolution": "1k",
"output_format": "png"
}'
授權規範、API 定價與已知限制
1. FLUX Kommunity License v1.0 授權與商用門檻
根據 Hugging Face 模型卡 說明,FLUX 3 Image Klein 的模型權重採用 FLUX Kommunity License v1.0,而配套的文字編碼器(Qwen3-VL-4B-Instruct)、提示詞擴寫器(flux-3-image-klein-pup)與 GitHub 參考推論程式碼 皆採用 Apache License 2.0。在使用權重時需留意以下商用與合規界線:
- 免費商用輸出例外(年營收低於 500 萬美元):除了學術研究與非商業用途外,若個人或企業(含所有關係企業)的年總營收低於 500 萬美元(US$5M),屬於授權條款定義的合格使用者(Qualifying Users),可將模型生成的圖片直接用於商業用途。
- 商業產品整合與大規模自託管:將模型權重嵌入商業產品、對外提供託管生成服務,或企業年營收達 500 萬美元以上,皆須聯繫 Black Forest Labs 取得商業自託管授權(Commercial Self-Hosted License)或改用官方 API。此外,商用輸出例外條款並不代表允許無限制的商業微調模型再散佈。
- 禁止用途:授權條款明確禁止將模型及其輸出用於軍事用途、監控、生物特徵處理、生成違法或非自願親密影像(CSAM / NCII),以及禁止使用本模型或其輸出資料去訓練、改良其他功能類似於 FLUX 的 AI 模型。
2. BFL 雲端 API 解析度分級定價
根據 BFL 官方部落格、API 參考文件 與 CGinterest 整理之定價資料,BFL API 支援五種等面積解析度層級(resolution 參數),按每張生成影像計費:
API 解析度參數 (resolution) | 等效尺寸層級 | 單張圖片定價 (USD) |
|---|---|---|
768sq | 768 × 768 等面積層級 | $0.008 / 張 |
1k(文字生圖預設值) | 1024 × 1024(約 1 MP) | $0.009 / 張 |
1.5k | 約 1.5K 等面積層級 | $0.011 / 張 |
2k | 約 2K 等面積層級 | $0.014 / 張 |
4k | 原生 4K(最高 16.8 MP) | $0.036 / 張 |
3. 模型已知限制
在投入生產環境前,建議留意 官方模型卡 列出的四項技術限制:
- 邊界框為軟性空間引導而非硬性遮罩(Soft Guidance vs. Hard Mask):邊界框僅負責引導物件的放置位置與比例,並非強制裁切像素的遮罩。生成物件的邊緣可能會超出邊界框範圍,且若指定的框體過小,微小的請求元素可能不會出現。
- 本地端編輯可能影響非指定區域:在本地端執行指令編輯時,請求修改區域以外的背景或細節仍可能發生微小變動(若需嚴格鎖定非編輯區像素,可結合局部重繪遮罩或使用 BFL API 內建的 Pixel Restoration 功能)。
- 高度依賴完整提示詞擴寫:若跳過 Prompt Upsampler 直接傳入簡短字詞,生成品質與指令遵循度會明顯下降;且擴寫器在處理參考圖時會先將圖片縮放至 1 MP 以下,參考圖中極細微的局部特徵在擴寫階段可能被簡化。
- 文字渲染偶有失真:雖然支援版面文字繪製與修改,但複雜字型或過長段落仍可能出現拼寫錯誤或筆畫幾何扭曲。
相關連結與資源彙整
- Black Forest Labs 官方發布部落格:https://bfl.ai/blog/flux-3-image-klein
- Hugging Face 官方模型權重庫:https://huggingface.co/black-forest-labs/flux-3-image-klein
- ComfyUI 官方發布部落格:https://blog.comfy.org/p/flux-3-image-klein-in-comfyui-56b