FLUX 3 Image Klein 发布时最抓眼球的一句是「INT8 构建可在最低 8GB 显存的 RTX 上运行」。这句话没错,但它省略了三个限定词:哪张卡、多大分辨率、多少秒。官方速度图表只测了 1MP 输出,测的是 RTX 5090 与 RTX 4070,8GB 配置和 4K 分辨率都没进图——这一点 VentureBeat 在发布当天就点出来了。
所以这篇 SOP 不承诺「8GB 秒出 4K」。它只做一件事:把从零到出第一张图的路铺平,并把三个会让新手卡住半天的坑提前标出来。主线是 ComfyUI,辅线是 Diffusers。所有命令、文件名、字节数照抄官方仓库与第三方配方记录,速度数字一律标注口径,凡是没亲手跑过的都写清来源。
一、动手前先算三笔账:显卡、磁盘、账号
第一笔,显卡档位。 官方口径是三段。8GB 是门槛线,靠 INT8 量化构建撑住——transformer 与文本编码器都用 int8,官方明确说可以在最低 8GB 显存的 GeForce RTX 上跑,ComfyUI 与 Diffusers 两条路都行。12GB 与 16GB 属于从容档:同一套权重跑得更稳,能同时容纳 upsampler 与更大的 latent。再往上,BF16 权重占 11.2GB、FP8 占 5.6GB,这是官方公布的权重体积,指的是权重本身,不含激活值和推理缓存。
第二笔,磁盘。 ComfyUI 路线要下四个文件。按 v0.41.2 模板实际加载的 w4a8 upsampler 计算,四件合计 17,746,736,091 字节,约 17.6GB(十进制口径,折合约 16.5GiB)。这里藏着一条近 3GB 的岔路:如果照着官方 model card 的示例去下 int8 版 upsampler,单这一个文件就是 9,748,113,996 字节,四个文件合计变成 19.343GiB。硬盘多占 2.8GiB 是小事,16GB 卡装不下才是大事。
顺带说清一个容易被忽略的比例:四件文件里,真正负责出图的 transformer 只占 5.83GB,两个语言模型加起来超过 11.5GB。也就是说,卡在 8GB 线上的机器,压力主要不在出图那一步,而在把文本编码器和 upsampler 塞进显存的那一刻。理解这个比例,后面调显存才有方向——省显存要先省语言模型,不是先动采样步数。
第三笔,账号与网络。 ComfyUI 版权重仓库是 gated 的,HF 的 API 里标着 gated: "auto"。没登录、没接受条款,匿名请求直接返回 401,响应头里带 x-error-code: GatedRepo。这不是网络问题,也不是镜像问题,是许可没点同意。国内访问还需要能连上 huggingface.co 的网络环境,这个仓库没有官方替代源,别在下载脚本上反复试错。
二、第一步:接受许可再登录,顺序不能反
先浏览器里接受条款,再回终端登录。反过来做,hf auth login 显示成功也没用,拉取照样 401——因为 401 是仓库侧的判定,不是客户端鉴权失败。
三步走完:
- 打开 black-forest-labs/flux-3-image-klein-comfy,在已登录状态下接受许可条款。页面会把「你已同意」记在账号上,token 本身不携带这个状态。
- 本机升级客户端:
pip install -U huggingface_hub。版本太老可能不认 hf 这个新命令前缀。 - 执行
hf auth login,粘贴一个有 read 权限的 access token。token 在账号设置的 Access Tokens 页面生成。
pip install -U huggingface_hub
hf auth login验证有没有真的通,最省事的办法是直接跑下一步的下载命令,看第一个文件是否开始走进度条。如果仍然 401,回第 1 步确认:浏览器登录的账号和生成 token 的账号是不是同一个。这是最高频的翻车点——很多人浏览器里登着 A 账号,终端里贴的是 B 账号的 token,然后花两小时怀疑网络。
三、第二步:下载四个文件,别照抄卡片示例
四个文件各司其职:distilled transformer 负责出图,Qwen3-VL-4B 文本编码器负责读提示词,Qwen3.5-9B upsampler 负责把短指令扩写成完整场景描述,FLUX.2 VAE 负责潜空间与像素互转。
命令照抄,路径别改。--local-dir 指向 ComfyUI/models 之后,仓库里的 diffusion_models/、text_encoders/、vae/ 三层目录会自动落到 ComfyUI 对应的模型目录下,不用手动搬家。
hf download black-forest-labs/flux-3-image-klein-comfy \
diffusion_models/flux3_image_klein_sd_int8_convrot.safetensors \
text_encoders/qwen3vl_4b_int8_convrot.safetensors \
text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors \
vae/flux2-vae.safetensors --local-dir ComfyUI/models| 文件名 | 角色 | 字节数 |
|---|---|---|
| diffusion_models/flux3_image_klein_sd_int8_convrot.safetensors | distilled transformer,int8 | 5,827,874,779(约 5.83 GB) |
| text_encoders/qwen3vl_4b_int8_convrot.safetensors | Qwen3-VL-4B 文本编码器,int8 | 4,858,559,240(约 4.86 GB) |
| text_encoders/qwen3.5_9b_flux3_prompt_upsampler_w4a8.safetensors | 提示词增强器,w4a8 | 6,724,090,780 |
| vae/flux2-vae.safetensors | 自编码器 | 336,211,292 |
注意第三条命令里的文件名是 w4a8,不是 int8。这不是笔误,下面第七节坑 1 会把这两个文件的体量差算给你看。下完核对一下总字节数,对不上就是有文件没下全,别急着启动。
四、第三步:启动、进模板、认准 distilled
python main.py 起服务,浏览器打开 http://127.0.0.1:8188。首次启动会自动装依赖,卡在某个包上是常态,看终端报错逐个补,别一键重装环境。
进界面后别急着点 Queue。走 Workflow 菜单里的 Browse Templates,搜「FLUX 3」,选 distilled 的 Text to Image,模板 id 是 image_flux3_klein_distilled_t2i。四个官方模板里这是首选入口:distilled 是少步蒸馏版,16 步就出图,显存与时间都最友好。
选错模板有两个典型症状。一是模板选成 base 但权重下的是 distilled,出图糊成一片;二是模板里 upsampler 节点亮着,但对应文件没下,加载阶段直接报找不到 safetensors。前者换模板,后者补文件,都不是参数问题。
五、参数怎么设:默认能跑,三个点必须核
模板打开就是一套能用的默认值:1024×1024、euler 采样器、simple 调度、16 步、CFG 1。先按默认跑通一张再调参,这句不是敷衍,是省时间。
三个必须核对的点:
其一,两个文本编码器 loader 的 type 都选 flux3。 transformer 的 loader 与文本编码器的 loader 是分开的两个节点,任何一个 type 选错,模型会按错误的分词与维度去读,报的错通常跟 type 毫无关系,排查方向会被带偏。
其二,upsampler 开关必须保持打开。 官方 model card 原话是 "Do not use the model without a prompt upsampler.",没有留余地。原因不玄:Klein 的提示词理解走 Qwen3-VL,短指令直接喂进去,模型会自行脑补场景,出的图和你想的不是一回事,编辑与 Ref2Image 场景尤其明显。
其三,分辨率与步数的边界。 最高 4K,宽高必须是 16 的倍数,写 1000×1000 会被对齐或直接报错。参考图最多 10 张,做角色一致性、风格迁移够用。官方给的两个基准是 distilled 16 步不带 guidance、base 50 步 CFG 3.5。模板已按 distilled 填好,别手动加 guidance,加了更容易糊。
再补一个实操细节:模板里 latent 的尺寸是独立节点,改分辨率时要连它一起改,只动一个地方,跑起来会报尺寸不一致。做 4K 时先把 latent 宽高调到 16 的倍数,再点 Queue,比出图失败后翻日志快得多。
六、显存预算表:你的卡该选哪一档
| 精度 / 构建 | 权重占用 | 定位 | 速度参考 |
|---|---|---|---|
| BF16 | 11.2 GB | 高显存,微调首选 | 官方未单列 |
| FP8 | 5.6 GB | 中等显存 | 官方未单列 |
| INT8 | 可在 8GB RTX 上跑 | 消费级笔电与中端卡 | 1MP 图:RTX 5090 约 4 秒、RTX 4070 不到 9 秒(厂商口径) |
| NVFP4 | 数据中心级 | 高吞吐 | 1MP 图在 GB300 上不到 0.6 秒(厂商口径) |
三条必须记住的限定。第一,表中所有速度都是厂商口径,非独立复测,测试条件是 distilled 加 INT8、1MP 输出、ComfyUI。第二,8GB 那句「可跑」没绑具体变体、输出尺寸与生成时间,官方速度图也没测 8GB 配置和 4K,所以 8GB 跑 4K 属于没被官方验证过的组合,要自己试。第三,挂 LoRA 会让生成时间增加约 5%,这是官方给的量级,不是精确值。
七、三个实测坑,每一个都能让你卡半天
先说来源:下面三条不是本文作者的实测,而是第三方配方文记录与模板文件实查的结果,字节数可直接核对。
坑 1:upsampler 选 int8,16GB 卡直接装不下。
官方 model card 的示例给的是 int8 版 upsampler,9,748,113,996 字节,约 9.08GiB。四个文件按这个组合算,合计 19.343GiB。而 ComfyUI v0.41.2 的 distilled 模板实际是按文件名加载 w4a8 版本,6,724,090,780 字节,比 int8 小 2.816GiB。第三方配方的实测结论很直接:照卡片示例下 int8,四文件合计 19.343GiB,16GB 卡装不下。两条命令的差别只在一个文件名,代价是近 3GB 显存和一次完整的重下。
坑 2:编辑模板到底有没有 upsampler 分支,官方说法和实际模板不一致。
官方 model card 称编辑模板没有 upsampler 分支,需要自备一个 LLM 先跑提示词增强,再把扩写后的提示词粘进节点。但 v0.41.2 的编辑模板里实际含有一个默认关闭的 upsampler 分支:TextGenerate 节点、W4A8 loader、以及一段图像编辑专用的 system prompt 都在,把开关打开就能在流程内完成增强。两条路都能走——想省一次外部调用就开分支,想用自己更熟的模型就外部生成再粘贴。别因为读了 model card 就以为模板里没有,也别因为模板里有就以为可以不带。
坑 3:不带 upsampler 直接用,编辑与 Ref2Image 结果不稳定。
这是坑 2 的下游后果。model card 那句 "Do not use the model without a prompt upsampler." 是明文禁止,不是建议。省掉这一步,文生图还能看,编辑和多参考生成会开始飘:未编辑区域该保持的地方被重绘、参考图的人物特征漂移、bounding box 指定的落位偏移。判断方法很简单,同一提示词开一次 upsampler 再关一次,对比未编辑区域是否逐像素保持。
更隐蔽的一种表现是「看起来成功了」:出图完整、构图也对,但原图里的一块纹理被轻微改写,缩略图看不出来,放大到 100% 才发现。做商品图、人像修复这类要求原样保留的场景,验收必须放大到像素级,别只看整体构图。
八、Diffusers 路线:代码党怎么接
不想装 ComfyUI,或者要把出图流程嵌进自己的服务,走 Diffusers。
权重来源是清晰的:distilled 在 huggingface.co/black-forest-labs/flux-3-image-klein,base 在 huggingface.co/black-forest-labs/flux-3-image-klein-base,用 huggingface_hub 拉取后交给 Diffusers 加载。官方提供参考推理代码,也提供带 bounding box 控制的 Gradio demo,base 仓库适合微调、distilled 适合直接出图。
这里必须诚实一句:本文没有实抓官方 Diffusers 文档,所以不写具体类名与调用参数。写成「某某 Pipeline.from_pretrained 三行搞定」很漂亮,但类名一旦猜错,读者复制过去就是一堆 ImportError,比不写更糟。具体 API 请以两个仓库的 README 与示例脚本为准,版本迭代很快。
另外,Diffusers 路线在显存管理上更依赖你自己。ComfyUI 的按需加载与卸载是内置的,迁到 Diffusers 之后,模型拆成几个组件加载、什么时候搬上 GPU、什么时候换回 CPU,都得自己写。8GB 卡上这一步不做,很可能第一张图就 OOM。
九、LoRA 与微调:现成 recipes 已经有了
训练侧不用从零搭。Ostris AI Toolkit 与 NVIDIA NeMo AutoModel 都提供了 FLUX 3 Klein 的现成 recipes,前者在社区里用得多、上手快,后者适合已有 NVIDIA 训练栈的团队。官方公布的训练硬件是 NVIDIA GB200 NVL72,这是训练侧的口径,跟你本地 8GB 推理没有关系。
推理侧挂 LoRA 的成本官方给了个数:生成时间增加约 5%。这个量级意味着风格化 LoRA 可以常驻,不必来回卸载。要微调就选 base 变体,distilled 是为少步推理蒸馏过的,拿它做微调起点不划算。
十、验收清单与许可提醒
出图之后按这四条验收,能挡住大部分「看着不对但说不出哪不对」:
- 分辨率宽高是否都是 16 的倍数,输出尺寸和设定是否一致。
- upsampler 是否真的生效——看节点是否执行、看扩写后的提示词长度。
- 编辑任务里未编辑区域是否保持,逐像素对比原图。
- 显存峰值是否留有余量,16GB 卡跑 4K 时特别要看这一条。
再提醒一句版本问题:本文的模板 id 与文件字节数对应 ComfyUI v0.41.2 与 2026-10-17 的仓库快照,几周后可能变化。下文件前先核对字节数,对不上就以仓库当前列表为准,别硬套数字。
许可是最后一道坎,也是最多人忽略的一道。FLUX 3 Klein 用的是 FLUX Kommunity License(v1.0)。官方博文与 VentureBeat 已确认的三条是:个人与年化总营收低于 500 万美元的公司可免费商用;研究与非商用对所有人免费;超过门槛的组织需要自托管商业许可或走 API。触发口径按年度总营收加关联方合并计算。该许可对输出审核与再分发另设条件。
必须说清一件事:Klein 自身的 LICENSE 全文没有实抓(仓库 gated),所以上面三条之外不展开、不推测。商用前请自己打开仓库里的 LICENSE 原文逐条读,本文不构成法律意见。
常见问题
Q1:8GB 显存到底能不能跑 4K? A1:官方只说 INT8 构建可在最低 8GB 的 RTX 上运行,没有绑定分辨率和生成时间,官方速度图也没测 8GB 配置与 4K 输出。所以「8GB 能跑」是官方口径,「8GB 能跑 4K」是没被验证的组合。想稳,先在 1024×1024 跑通,再逐级加分辨率看显存峰值。
Q2:下载时报 401 GatedRepo,是网络问题吗? A2:不是。这是仓库侧的许可判定,说明当前身份没被记录为已同意条款。解决顺序是先登录网页接受许可,再 hf auth login,且两者必须是同一个账号。换镜像、重装客户端都无效。
Q3:四个文件必须全下吗,能不能省掉 upsampler? A3:技术上能启动,但不建议。官方 model card 明文写 "Do not use the model without a prompt upsampler.",省掉之后编辑与多参考生成的结果会明显不稳。真要用外部 LLM 做增强,也得保留扩写这一步,只是把执行位置换到流程外。
Q4:upsampler 下 int8 还是 w4a8? A4:按 ComfyUI v0.41.2 模板走就下 w4a8,6,724,090,780 字节。int8 版是 9,748,113,996 字节,四文件合计 19.343GiB,第三方配方实测 16GB 卡装不下,两者差 2.816GiB。
Q5:能商用吗? A5:个人与年营收低于 500 万美元的公司可免费商用,研究与非商用免费,超门槛需自托管商业许可或走 API,这是官方博文与 VentureBeat 已确认的口径。许可全文因仓库 gated 未实抓,具体条款以 LICENSE 原文为准。
延伸阅读
- Qwen-Image 2.1开源:权重回来了,Apache没回来:同期另一个开源图像模型,可作对照
- ComfyUI视频生成SOP:12GB显卡跑通LTX-2.5:ComfyUI 换到视频线,12GB 卡跑通
- LLaDA-Image 本地部署 SOP:五步跑通 6B 生图模型:另一条更低显存的图像部署路线