在我把所有的坑都踩了一遍之后,决定记录一下linux上的Stable Diffusion webui是怎么搞的。

Linux上如何使用Stable Diffusion WebUI


前提条件:

  1. 已装置CUDA

  2. 已装置git

  3. 已装置Anaconda

    直接装置Anaconda不要盼望Linux自带的Python。虽然Linux自带的Python,可是缺胳膊少腿,所以还是直接用了conda。


捣鼓好Stable Diffusion WebUI需求的环境

创立并激活进入虚拟环境:

conda create -n webui python=3.10.6

conda activate webui

Linux上如何使用Stable Diffusion WebUI

成功进入虚拟环境之后就可以开搞了。


下载Stable Diffusion WebUI

从github上下载,终端中输入:

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

进入文件夹:

cd stable-diffusion-webui

为了削减你的麻烦,请做好以下几个衬托步骤

pip换源

pip config set global.index-url <http://mirrors.aliyun.com/pypi/simple/>

pip config set global.trusted-host mirrors.aliyun.com

笔者提示: 装置过程中可能会遇到奇怪的问题,一般都是网络造成的,很大一部分是pip源造成的。

我搭的时分弄得阿里云源,疯狂报错。师兄搭的时分用的清华源,一下就成功了。我又配另一个服务器,阿里云全部成功。我俩复盘了一下,便是其时网络的问题。所以阿里云源不好使,多换几个其他。

Linux上如何使用Stable Diffusion WebUI

修改lunch.py

找到下面这段代码,给每个github地址前边都加上ghproxy.com/

def prepare_environment():
    global skip_install
    torch_command = os.environ.get('TORCH_COMMAND', "pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117")
    requirements_file = os.environ.get('REQS_FILE', "requirements_versions.txt")
    commandline_args = os.environ.get('COMMANDLINE_ARGS', "")
    xformers_package = os.environ.get('XFORMERS_PACKAGE', 'xformers==0.0.16rc425')
    gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379")
    clip_package = os.environ.get('CLIP_PACKAGE', "git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1")
    openclip_package = os.environ.get('OPENCLIP_PACKAGE', "git+https://github.com/mlfoundations/open_clip.git@bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b")
    stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/Stability-AI/stablediffusion.git")
    taming_transformers_repo = os.environ.get('TAMING_TRANSFORMERS_REPO', "https://github.com/CompVis/taming-transformers.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')

修改完成之后如图:

Linux上如何使用Stable Diffusion WebUI

笔者提示: 刚才说装置过程中可能会遇到奇怪的问题,一般都是网络造成的,另一个原因便是从github下载东西的时分失利,所以这儿直接加个署理省劲。用梯子也不好使。

下载默许模型

笔者提示: 这一步不是有必要的,webui.sh会主动运行下载的,可是我用服务器下的巨慢,所以手动下的。

下载 v1-5-pruned-emaonly.safetensors,放到stable-diffusion-webui/models/Stable-diffusion/ 里:

Linux上如何使用Stable Diffusion WebUI

运用webui

终端输入发动webui:

bash webui.sh

Linux上如何使用Stable Diffusion WebUI

呈现URL便是成功! 点击链接用浏览器打开。


开始画图吧!

Give it a try yourself!

Linux上如何使用Stable Diffusion WebUI


部分报错处理方法

一般都是网络问题,方法便是找到Traceback里面的Command,从头给它换个其他国内源,阿里云不可换清华、豆瓣等等。

  1. RuntimeError

    RuntimeError: Couldn’t install torch.

    Command: “/home/Ann/stable-diffusion-webui/venv/bin/python3” -m pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 –extra-index-url download.pytorch.org/whl/cu117

    Error code: 2

    下载源有问题,看一下你换源了么?现已换源的话不好使,那就再试一下其他源。

    command后边那块复制下来,改一改:

    pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 –trusted-host mirrors.aliyun.com –extra-index-url download.pytorch.org/whl/cu117 -i 其他源的地址

  2. Preparing metadata (setup.py) … error

    subprocess.CalledProcessError: Command ‘[‘/home/Ann/stable-diffusion-webui/venv/bin/python3’, ‘-m’, ‘pip’, ‘–disable-pip-version-check’, ‘wheel’, ‘–no-deps’, ‘-w’, ‘/tmp/tmpmlg_i0y8’, ‘–quiet’, ‘cython’]’ returned non-zero exit status 2.

    distutils.errors.DistutilsError: Command ‘[‘/home/Ann/stable-diffusion-webui/venv/bin/python3’, ‘-m’, ‘pip’, ‘–disable-pip-version-check’, ‘wheel’, ‘–no-deps’, ‘-w’, ‘/tmp/tmpmlg_i0y8’, ‘–quiet’, ‘cython’]’ returned non-zero exit status 2.

    还是看Command。报错转化出来是这个指令:

    “/home/Ann/stable-diffusion-webui/venv/bin/python3” -m pip –disable-pip-version-check wheel –no-deps -w /tmp/tmpmlg_i0y8 –quiet cython

    表明在运用 pip 装置 cython 时,生成了一个 Wheel 文件。

    • 其中 /home/liuyx169/stable-diffusion-webui/venv/bin/python3 表明运用指定的 Python 解释器来执行 pip 指令。
    • -m pip 表明运用 pip 模块来执行指令。
    • –disable-pip-version-check 表明禁用 pip 版本检查
    • wheel 表明运用 Wheel 格式打包装置包
    • –no-deps 表明不装置依赖包
    • -w /tmp/tmpmlg_i0y8 表明将生成的 Wheel 文件放置在指定的目录下
    • –quiet 表明以安静模式运行,不输出详细信息
    • cython 表明要装置的 Python 包的名称。

    归根结底还是在装置cythom这个包的时分没装上,还是网的问题。

    如果你确定换源了,那解决方法还是再换个源手动装一下:

    pip install cython -i 其他源的地址 –disable-pip-version-check wheel –no-deps

  3. pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=’files.pythonhosted.org’, port=443): Read timed out.

    还是源的问题。找到Traceback里面的Command再换个源。

  4. The TLS connection was non-properly terminated.

    fatal: unable to access ‘github.com/TencentARC/…’: gnutls_handshake() failed: The TLS connection was non-properly terminated. error: subprocess-exited-with-error

    呈现这个问题,回去看一下你的launch.py改对了么?确定给launch.py所有的github地址前边都加上ghproxy.com/ 即可。

  5. 还有什么解决不了的尽管往评论区丢,我给你解决

附录

  1. Stable Diffusion Webui:AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI (github.com)
  2. Stable Diffusion Webui 文档:Home AUTOMATIC1111/stable-diffusion-webui Wiki (github.com)

本文正在参加「金石方案」