ComfyUI_FluxMod 插件完全教程 - 让你的显卡也能跑 Flux 模型!
1. 插件简介
插件地址: https://github.com/lodestone-rock/ComfyUI_FluxMod
这个插件就像是给 Flux 模型装了一个"压缩器",能把原本需要 24GB 显存的 Flux 模型压缩到只需要 10GB 左右就能跑!想象一下,原来的 Flux 模型就像一个巨大的行李箱,装满了各种东西,而这个插件就像是一个神奇的压缩袋,能把行李箱里的东西压缩得更小,但功能基本不变。
主要功能:
- 把 Flux 模型从 12B 参数压缩到 8.8B 参数
- 支持 8 位量化,进一步节省显存
- 画质损失很小,肉眼几乎看不出区别
- 支持 Flux Dev 和 Flux Schnell 两种模型
- 还包含了 Chroma 模型的支持(一个基于 Flux 的新模型)
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 确保你已经安装了 ComfyUI Manager
- 打开 ComfyUI,点击右下角的拼图图标(Manager 按钮)
- 点击"Custom Nodes Manager"标签
- 在搜索框输入"ComfyUI_FluxMod"
- 点击"Install"按钮
- 重启 ComfyUI
方法二:手动安装
- 打开终端/命令提示符
- 进入你的 ComfyUI 安装目录下的 custom_nodes 文件夹
- 运行命令:
git clone https://github.com/lodestone-rock/ComfyUI_FluxMod.git - 重启 ComfyUI
3. 节点详细解析
3.1 FluxModDiffusionLoader 节点 - 主要模型加载器
这个节点就像是一个"智能搬运工",专门负责把压缩后的 Flux 模型搬到内存里,让你的电脑能够使用它。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 文件列表选择 | 你的 Flux 模型文件 | 选择你要用的 Flux 模型文件,就像选择要播放的电影文件一样 | 指定要加载的 Flux 扩散模型文件路径 | 选择 flux1-dev.safetensors 或 flux1-schnell.safetensors |
| guidance_name | guidance_name | 文件列表选择 | universal_modulator.safetensors | 选择压缩用的"魔法文件",这个文件告诉模型怎么压缩 | 指定时间步引导层的权重文件,用于模型压缩 | 下载 universal_modulator.safetensors 并选择它 |
| quant_mode | quant_mode | bf16/float8_e4m3fn (8 bit)/float8_e5m2 (also 8 bit) | float8_e4m3fn (8 bit) | 选择压缩程度,就像选择图片压缩质量一样 | 选择模型量化精度,影响显存占用和计算精度 | 12GB显存选8bit,24GB显存选bf16 |
3.2 FluxModDiffusionLoaderMini 节点 - 迷你模型加载器
这个节点是上面那个加载器的"升级版",能加载更小的模型版本,就像是从"标准版"升级到"精简版"。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 文件列表选择 | 你的 Flux 模型文件 | 选择你要用的 Flux 模型文件,就像选择要播放的电影文件一样 | 指定要加载的 Flux 扩散模型文件路径 | 选择 flux1-dev.safetensors 或 flux1-schnell.safetensors |
| guidance_name | guidance_name | 文件列表选择 | universal_modulator.safetensors | 选择压缩用的"魔法文件",这个文件告诉模型怎么压缩 | 指定时间步引导层的权重文件,用于模型压缩 | 下载 universal_modulator.safetensors 并选择它 |
| quant_mode | quant_mode | bf16/float8_e4m3fn (8 bit)/float8_e5m2 (also 8 bit) | float8_e4m3fn (8 bit) | 选择压缩程度,就像选择图片压缩质量一样 | 选择模型量化精度,影响显存占用和计算精度 | 12GB显存选8bit,24GB显存选bf16 |
| lite_patch_unet_name | lite_patch_unet_name | 文件列表选择 | None | 选择额外的"补丁文件",让模型变得更小更快 | 指定轻量级补丁文件,进一步减少模型大小 | 如果有专门的轻量级补丁文件就选择,没有就选None |
3.3 ChromaDiffusionLoader 节点 - Chroma 模型专用加载器
这个节点专门用来加载 Chroma 模型,Chroma 是基于 Flux 开发的一个新模型,就像是 Flux 的"兄弟版本"。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 文件列表选择 | Chroma 模型文件 | 选择 Chroma 模型文件,这是一个特殊的 AI 绘画模型 | 指定要加载的 Chroma 扩散模型文件路径 | 从 HuggingFace 下载 Chroma 模型并选择 |
| quant_mode | quant_mode | bf16/float8_e4m3fn (8 bit)/float8_e5m2 (also 8 bit) | float8_e4m3fn (8 bit) | 选择压缩程度,就像选择图片压缩质量一样 | 选择模型量化精度,影响显存占用和计算精度 | 12GB显存选8bit,24GB显存选bf16 |
3.4 ChromaPaddingRemoval 节点 - 填充移除器
这个节点就像是一个"文字清理工",专门清理 Chroma 模型处理文字时产生的多余"垃圾",让文字处理更干净。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING 类型 | 来自文字编码器的输出 | 接收处理过的文字信息,然后清理掉多余的部分 | 接收条件编码信息并移除填充标记 | 连接 CLIP Text Encode 节点的输出 |
3.5 ChromaStyleModelApply 节点 - Chroma 风格模型应用器
这个节点就像是一个"风格化妆师",能根据你提供的图片给生成的图像添加特定的风格。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| conditioning | conditioning | CONDITIONING 类型 | 来自文字编码器的输出 | 接收处理过的文字信息 | 接收条件编码信息 | 连接 CLIP Text Encode 节点的输出 |
| style_model | style_model | STYLE_MODEL 类型 | 风格模型 | 接收风格模型,这个模型知道怎么添加风格 | 接收风格模型用于风格迁移 | 连接风格模型加载器的输出 |
| clip_vision_output | clip_vision_output | CLIP_VISION_OUTPUT 类型 | 图像特征 | 接收从图片中提取的特征信息 | 接收 CLIP 视觉编码器的输出特征 | 连接 CLIP Vision Encode 节点的输出 |
| strength | strength | 浮点数 | 1.0 | 控制风格强度,就像调节滤镜的浓度 | 控制风格应用的强度系数 | 1.0是正常强度,2.0是双倍强度,0.5是一半强度 |
| truncate_percent | truncate_percent | 浮点数 | 1.0 | 控制使用多少风格信息,就像选择用多少颜料 | 控制风格特征的截断比例 | 1.0使用全部特征,0.5只用一半特征 |
3.6 SkipLayerForward 节点 - 层跳过器
这个节点就像是一个"捷径制造机",能让模型跳过一些不太重要的计算步骤,从而跑得更快,但可能会稍微影响质量。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL 类型 | 来自模型加载器 | 接收要修改的模型 | 接收需要跳过层的扩散模型 | 连接 FluxModDiffusionLoader 的输出 |
| skip_mmdit_layers | skip_mmdit_layers | 字符串 | "10" | 指定要跳过的双流层编号,就像告诉司机跳过哪些站点 | 指定要跳过的多模态双向变换器层 | 输入"10,11,12"跳过第10、11、12层 |
| skip_dit_layers | skip_dit_layers | 字符串 | "3, 4" | 指定要跳过的单流层编号,就像告诉司机跳过哪些站点 | 指定要跳过的扩散变换器层 | 输入"3,4,5"跳过第3、4、5层 |
3.7 KSamplerMod 节点 - 修改版采样器
这个节点就像是一个"专业摄影师",专门负责把模型的"想法"变成真正的图片,而且针对压缩后的模型做了特殊优化。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL 类型 | 来自模型加载器 | 接收要使用的 AI 模型 | 接收用于去噪的扩散模型 | 连接 FluxModDiffusionLoader 的输出 |
| seed | seed | 整数 | 0 | 随机种子,就像掷骰子的起始数字,相同种子产生相同结果 | 控制随机数生成的种子值 | 用固定数字如12345可以重现相同结果 |
| steps | steps | 整数 | 20 | 生成步数,就像画画的笔画数,越多越精细但越慢 | 控制去噪过程的迭代步数 | 20步适合快速预览,50步质量更好 |
| cfg | cfg | 浮点数 | 8.0 | 提示词遵循度,就像告诉 AI 要多听话,数字越大越听话 | 无分类器引导强度,控制对提示词的遵循程度 | 7-12适合大多数情况,太高会过度拟合 |
| sampler_name | sampler_name | 选择列表 | euler | 采样算法,就像选择不同的画笔类型 | 选择采样算法,影响生成质量和速度 | euler简单快速,dpmpp_2m质量更好 |
| scheduler | scheduler | 选择列表 | normal | 调度器,就像选择画画的节奏快慢 | 控制噪声移除的时间安排 | normal适合大多数情况 |
| positive | positive | CONDITIONING 类型 | 正面提示词 | 你想要的内容描述 | 正向条件编码,描述期望生成的内容 | 连接正面提示词编码器的输出 |
| negative | negative | CONDITIONING 类型 | 负面提示词 | 你不想要的内容描述 | 负向条件编码,描述不希望出现的内容 | 连接负面提示词编码器的输出 |
| latent_image | latent_image | LATENT 类型 | 潜在图像 | 要处理的"半成品"图像数据 | 要进行去噪处理的潜在空间图像 | 连接 Empty Latent Image 或其他潜在图像 |
| denoise | denoise | 浮点数 | 1.0 | 去噪强度,就像调节橡皮擦的力度 | 控制去噪程度,影响对原图的保留 | 1.0完全重新生成,0.5保留一半原图特征 |
| activation_casting | activation_casting | bf16/fp16 | bf16 | 计算精度选择,就像选择计算器的精度 | 选择模型激活值的数据类型 | bf16适合大多数显卡,fp16适合老显卡 |
3.8 FluxModSamplerWrapperNode 节点 - 采样器包装器
这个节点就像是一个"适配器",让其他高级采样器也能使用压缩后的 Flux 模型。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sampler | sampler | SAMPLER 类型 | 其他采样器 | 接收其他采样器,然后给它加上"压缩模型支持" | 接收需要包装的采样器对象 | 连接 KSampler 或其他采样器节点 |
| activation_casting | activation_casting | bf16/fp16 | bf16 | 计算精度选择,就像选择计算器的精度 | 选择模型激活值的数据类型 | bf16适合大多数显卡,fp16适合老显卡 |
3.9 ModelMover 节点 - 模型移动器
这个节点目前看起来是一个"占位符"节点,可能是开发者预留的功能,暂时没有实际用途。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| samples | samples | MODEL 类型 | 模型对象 | 接收模型对象(但实际功能未明确) | 接收模型对象进行处理 | 暂时不建议使用,功能不明确 |
4. 使用技巧和建议
4.1 显存选择建议
- 24GB+ 显存:可以选择
bf16模式,画质最好 - 12-16GB 显存:建议选择
float8_e4m3fn (8 bit)模式 - 8-12GB 显存:必须使用
float8_e4m3fn (8 bit)模式,并考虑跳过一些层
4.2 质量 vs 速度平衡
- 追求质量:使用
bf16模式,不跳过任何层,增加采样步数 - 追求速度:使用
8 bit模式,适当跳过一些层,减少采样步数 - 平衡选择:使用
8 bit模式,跳过 1-2 个不重要的层
4.3 工作流程建议
- 先用
FluxModDiffusionLoader加载模型 - 如果使用 8 位模式,必须使用
KSamplerMod而不是普通的 KSampler - 如果要使用高级采样器,需要用
FluxModSamplerWrapperNode包装 - 可以用
SkipLayerForward进一步加速,但会轻微影响质量
5. 常见问题解答
Q1: 为什么我的图片质量变差了?
A: 这是正常现象,因为模型被压缩了。你可以:
- 尝试使用
bf16模式而不是 8 位模式 - 减少跳过的层数
- 增加采样步数
- 调整 CFG 值
Q2: 我的显卡不支持 bf16 怎么办?
A: 将 activation_casting 参数改为 fp16,虽然精度稍低但兼容性更好。
Q3: 使用 8 位模式时出现错误怎么办?
A: 确保你使用的是 KSamplerMod 而不是普通的 KSampler,或者使用 FluxModSamplerWrapperNode 包装其他采样器。
Q4: 模型加载失败怎么办?
A: 检查以下几点:
- 确保下载了正确的
universal_modulator.safetensors文件 - 确保 Flux 模型文件完整且未损坏
- 确保文件放在正确的文件夹中
Q5: 生成速度还是很慢怎么办?
A: 可以尝试:
- 使用
SkipLayerForward跳过一些层 - 减少采样步数
- 使用更快的采样器如
euler - 降低图片分辨率
6. 总结
ComfyUI_FluxMod 插件是一个非常实用的工具,它让普通用户也能在消费级显卡上运行强大的 Flux 模型。虽然会有一些质量损失,但对于大多数应用场景来说,这个损失是可以接受的。
记住最重要的几点:
- 根据你的显存选择合适的量化模式
- 使用 8 位模式时必须用专门的采样器
- 可以通过跳过层来进一步加速,但要注意质量平衡
- 多试验不同的参数组合,找到最适合你的设置
希望这个教程能帮助你更好地使用这个插件,享受 AI 绘画的乐趣!