Ubuntu20.04摆设stable-diffusion-webui情况小记
Stable Diffusion web UI
A web interface for Stable Diffusion, implemented using Gradio library.
前言
今天这篇算是工作学习条记吧,紧张纪录下stable-diffusion-webui开源项目安装过程中遇到的问题,Stable Diffusion 是一种基于深度学习的文本到图像天生模子,可以或许根据给定的文本形貌天生高质量的图像。它属于一种称为扩散模子(Diffusion Models)的天生模子,扩散模子在图像天生领域取得了显著的成果。
stable-diffusion-webui 是一个开源项目,旨在为 Stable Diffusion 模子提供一个简便、用户友爱的 Web 界面。这个界面使得用户可以或许更方便地利用 Stable Diffusion 天生图像,进行各种设置调解,乃至利用 GPU 加速来提高天生服从。它本质上是一个基于 Python 的 Web 应用步伐,通常利用 Flask 或 FastAPI 作为后端框架,前端则是基于 HTML/CSS/JavaScript 实现的。
stable-diffusion-webui 作为一个开源项目标,它的安装过程已经被无数先行者实践过了,但是人们总会因为如许那样的原因遇到新的问题,大概是版本不对应,平台不熟悉、项目不熟悉、情况有问题等等,在我熬到半夜成功安装完一次以后,回过头来再看项目标 README 文件发现是那样的清晰,但是为什么在成功安装前踩了那么多坑呢?总结我遇到的坎坷有几点:英语不熟、Ubuntu恐惧、python混乱、操之过急。
所以我觉得把我安装的履历纪录下来照旧很有必要的,如许可以让我以后在类似的问题上少踩一些坑,安装背景是如许的,之前团队小伙伴也是用这个项目天生图,但是用的Windows版本,从 README 文件来看Windows版本在显卡驱动正常的情况下只需要 git clone 克隆库之后,运行 webui-user.bat 脚本即可,但是那台Windows设置不高,所以准备用新电脑再搭一次情况。
新入伍的电脑设置设置贼优秀:i9CPU32核、128G内存、Geforce RTX 4070Ti显卡、4TSSD硬盘,另有Windows10家庭版和Ubuntu20.04双系统,考虑抵家庭版系统的限制和分配给它的小硬盘空间,我们照旧决定在Ubuntu上重新摆设一套情况,首先在我的认知里高配显卡和Ubuntu就不搭,所以当我遇到找不到显卡需要安装驱动时就头大,固然如今来看这只是私见,但当时安装时并不知道,加上搜到的一些Ubuntu安装显卡驱动的繁琐教程,我走了一些弯路。
再有就是对英语的生疏感,导致检察README文件时有些急躁,有点胡乱一锅端的操作,另有就是要再安装一个新版本的Python解释器的恐惧,这也是导致我开始安装总遇到问题的紧张原因,当我梳理了python3-venv功能之后,根本明白了虚拟情况的隔离概念和利益,也就明白了这些安装命令的作用。
后视镜视角检察安装文档
首先分析我的电脑系统是Ubuntu20.04,这就决定我电脑默认的Python不符合要求,下面是具体步骤:
- Automatic Installation on Linux
- 1.Install the dependencies:
- # Debian-based:
- sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0
- # Red Hat-based:
- sudo dnf install wget git python3 gperftools-libs libglvnd-glx
- # openSUSE-based:
- sudo zypper install wget git python3 libtcmalloc4 libglvnd
- # Arch-based:
- sudo pacman -S wget git python3
复制代码 先看这一段,一开始我准备一股脑全实行一遍,厥后发现只需要实行 sudo apt install wget git python3 python3-venv libgl1 libglib2.0-0 这一句即可,python3 是 Python 编程语言的第三版的实行文件, python3-venv 是一个用于创建 Python 3 虚拟情况的工具包, libgl1 是用于支持 OpenGL 的库,它提供了对图形硬件的低级接口,允许步伐利用硬件加速进行 2D 和 3D 图形的渲染,libglib2.0-0 是 GLib 库的核心部门,它是许多 Linux 应用步伐和工具的基础库之一,提供数据结构、内存管理、线程管理、文件 I/O、网络操作、正则表达式等功能,被广泛用于 GNOME 桌面情况和许多其他 C 应用步伐中。
稍微新一点的Ubuntu系统实行这个命令就安装好了,比如Ubuntu22.04系统,自带的Python版本就是Python3.10,而我当前的电脑系统Ubuntu20.04自带的Python版本是Python2.7和Python3.8,所以Python相关的软件默认安装的不符合条件,接着往下看。
- If your system is very new, you need to install python3.11 or python3.10:
- # Ubuntu 24.04
- sudo add-apt-repository ppa:deadsnakes/ppa
- sudo apt update
- sudo apt install python3.11
- # Manjaro/Arch
- sudo pacman -S yay
- yay -S python311 # do not confuse with python3.11 package
- # Only for 3.11
- # Then set up env variable in launch script
- export python_cmd="python3.11"
- # or in webui-user.sh
- python_cmd="python3.11"
复制代码 原来这个项目需要的版本是Python3.11 大概 Python3.10,所以系统自带的Python3.8是不可的,这里开头有句提示,假如系统太新(比如Ubuntu24.04)就利用这些命令安装,而我们是因为系统太老所以要利用这些命令
- sudo add-apt-repository ppa:deadsnakes/ppa
- sudo apt update
- sudo apt install python3.11
- sudo apt install python3.11-venv # 这句原文档没有,我觉得安装对应版本的好一些
复制代码 这里补充关键的一点,对照上面所需的命令,应该额外安装一下 sudo apt install python3.11-venv 这个虚拟情况的软件,别的的重中之重是要实行 export python_cmd="python3.11",大概在 webui-user.sh 文件中添加 python_cmd="python3.11"信息,我就是没看到这一步,导致Python安装混乱,耽误了几个小时,保举将设置放到文件中,一会告诉你这个文件在哪,接着往下看
- 2.Navigate to the directory you would like the webui to be installed and execute the following command:
- wget -q https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh
- Or just clone the repo wherever you want:
- git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
复制代码 这第二步给了两种方式,一种是直接下载脚本实行,另一种是直接clone一个库,我就是为了省事选了第一种,但又没设置python_cmd变量,导致下载过程中这种缺python库,所以这里保举第二种,直接在自定义位置克隆一个库,然后进入stable-diffusion-webui目录,打开文件webui-user.sh,添加python_cmd="python3.11"信息,继续往后看:
- 3.Run webui.sh.
- 4.Check webui-user.sh for options.
复制代码 第三步是实行 webui.sh 脚本,可以直接运行下载的脚本 ./webui.sh,也可以进入克隆的项目目录stable-diffusion-webui运行命令 ./webui.sh
第四步就是查抄用户参数了,我们手动添加了一个python_cmd="python3.11",其着实 webui.sh 文件中用如许一段形貌:
- #################################################
- # Please do not make any changes to this file, #
- # change the variables in webui-user.sh instead #
- #################################################
复制代码 而在webui-user.sh也有一些被注释的默认变量供我们修改:
- #!/bin/bash
- #########################################################
- # Uncomment and change the variables below to your need:#
- #########################################################
- # Install directory without trailing slash
- #install_dir="/home/$(whoami)"
- # Name of the subdirectory
- #clone_dir="stable-diffusion-webui"
- # Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
- #export COMMANDLINE_ARGS=""
- # python3 executable
- #python_cmd="python3"
- # git executable
- #export GIT="git"
- # python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv)
- #venv_dir="venv"
- # script to launch to start the app
- #export LAUNCH_SCRIPT="launch.py"
- # install command for torch
- #export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113"
- # Requirements file to use for stable-diffusion-webui
- #export REQS_FILE="requirements_versions.txt"
- # Fixed git repos
- #export K_DIFFUSION_PACKAGE=""
- #export GFPGAN_PACKAGE=""
- # Fixed git commits
- #export STABLE_DIFFUSION_COMMIT_HASH=""
- #export CODEFORMER_COMMIT_HASH=""
- #export BLIP_COMMIT_HASH=""
- # Uncomment to enable accelerated launch
- #export ACCELERATE="True"
- # Uncomment to disable TCMalloc
- #export NO_TCMALLOC="True"
- ###########################################
- python_cmd="python3.11"
复制代码 至此总结一下在Ubuntu20.04上设置情况的精简步骤
- sudo add-apt-repository ppa:deadsnakes/ppa
- sudo apt update
- sudo apt install python3.11 python3.11-venv libgl1 libglib2.0-0
复制代码- git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
复制代码
- 进入stable-diffusion-webui目录,在文件 webui-user.sh 中添加 python_cmd="python3.11" 信息
- 运行stable-diffusion-webui目录下的脚本文件 ./webui.sh
聊聊我踩的那些坑
前面形貌了怎样正确搭建情况,最后总结下来就寥寥几步,但是我却兜兜转转花了几个小时,下面聊聊我都踩了哪些坑,以及用到了哪些东西?
python3.11的安装
因为自己的私见,认为Python情况的混乱,所以在这里吃了亏,利用默认命令安装完发现是Python3.8版本,于是实行 sudo apt install python3.11 命令安装,但是因为没有导入情况变量 export python_cmd="python3.11",导致实行脚本时各种报 “No module named pip” 错误,我乃至想删掉自带的Python2.7版本和Python3.8版本,还好是Deepseek劝住了我,不然我就全给它卸载了,但是因为找不到pip,指定安装也不好使,我又搞起来骚操作,将 /usr/bin/ 目录下的 python 和 python3都指向了 Python3.11,勉强解决了这个问题,但却引入了更大的麻。
重启之后打不开终端了,一些软件更新和图形界面话的东西也不好使了,经过几个小时的摸索我想起了DeepSeek劝我的话,岂非是因为系统的GNOME用到了他们,我赶紧将python和python3的软连接还原了,重启之后发现果然正常了。
当我意识到这个问题后,从头重新安装Python,指定了情况变量 python_cmd, 就没遇到这个贫苦了。
这里在安装Python3.11前有一句 sudo add-apt-repository ppa:deadsnakes/ppa,是一条在 Ubuntu 系统中用于添加 PPA(Personal Package Archive,个人包存档)的命令,让你可以或许从该源中获取更新的软件包。deadsnakes 是一个非常流行的 PPA,提供了 Ubuntu 官方源中不包含的 Python 版本。例如,它提供了比默认 Ubuntu 存储库中更高版本的 Python(例如 Python 3.11、3.12)供用户安装。
这个项目利用 python3.11-venv 创建虚拟隔离情况,它是通过 文件系统隔离 和 情况变量设置 的方式实现虚拟情况的隔离。具体来说,虚拟情况会创建一个包含独立 Python 解释器和依赖包的目录,如许每个项目可以有自己的依赖和库,不会影响系统的全局情况或其他虚拟情况。
实行sudo apt update报错
每次实行软件查抄更新时总是报错以下错误
- $ sudo apt update
- 命中:2 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal InRelease
- 命中:1 https://packages.microsoft.com/repos/code stable InRelease
- 获取:3 https://dl.google.com/linux/chrome/deb stable InRelease [1,825 B]
- 错误:3 https://dl.google.com/linux/chrome/deb stable InRelease
- 由于没有公钥,无法验证下列签名: NO_PUBKEY 32EE5355A6BC6E42
- 命中:4 http://security.ubuntu.com/ubuntu focal-security InRelease
- 命中:5 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease
复制代码 从错误信息来看,问题是由于缺少 Google Chrome 存储库的公钥(NO_PUBKEY 32EE5355A6BC6E42),导致无法验证软件包的签名。解决方法如下:
可以手动添加缺失的公钥 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 32EE5355A6BC6E42
假如 keyserver.ubuntu.com 无法连接,可以实验其他密钥服务器,例如 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 32EE5355A6BC6E42
显卡驱动
运行启动脚本后找不到GPU显卡,报错如下:
- ailsa@ailsa-Server:~$ ./webui.sh
- ################################################################
- Install script for stable-diffusion + Web UI
- Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
- ################################################################
- ################################################################
- Running on ailsa user
- ################################################################
- ################################################################
- Create and activate python venv
- ################################################################
- ################################################################
- Launching launch.py...
- ################################################################
- glibc version is 2.31
- Cannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage)
- Python 3.8.10 (default, Jan 17 2025, 14:40:23)
- [GCC 9.4.0]
- Version: v1.10.1
- Commit hash: 82a973c04367123ae98bd9abdf80d9eda9b910e2
- Traceback (most recent call last):
- File "launch.py", line 48, in <module>
- main()
- File "launch.py", line 39, in main
- prepare_environment()
- File "/home/ailsa/stable-diffusion-webui/modules/launch_utils.py", line 387, in prepare_environment
- raise RuntimeError(
- RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
复制代码 按照步伐人的直觉来看是驱动有问题,关于装驱动我照旧有点恐惧的,之前折腾各个Ubuntu系统版本的时候没少花费时间,我的程度也就保持在用驱动精灵给Windows安装驱动的阶段,说是给Ubuntu安装显卡驱动实属有点强人所难了,我不停以为Ubuntu不需要太强劲的显卡,好显卡都是给打游戏准备的,不外最近的AI兴起确实给了NVIDIA显卡更广阔的应用空间,然后我就搜索Ubuntu安装NVIDIA显卡驱动的教程,看了大片大片天花乱坠的众多命令之后我真的傻眼了,一个都不想敲。
厥后我发现了 ubuntu-drivers,它是 Ubuntu 系统中一个非常实用的命令行工具,紧张用于自动检测硬件设备,并保举、安装合适的驱动步伐,特别是针对显卡、无线网卡等设备的驱动。
安装方法如下:
- sudo apt update
- sudo apt install ubuntu-drivers-common
复制代码 利用方法也极其简朴,直接一条命令 sudo ubuntu-drivers autoinstall,会根据系统检测到的硬件情况,自动选择并安装最合适的驱动,无需手动指定。
安装完之后重启,显卡居然好了,丝滑到让人难以置信。
内存优化
显卡问题解决好后,启动时报出一条警告
Cannot locate TCMalloc. Do you have tcmalloc or google-perftool installed on your system? (improves CPU memory usage)
这个警告是提示你没有安装 TCMalloc(Thread-Caching Malloc),它是 Google 提供的一种内存分配器,可以或许提高步伐的内存利用服从,尤其在多线程情况下表现较好。虽然它不是必需的,但它可以资助改善步伐的内存利用服从,尤其是在利用 stable-diffusion 这类内存密集型应用时。
解决办法如下:
- 安装 google-perftools(其中包罗 TCMalloc)
- sudo apt update
- sudo apt install google-perftools
复制代码 - 设置情况变量
安装完成后,大概需要设置情况变量,以便 Python 和其他步伐可以或许找到 TCMalloc 库。你可以通过设置 LD_PRELOAD 来加载 TCMalloc 库。
- export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4"
复制代码 也可以将此命令添加到你的 .bashrc 或 .bash_profile 文件中,以便每次启动终端时自动加载。
- echo 'export LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4"
- ' >> ~/.bashrcsource ~/.bashrc
复制代码 - 验证安装
确保 TCMalloc 已正确安装,可以通过运行以下命令来验证:
- ldd $(which python3) | grep tcmalloc
复制代码 假如看到类似以下输出,分析 TCMalloc 已加载:
- libtcmalloc_minimal.so.4 => /usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4 (0x00007ff0e879e000)
复制代码 - 重起步伐
完成以上步骤后,你可以重新运行 webui.sh 脚本,就不会再看到关于 TCMalloc 的警告。
网络问题
解决完了内存又遭遇了网络问题,因为下载的库和资源多是 google.com 域名下的,为了更好的下载所以设置了代理访问,但是遭遇了以下错误
- ################################################################
- Launching launch.py...
- ################################################################
- Python 3.11.11 (main, Dec 4 2024, 08:55:08) [GCC 9.4.0]
- Version: v1.10.1
- Commit hash: 82a973c04367123ae98bd9abdf80d9eda9b910e2
- Launching Web UI with arguments:
- Traceback (most recent call last):
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/launch.py", line 48, in <module>
- main()
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/launch.py", line 44, in main
- start()
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/modules/launch_utils.py", line 465, in start
- import webui
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/webui.py", line 13, in <module>
- initialize.imports()
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/modules/initialize.py", line 23, in imports
- import gradio # noqa: F401
- ^^^^^^^^^^^^^
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/gradio/__init__.py", line 3, in <module>
- import gradio.components as components
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/gradio/components/__init__.py", line 1, in <module>
- from gradio.components.annotated_image import AnnotatedImage
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/gradio/components/annotated_image.py", line 12, in <module>
- from gradio import utils
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/gradio/utils.py", line 353, in <module>
- class AsyncRequest:
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/gradio/utils.py", line 372, in AsyncRequest
- client = httpx.AsyncClient()
- ^^^^^^^^^^^^^^^^^^^
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/httpx/_client.py", line 1395, in __init__
- proxy_map = self._get_proxy_map(proxies, allow_env_proxies)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/httpx/_client.py", line 216, in _get_proxy_map
- return {
- ^
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/httpx/_client.py", line 217, in <dictcomp>
- key: None if url is None else Proxy(url=url)
- ^^^^^^^^^^^^^^
- File "/home/ailsa/stable-diffusion-webui/workspace/stable-diffusion-webui/venv/lib/python3.11/site-packages/httpx/_config.py", line 336, in __init__
- raise ValueError(f"Unknown scheme for proxy URL {url!r}")
- ValueError: Unknown scheme for proxy URL URL('socks://127.0.0.1:7891/')
复制代码 我安装了pip install httpx==0.22.0不好使,厥后在这个官方的issue里找到了答案 unset ALL_PROXY
无法打开系统设置和网络设置
因为安装项现在完备的更新了一遍系统,发现缺了一些东西,这里提到的便是其中两项,重新安装GNOME控制中心就好了
- sudo apt update
- sudo apt install --reinstall gnome-control-center
复制代码 查询GPU利用情况
系统自带的性能检察器中没有GPU信息,所以按照下面步骤,将系统信息表现到顶部的状态条上,先安装必要软件和扩展
- sudo apt update
- sudo apt install gnome-tweaks
- sudo apt install gnome-shell-extension-system-monitor
复制代码 接着按下 Alt + F2,输入 r,然后按回车,查抄扩展是否已启用,需重新打开 GNOME Tweaks,方法如下:
方法 1:通过应用菜单搜索, 按下 Super 键(Windows 键),在搜索栏中输入 Tweaks 或 优化,然后点击打开。
方法 2:通过终端启动 gnome-tweaks
总结
- Ubuntu20.04添加Python3.11软件源的方法是 sudo add-apt-repository ppa:deadsnakes/ppa
- 安装Python情况和依赖利用命令 sudo apt install python3.11 python3.11-venv libgl1 libglib2.0-0
- 安装NVIDIA显卡驱动的命令 sudo ubuntu-drivers autoinstall
- 取消代理的方法 unset HTTP_PROXY、unset HTTPS_PROXY 或 unset ALL_PROXY
==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<== 纪录自己做决定时的想法,哪些是经过了细致的谋划,哪些是因为运气降临,诚然,运气确实也是一种实力,但是不可依赖,只有那些经过谋划后的成功才经得起历史的推敲和将来的检验~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |