ComfyUI FluxExt-MZ 插件完全教程
1. 插件简介
插件地址: https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ
ComfyUI FluxExt-MZ 是一个专门为 Flux1 模型设计的显存优化插件,就像给你的电脑装了一个智能内存管理器!它的主要作用是帮助显存不足的用户也能顺利运行大型的 Flux1 模型。
这个插件能给我们带来什么效果?
- 显存节省神器:就像一个聪明的搬运工,会把暂时不用的模型部分搬到内存里,需要时再搬回显卡,大大节省显存占用
- 动态加载管理:像一个精明的仓库管理员,只在需要的时候才把货物(模型层)放到工作台(显卡)上
- 支持多种加载方式:提供了好几种不同的模型加载器,就像有不同规格的搬运车,适应不同的需求
- NF4 量化支持:支持压缩版的模型加载,就像把大文件压缩后再使用,进一步节省空间
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager
- 搜索 "FluxExt-MZ" 或 "MinusZone"
- 点击安装
方法二:手动安装
- 进入你的 ComfyUI 安装目录下的
custom_nodes文件夹 - 打开命令行,运行:
git clone https://github.com/MinusZoneAI/ComfyUI-FluxExt-MZ.git - 重启 ComfyUI
特别注意
如果要使用 NF4 相关功能,还需要安装依赖插件:
git clone https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4.git
3. 节点详细解析
本插件总共包含 4 个节点,本教程将逐一详细解析所有节点。
3.1 MZ_Flux1PartialLoad_Patch 节点 - Flux1 显存优化补丁
这个节点就像一个智能的显存管理器,它会给你现有的 Flux1 模型装上一个聪明的大脑,让模型知道什么时候该把哪些部分放到显卡上,什么时候该搬到内存里。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL | 必填 | 要优化的 Flux1 模型,就像要装智能管理系统的仓库 | 输入的 Flux1 扩散模型 | 连接你已经加载的 Flux1 模型 |
| double_blocks_cuda_size | double_blocks_cuda_size | 0-16 | 7 | 双重处理块在显卡上同时存放的数量,就像工作台能放几个大工具箱 | 双重块在 CUDA 上的批次大小 | 显存大的设置大一点如12,显存小的设置小一点如3 |
| single_blocks_cuda_size | single_blocks_cuda_size | 0-37 | 7 | 单一处理块在显卡上同时存放的数量,就像工作台能放几个小工具盒 | 单一块在 CUDA 上的批次大小 | 显存大的设置大一点如15,显存小的设置小一点如3 |
3.2 MZ_Flux1CheckpointLoaderNF4_cpuDynOffload 节点 - NF4压缩模型动态加载器
这个节点就像一个专门处理压缩文件的智能搬运工,它能加载经过 NF4 压缩的 Flux1 模型,并且自动管理显存使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ckpt_name | ckpt_name | 文件列表 | 必选 | 要加载的压缩模型文件名,就像选择要解压的压缩包 | NF4 量化的检查点文件名 | 从下拉列表选择你的 NF4 压缩 Flux1 模型 |
| double_blocks_cuda_size | double_blocks_cuda_size | 0-16 | 7 | 双重处理块在显卡上同时存放的数量,就像工作台能放几个大工具箱 | 双重块在 CUDA 上的批次大小 | 显存大的设置大一点如12,显存小的设置小一点如3 |
| single_blocks_cuda_size | single_blocks_cuda_size | 0-37 | 7 | 单一处理块在显卡上同时存放的数量,就像工作台能放几个小工具盒 | 单一块在 CUDA 上的批次大小 | 显存大的设置大一点如15,显存小的设置小一点如3 |
3.3 MZ_Flux1CheckpointLoader_cpuDynOffload 节点 - 标准模型动态加载器
这个节点就像一个通用的智能搬运工,能加载标准的 Flux1 模型文件,并且自动管理显存使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ckpt_name | ckpt_name | 文件列表 | 必选 | 要加载的标准模型文件名,就像选择要搬运的货物箱 | 标准检查点文件名 | 从下拉列表选择你的标准 Flux1 模型文件 |
| double_blocks_cuda_size | double_blocks_cuda_size | 0-16 | 7 | 双重处理块在显卡上同时存放的数量,就像工作台能放几个大工具箱 | 双重块在 CUDA 上的批次大小 | 显存大的设置大一点如12,显存小的设置小一点如3 |
| single_blocks_cuda_size | single_blocks_cuda_size | 0-37 | 7 | 单一处理块在显卡上同时存放的数量,就像工作台能放几个小工具盒 | 单一块在 CUDA 上的批次大小 | 显存大的设置大一点如15,显存小的设置小一点如3 |
3.4 MZ_Flux1UnetLoader_cpuDynOffload 节点 - UNET模型动态加载器
这个节点就像一个专门处理核心引擎的智能搬运工,它只加载 Flux1 的核心处理部分(UNET),并且自动管理显存使用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| unet_name | unet_name | 文件列表 | 必选 | 要加载的UNET文件名,就像选择要安装的发动机 | UNET 扩散模型文件名 | 从下拉列表选择你的 Flux1 UNET 文件 |
| weight_dtype | weight_dtype | 数据类型 | default | 模型权重的数据精度,就像选择发动机的精密度等级 | 模型权重的数据类型 | 一般保持默认,显存不足可选择 fp16 |
| double_blocks_cuda_size | double_blocks_cuda_size | 0-16 | 7 | 双重处理块在显卡上同时存放的数量,就像工作台能放几个大工具箱 | 双重块在 CUDA 上的批次大小 | 显存大的设置大一点如12,显存小的设置小一点如3 |
| single_blocks_cuda_size | single_blocks_cuda_size | 0-37 | 7 | 单一处理块在显卡上同时存放的数量,就像工作台能放几个小工具盒 | 单一块在 CUDA 上的批次大小 | 显存大的设置大一点如15,显存小的设置小一点如3 |
4. 使用技巧和建议
4.1 显存优化策略
-
根据显存大小调整参数:
- 8GB 显存:double_blocks_cuda_size=3, single_blocks_cuda_size=3
- 12GB 显存:double_blocks_cuda_size=5, single_blocks_cuda_size=5
- 16GB 显存:double_blocks_cuda_size=7, single_blocks_cuda_size=7
- 24GB+ 显存:double_blocks_cuda_size=10, single_blocks_cuda_size=10
-
选择合适的加载器:
- 如果有 NF4 压缩模型,优先使用
MZ_Flux1CheckpointLoaderNF4_cpuDynOffload - 如果只需要 UNET 部分,使用
MZ_Flux1UnetLoader_cpuDynOffload - 标准情况下使用
MZ_Flux1CheckpointLoader_cpuDynOffload
- 如果有 NF4 压缩模型,优先使用
4.2 性能优化建议
- 内存要求:确保系统内存至少有 32GB,因为模型会在内存和显存之间频繁搬运
- 避免频繁修改参数:一旦设置好参数就不要频繁修改,因为会导致重新初始化
- 监控资源使用:使用任务管理器监控内存和显存使用情况
4.3 工作流搭建建议
- 替换原有加载器:直接用这些节点替换原来的模型加载器
- 保持其他节点不变:其他的采样器、编码器等节点都可以正常使用
- 测试不同参数:先用小参数测试,确认能正常运行后再逐步增大
5. 常见问题解答
Q1: 为什么使用后生成速度变慢了?
A: 这是正常现象。因为模型需要在内存和显存之间搬运,会增加一些时间开销。但这是为了能在显存不足的情况下正常运行 Flux1 模型的必要代价。
Q2: 设置多大的 cuda_size 参数比较合适?
A: 这取决于你的显存大小。一般来说,显存越大,可以设置越大的值。建议从小值开始测试,逐步增大直到找到最适合的平衡点。
Q3: 使用 NF4 加载器时提示缺少依赖怎么办?
A: 需要先安装 ComfyUI_bitsandbytes_NF4 插件。在 custom_nodes 目录下运行:
git clone https://github.com/comfyanonymous/ComfyUI_bitsandbytes_NF4.git
Q4: 修改参数后出现错误怎么办?
A: 这是已知问题。修改参数后建议重启 ComfyUI,或者删除节点重新添加。
Q5: 内存不够用怎么办?
A: 这个插件需要较大的系统内存(建议32GB+)。如果内存不足,可能需要升级硬件或者使用其他优化方案。
6. 高级应用技巧
6.1 多模型切换策略
如果你有多个 Flux1 模型,可以:
- 为不同模型设置不同的优化参数
- 根据图片复杂度选择不同的 cuda_size 设置
- 简单图片用小参数,复杂图片用大参数
6.2 与其他优化插件配合
这个插件可以与其他显存优化插件配合使用:
- 配合 VAE 优化插件使用
- 配合模型量化插件使用
- 配合采样器优化插件使用
6.3 监控和调试
- 使用系统监控工具观察内存和显存使用情况
- 通过生成时间来判断参数设置是否合理
- 记录不同参数下的性能表现,找到最佳配置
7. 总结
ComfyUI FluxExt-MZ 插件是一个专门为显存不足用户设计的优化工具,它包含了 4 个节点,本教程已经完整解析了所有 4 个节点,没有遗漏。这些节点可以让你:
- 在显存不足的情况下运行大型 Flux1 模型
- 通过动态加载卸载机制优化显存使用
- 支持多种模型格式和加载方式
- 提供灵活的参数调整选项
虽然使用这个插件会带来一些速度上的牺牲,但对于显存不足的用户来说,这是一个非常实用的解决方案。记住,合理设置参数是关键,需要根据自己的硬件配置来调整。
所有节点都已完整解析完毕!这个插件虽然节点不多,但每个都很实用,专门解决 Flux1 模型的显存问题。