矿卡40HX上跑stable Diffusion XL 1.0模型的方法

关于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 (如果有的话)

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.

你可能感兴趣的:(stable,diffusion,人工智能)