如何部署Stable Diffusion WebUI Windows + 无科学上网版

如何部署Stable Diffusion WebUI 无科学上网版

  • 一些背景
  • 一些需求
    • 硬件需求(可选)
    • 软件需求
  • 一些细节
          • 检查nvidia driver查看对应cuda版本
          • 安装cuda
          • 安装cuDNN
          • 安装GPU版pytorch
          • 安装Stable Diffusion WebUI
          • 下载模型

一些背景

因为众所周知的原因,在大陆地区登录一些网站延迟过高,甚至出现无法登录的情况,这使得新技术的体验过程变得困难重重。比如最近大火的Stable Diffusion模型,可以借助人工智能技术,用神经网络生成各种有趣的图片,视频。然而,部署模型和WebUI需要登陆github,需要加载python包,这些都会因网络延迟变成瓶颈。

这篇文章目的在于告诉大家如何在没有科学上网的条件下,在本地部署Stable Diffusion WebUI,让大家能把Stable Diffusion模型用起来。

技巧总结起来无非2条:

  • 用ssh代替http连接,增加github下载的稳定性
  • 在python加载依赖包的过程中不要用默认的下载源,要换成国内阿里源

下面本文会从零开始告诉大家如何在Windows环境从零开始部署Stable Diffusion WebUI。

一些需求

硬件需求(可选)

一块性能尚可的GPU,笔者用的是3060Ti。需要注意这是一个可选项,经过实验,CPU完全可以运行Stable Diffusion模型,但耗时较长体验不佳。GPU生成一张512×512的图片大约需要10s,而CPU则需几分钟。所以,强烈建议配置一块GPU跑模型,可以大大增加用户体验。

软件需求

  • Git: 用于下载webui,需要配置ssh登录,而不是用https
  • Python: 用于运行模型
  • cuda + cuDNN (可选): 和PyTorch绑定,用GPU加速计算

一些细节

检查nvidia driver查看对应cuda版本

cuda版本最好在11.7以上以避免问题,如果版本过低建议更新driver
https://blog.csdn.net/junR_980218/article/details/129694824

安装cuda

在命令行运行nvidia-smi查看cuda版本,如果>=11.7,则使用11.7,如果<11.7,则使用对应版本,但版本最好在11.x。这里强烈建议用11.7版本,以避免后续发生问题。

参考:https://developer.nvidia.com/cuda-11-7-0-download-archive

安装cuDNN

在官网找到对应版本(这个过程应该要注册),下载解压后将文件拷贝到cuda目录
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7
官网:https://developer.nvidia.com/rdp/cudnn-archive

安装GPU版pytorch

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

安装Stable Diffusion WebUI

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/ 即可

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年12月19日
下一篇 2023年12月19日

相关推荐