赞
踩
因为众所周知的原因,在大陆地区登录一些网站延迟过高,甚至出现无法登录的情况,这使得新技术的体验过程变得困难重重。比如最近大火的Stable Diffusion模型,可以借助人工智能技术,用神经网络生成各种有趣的图片,视频。然而,部署模型和WebUI需要登陆github,需要加载python包,这些都会因网络延迟变成瓶颈。
这篇文章目的在于告诉大家如何在没有科学上网的条件下,在本地部署Stable Diffusion WebUI,让大家能把Stable Diffusion模型用起来。
技巧总结起来无非2条:
下面本文会从零开始告诉大家如何在Windows环境从零开始部署Stable Diffusion WebUI。
一块性能尚可的GPU,笔者用的是3060Ti。需要注意这是一个可选项,经过实验,CPU完全可以运行Stable Diffusion模型,但耗时较长体验不佳。GPU生成一张512x512的图片大约需要10s,而CPU则需几分钟。所以,强烈建议配置一块GPU跑模型,可以大大增加用户体验。
cuda版本最好在11.7以上以避免问题,如果版本过低建议更新driver
https://blog.csdn.net/junR_980218/article/details/129694824
在命令行运行nvidia-smi
查看cuda版本,如果>=11.7,则使用11.7,如果<11.7,则使用对应版本,但版本最好在11.x。这里强烈建议用11.7版本,以避免后续发生问题。
参考:https://developer.nvidia.com/cuda-11-7-0-download-archive
在官网找到对应版本(这个过程应该要注册),下载解压后将文件拷贝到cuda目录
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7
官网:https://developer.nvidia.com/rdp/cudnn-archive
pytorch分为CPU版 ~ 172MB和GPU版~ 2.3GB,需要安装的是后者。因为默认安装CPU版,GPU版要在pytorch官网查询命令
https://pytorch.org/get-started/locally/
版本和cuda绑定,以cuda11.7为例,
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu117
建议使用python虚拟环境,虽然这不是必须的,不过强烈建议这样做,避免python初始环境被污染,至于如何以及为什么要用虚拟环境,可以参考我的另一篇文章PyCharm使用初步用命令行安装包一节。
安装完成后,可以对安装过程进行检查,torch.cuda.isavailable()
要返回True
import torch
if __name__ == '__main__':
if torch.cuda.is_available():
print("success")
else:
print("failed")
参考:https://blog.csdn.net/qq_43473795/article/details/125816702
Github代码仓库:https://github.com/AUTOMATIC1111/stable-diffusion-webui
建议以ssh连接不要用http,这样更稳定
git clone git@github.com:AUTOMATIC1111/stable-diffusion-webui.git
cd stable-diffusion-webui
需要建立虚拟环境+换源,这样能提升下载文件可靠性。如上图所示,启用python虚拟环境以后,目录前会有类似(venv)
的字样。本文使用了阿里源,因为是用命令行安装,所以在--index-url
添加对应的链接即可。
pip install –r requirements.txt --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
之后再次确认依赖包版本,避免之后执行脚本发生问题
pip install –r requirements_versions.txt --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
发现的问题:
在下载basicsr包过程中存在下载不了的情况
考虑先单独下载,更新setuptools + 使用--use-pep517
,然后执行
pip install basicsr==1.4.2 --index-url http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com --use-pep517
参考:https://blog.csdn.net/sinat_29957455/article/details/130285223
因为basicsr有大量依赖,大家稍安勿躁
要在虚拟环境中完成pytorch GPU版本的安装并确认在虚拟环境下可用
如果后续出现
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
很可能是pytorch GPU版没装好。
完成上述过程后,运行webui-user.bat
发现的问题:
大概率会有time out的错误
Error code: 1
stdout: Collecting https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip
stderr: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x0000017D1ACD3340>, ‘Connection to github.com timed out. (connect timeout=15)’)’: /mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ReadTimeoutError(“HTTPSConnectionPool(host=‘github.com’, port=443): Read timed out. (read timeout=15)”)’: /mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip
这个问题源于在项目python脚本中使用了https而不是ssh下载文件,https连接在大陆地区很容易出现time out问题,要克服这点就要对脚本做一些修改
打开modules/launch_utils.py
大约在line: 230+的位置可以看到大量https下载方式:
stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/Stability-AI/stablediffusion.git")
k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://github.com/crowsonkb/k-diffusion.git')
codeformer_repo = os.environ.get('CODEFORMER_REPO', 'https://github.com/sczhou/CodeFormer.git')
blip_repo = os.environ.get('BLIP_REPO', 'https://github.com/salesforce/BLIP.git')
将这些下载模式都改成ssh
stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "git@github.com:Stability-AI/stablediffusion.git")
k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'git@github.com:crowsonkb/k-diffusion.git')
codeformer_repo = os.environ.get('CODEFORMER_REPO', 'git@github.com:sczhou/CodeFormer.git')
blip_repo = os.environ.get('BLIP_REPO', 'git@github.com:salesforce/BLIP.git')
然后重新运行脚本webui-user.bat
这时应该会报一个没有模型的错误,因为模型是要额外下载放到目录的,支持的格式有.ckpt和.safetensors
如果CPU部署,最后会出现
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
因为pytorch安装的是CPU版,此时需要修改webui-user.bat脚本关闭和GPU有关的部分:
COMMANDLINE_ARGS=
and change it to:
COMMANDLINE_ARGS= --lowvram --precision full --no-half --skip-torch-cuda-test
下载模型这一步见仁见智,hugging face官网很可能无法打开,但大陆地区也有不少网盘存储了模型供大家使用 https://openai.wiki/stable-diffusion-model-v1-5.html
hugging face官网:
https://huggingface.co/runwayml/stable-diffusion-v1-5
将模型(比如v1-5-pruned-emaonly.ckpt)拷贝到目录stable-diffusion-webui\models\Stable-diffusion
重新运行脚本webui-user.bat
webui成功部署了,在网页打开http://127.0.0.1:7860/ 即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。