欢迎光临散文网 会员登陆 & 注册

自力更生:Stable Diffusion webui本地部署遇到的坑及解决

2023-02-22 19:54 作者:橘法师成前  | 我要投稿

很早以前我就玩AI绘画了,用过Stable Diffusion为自己的小说绘制插图,也在P站投稿过不少个人XP的作品。

 

当时因为我本地部署时有问题,就偷懒用的B站的整合包,现在用的也是。但版本太旧,不能加载safesensors的模型,不能玩Lora和ControlNet,加上开学了工作忙,就没有弄这个。

 

今天听说因为三次元绘画出事了,遂担心B站和社群。和朋友A老师讨论此事后,A老师建议我看外网教程,在本地部署,以后更新也方便。加上有A老师成功的经验,我就花了一下午来部署,其中遇到了各种坑。因为本人是计算机专业,一边阅读修改代码,一边在网上查找其他人遇到问题的解答,总算完成了本地的部署。

 

考虑到这个过程中很多类似文章的帮助,加上未来可能有更多人遇到和我相同的问题,花费大量的精力解决。出于互联网共享精神,我写了这篇文章,细数我本地部署遇到的坑和解决方案,如果能对读者解决问题有帮助就再好不过了。

这篇文章可能有点“硬核”,建议有一定编程和计算机基础的同学阅读。

 


非常建议有一定编程动手能力的人使用本地部署。毕竟总依赖整合包让别人喂也不是办法,一来每次更新都要下载新的,不如学会自己更新webui;二来万一别人不分享整合包怎么办?就一直不更新了?自力更生比较好哦。

 

我参考的很不错的教程:https://ivonblog.com/posts/windows-stable-diffusion-webui/

照着这个教程部署就好,如果不出错的话就不用看下面了。那么下面是我遇到的问题和解答,以及对问题和相关代码的分析:

 

我的配置:

Win11

GTX3060 8G

 

重要提示:运行一次.bat后(打开看,其实两个代码只有配置的不同),就可以只运行python launch.py了,后面主要也是修改这个python文件的代码。每次在命令行运行launch.py,然后解决报错就可以了。

 

1.      电脑里装了多版本Python

如果你是计算机专业学生,那么大概和我一样,电脑里已经装了其他版本的Python了,但是webui又要求Python 3.10.6

 

解决:A老师提醒了我,用anaconda虚拟环境,这个学人工智能的同学应该很熟,可以自行学习安装。

创建一个python3.10.6的虚拟环境,然后后面的操作都在这个虚拟环境就好了。(需要一点命令行基础)

当然,不用虚拟环境可能也没有问题,我只是要保证前期准备没有问题。

 

2.      不能安装依赖库

报错:RuntimeError: Couldn't install gfpgan.

 

这是我当时就遇到的坑,估计也是大多数人第一个被劝退的坑,这个坑似乎还和commit hash<none>有关系,我就说说我的解决方法。

解决方法:1.安装开发者边车 2.自己用pip install安装需要的依赖包

相关代码:

launch.py

分析:实际上这一步是要从git下载依赖库,所以应该是访问git的网络问题,用开发者边车解决;

也可以自己用pip install指令按照需要的包,反正是在自己的python环境里。注意openclip的名字不对,应该是open_clip_torch;这个方法的原理应该是用了你的pip源,绕过了git。经常自己装python库的同学可以用这个方法。

 

参考:https://juejin.cn/post/7193586551907942458

https://www.bilibili.com/read/cv19991459?spm_id_from=333.976.0.0

 

3.      CUDA和torch匹配?

报错信息

报错:AssertionError: Torch is not able to use GPU;

解决方法:修改launch.py代码:

launch.py

问题分析:查了一下似乎是CUDA和torch版本不匹配的问题,但我的CUDA版本是每问题的。所以把相关的两行注释掉,绕过这个检测好了。建议先检查一下自己的版本,实在不行再用我的这个方法。

 

4.      Commit hash <none>

报错:RuntimeError:Couldn’t checkout {name}’s hash: {commithash}

相关代码:

launch.py

分析:总之就是是和git有关系,如果你显示commit hash: <none>,那么大概会遇到这个问题。github上也有人问过相关的问题(https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/1888).

解决方法:在命令行运行下面的提示,就是下面红框框里的,出一个运行一个,直到不报错为止。

在命令行运行红框框的命令

参考:https://blog.csdn.net/Xy_G__/article/details/128180356

 

 

到这里,我运行launch.py就没有问题了,熟悉的http://127.0.0.1:7860/ 出来了,也可以在浏览器打开webUI了。

 

熟悉的127.0.0.1:7860


我迫不及待地输入1 girl,然而……

不能画!!!

 

5.      Half-float

报错:RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'

解决:在编辑器修改webui-user.bat,在COMMANDLINE_ARGS=后面加上--skip-torch-cuda-test --precision full --no-half

webui-user.bat

分析:看下面微笑脸社区的文章,似乎是因为显卡不支持half-float的数据类型,所以在启动项增加这一句no-half,以后运行webui-user.bat就可以了。

参考:https://huggingface.co/CompVis/stable-diffusion-v1-4/discussions/64

 

终于,我双击webui-user.bat,然后画出了本地部署的第一张图:

激动!

 

可以愉快的玩耍啦!

最后用Anything4.0画的一张爱丽丝为这篇文章结尾吧:


自力更生:Stable Diffusion webui本地部署遇到的坑及解决的评论 (共 条)

分享到微博请遵守国家法律