stable diffusion的安装
- 一、前言
- 二、安装python环境
- 1、已经安装python环境,但非3.10.6版本(可以不看)
- 三、安装stable diffusion
- 四、运行
- 五、启动报错
- 1、Torch is not able to use GPU
- 2、Installing open_clip 卡住
- 3、报错提示 "git" clone --config core.filemode=false
- 4、not a git repository (or any of the parent directories): .git
- 5、Installing requirements 卡住
- 6、no module 'xformers'. Processing without...
- 7、Stable diffusion model failed to load
- 8、A tensor with NaNs was produced in Unet
一、前言
最近对 stable diffusion 很感兴趣,就打算安装学习一下,下面是安装的过程。
折腾了三个晚上,这里记录一下。
如果电脑分多个用户,请务必在管理员用户中安装,还有就是保存网络通畅,能避免一些问题。
二、安装python环境
stable diffusion运行需要安装python环境,因为是国外的网站,下载会比较慢,最好提前下载好。
因为后续的软件(stable diffusion webui)要求安装3.10.6版本的python,所以这里就安装这个版本
下载地址:https://www.python.org/downloads/release/python-3106/
选择适合自己的版本,我的window11 64位的系统,选择这个:
下载下来后是这样的
新建一个空文件夹,路径不要有中文字符,我这里是:
E:\environment\Python\python3.10.6
然后右击击这个文件,选择以 管理员的身份运行
选好之后选择下一步
等待下载结束
接着 window + x
出现了python 的版本号就说明安装成功了。
1、已经安装python环境,但非3.10.6版本(可以不看)
我以前安装过python3.10.4版本,如果不需要使用以前的版本,在打开原版本的安装程序时就会提示,选择这个卸载即可
如果卸载后安装文件夹不是空的,手动删除其余文件即可。
如果原来的版本还需要使用,在安装3.10.6版本时如何保留原来的版本?
和初次安装一样,不过在这一步时不勾选这个选项即可
这个是环境变量,我们后续手动修改。
右击此电脑,选择属性
选择高级系统设置
选择环境变量
找到 Path 这个变量,点击编辑
找到原来的python环境安装根目录,改为python3.10.6版本的环境根目录,再点击确定
ctrl + x,选择
输入 python 查看版本号
可以看到把python的版本切换到3.10.6了,需要切回原来的版本就在这里把路径改为原版本的根目录。
三、安装stable diffusion
stable diffusion是开源出来一堆源代码,比较难用,一般下载由 AUTOMATIC1111 大神开发的Stable Diffusion WebUI。
这是他的用户页面:
如果打不开 github 的小伙伴可以下载个 steam++
安装请自行百度,没什么坑。
Stable Diffusion WebUI 下载地址如下:
https://github.com/AUTOMATIC1111/stable-diffusion-webui?tab=readme-ov-file
这里的 master 是作者开发的分支
切换为发行版本
选择一个版本,这里选择最新的 v1.10.1 版
不过看路径都是一样的。
这里选择用 git 下载,也建议用 git ,我以前安装过了,这里偷个懒,git 的安装不难,请自行百度。
接着新建一个空的文件夹,不要有中文,我这里是
E:\software\StableDiffusionWebui
下载成功是这样的
命令如下:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
也可以直接下载压缩包
下载下来是这样的文件
不过这样下载下来后面会报 git 相关的错,别问我是怎么知道的。
四、运行
在安装的根目录找到 webui-user.bat 文件,文件如下:
双击打开会出现一个黑窗口
第一次打开会比较慢,因为要下载很多的文件
五、启动报错
这里记录我安装过程中踩过的坑。
1、Torch is not able to use GPU
启动报错如下:
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
其实后面也给出了解决办法,就是在启动文件 webui-user.bat 中加上 --skip-torch-cuda-test 参数
--skip-torch-cuda-test
保存退出。
但是我有显卡,不想用这种方式解决,没有独立显卡或者使用A卡的小伙伴可以用这种方式解决。我在后面去掉了这个参数。
对于N卡用户需要安装 cuda,有显卡的应该都安装了驱动了吧(/滑稽)
我在安装 cuda 前先更新了驱动
再查看本机的显卡适合安装哪个版本的 cuda ,ctrl + x 选择 Window 终端(管理员),使用如下命令:
nvidia-smi
我在安装前更新了驱动,这是我的
可以看到我适合 12.6 版本的 cuda ,然后在这里下载,地址如下:
https://developer.nvidia.com/cuda-toolkit-archive
找到 12.6 版本的 cuda ,下载下来是这样的
双击打开,这里的路径默认就好
等待下载完成
等待下载完成,然后同意并继续
这里默认就好
勾选,点击 NEXT
等待安装完成
这是“Nsight Visual Studio版本摘要”,点击下一步确认
然后关闭即可
然后查看cuda是否安装成功,打开控制台,输入如下命令:
nvcc -V
然后看看能不能检测到 cuda ,随便找个目录,我是在这里:
D:\software\StableDiffusionHand\stable-diffusion-webui\venv\Scripts\
新建 txt 文件,这里为 test.txt
打开加入如下代码
import torchprint(torch.cuda.is_available()) # 应该返回True
保存退出,再将 txt 后缀名改为 py
接着使用
cmd
打开黑窗口
接着使用 根目录\venv\Scripts\python.exe 执行,根据自己情况修改,我的 pyhon.exe 路径是
D:\software\StableDiffusionHand\stable-diffusion-webui\venv\Scripts\python.exe
执行 test.py 文件,命令如下:
E:\software\StableDiffusionWebui\stable-diffusion-webui\venv\Scripts\python.exe E:\software\StableDiffusionWebui\stable-diffusion-webui\venv\Scripts\test.py
可以看到已经检测到了 cuda ,然后再次重启。
2、Installing open_clip 卡住
这个应该是网络的问题,我使用公司的网络时没有遇到这个错。
3、报错提示 “git” clone --config core.filemode=false
如果出现如下图所示的错:
打开控制台,输入如下命令:
git config --global http.sslverify "false"
然后重启。
4、not a git repository (or any of the parent directories): .git
使用 git 下载就没有遇到这个问题
我一开始是使用压缩包下载的这里做个记录
启动报错:
fatal: not a git repository (or any of the parent directories): .git
在根目录空白处右击选择 Git Bash Here ,然后输入如下命令:
git init
如果报错
ambiguous argument ‘HEAD’: unknown revision or path not in the working tree.
这个死活解决不了,就删了用 git 下载,就没有出现这个问题。
5、Installing requirements 卡住
启动时卡在 Installing requirements
进入这个目录,使用这里的 python.exe
使用
cmd
进入控制台
再使用
activate
进入虚拟环境
然后使用目录当前目录的 pyhon.exe 下载根目录的 requirements_versions.txt 文件,根据自己情况修改,我的 pyhon.exe 路径是
D:\software\StableDiffusionHand\stable-diffusion-webui\venv\Scripts\python.exe
requirements_versions.txt 文件路径是
D:\software\StableDiffusionHand\stable-diffusion-webui\requirements_versions.txt
所以我的命令如下:
D:\software\StableDiffusionHand\stable-diffusion-webui\venv\Scripts\python.exe -m pip install -r D:\software\StableDiffusionHand\stable-diffusion-webui\requirements_versions.txt
等待下载完成,网络好的情况下下载很快的
下好之后,如果再次重启报错:
Can’t load tokenizer for ‘openai/clip-vit-large-patch14’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same name. Otherwise, make sure ‘openai/clip-vit-large-patch14’ is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer.
这是缺少 clip-vit-large-patch14 文件,虽然再最后面已经给出了对应下载地址,但试了一下下载不了
可以到这里下载
对应 git 的下载命令如下:
git clone https://www.modelscope.cn/AI-ModelScope/clip-vit-large-patch14.git
或者这里下载文件
这里先演示用 git 下载的方式,先到根目录下新建 openai 文件夹
git 的命令如下:
git clone https://www.modelscope.cn/AI-ModelScope/clip-vit-large-patch14.git
或者和我第一次那样下载,在根目录新建 openai 文件夹,进入 openai 后新建 clip-vit-large-patch14 文件夹
接着将下载的文件放入
然后重新启动
成功加载模型
当然,模型也需要单独下载,启动没模型会报模型加载失败的错,模型如何下载可以看 7 。
6、no module ‘xformers’. Processing without…
小伙伴们在 5 应该注意到这个问题了吧,不过这个错误应该可以不理会,我本机没处理一样使用。。。证据如下:
回到错误:
no module ‘xformers’. Processing without…
no module ‘xformers’. Processing without…
No module ‘xformers’. Proceeding without it.
后面尝试一下解决,打开 launch_utils.py 文件
使用 COMMANDLINE_ARGS 搜索,在460行中加上如下命令:
--xformers
再次重启。
7、Stable diffusion model failed to load
启动报如下错:
就是没模型,加上就好,模型的后缀为 safetensors ,大小一般 2 - 11 G。
我是在这里下载模型的,下载好后放到这个目录就好了
接着重启
8、A tensor with NaNs was produced in Unet
这个错误是在图生图遇到的,具体如下:
modules.devices.NansException: A tensor with NaNs was produced in Unet. This could be either because there’s not enough precision to represent the picture, or because your video card does not support half type. Try setting the “Upcast cross attention layer to float32” option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.
可以在 webui-user.bat 文件中加入
--no-half --disable-nan-check
解决