如何正确安装Stable Diffusion Web UI以及对应的xFormers

news2025/2/19 13:51:42

本文是我总结的步骤,验证了几次保证是对的。因为正确的安装 Stable Diffusion Web UI 以及对应的 xFormers 实在是太麻烦了,官方和网上的步骤都是残缺和分散的,加上国内网络速度不理想,所以需要一些额外步骤,之前研究出来了,结果没记,重装系统之后又安装不好了,这次成功安装之后,就写下本文记录,这样一个小时绝对能装好了(网络速度快的话不超过十分钟)。

为什么需要xFormers

如果你想让 Stable Diffusion Web UI 生成图的时候需要的显存/内存以及时间少一些,那么需要 xFormers 来实现这点。xFormers 是 Meta(也就是 Facebook)开发的一个优化框架。

比如我使用的 RTX 3060 12GB,开不开 xFormers 的对比如下:

需要注意,尺寸并不是刚刚好够,而是我测试了一下常见分辨率的结果。因为生成内容如果不是常见分辨率,很多时候生成的图很奇怪。

不开 xFormers开 xFormers
512x512速度5.1 s4.5 s
512x512时使用的显存7608MiB7606MiB
1024x1024速度18.1 s14.6 s
1024x1024时使用的显存8866MiB8094MiB

但是安装 xFormers 是其中的难点,你可能会看有人已经提到,xFormers 与 Pytorch 和 CUDA 版本需要对应起来。但是此时你可能依旧有两个问题:

  1. 对于如何找到版本对应关系,很多人给出的答案是找表。
  2. 按照一些表里的对应关系安装了,但还是有问题。

经过我的研究,这根本不是你需要考虑的。本文的安装步骤也不需要你记住对应的版本。关于 Python 及其包的解释除了“安装详情”中有展开外,最后的“多说点”部分也会说一些,感兴趣可以看看。

如果你只需要知道步骤,那么可以直接看“安装步骤总结”部分。

安装详情

下面我从头安装演示,其中会说明哪些步骤可能会导致的一些问题,所以希望你从头看,Python 的版本控制是一个挺复杂的问题。

首先是把仓库克隆下来:

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

仓库如果下不动,那么建议你改 GitHub 的 IP 下或者其他方法下,反正这部分必须是个 Git 仓库。zip 解压还需要更麻烦的处理,不推荐。

然后进入仓库,直接按照官方教程里的方法开始安装:

$ cd stable-diffusion-webui/
$ ./webui.sh 

到打印下面这样的内容时,你可能会发现很卡,并且到最后会报错:

............
............
Successfully installed pip-25.0.1

################################################################
Launching launch.py...

Launching launch.py...
################################################################
glibc version is 2.35
Check TCMalloc: libtcmalloc_minimal.so.4
libtcmalloc_minimal.so.4 is linked with libc.so,execute LD_PRELOAD=/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4
Python 3.10.12 (main, Jan 17 2025, 14:35:34) [GCC 11.4.0]
Version: v1.10.1
Commit hash: 82a973c04367123ae98bd9abdf80d9eda9b910e2
Installing torch and torchvision
Looking in indexes: https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple, https://download.pytorch.org/whl/cu121

这时候直接Crtl+C退出运行(为什么这样后面说)。最后一行的Looking in indexes: https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple, https://download.pytorch.org/whl/cu121是在安装 Pytorch 的时候找的库地址,可以看到第一个时清华源的镜像,第二个是官方地址。由于清华源的 Pytorch 是 CPU 版本的,所以这时候会去官方找,找的时候又因为网络问题,这时候就开始卡和报错了。

这时候先解决一个国内网络导致的问题:Stable Diffusion Web UI 每次启动的时候都会检查版本,这时候它必须通过上面两个库看一下版本对不对,但是由于网络原因必定会卡。所以先来设置个镜像解决这个问题

阿里云的 Pytorch 镜像支持显卡版本,这时先打开仓库中的webui-user.sh文件,在下面这部分下面添加一句(这里的cu124是因为我的 CUDA 版本是 12.4,你按照你的来设置),并且在参数部分添加--xformers,启动 xFormers(这里我加了个--listen是因为我实在其他设备上访问了,这样弄了个公共链接):

# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--listen --xformers"

# install command for torch
export TORCH_COMMAND="pip install torch -f https://mirrors.aliyun.com/pytorch-wheels/cu124"

然后再次运行安装命令:

$ ./webui.sh 

你会发现这时候开始正常的安装流程了,它会把需要的仓库和模型下载下来,这需要一段时间。

仓库如果下不动,那么建议你改 GitHub 的 IP 下,反正它同样需要是个 Git 仓库。

模型如果下不动,可以想办法下载后挪到对应的位置(复制或者链接),这个是可以的。
可以使用HF-Mirror,方法你看看文档就知道了。

等安装好了之后,会启动 Stable Diffusion Web UI,这时候你在网页生成图会出现下面的内容:
请添加图片描述

终端显示:

....
....
        raise NotImplementedError(msg)
    NotImplementedError: No operator found for `memory_efficient_attention_forward` with inputs:
         query       : shape=(2, 4096, 8, 40) (torch.float16)
         key         : shape=(2, 4096, 8, 40) (torch.float16)
         value       : shape=(2, 4096, 8, 40) (torch.float16)
         attn_bias   : <class 'NoneType'>
         p           : 0.0
    `decoderF` is not supported because:
        xFormers wasn't build with CUDA support
        attn_bias type is <class 'NoneType'>
        operator wasn't built - see `python -m xformers.info` for more info
    `flshattF@0.0.0` is not supported because:
        xFormers wasn't build with CUDA support
        operator wasn't built - see `python -m xformers.info` for more info
    `tritonflashattF` is not supported because:
        xFormers wasn't build with CUDA support
        operator wasn't built - see `python -m xformers.info` for more info
        triton is not available
        Only work on pre-MLIR triton for now
    `cutlassF` is not supported because:
        xFormers wasn't build with CUDA support
        operator wasn't built - see `python -m xformers.info` for more info
    `smallkF` is not supported because:
        max(query.shape[-1] != value.shape[-1]) > 32
        xFormers wasn't build with CUDA support
        dtype=torch.float16 (supported: {torch.float32})
        operator wasn't built - see `python -m xformers.info` for more info
        unsupported embed per head: 40

这段错误的意思就是 xFormers 与 CUDA 版本不对应,现在我们来解决这个问题。

首先使用Crtl+C退出运行。这时候你别用提示的python -m xformers.info命令来检查,./venv/bin/python -m xformers.info命令(为什么这样我稍后说),它的输出如下:

$ ./venv/bin/python -m xformers.info
WARNING[XFORMERS]: xFormers can't load C++/CUDA extensions. xFormers was built for:
    PyTorch 2.1.2+cu121 with CUDA 1201 (you have 2.6.0+cu124)
    Python  3.10.13 (you have 3.10.12)
  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
.....
.....

你会发现它告诉你了你当前的 CUDA、Pytorch 与 xFormers 需要的情况:它需要PyTorch 2.1.2+cu121(Python 的那个提示不管它),但其实你也不用记这个版本号,这里只是告诉你如何找到它是因为版本出错的。

现在不要使用任何命令安装,这里需要先解释一下上面的两个“稍后”。

众所周知,Python 每个小版本的不同就可能导致一些重大改变,所以很多项目使用的 Python 版本是强制指定的,这时候就有了很多虚拟环境,比如 Miniconda,但是 Python 自己也有个虚拟环境,这里正是用到了这一点。你这时候查看项目目录,会发现多了一个venv目录,上面查看 xFormers 信息的时候使用的python也是这个虚拟环境内的。

注意不要直接用这个目录下的pip安装,你会发现会报错。

现在我们需要进入这个虚拟环境:

source ./venv/bin/activate

然后在虚拟环境中(你命令行最前面会出现一个(venv)),再使用下面的命令安装(同样,你需要根据你的 CUDA 版本修改镜像链接):

pip install -U xformers -f https://mirrors.aliyun.com/pytorch-wheels/cu124

你可以看到,你不需要指定 xformers 的版本就可以安装,因为这里使用的-U是将xformers更新成cu124对应的版本了,前面安装torch的时候也是用的这个版本,不需要你去查找。

此后,不管你是不是在这个虚拟环境内,会发现它都使用的都是正确的 xFormers,也就是可以正常运行。

如果你想了解如何使用 Stable Diffusion Web UI,可以看我的这篇博客:文本生图的提示词prompt和参数如何设置(基于Animagine XL V3.1)

安装步骤总结

第一步,克隆仓库:

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

第二步,先让他生成虚拟环境,然后卡住的时候使用Crtl+C退出运行:

./webui.sh

第三步,在webui-user.sh修改参数和镜像:

# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--listen --xformers"

# install command for torch
export TORCH_COMMAND="pip install torch -f https://mirrors.aliyun.com/pytorch-wheels/cu124"

第四步,再次运行,安装需要的仓库和包:

./webui.sh 

第五步,进入虚拟环境:

source ./venv/bin/activate

第六步,在虚拟环境中安装正确版本的 xFormers:

pip install -U xformers -f https://mirrors.aliyun.com/pytorch-wheels/cu124

第六步,运行检查:

./webui.sh 

多说点

这里多说点,你的设备上大概率存在多个版本的 Python 以及 PIP。在这种多版本的情况下,你需要知道你在用哪个,要用哪个,谁管谁。

第一,你要确定是否有虚拟环境。这点你可以看命令行前面的内容就知道了,比如 conda 的(base)以及本文的(venv)

第二,你要确定当前默认 Python 版本是哪个。这点你可以使用Python --version查看。

第三,你的默认 PIP 和 Python 不一定是一对的,这就导致你使用pip安装的包在python中无法使用(pip就是默认的 PIP,python是默认的 Python)。这个使用,需要你使用下面的样式安装:

python -m pip install <包>

这时候安装的包就在默认的python中。同样的道理,你可以把python改成某个 Python 版本的路径。

第四,善用 PIP 的-U选项。虽然-U选项是更新的意思,但是由于它是查找某些包管理库来看最新版本的,所以它也可以“回退”,就像本文使用的那样。此外,你在强制版本的使用,也可以使用这个选项,否则由于强制版本小于当前版本,导致没有任何操作。

希望能帮到有需要的人~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DeepSeek正重构具身大模型和人形机器人赛道!

中国人工智能公司DeepSeek&#xff08;深度求索&#xff09;以“低成本、高效率、强开放”的研发范式横空出世&#xff0c;火遍并震撼全球科技圈&#xff1b;DeepSeek展现出来的核心竞争力&#xff0c;除了低成本及推理能力&#xff0c;更重要的是开源模型能力追赶上了最新的闭…

Linux库制作与原理:【静态库】【动态库】【目标文件】【ELF文件】【ELF从形成到假造轮廓】【理解链接和加载】

目录 一.什么是库 二.静态库 2.1创建静态库 我们在之前的路径下新建lib使用我们自己的库 2.2 使用makefile生成静态库 三.动态库 3.1动态库生成 3.2动态库使用 3.3库运行搜索路径 四.目标文件 五.ELF文件 六.ELF从形成到加载轮廓 6.1ELF形成可执行 6.2 ELF可执行文…

【ubuntu24.04】 强制重启导致大模型的磁盘挂载出错

挂载NTFS文件系统出错 各种模型放在了这个机械硬盘上&#xff0c;虽然速度慢&#xff0c;但是好在容量大。大模型在工作&#xff0c;但是程序看起来有问题&#xff0c;导致系统卡死了&#xff0c;然后我重启了&#xff0c;然后报错&#xff1a;wrong fs type bad option &…

Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例

搞个引言 在 Spring 框架的开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是它的一个核心特性&#xff0c;它能够让代码更加模块化、可测试&#xff0c;并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用

【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用 【承接商业广告,如需商业合作请+v17740568442】 文章目录 【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用个人配置详情一、安装ollama二、下载deepseek版本…

【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库

文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…

Unity 命令行设置运行在指定的显卡上

设置运行在指定的显卡上 -force-device-index

Visual Studio 使用 “Ctrl + /”键设置注释和取消注释

问题&#xff1a;在默认的Visual Studio中&#xff0c;选择单行代码后&#xff0c;按下Ctrl /键会将代码注释掉&#xff0c;但再次按下Ctrl /键时&#xff0c;会进行双重注释&#xff0c;这不是我们想要的。 实现效果&#xff1a;当按下Ctrl /键会将代码注释掉&#xff0c;…

教程:使用 Vue 3 和 arco 实现表格合并

1. 功能概述 本教程将介绍如何使用 Vue 3 和 arco 组件库实现表格合并功能。具体来说&#xff0c;我们会根据表格数据中的某个字段&#xff08;如 type&#xff09;对表格的某一列&#xff08;如入库类型列&#xff09;进行合并&#xff0c;同时将质检说明列合并为一列。 2. …

uniapp - iconfont下载本地并且运用至项目上

1、项目中创建一个文件夹放置iconfont相关文件&#xff0c;例如src/assets/iconfont&#xff08;名称自己定义&#xff09; 2、在iconfont下载项目至本地 3、解压后把文件复制进1的文件夹中 4、修改src/assets/iconfont - iconfont.css里的font-face的src地址&#xff0c;修…

【前端】自己从头实现一个gpt聊天页面

预览 最小化功能点 主界面&#xff1a;侧边栏会话历史、聊天窗口发送和断开。侧边栏&#xff1a;展示会话列表&#xff0c;每个会话包含多条聊天记录&#xff0c; 通过localstorage本地储存和恢复&#xff0c;会话需要重命名和删除。聊天框&#xff1a;区分一下发送者和回答者…

数据结构——二叉树(2025.2.12)

目录 一、树 1.定义 &#xff08;1&#xff09;树的构成 &#xff08;2&#xff09;度 2.二叉树 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;二叉树的遍历 &#xff08;3&#xff09;遍历特性 二、练习 1.二叉树 &#xff08;1&#xff09;创建二叉树…

Vulhub靶机 ActiveMQ任意 文件写入(CVE-2016-3088)(渗透测试详解)

一、开启vulhub环境 docker-compose up -d 启动 docker ps 查看开放的端口 漏洞版本&#xff1a;ActiveMQ在5.14.0之前的版本&#xff08;不包括5.14.0&#xff09; 二、访问靶机IP 8161端口 默认账户密码都是admin 1、利用bp抓包&#xff0c;修改为PUT方法并在fileserver…

跟着李沐老师学习深度学习(十一)

经典的卷积神经网络 在本次笔记中主要介绍一些经典的卷积神经网络模型&#xff0c;主要包含以下&#xff1a; LeNet&#xff1a;最早发布的卷积神经网络之一&#xff0c;目的是识别图像中的手写数字&#xff1b;AlexNet&#xff1a; 是第一个在大规模视觉竞赛中击败传统计算机…

【微软- Entra ID】Microsoft Entra ID

Microsoft Entra ID是微软提供的基于云的身份和访问管理服务。Microsoft Entra ID是一个全面的解决方案,用于管理身份、执行访问策略以及在云和本地保护您的应用程序和数据。 目录 一、查看 Microsoft Entra ID 微软Entra租户 微软Entra模式 二、比较Microsoft Entra ID与…

Halcon相机标定

1&#xff0c;前言。 相机的成像过程实质上是坐标系的转换。首先空间中的点由“世界坐标系”转换到“相机坐标系”&#xff0c;然后再将其投影到成像平面&#xff08;图像物理坐标系&#xff09;&#xff0c;最后再将成像的平面上的数据转换为图像像素坐标系。但是由于透镜的制…

Linux 配置 MySQL 定时自动备份到另一台服务器

Linux 配置 MySQL 定时自动备份到另一台服务器 前言1、配置服务器通信1.1&#xff1a;配置过程 2、编写自动备份sh脚本文件3&#xff1a;设置定时自动执行 前言 此方案可使一台服务器上的 MySQL 中的所有数据库每天 0 点自动转储为 .sql 文件&#xff0c;然后将文件同步到另一…

《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1YPKEeyEeM/ 《安富莱嵌入式周报》第350期&#xff1a;Google开…

LabVIEW与小众设备集成

在LabVIEW开发中&#xff0c;当面临控制如布鲁克OPUS红外光谱仪这类小众专业设备的需求&#xff0c;而厂家虽然提供了配套软件&#xff0c;但由于系统中还需要控制其他设备且不能使用厂商的软件时&#xff0c;必须依赖特定方法通过LabVIEW实现设备的控制。开发过程中&#xff0…

无人机之无线传输技术!

一、Lightbridge和OcuSync图传技术 Lightbridge技术&#xff1a;这是大疆自主研发的一种专用通信链路技术&#xff0c;使用单向图像数据传输&#xff0c;类似于电视广播塔的数据传输形式。它主要采用2.4GHz频段进行传输&#xff0c;并且可以实现几乎“零延时”的720p高清图像传…