如果你经常使用 Stable Diffusion 绘图,是否注意到很多大模型文件的大小各有不同,有2G的、4G的、还有8G的,这些模型占用了大量的磁盘空间,特别是租用云服务器的有限免费空间;有些模型的作者或者使用者会说模型文件越大越好,越大出图越精细,真的是这样吗?这里边有没有什么科技与狠活呢?
本文先给大家介绍一个给模型瘦身的方法,将那些4G、5G、8G的模型文件缩减到2G左右,然后对比下原模型与新模型的图片生成效果,最后再讲讲其中的原理。真正能拯救大家的内存和磁盘哦!
安装插件
这是秋叶大佬开发的一个模型转换插件,秋叶整合包中自带。如果你的 Stable Diffusion WebUI 中没有这个插件,请使用下面这个地址安装,安装完成之后别忘了重启 WebUI。
https://github.com/Akegarasu/sd-webui-model-converter
如果你访问 Github 不方便,也可以下载我整理的 Stable Diffusion 资源,然后把相关的文件上传到 Stable Diffusion WebUI 的 extensions 目录中。下载方式见本文最后部分。
缩减模型
安装成功后,我们会在主菜单中看到 Model Converter 这个插件,先看一下这几个设置:
这个插件可以转换单个模型,也可以处理多个模型,这里以“单个处理”为例。
降低精度
模型:选择一个文件大小在 4G 或以上的 SD 1.5 模型,这种模型都是能够缩减的。我这里选择的 revAnimated_v122 模型的文件大小是4G。确保模型已经上传到了 WebUI 的大模型目录,否则这里加载不出来。
自定义名称:缩减后的新模型的名称,如果不填写会自动生成,我这里自己写了一个。
Precision:浮点数精度,fp32 精度最高,fp16 和 bf16 精度比较低,但是占用的空间比 fp32 小一半。
Checkpoint Format:现在一般都使用 safetensors 了,安全。
其它设置暂时保持默认就可以了。
最后点击“运行”,正常情况下很快就能处理完毕,当右边出现类似下图的提示时就说明缩减完成了。
Checkpoint saved to …
给大家看一下文件大小的对比,差不多缩减了一半。根据这个效果,以及对 fp32 和 fp16 的对比,大致可以猜测出原来的大模型使用的是 fp32 的浮点数精度。
那么实际的生图效果怎么样呢?这里使用 WebUI 的 XYZ图表做一个对比,Y轴选择这两个模型。
注意采样器选择 Euler a,其它采样器可能存在采样不稳定的情况,每次出来的图可能有些小差别,就不好做对比了。
下面是生成图片的效果,大家对比下看看,确实是完全一样的,这说明缩减对模型的质量没有任何影响,Stable Diffusion WebUI 中生成图片时使用的就是 fp16。
去除EMA
再看一个例子。这个大模型是我从 liblib 下载的,文件大小有 6.88 G。
这里把自定义名称空了出来,让插件自己生成。
除了继续勾选 fp16 和 safetensors,这里还特别勾选了 no-ema,先不管 ema 是什么,让我们看看效果。
还是使用 XYZ图表 来做一个对比,这里我做了两次精简,第一次只降低精度,第二次去除ema。看下图的效果:
你能看出来他们之间的差别吗?反正我看不出来。
如果你觉得一两张图片可能是特殊情况,大家可以尽管去测试。
再给大家看看文件大小的变化,是不是很惊喜!内存和磁盘紧张的同学赶紧去试试吧。
原理
为什么降低精度和去除EMA可以无损的压缩模型?
搞清楚这个问题需要先搞清楚模型里边都有什么东西,这部分内容主要参考了秋叶大佬的文章,并结合一些别的网络资料。看下面这张图:
对于 1.5 模型,其中可能包括四部分:标准模型、文本编码器、VAE模型、EMA模型。
- 标准模型:生成图片的核心模块,潜空间中的前向扩散和反向扩散就是通过它做的,对应到图中左侧的 U-Net。
- 文本编码器:将文本提示词转换为数学向量,然后用作生成图片的引导条件。全称是 Text Encoder,对应到图中的TE。
- VAE模型:用于图像在像素空间和潜在空间的映射,生成图片时将图像从潜在空间转换为像素图片,目前大部分模型都自带VAE。
- EMA模型:EMA是一种算法,用来稳定模型效果的。对于日常生成,我们只要了解这样一个事实就行了:如果只是生成,EMA模型和标准模型的效果是一样的。如果你要做二次训练,并且显卡够好,选择带EMA的模型可能更好,因为所有数据都在;当然选择去EMA的模型也能做二次训练。
所以我们从模型中去除EMA是不会影响生成图片质量的,反过来说加上EMA也不会让生成图片的质量更好。
再看精度的问题,fp32 和 fp16 是用来描述浮点数精度的,浮点数我们可以理解为小数,比如 3.1514926,在计算机中考虑到空间占用和计算效率的问题,表示小数时一般使用科学计数法并限定位数,这可能会带来一定的精度损失。
fp32代表的是float32,一般称为单精度浮点数,fp16则称为半精度浮点数,从字面上就可以看出 fp16 比 fp32 的精度要低很多。比如在精度不足的时候,2.00000 可能就变成了 1.99999。
不过这里有一个结论:神经网络训练对精度降低的容忍度非常高,精度对生成图片的影响微乎其微。这是可以得到实际佐证的,Stable Diffusion WebUI 默认就是以 fp16 处理模型中的数据的,如果模型是fp32的,那就先转换成fp16,这可以显著降低对内存和显存的使用。
所以我们降低精度时,Stable Diffusion WebUI 生成图片的效果也不会发生任何变化。
经过这样的修剪,磁盘空间的使用降低是显而易见的,那么内存和显存的使用会有什么样的变化呢?经过测试,缩减后的模型可以显著降低加载模型时的内存使用,但不会降低显存的使用,因为 WebUI 会把fp32的数据转换为fp16的进行处理。
有的同学可能会问:为什么U-Net是3.2G,而不是 2.2G、4.2G?这应该是1.5模型的参数规模决定的,XL模型就不是3.2G。再详细说我也不懂了。
关于AI绘画技术储备
学好 AI绘画 不论是就业还是做副业赚钱都不错,但要学会 AI绘画 还是要有一个学习规划。最后大家分享一份全套的 AI绘画 学习资料,给那些想学习 AI绘画 的小伙伴们一点帮助!
对于0基础小白入门:
如果你是零基础小白,想快速入门AI绘画是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:stable diffusion安装包、stable diffusion0基础入门全套PDF,视频学习教程。带你从零基础系统性的学好AI绘画!
需要的可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
1.stable diffusion安装包 (全套教程文末领取哈)
随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。
最新 Stable Diffusion 除了有win多个版本,就算说底端的显卡也能玩了哦!此外还带来了Mac版本,仅支持macOS 12.3或更高版本。
2.stable diffusion视频合集
我们在学习的时候,往往书籍代码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,一步步带你入门stable diffusion,科学有趣才能更方便的学习下去。
3.stable diffusion模型下载
stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。
4.stable diffusion提示词
提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。
5.AIGC视频教程合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
这份完整版的学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】