背景/简介:
服务器不能翻墙,所以有了这个指南。主要是因为从github上把sd webui拉下来之后,中间过程会从外网上下载很多模型文件、其他github上的项目,需要绕开这部分操作。模型文件没有办法还是得科学上网下载到本地,再通过ftp上传到服务器来解决。
当然,可以的话,自己搭的服务器还是直接搭个梯子更快。
======================================================
先写个简单版
1. 安装anaconda 安装cuda 10.2
安装方法我的主页其他文章有写 链接之后补
2.创建环境,并激活
conda create -n sdwebui python==3.10.9
3.从git上把项目拉下来 使用ghproxy.com代理绕开。
git clone https://ghproxy.com/https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
github上的网址前缀用这个就可以。拉取时会自动创建一个新文件夹,无需提前创建。(我经验少,每次都是创建了才发现其实不需要)
4.安装项目需要的包
pip install -r requirements_versions.txt
pip install -r requirements.txt
这里遇到一个报错:error 28。报错分析:package的缓存会先下载到~/.cache/pip下。之前装太多项目,导致根目录基本上满了。直接手动删除一些这个目录下的问题就可以。(都是缓存,放心删~)
其他解决办法:
python - Could not install packages due to an EnvironmentError: [Errno 28] No space left on device - Stack Overflow
IOError: [Errno 28] No space left on device while installing torch · Issue #7745 · pypa/pip (github.com)
5. 修改launch.py。第一次打开sd webui过程中,会从github再把其他依赖项目拉下来,没有梯子速度非常慢。解决办法是统一做一次修改。
vim launch.py
之后输入:
:227,241s /https:\/\/github.com/https:\/\/ghproxy.com\/https:\/\/github.com/g
实现替换227-241行中的网址。从https://github.com 变为https://ghproxy.com/https://github.com
支持原作者:GitHub Proxy 代理加速 (ghproxy.com)
6. 启动python launch.py
遇到了报错一:
AssertionError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
尝试手动安装一下pytorch(对应cuda10.2版本的),没能解决问题。
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=10.2 -c pytorch
之后,又找了2个小时的文章,终于知道是啥原因了。这个主要是跟linux系统内核有关,故另起一篇文章写这个解决方案。如需请移步:(138条消息) ubuntu服务器关机重新开机之后nvidia-smi挂了_Branton_Zhenyuan的博客-CSDN博客
遇到报错二:
no module named clip
直接安装就可以:
pip install clip
7. 下载一个模型(这里还是不可避免的要科学上网),使用ftp工具上传到服务器上。这里就省略了,不同的服务器可能操作不同。
把模型文件放到stable-diffusion-webui/models/stable-diffusion目录下,因为sd webui启动的时候会先预加载一个模型,没有的话会自动从huggingface上下载。
需要的话,可以给大家提供一个stable diffusion v1.5/v2的百度网盘资源,需要评论区留言。但也可以直接下载和上传社区作者训练的模型。强烈建议还是直接到civit.ai上下载(科学上网哈),可以更好的支持到模型的原作者。
——————
至此应该就解决了所有启动会遇到的问题了。
8. 在stable-diffusion-webui目录下,创建一个linux的启动脚本,start.sh。
#!/bin/bash
export COMMANDLINE_ARGS="--listen --port 7860 --no-half"
python_cmd="python"
LAUNCH_SCRIPT="launch.py"
"${python_cmd}" "${LAUNCH_SCRIPT}" "$@"
--listen 会让启动的端口变为 http://0.0.0.0:7860 没有的话就是 http://127.0.0.1:7860
--port 规定需要的端口
--no-half 不加会报错float-32啥啥啥的,也可以先不加,出错了再加
然后执行bash start.sh
8. ???完事大吉 就会看到熟悉的sd webui在加载模型参数、把端口输出出来等等
========================================================
之后启动:
1. 先conda activate sdwebui 进入虚拟环境
2. 之后再切换到stable-diffusion-webui目录下,执行start.sh就可以了
3. 需要加什么参数也可以直接在COMMANDLINE_ARGS这个位置加。
至此就可以正常使用了。
========================================================
你说为啥没有成功的截图?因为我想要提高一下计算速度,用xformers加速。然后报错了。还在debug中。。。