关于stable diffusion XL 1.0模型的简单介绍,可以参考我的另外一篇文章:AI绘画基础模型XL正式版已经发布
CMP 40HX是个很特殊的卡,在stable diffusion webui (automatic1111项目) 上其半精度速度比全精度还慢很多很多。关于40HX的stable diffusion安装与优化,可以看我的另一篇文章:矿卡40HX在linux下AI绘画简单流程 及 AI绘画 矿卡CMP 40HX 五秒出图 二篇文章。其中优化配置部分windows与linux基本一致。
近日SDXL 1.0正式推出来了,但我的40HX跑不动,经常出现Out of Memory的问题。
简单的办法,就是把优化参数改为--lowvram, 可以顺利跑动,但速度是相当的慢,基本上几分钟才能出一张图。然后我关注了一下vram的载入情况,发现模型载入后,基本上用了一半的显存,再跑图就不够了,哪怕把图片大小调很低也不能满足要求。这里有二方面原因,一方面是基础模型本来就大(是基于1024x1024采样的,之前模型都是512x512), 另一方面是40HX如果在全精度状态下,vram占用比较大,为了能顺利跑动SDXL 1.0, 只能把系统改到混合精度,这样即能兼顾速度,又能减少模型载入。
具体方法是:
1. 打开modules目录,找到目录下的devices.py文件,备份文件,然后编辑这个文件
2. 找到 return torch.autocast("cuda")
3. 改为 return torch.autocast("cuda", dtype=torch.float32, enabled=True) 然后保存
(注意缩进位数及大小写,空格)
4. 启动优化参数中,去掉 ----precision autocast (如果有的话),增加 --no-half-vae (开源项目中的要求)
5. 启动
附加:
如果改过文件后,git更新会找到你更改文件的问题,所以你可以把备份文件恢复回来,然后再git pull。 当然手动修改不能保障源码与你的修改一致。这个凭经验了。
后续:
生成速度
a girl in park
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4261300523, Size: 1024x1024, Model hash: 7440042bbd, Model: sdXL_v10Refiner, Version: v1.5.1
Time taken: 56.3 sec.