Skip to content
🧠 模型×任务工作流第 6 / 16 节

FLUX.1 文生图:dev 与 schnell 本地部署 ​

FLUX.1 是 Black Forest Labs 的文生图模型——这家公司由前 Stable Diffusion 团队成员创立。官方教程对它的介绍是:最大的开源文生图模型之一,12B 参数、原始文件约 23GB,以出色的图像质量和灵活性著称,架构上混合了 Transformer 与扩散模型两家之长。

这一页带你把官方 FLUX 工作流从头跑通:先分清 dev 与 schnell 两个开源版本,再用「全量版四件套」跑出第一张图,最后看看低显存设备怎么用 fp8 单文件版。

学完你能做什么 ​

  • 分清 FLUX.1 三兄弟(Pro / dev / schnell)的定位与许可证,知道本地部署选哪个
  • 跑通 FLUX.1 dev 全量版工作流:四个模型文件各归其位,20 步出图
  • 一键切换 schnell:只换扩散模型、步数改 4,高速抽卡
  • 用 fp8 单文件 checkpoint 在低显存设备上跑 FLUX,只装一个模型文件
  • 记住 FLUX 的铁律参数:cfg 1、不写负向提示词、euler + simple

你现在的困境 ​

  • 听说 FLUX 画质顶,一看权重 20GB 起步,不知道自己的显卡和硬盘带不带得动
  • 下载了官方模板,DualCLIPLoader 两个下拉框不知道 clip_l 和 t5xxl 谁放哪格
  • 沿用 SD1.5 的习惯:cfg 拉到 7、猛写负向提示词,FLUX 完全不理会

什么时候用这一招 ​

当你需要:

  • 出色的图像质量和「写什么画什么」的提示词遵循——复杂提示词也还原得到位
  • 本地跑旗舰级开源模型,不依赖、也不为闭源 API 付费
  • 要么精修出图(dev 20 步),要么高速抽卡(schnell 4 步)

而且不想:

  • 在低显存机器上被 23GB 权重劝退——第 6 步的 fp8 单文件版就是解法
  • 折腾负向提示词——FLUX 的官方工作流根本不用它

🎒 开始前的准备 ​

  • 跑通了第一次生图:会加载工作流、写提示词、按 Ctrl+Enter 运行
  • 模型目录规则心里有数:diffusion_models、text_encoders、vae、checkpoints 各放什么(忘了回看模型放哪里)
  • 硬盘预留约 32GB 给 dev 全量版四件套;走 fp8 单文件版只需一个文件的量
  • 想下 dev 版:Hugging Face 账号已登录,并同意 FLUX.1-dev 仓库的许可协议(非商用);schnell 是 Apache 2.0,没有这个门槛
  • 网络能连 Hugging Face;连不稳就走 ModelScope 国内镜像(第 2 步给地址)
  • ComfyUI 已更新到最新版本(官方教程开篇的提醒)
  • 一杯水 ☕——本课最大的等待就是下模型

核心思路 ​

FLUX.1 是「混合架构」。 官方说明它结合了 Transformer 网络和扩散模型的优势:文本和图像信息在模型里有效整合,生成图与提示词的对齐精度高,对复杂提示词的还原尤其出色。12B 参数捕捉到的模式关系更复杂,出图更真实、更多样,风格适配面也宽。

三兄弟分工(本页跑的是后两个):

版本许可证特点获取方式
FLUX.1 Pro闭源表现最好的旗舰仅 API 调用
FLUX.1 dev开源,非商用从 Pro 蒸馏,性能接近 ProHugging Face 下载,需同意协议
FLUX.1 schnellApache 2.0蒸馏加速版,4 步出图,适合低配硬件Hugging Face 直接下载

两条部署路线(官方教程就是这么分的):

路线要装什么画质显存适合
全量版(四件套)扩散模型 + 两个文本编码器 + VAE 分开装最佳要求更高显存充足、要最佳提示词遵循
fp8 单文件 checkpoint一个 fp8 量化文件略低于全量版要求更低显存有限、想快速跑起来

为什么 cfg 固定 1、不写负向提示词? 官方教程原话:得益于 FLUX 出色的提示词遵循能力,不需要任何负向提示词。所以官方模板把负向条件用 ConditioningZeroOut 节点直接置零,cfg 固定 1——schnell 模板里的便签还专门提醒:cfg 设成 1.0,负向提示词就被忽略了。

工作流骨架(全量版;比单 checkpoint 工作流多出两个 loader):

UNETLoader(扩散模型)──────────────────────────→ KSampler ──→ VAEDecode ──→ SaveImage
DualCLIPLoader(clip_l + t5xxl)──→ CLIPTextEncode(你的提示词)──→ KSampler(positive)
                                        └──→ ConditioningZeroOut ──→ KSampler(negative,置零)
VAELoader(VAE)──────────────────────────────────────────────→ VAEDecode
EmptySD3LatentImage(1024×1024 空画布)───────────────────────→ KSampler

跟我做 ​

第 1 步:加载官方 FLUX 工作流 ​

为什么:官方模板库里 FLUX.1 文生图模板的参数和模型链接都配好了,比从零连线快得多。

操作:左侧栏 Templates 打开模板库,搜 Flux.1,本课主线用这一个:

模板名模板 ID内容
Flux.1 开发专用:文生图flux_dev_full_text_to_imagedev 全量版,20 步

不想用模板库的话,直接下载 JSON 再用菜单 Workflows → Open(Ctrl+O)打开:flux_dev_full_text_to_image.json。模板库的完整玩法见模板库。

你应该看到:画布上是一个名为 Text to Image (Flux.1 Dev) 的子图节点,prompt、宽高、seed、模型文件名这些常用参数都暴露在节点表面,旁边还有一张写满模型下载链接的便签(MarkdownNote)。

  • 画布上加载了 dev 全量版工作流

第 2 步:下载 dev 全量版四件套并归位 ​

为什么:全量版不打包成单个 checkpoint,四个文件分开装;放错子目录,loader 的下拉列表里就找不到文件。

操作:从 Hugging Face 下载四个文件(模板便签里附了官方下载入口):

文件大小放进哪个子目录下载
flux1-dev.safetensors22.17 GBmodels/diffusion_models/Hugging Face
clip_l.safetensors234.7 MBmodels/text_encoders/Hugging Face
t5xxl_fp16.safetensors9.12 GBmodels/text_encoders/Hugging Face
ae.safetensors319.8 MBmodels/vae/Hugging Face

目录结构长这样:

ComfyUI/
├── models/
│   ├── diffusion_models/
│   │   └── flux1-dev.safetensors
│   ├── text_encoders/
│   │   ├── clip_l.safetensors
│   │   └── t5xxl_fp16.safetensors
│   └── vae/
│       └── ae.safetensors

💡 国内下载与低显存替换

  • ModelScope 有官方镜像:扩散模型仓库 Comfy-Org/flux1-dev、VAE 所在的 Comfy-Org/Lumina_Image_2.0_Repackaged,模板便签里都附了链接。
  • 显存不到 32GB:官方教程建议换用 fp8 版文本编码器省显存,模板便签列出的是 t5xxl_fp8_e4m3fn_scaled.safetensors(4.8 GB),其余文件不动。

⚠️ dev 版要先同意许可协议

dev 权重在 Hugging Face 上需要登录并同意 FLUX.1-dev 的许可协议(非商用)才能下载——官方教程特别提醒:下不了先检查这两件事。schnell 是 Apache 2.0,没有这个门槛。

放好后画布上按 r 刷新,在子图的模型下拉框(或进子图内部的 loader 节点)选中对应文件。哪个文件进哪格不确定,回看模型放哪里的对照表。

你应该看到:红色缺失警告全部消失,loader 都显示正确的文件名。

  • 四个文件各归其位,loader 都选中了文件

第 3 步:读懂 FLUX 工作流的节点与参数 ​

为什么:会调参的前提,是知道每个节点干什么、默认参数为什么是它。

操作:双击进子图内部,逐节点对照这张表:

节点干什么模板里的关键参数
UNETLoader(Load Diffusion Model)装扩散模型本体(12B)flux1-dev.safetensors
DualCLIPLoader一次装两个文本编码器第一格 clip_l.safetensors,第二格 t5xxl_fp16.safetensors,type flux
VAELoader(Load VAE)装 VAEae.safetensors
CLIPTextEncode把提示词编码成条件接 KSampler 的 positive
ConditioningZeroOut把负向条件置零FLUX cfg=1,不需要负向提示词
EmptySD3LatentImage造空画布1024×1024、批次 1
KSampler去噪采样20 步、cfg 1、euler、simple、denoise 1.0
VAEDecode潜空间解码成像素—
SaveImage预览并保存文件落 ComfyUI/output/

DualCLIPLoader 两格的顺序有讲究:ComfyUI 源码里写明的配方是 flux 类型 = clip-l, t5——第一格放 clip_l,第二格放 t5xxl,type 选 flux。

你应该看到:从左到右你能说出每个节点的职责,KSampler 参数与上表一致。

  • 我能说出四件套分别由哪个 loader 装、KSampler 的关键参数是什么

第 4 步:写提示词,跑出第一张 dev 图 ​

为什么:FLUX 的招牌是提示词遵循——提示词写得越具体,画面还原越到位,而且不需要负向提示词。

操作:

  1. 在子图的 prompt 框写提示词。官方模板自带的示例:
text
A fairy tale scene of a young girl with silver curly hair wearing a delicate white dress, standing among crystal butterflies and glowing glass roses. The scene is filled with soft magical light, like a dream from a fantasy world.
  1. 尺寸默认 1024×1024,想换比例就改子图的 width / height
  2. 点 Run,或按 Ctrl+Enter

你应该看到:进度条走满 20 步,SaveImage 节点出图——画面里是提示词描述的那些元素:银发女孩、白裙、水晶蝴蝶、发光玻璃玫瑰,像童话场景。

  • SaveImage 里出现了第一张 FLUX.1 dev 生成的图

第 5 步:换 schnell——4 步快速出图 ​

为什么:schnell 在蒸馏路上走得更远:4 步就能出好图,许可证还是宽松的 Apache 2.0。官方教程说明:schnell 工作流与 dev 版相比只有模型文件不同。

操作:

  1. 额外下载 flux1-schnell.safetensors(22.15 GB)放进 models/diffusion_models/,仓库:Comfy-Org/flux1-schnell(ModelScope 镜像)。文本编码器和 VAE 沿用第 2 步那套(官方模板默认 t5xxl_fp16;文档也提到 schnell 可用 fp8 版 t5xxl 省显存,fp16 效果更好)
  2. 两种跑法任选:

方式 A:加载 schnell 全量版模板(推荐) ​

模板库搜 Flux.1,选「Flux.1 Schnell Full: 文生图」(flux_schnell_full_text_to_image)。它的提示词节点是 CLIPTextEncodeFlux:提示词分成 clip_l 和 t5xxl 两个字段——可以写不一样的内容,官方示例就是两段不同的描述——外加一个 guidance 参数,模板默认 3.5。

方式 B:沿用 dev 工作流改两处 ​

把 UNETLoader 换成 flux1-schnell.safetensors,KSampler 步数 20 → 4。其余不动。

  1. 点 Run

你应该看到:进度条只走 4 步就出图,速度肉眼可见地快。官方对 schnell 的定位就是低配硬件也能跑的快速版。

  • schnell 版跑通,4 步出图

第 6 步:显存吃紧?上 fp8 单文件 checkpoint ​

为什么:fp8 单文件版把扩散模型、文本编码器、VAE 打包成一个量化 checkpoint——只要一个文件、显存要求更低,代价是画质比全量版略降。官方对它的定位就是显存有限设备的单文件入门方案。

操作:

版本下载放进加载节点步数
schnell fp8flux1-schnell-fp8.safetensorsmodels/checkpoints/Load Checkpoint4
dev fp8flux1-dev-fp8.safetensorsmodels/checkpoints/Load Checkpoint20(同全量版)
  1. schnell fp8 直接用模板:模板库搜 Flux.1,选「Flux.1 Schnell FP8」(flux_schnell)。它的结构就是单 checkpoint 版:一个 CheckpointLoaderSimple 节点输出 MODEL / CLIP / VAE 三路,负向提示词框留空,KSampler 4 步、cfg 1
  2. dev fp8 按官方教程手动搭:下载 flux1-dev-fp8.safetensors 放进 models/checkpoints/,用 Load Checkpoint 节点加载。最省事的搭法:复制 schnell fp8 模板,把 checkpoint 换成 flux1-dev-fp8.safetensors,步数改回 20
  3. 点 Run

⚠️ 别被这个模板名带偏

模板库里还有个「Flux.1 开发专用 fp8: 文生图」(flux_dev_checkpoint_example)——名字带 fp8,但模板实际内容是与第 1 步同结构的全量版四件套工作流(同样 20 步)。跑单文件 dev 版按上面第 2 条手动改,别指望这个模板。

你应该看到:画布上只剩一个 checkpoint loader(不再是一排 loader),checkpoints/ 里一个新文件就能出图。

  • fp8 单文件版跑通,且文件放在 models/checkpoints/

检查点 ✅ ​

  • dev 全量版跑通:模板加载 → 四件套归位 → 20 步出图
  • schnell 跑通:换扩散模型 + 4 步,或直接用 schnell 模板
  • 我知道 cfg 1、不写负向提示词是 FLUX 的设计,不是工作流坏了
  • fp8 单文件版的文件放在 models/checkpoints/,不是 diffusion_models/
  • 说得出 dev(非商用、20 步)和 schnell(Apache 2.0、4 步)的区别

踩坑提醒 ​

❌ cfg 拉高、猛写负向提示词 ​

原因:FLUX 官方工作流 cfg 固定 1,负向条件被 ConditioningZeroOut 置零;schnell 模板便签原话——cfg 设成 1.0,负向提示词就被忽略。正确做法:cfg 保持 1,精力全放在正向提示词的画面描述上。

❌ dev 模型下载被拒(401 / 403) ​

原因:FLUX.1 dev 是非商用许可,Hugging Face 上要先登录并同意仓库协议。正确做法:登录账号、进仓库同意协议后再下;或走 ModelScope 镜像(第 2 步)。schnell(Apache 2.0)无此限制。

❌ fp8 文件放进 diffusion_models,节点里找不到 ​

原因:flux1-dev-fp8.safetensors / flux1-schnell-fp8.safetensors 是打包好的 checkpoint,归 models/checkpoints/,由 Load Checkpoint 加载;全量版的 flux1-dev.safetensors 才归 diffusion_models/。正确做法:按第 6 步的表格归位;还找不到就按模型加载失败排查。

❌ 显存不够,全量版直接 OOM ​

原因:全量版要同时伺候 22GB 级的扩散模型和 9GB 级的 t5xxl_fp16。正确做法:先按官方建议把 t5xxl 换成 t5xxl_fp8_e4m3fn_scaled.safetensors(4.8 GB);还不行就整体换 fp8 单文件版;系统解法见显存不足。

进阶技巧(可选) ​

🔧 提示词写完整长句:FLUX 对复杂提示词的还原是强项,官方示例都是完整的长句场景描述——人物、环境、光线一次写全,比堆关键词标签更有效。

🔧 拖图即得工作流:官方教程的示例图都带工作流元数据,把图直接拖进 ComfyUI 窗口(或 Workflows → Open)就能还原出完整工作流和模型下载信息——看到别人用 FLUX 出的好图,先试试拖进来。

🔧 FLUX 家族还有几张牌:修图用 FLUX.1 Kontext(角色一致性、多轮迭代),局部重绘与扩图用 FLUX.1 Fill,新一代多参照一致性见 FLUX.2 和 FLUX.3 Klein。

本课小结 ​

✅ FLUX 工作流跑通了:dev 全量版四件套归位 → 20 步出图;schnell 换扩散模型、步数改 4。

✅ 版本会选了:dev 非商用、性能接近闭源旗舰 Pro;schnell 是 Apache 2.0 的 4 步加速版,低配友好。

✅ 参数记住了:cfg 1、不写负向提示词、euler + simple;dev 20 步、schnell 4 步。

✅ 低显存有后路:t5xxl 换 fp8 版省一半体积,或整体换 fp8 单文件 checkpoint(放 checkpoints/)。

关键配置回顾:

配置推荐值说明
扩散模型(dev)flux1-dev.safetensors(22.17 GB)放 models/diffusion_models/;fp8 单文件版用 flux1-dev-fp8.safetensors,放 checkpoints/
扩散模型(schnell)flux1-schnell.safetensors(22.15 GB)同上;fp8 版 flux1-schnell-fp8.safetensors
文本编码器clip_l.safetensors + t5xxl_fp16.safetensors(9.12 GB)放 models/text_encoders/;低显存换 t5xxl_fp8_e4m3fn_scaled.safetensors(4.8 GB)
VAEae.safetensors(319.8 MB)放 models/vae/
DualCLIPLoader第一格 clip_l、第二格 t5xxl、type flux源码配方:flux = clip-l, t5
KSampler(dev)20 步、cfg 1、euler、simple、denoise 1.0官方模板配置
KSampler(schnell)4 步、cfg 1、euler、simple、denoise 1.0schnell 是 4 步蒸馏模型
画布EmptySD3LatentImage 1024×1024换比例改 width / height

下一课预告 ​

文生图只是 FLUX.1 的起点。下一课的 FLUX.1 Kontext 把它变成「迭代修图引擎」:给一张角色图,用指令一轮轮地改,角色长相还不跑偏。下一课:FLUX.1 Kontext。

你会学到:

  • Kontext dev 的本地部署(fp8 权重 + 文本编码器 + VAE)
  • 用「Load Image(from output)」节点把上一轮结果直接喂回下一轮
  • 指令式迭代修图:角色一致性、风格参照
  • Kontext 的限制:提示词仅支持英文
搞懂AI关于我们怎么写隐私说明

独立的第三方教程,与文中提到的任何产品及其公司没有隶属或合作关系;产品名称和商标归各自所有者。价格和政策以官方页面为准。