Python AI 之Stable-Diffusion-WebUI

Stable-Diffusion-WebUI简介

通过Gradio库,实现Stable Diffusion web 管理接口

Windows 11 安装Stable-Diffusion-WebUI 

个人认为Stable-Diffusion-WebUI 官网提供的代码安装手册/自动安装不适合新手安装,我这边将一步步讲述我是如何搭建Python Conda虚拟环境来运行Stable-Diffusion-WebUI项目。在此文当中还会穿插一些AI知识点。

Stable-Diffusion-WebUI 源码下载

打开Git 命令窗口,右击选择->Open Git Base Here

执行如下指令,下载Stable-Diffusion-WebUI 源码。

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

构建Stable-Diffusion-WebUI 运行虚拟环境(stable-diffusion-webui),并安装项目依赖

创建stable-diffusion-webui虚拟环境执行如下指令:

-- 创建pyotrch 虚拟环境,并指定Python版本
conda create -n stable-diffusion-webui python=3.10
-- 激活pytorch 环境
activate stable-diffusion-webui

解答:个人为什么不推荐各位新手安装Stable-Diffusion-WebUI 官网提供的文档进行项目部署调试(手动/自动安装),我先将官网对于提供的安装文档拷贝出来,以及大致梳理其中的关键点步骤。

Installation on Windows 10/11 with NVidia-GPUs using release package 手动安装
Download sd.webui.zip from v1.0.0-pre and extract its contents.
Run update.bat.
Run run.bat.
For more details see Install-and-Run-on-NVidia-GPUsAutomatic Installation on Windows 自动安装
Install Python 3.10.6 (Newer version of Python does not support torch), checking "Add Python to PATH".
Install git.
Download the stable-diffusion-webui repository, for example by running git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git.
Run webui-user.bat from Windows Explorer as normal, non-administrator, user.

我这里主要梳理的是自动安装流程说明

1、前置Python版本下载及其安装和Git 下载stable-diffusion-webui 源码就不做过多的讲述,我们重点从自动安装的入口webui-user.bat 文件开始说明。

第一:启动webui-user.bat

主要进行python 版本指定、git源码地址、Python 项目venv 虚拟环境地址和stable-diffusion-webui 项目运行参数配置,最终调用webui.bat

第二: webui.bat

主要进行检查Python 版本\Git 配置\Venv 虚拟环境目录地址。

核心功能函数:

check_pip: 检查Python 是否安装包管理工具,存在调用创建虚拟环境方法start_venv, 否则输出错误信息。

start_venv: 主要是虚拟路径是否存在,存在调用虚拟环境激活方法activate_venv,否则调用skip_venv方法。

skip_venv:判断ACCELERATE配置是否开启,开启执行accelerate方法,否则执行launch方法

launch 和 accelerate_launch 方法异同点

相同点:都是调用stable-diffusion-webui 源码中launch.py

不同点: accelerate_launch 指定运行中进程CPU 核数= --num_cpu_threads_per_process=6

             launch 无

第三: stable-diffusion-webui.launch.py

launch.py 主要进行stable-diffusion-webui 依赖环境的初始化和stable-diffusion-webui 的启动。

核心功能片段:

stable-diffusion-webui 初始化环境关联的Python 功能代码。

prepare_environment()方法由stable-diffusion-webui.modules.launch_utils.py 提供。主要功能为:

1、根据系统版本生成pip 安装torch 指令。

2、下载stable-diffusion-webui 依赖文件

3、下载stable-diffusion-webui 依赖包

4、下载stable-diffusion-webui 依赖源码

等等相关下载和检查依赖。

stable-diffusion-webui 启动关联的Python 功能代码。

start() 方法由stable-diffusion-webui.modules.launch_utils.py 提供。主要功能为:

依据传递的参数(sys.argv)调用stable-diffusion-webui.webui.py 的不同方法。

def start():print(f"Launching {'API server' if '--nowebui' in sys.argv else 'Web UI'} with arguments: {' '.join(sys.argv[1:])}")import webuiif '--nowebui' in sys.argv:webui.api_only()else:webui.webui()

温馨提示:stable-diffusion-webui.webui.py 是项目的程序入口。

Stable-Diffusion-WebUI 安装项目依赖包模块

执行如下指令:

pip install -r requirements.txt

Stable-Diffusion-WebUI 安装项目依赖包模块存在的问题

问题一:安装torch 模块失败

产生问题原因:指定的torch 下载地址为国外服务器,如果我们本机没有设置科学上网很容易报错。

解决办法:通过阿里云的Simple Index 下载torch 的离线文件,进行本地安装。

并执行如下指令:

pip install E:\\whl\\torch-2.2.1-cp310-cp310-win_amd64.whl

问题二:Stable-Diffusion-WebUI.repositories 目录项目下载失败

如果本机没有配置科学上网会导致Stable-Diffusion-WebUI.repositories 源码项目很容易失败。

解决办法:使用浏览器科学上网工具:穹顶穿越,访问Git项目并下载至Stable-Diffusion-WebUI.repositories目录即可。

Stable-Diffusion-WebUI 项目启动遇到的问题

问题一:A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named ‘triton’

解决过程:

第一步:执行pip install triton后,得到的结果

> pip install triton
ERROR: Could not find a version that satisfies the requirement triton (from versions: none)
ERROR: No matching distribution found for triton

第二步:查询Simple Index 是否二进制文件

果然哪里都没有提供Windows的二进制下载,难道要自己编译? 

第三步:百度/Google 检索是否存在已经编译好的二进制文件。

温馨提示:相关资源等下统一由百度云盘提供出来。

问题二:File "E:\python_ai\stable-diffusion-webui\modules\sd_models_types.py", line 1, in <module>
    from ldm.models.diffusion.ddpm import LatentDiffusion
  File "e:\python_ai\stable-diffusion-webui\repositories\stable-diffusion-stability-ai\ldm\models\diffusion\ddpm.py", line 20, in <module>
    from pytorch_lightning.utilities.distributed import rank_zero_only
ModuleNotFoundError: No module named 'pytorch_lightning.utilities.distributed'

解决办法:

将下面几个文件中:

 /stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/models/diffusion/ddpm.py (Line: 20)
 /stable-diffusion-webui/extensions-builtin/LDSR/sd_hijack_ddpm_v1.py (Line: 17)

/stable-diffusion-webui\modules\models\diffusion\ddpm_edit.py(Line:22)


pytorch_lightning.utilities.distributed 修改为 pytorch_lightning.utilities.rank_zero


 

问题三:  File "E:\python_ai\stable-diffusion-webui\modules\shared.py", line 66, in <module>
gradio_theme = gr.themes.Base()
AttributeError: module 'gradio' has no attribute 'themes'

解决办法:虚拟环境stable-diffusion-webui 协助gradio 模块,下载最新gradio 模块

指令如下:

pip uninstall gradiopip install gradio

问题四:

Use --skip-version-check commandline argument to disable this check.
==============================================================================
Downloading: "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors" to E:\python_ai\stable-diffusion-webui\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors

----- None
loading stable diffusion model: FileNotFoundError
Traceback (most recent call last):
  File "D:\anaconda3\envs\stable-diffusion-webui\lib\threading.py", line 973, in _bootstrap
    self._bootstrap_inner()
  File "D:\anaconda3\envs\stable-diffusion-webui\lib\threading.py", line 1016, in _bootstrap_inner
    self.run()
  File "D:\anaconda3\envs\stable-diffusion-webui\lib\threading.py", line 953, in run
    self._target(*self._args, **self._kwargs)
  File "E:\python_ai\stable-diffusion-webui\modules\initialize.py", line 148, in load_model
    shared.sd_model  # noqa: B018
  File "E:\python_ai\stable-diffusion-webui\modules\shared_items.py", line 133, in sd_model
    return modules.sd_models.model_data.get_sd_model()
  File "E:\python_ai\stable-diffusion-webui\modules\sd_models.py", line 622, in get_sd_model
    load_model()
  File "E:\python_ai\stable-diffusion-webui\modules\sd_models.py", line 693, in load_model
    checkpoint_info = checkpoint_info or select_checkpoint()
  File "E:\python_ai\stable-diffusion-webui\modules\sd_models.py", line 226, in select_checkpoint
    raise FileNotFoundError(error_message)
FileNotFoundError: No checkpoints found. When searching for checkpoints, looked at:
 - file E:\python_ai\stable-diffusion-webui\model.ckpt
 - directory E:\python_ai\stable-diffusion-webui\models\Stable-diffusionCan't run without a checkpoint. Find and place a .ckpt or .safetensors file into any of those locations.

问题原因:stable-diffusion-webui 项目启动依赖stable-diffusion-webui\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors\v1-5-pruned-emaonly.ckpt 模型

解决办法:访问脸蛋网

检索:v1-5-pruned-emaonly

直接点击下载,下载完成后拷贝至 stable-diffusion-webui\models\Stable-diffusion 目录中即可。

问题五:

File "E:\python_ai\stable-diffusion-webui\modules\api\models.py", line 96, in generate_model
        DynamicModel.__config__.allow_population_by_field_name = True
      File "D:\anaconda3\envs\stable-diffusion-webui\lib\site-packages\pydantic\_internal\_model_construction.py", line 221, in __getattr__
        raise AttributeError(item)
    AttributeError: __config__ 

问题原因:

pydatic 版本冲突

解决办法:

移除虚拟环境stable-diffusion-webui中pydatic 默认版本,安装pydatic 指定版本

pip install pydantic==1.10.11
 

问题六:

 File "e:\python_ai\stable-diffusion-webui\repositories\stable-diffusion-stability-ai\ldm\modules\encoders\modules.py", line 103, in __init__
    self.tokenizer = CLIPTokenizer.from_pretrained(version)
  File "D:\anaconda3\envs\stable-diffusion-webui\lib\site-packages\transformers\tokenization_utils_base.py", line 1768, in from_pretrained
    raise EnvironmentError(
OSError: Can't load tokenizer for 'openai/clip-vit-large-patch14'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'openai/clip-vit-large-patch14' is the correct path to a directory containing all relevant files for a CLIPTokenizer tokenizer.

解决办法:
1、打开网站https://huggingface.co/models
2、检索并下载openai/clip-vit-large-patch1 模型

3、在stable-diffusion-webui\models 文件目录下新建openai文件夹,将下载的clip-vit-large-patch1

模型拷贝进去。

温馨提示:相关资源等下统一由百度云盘提供出来。

问题七: File "e:\python_ai\stable-diffusion-webui\repositories\stable-diffusion-stability-ai\ldm\modules\encoders\modules.py", line 105, in __init__ **

疑惑:相同的问题六已经讲述,为什么还要再说一遍。

解答:问题六回答的问题是模型下载,问题七是模型已经存放自定目录,还是包模型无法找到这个是涉及Python 代码问题。

原因在于:stable-diffusion-webui运行时它需要访问huggingface.co去下载一些模型需要的文件,而大陆用户连接不上huggingface.co,导致报错。

解决办法:openai/clip-vit-large-patch14  默认URL请求地址修改为本地绝对路径地址

self.tokenizer = CLIPTokenizer.from_pretrained("E:\python_ai\stable-diffusion-webui\models\openai\clip-vit-large-patch14")
self.transformer = CLIPTextModel.from_pretrained("E:\python_ai\stable-diffusion-webui\models\openai\clip-vit-large-patch14")

问题八:

File "D:\anaconda3\envs\stable-diffusion-webui\lib\site-packages\torch\cuda\__init__.py", line 239, in _lazy_init
    raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled

问题原因:我本机是windows 系统独显为Inter,不是英伟达,导致不能使用GPU。

解决办法:stable-diffusion-webui 项目的启动,禁用GPU使用CPU

执行如下指令:

python webui.py --no-half --use-cpu all

stable-diffusion-webui 简单文字生成图片AI  功能演示

在虚拟环境stable-diffusion-webui 中启动stable-diffusion-webui 项目,执行如下指令:

C:\Users\zzg>cd E:\python_ai\stable-diffusion-webuiC:\Users\zzg>e:E:\python_ai\stable-diffusion-webui>
E:\python_ai\stable-diffusion-webui>conda env  list
# conda environments:
#
base                     D:\anaconda3
animated_drawings        D:\anaconda3\envs\animated_drawings
backgroundremover        D:\anaconda3\envs\backgroundremover
ldm                      D:\anaconda3\envs\ldm
python310                D:\anaconda3\envs\python310
pytorch                  D:\anaconda3\envs\pytorch
stable-diffusion-webui     D:\anaconda3\envs\stable-diffusion-webuiE:\python_ai\stable-diffusion-webui>
E:\python_ai\stable-diffusion-webui>activate stable-diffusion-webuiE:\python_ai\stable-diffusion-webui>conda.bat activate stable-diffusion-webui(stable-diffusion-webui) E:\python_ai\stable-diffusion-webui>python webui.py --no-half --use-cpu all
WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:PyTorch 2.0.1+cu118 with CUDA 1108 (you have 2.0.1+cpu)Python  3.10.11 (you have 3.10.13)Please reinstall xformers (see https://github.com/facebookresearch/xformers#installing-xformers)Memory-efficient attention, SwiGLU, sparse and more won't be available.Set XFORMERS_MORE_DETAILS=1 for more details
No module 'xformers'. Proceeding without it.
Warning: caught exception 'Torch not compiled with CUDA enabled', memory monitor disabled
==============================================================================
You are running torch 2.0.1+cpu.
The program is tested to work with torch 2.1.2.
To reinstall the desired version, run with commandline flag --reinstall-torch.
Beware that this will cause a lot of large files to be downloaded, as well as
there are reports of issues with training tab on the latest version.Use --skip-version-check commandline argument to disable this check.
==============================================================================
----- None
Loading weights [cc6cb27103] from E:\python_ai\stable-diffusion-webui\models\Stable-diffusion\v1-5-pruned-emaonly.ckpt
Running on local URL:  http://127.0.0.1:7860To create a public link, set `share=True` in `launch()`.
Startup time: 21.3s (import torch: 7.3s, import gradio: 3.8s, setup paths: 5.3s, other imports: 2.3s, load scripts: 1.3s, create ui: 0.5s, gradio launch: 0.5s).
Creating model from config: E:\python_ai\stable-diffusion-webui\configs\v1-inference.yaml
当前路径地址 E:\python_ai\stable-diffusion-webui
Applying attention optimization: InvokeAI... done.
Model loaded in 8.2s (load weights from disk: 5.0s, create model: 0.8s, apply weights to model: 2.2s, calculate empty prompt: 0.1s).

项目启动后,浏览器会自动打开http://127.0.0.1:7860/

在Prompt 输入文本框中录入: An astronaut riding a horse/一个宇航员骑马照

温馨提示:我现在仅仅下载了stable-diffusion 中文字生成图像模型,其他模型请按需下载。

百度云盘模型和包模块

链接:https://pan.baidu.com/s/1emfU3kra3AenEoSd4T9WQw 
提取码:500a 
--来自百度网盘超级会员V7的分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/273968.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WorkPlus Meet提供高效、安全视频会议解决方案

WorkPlus Meet是一款私有部署和定制化的视频会议解决方案&#xff0c;为企业提供高效、安全的远程协作平台。随着全球数字化转型的加速&#xff0c;视频会议已成为企业必不可少的工作工具&#xff0c;而WorkPlus Meet的私有部署和定制化功能&#xff0c;为企业提供了更大的控制…

HYBBS 表白墙网站PHP程序源码,支持封装成APP

PHP表白墙网站源码&#xff0c;适用于校园内或校区间使用&#xff0c;同时支持封装成APP。告别使用QQ空间的表白墙。 简单安装&#xff0c;只需PHP版本5.6以上即可。 通过上传程序进行安装&#xff0c;并设置账号密码&#xff0c;登录后台后切换模板&#xff0c;适配手机和PC…

2024年最新阿里云和腾讯云云服务器价格租用对比

2024年阿里云服务器和腾讯云服务器价格战已经打响&#xff0c;阿里云服务器优惠61元一年起&#xff0c;腾讯云服务器61元一年&#xff0c;2核2G3M、2核4G、4核8G、4核16G、8核16G、16核32G、16核64G等配置价格对比&#xff0c;阿腾云atengyun.com整理阿里云和腾讯云服务器详细配…

Kotlin:枚举类

点击查看枚举类中文文档 点击查看枚举类英文文档 枚举类的最基本的用法是实现类型安全的枚举&#xff1a; enum class Direction {NORTH, SOUTH, WEST, EAST }每个枚举常量都是一个对象。枚举常量用逗号分隔。 初始化 因为每一个枚举都是枚举类的实例&#xff0c;所以他们可…

Sass语法小册-笔记迁移

Sass 1、extend 一个元素使用的样式与另一个元素完全相同&#xff0c;但又添加了额外的样式。 .a{width: 100px;height: 100px;background-color: greenyellow;} .b{extend .a;background-color: orangered;//覆盖.a继承来的背景色 } 结果-》 .b[data-v-5d9daadb] {backgrou…

Github 2024-03-11 开源项目周报 Top15

根据Github Trendings的统计,本周(2024-03-11统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目3Jupyter Notebook项目3C#项目1HTML项目1CSS项目1Dart项目1Lua项目1Shell项目1Rust项目1Java项目1C++项目1屏幕截图转…

HTML 语义化:构建优质网页的关键

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

蓝桥杯真题讲解:整数删除

蓝桥杯真题讲解&#xff1a;整数删除 一、视频讲解二、暴力代码三、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;整数删除 二、暴力代码 // 暴力模拟 #include<bits/stdc.h> #define int long long #define INF 0x3f3f3f3f3f3f3f using namespace std; const in…

Java后端八股文之Redis

文章目录 1. Redis是什么&#xff1f;2. Redis为什么这么快&#xff1f;3. 为什么要使用缓存&#xff1f;4. Redis几种使用场景&#xff1a;5. Redis的Zset底层为什么要使用跳表而不是平衡树、红黑树或者B树&#xff1f;6.Redis持久化6.1 什么是RDB持久化6.1.1RDB创建快照会阻塞…

蓝桥杯[OJ 1621]挑选子串-CPP-双指针

目录 一、题目描述&#xff1a; 二、整体思路&#xff1a; 三、代码&#xff1a; 一、题目描述&#xff1a; 二、整体思路&#xff1a; 要找子串&#xff0c;则必须找头找尾&#xff0c;找头可以遍历连续字串&#xff0c;找尾则是要从头的基础上往后遍历&#xff0c;可以设头…

STM32 学习11 独立看门狗与窗口看门狗

STM32 学习11 独立看门狗与窗口看门狗 一、**看门狗概述**二、**STM32中的看门狗类型**1. 独立看门狗&#xff08;IWDG&#xff09;&#xff08;1&#xff09;基本概念&#xff08;2&#xff09;独立看门狗框图&#xff08;3&#xff09;独立看门狗配置步骤&#xff08;4&#…

【机器学习】科学库使用第1篇:机器学习(常用科学计算库的使用)基础定位、目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述&#xff0c;1.1 人工智能概述&#xff0c;1.2 人工智能发展历…

ChatGPT国内能用吗?中国用户怎么才能使用ChatGPT?

与ChatGPT类似的国内网站&#xff0c;他们都能提供和ChatGPT相似的能力&#xff0c;而且可以在国内直接使用。 点击直达方式 百科GPT官网&#xff1a;baikegpt.cn ChatGPT是基于GPT-3.5架构的语言模型的一个实例&#xff0c;由OpenAI开发。以下是ChatGPT的发展历史&#xff1…

linux_aarch64_qt环境搭建

平台环境&#xff1a; ubuntu 16.04&#xff1a; gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12) aarch64 gnu gcc版本&#xff1a; gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz Qt交叉编译版本: qt-everywhere-src-5.12.9.tar.xz 一、aarch64编…

信息系统项目管理师009:消费互联网(1信息化发展—1.3现代化创新发展—1.3.3 消费互联网)

文章目录 1.3.3 消费互联网1.基本属性2.应用新格局 1.3.3 消费互联网 消费互联网是以个人为用户&#xff0c;以日常生活为应用场景的应用形式&#xff0c;满足消费者在互联网中的消费需求而生的互联网类型。消费互联网以消费者为服务中心&#xff0c;针对个人用户提升消费过程的…

Elastic Stack--08--SpringData框架

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringData[官网&#xff1a; https://spring.io/projects/spring-data](https://spring.io/projects/spring-data) Spring Data Elasticsearch 介绍 1.SpringData-…

什么是数据采集与监视控制系统(SCADA)?

SCADA数据采集是一种用于监控和控制工业过程的系统。它可以实时从现场设备获得数据并将其传输到中央计算机&#xff0c;以便进行监控和控制。SCADA数据采集系统通常使用传感器、仪表和控制器收集各种类型的数据&#xff0c;例如温度、压力、流量等&#xff0c;然后将这些数据汇…

Java 使用 EasyExcel 实现导入导出(新手篇教程)

官网镇楼↓&#xff0c;觉得我写的不好的同学可以去官网看哦 EasyExcel Maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version> </dependency> Excel 导入 示例&…

【亲测有效】解决三月八号ChatGPT 发消息无响应!

背景 今天忽然发现 ChatGPT 无法发送消息&#xff0c;能查看历史对话&#xff0c;但是无法发送消息。 可能的原因 出现这个问题的各位&#xff0c;应该都是点击登录后顶部弹窗邀请 [加入多语言 alapha 测试] 了&#xff0c;并且语言选择了中文&#xff0c;抓包看到 ab.chatg…

ChatGPT+MATLAB应用

MatGPT是一个由chatGPT类支持的MATLAB应用程序&#xff0c;由官方Toshiaki Takeuchi开发&#xff0c;允许您轻松访问OpenAI提供的chatGPT API。作为官方发布的内容&#xff0c;可靠性较高&#xff0c;而且也是完全免费开源的&#xff0c;全程自己配置&#xff0c;无需注册码或用…