

本篇分享在 ComfyUI 中修剪基础模型的方法。
有一些模型的精度为 fp32 的,以 SD1.5 模型为例,一般修剪过的 fp16 模型大小为 2G,如果是 fp32 的,则可能会达到 4G。其容量翻倍,拖慢运行速度,且对生成图片的质量并无明显益处。
在 ComfyUI 中修剪模型十分简单便捷,首先安装 mtb 插件,这是一个综合插件,功能颇多,是我最常用的插件之一:
https://github.com/melMass/comfy_mtb

近来在网络通畅的情况下用 git pull 来更新插件全部失败,所以我安装和更新插件已全部改为下载 ZIP。
将压缩文件解压到 custom_nodes 文件夹内,删掉插件名后的 -main,记得安装 requirements。此处不再详述,想必修剪模型的同学对此已然熟知。

在节点 mtb--prune 中找到 Model Pruner,并将想要修剪的模型与之连接。

save_folder 为修剪后的模型保存位置,可以自行修改,但没必要,默认保存到 ComfyUI 的 output 文件夹内:

ema_mode 选择 remove_ema 就好,ema 为模型中占空间但用不到的东西。
下面的 3 个 precision 表示精度设置,示例中将 unet 和 clip 设置为 fp16。operation 为运行设置,convert 表示转换到设置的精度。如果想将原模型中某一选项的精度保留,则将其 operation 设置为 copy。vae 设置为删除全部,绝大多数模型的 vae 其实用的都是一样的东西,无形中就占用了大量的空间,所以可以将其删掉,使用模型时另外读取 vae 就好。
其它参数默认即可,然后运行:

此界面表示运行完毕,红色的错误提示可以忽略,因为多数时候需要要转换的只是 unet,如果某一项和要转换的精度一致,就会出现红色报错,但对修剪模型的流程并无妨碍。之后可以在 output 中的 checkpoints 内查看修剪完毕的模型。
以 Chilloutmix_NiPrunedFp32Fix 模型为例,原大小为 4G,修剪后为 1.9G,占用空间减半。连接大模型的 vae,运行后会有警告提示,证明 vae 已从模型中删除:

那么修剪后的模型是否会对生成的图片造成不良影响呢?

上图是 Chilloutmix_NiPruned 模型的生图对比,左图为 fp32 加自带 vae,右图为 fp16 加外接 vae,可以看出两者无明显差异。我也用其它模型进行了修剪并生图对比,均无明显可见的不同。