Stable Diffusion WebUI 各操作系统安装教程

最近几天在 2 台 Mac、2 台 PC、一台云无 GPU 的 Linux 安装了 Stable Diffusion WebUI,这里记录下如何安装,以及一些注意点和坑。

以下内容针对 Windows(N 卡)、MacOS(m 系列芯片)、Linux(Ubuntu、无 GPU)。

Windows 安装

Windows 安装算是比较简单的,首先直接到 www.python.org/downloads/r… 最下方下载 Windows Installer(注意官方建议版本是 3.10.6,不要使用太新的或太旧的版本,存在部分包不兼容的问题),然后点击安装,建议选择默认安装方式并勾选上 PATH,这样后面就不用自己设置 PATH 环境变量了:

最后的 PATH 最大长度限制的解除可选可不选。然后就可以 clone WebUI 仓库了,如果没有安装过 git 的记得先安装一下:

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

clone 完成后进入 WebUI 目录双击 webui-user.bat 即可打开 WebUI,WebUI 会自动安装需要的依赖并启动,首次运行需要下载的依赖较多可能需要等待比较久的时间。

MacOS 安装

MacOS 安装同样需要先安装依赖,注意先安装好 homebrew,由于 m 系列芯片支持两个版本的 homebrew,所以一定要注意,需要使用 x86 版本的 homebrew,可以使用 which brew 查看,如果是 /usr/local/bin/brew 则是 x86,如果不是最好卸载重装后再继续下面的操作。

确认 homebrew 无误后,使用 homebrew 安装需要的依赖,并 clone Stable Diffusion WebUI:

brew install cmake protobuf rust python@3.10 git wget
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

上述操作都就绪后,就可以进入 WebUI 目录,然后使用 ./webui.sh 启动,WebUI 会自动安装需要的依赖并启动,首次运行需要下载的依赖较多可能需要等待比较久的时间。

Linux 安装

我的云主机操作系统是 Ubuntu 22,并且由于是白嫖的甲骨文的免费云,没有 GPU,所以只能用纯 CPU 跑。

在 Linux 上跑也是一样的路子,先安装依赖,再 clone WebUI:

sudo apt install wget git python3 python3-venv
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

然后进入 WebUI 目录执行 ./webui.sh 启动即可,同样的,WebUI 会自动安装需要的依赖并启动,首次运行需要下载的依赖较多可能需要等待比较久的时间。

不过需要注意的是由于机器没有 GPU,在启动时候需要添加参数来使用 GPU:

./webui.sh --skip-torch-cuda-test --precision full --no-half --use-cpu all

还需要注意,有一些 model 的参数需要 GPU 的支持,所以使用 CPU 跑图很可能会发现跑半天出现不支持 CPU 的错误,所以如果不是没办法强烈不建议使用 CPU 来跑

启动

在 Windows 启动时添加参数

由于 Windows 上启动时使用的是 bat 文件,而不是命令行,所以需要添加参数时和其它系统不同,需要编辑 webui-user.bat 文件,然后将在其中的 set COMMANDLINE_ARGS= 后面加上需要添加的参数来运行。

Serve 给其它机器使用

默认情况下 WebUI 只会监听本机的 host,如果需要从其他机器访问,比如在局域网通过另一台机器访问服务器上的 WebUI 则需要增加 --listen 参数。添加参数后如果需要使用插件要添加 --enable-insecure-extension-access 参数,不然会出现最下方的问题。

当然其实也可以直接用 Nginx 反代就不会触发 WebUI 的安全问题。

Nginx 反代

如果想用 Nginx 反代 WebUI,需要注意:WebUI 里面用到 websocket,所以反代也需要考虑到,不然 WebUI 中发出的 ws 请求 /queue/join 会一直报错,下面放一下我的反代的配置:

server {listen 80;listen [::]:80;server_name xxx.xxx.com;return 301 https://$server_name$request_uri;
}server {listen 443 ssl;listen [::]:443 ssl;server_name xxx.xxx.com;ssl_certificate /etc/nginx/cert/xxx.pem;ssl_certificate_key /etc/nginx/cert/xxx.key;proxy_connect_timeout              60s;proxy_send_timeout                 60s;proxy_read_timeout                 60s;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade           $http_upgrade;proxy_set_header Connection        $connection_upgrade;proxy_set_header X-Forwarded-Proto $scheme;location / {proxy_pass http://localhost:7860;}
}

使用上述配置还需要在 nginx.conf 中的 http 模块中添加上如下声明,不然会报错:

map $http_upgrade $connection_upgrade {default upgrade;''      close;
}

速度

从几台机器和结合最近几天在其它平台上的经验来看,速度差异非常大,我两台 Mac 都是 m1-16G,PC 由于显卡太老旧根本跑不起来(GTX660),Linux 是甲骨文的 VM.Standard.A1.Flex-4VCPU-24G,对比后速度如下:

  • Linux 跑一张默认图耗时大概 9 分钟左右
  • m1-16G 跑一张默认图的耗时大概在 50 秒
  • Colab 的 T4 跑一张默认图耗时大概在 4 秒左右
  • 阿里云的 A10 跑一张默认图都是秒出的

如果稍微复杂点的模型我的这台 Linux 一晚上都跑不出几张图,m1 勉强能用,所以哪怕是 Colab 现在的免费时长缩短到一小时,其实也比在其他机器上瞎跑好多了,效率摆在这里。

FAQ

AssertionError: extension access disabled because of command line flags

当使用 WebUI 安装插件时报错,这个是因为使用了 --listen 参数,WebUI 为了安全(因为此时可以外网通过 IP 访问 WebUI)会默认禁用插件安装的权限,此时可以通过 --enable-insecure-extension-access 参数关闭插件的安全检测。

参考链接: github.com/AUTOMATIC11…

WebSocket 连不上,queue/join 报错

正常出现在使用 nginx 反代时,一般由于没有反代 websocket 导致 websocket 无法连接。

没有 GPU 怎么办

没有 GPU 时在启动时需要添加 --skip-torch-cuda-test --no-half --use-cpu all 这几个参数,关闭 CUDA 并强制开启使用 CPU。

Mac 报错: have ‘arm64’, need ‘x86_64’

一般这种情况下是安装了 arm 版的 homebrew,导致安装的其他依赖包也是 arm 版本,而有些依赖包没有 arm 版本就会造成依赖缺失,所以遇到后需要检查自己的 homebrew 版本并切换成 x86 版本并重新安装依赖。

注意

最后一定要注意:在调试时出现问题需要重新安装依赖时,一定、一定、一定要记得先清理干净 WebUI 目录下的缓存,比如 __pycache__venv 这几个目录,否则会一直使用缓存中的配置。

写在最后

感兴趣的小伙伴,赠送全套AIGC学习资料,包含AI绘画、AI人工智能等前沿科技教程和软件工具,具体看这里。

AIGC技术的未来发展前景广阔,随着人工智能技术的不断发展,AIGC技术也将不断提高。未来,AIGC技术将在游戏和计算领域得到更广泛的应用,使游戏和计算系统具有更高效、更智能、更灵活的特性。同时,AIGC技术也将与人工智能技术紧密结合,在更多的领域得到广泛应用,对程序员来说影响至关重要。未来,AIGC技术将继续得到提高,同时也将与人工智能技术紧密结合,在更多的领域得到广泛应用。

在这里插入图片描述

一、AIGC所有方向的学习路线

AIGC所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

在这里插入图片描述

二、AIGC必备工具

工具都帮大家整理好了,安装就可直接上手!
在这里插入图片描述

三、最新AIGC学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述
在这里插入图片描述

四、AIGC视频教程合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

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

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

相关文章

最小二乘法-拟合平面方程

背景 通常有这样的需求 给你一些点,拟合出最佳直线或者拟合出最佳平面。本文介绍的是最小二乘法 最小二乘法 最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求…

Linux | 标准IO编程

Linux | 标准IO编程 时间:2024年6月8日23:03:43 文章目录 `Linux` | 标准`IO`编程1.标准`IO`编程1-1.流的打开1-2.流的关闭1-3.错误处理函数原型perror参数功能返回值使用示例注意事项额外信息函数原型strerror参数返回值使用示例注意事项errno 变量总结1-4.流的读写1-4-1.按字…

【国产NI替代】SMU 源测量仪:源测量单元平台主要用于半导体、传感器、模组等 IVR 测试测量

• 集 5 台仪器 (数字万用表、电压源、电流源、电子负载和脉冲发生器) 功能于⼀体 • 典型输出源及测量精度 02%,支持直流/脉冲输出模式 • 脉冲输出模式,最⼩脉冲宽度 100 us ,上升时间 10 us • 具有 pA 级分辨率高精度源,且…

【Python机器学习】PCA——特征提取(1)

PCA的一个重要应用是特征提取。特征提取背后的思想是,可以找到一种数据表示,比给定的原始表示更适合于分析。特征提取很有用,它的一个很好的应用实例就是图像。图像由像素组成,通常存储于红绿蓝强度。图像中的对象通常由上千个像素…

c++【入门】已知一个圆的半径,求解该圆的面积和周长?

限制 时间限制 : 1 秒 内存限制 : 128 MB 已知一个圆的半径,求解该圆的面积和周长 输入 输入只有一行,只有1个整数。 输出 输出只有两行,一行面积,一行周长。(保留两位小数)。 令pi3.1415926 样例…

图论第8天

685.冗余连接II 这题需要考虑两种情况&#xff1a; 1.两个输入 2.没有两个输入就是有成环 class Solution { public:static const int N 1005;int father[N];int n;void init(){for (int i 0; i < n; i){father[i] i;}}int find(int x){return x father[x] ? x : f…

Python——用新字符替换字符串中的旧字符

替换方法&#xff1a; string.replace&#xff08;old&#xff0c;new [&#xff0c;count]&#xff09;参考文章&#xff1a; Python程序用特定字符替换字符串中的空格

变声器软件免费版有哪些?国内外12大热门变声器大盘点!(新)

变声软件是一种人工智能AI音频处理工具&#xff0c;允许用户实时修改自己的声音或改变预先录制的音频。这些软件解决方案可提供不同的效果&#xff0c;如改变声音的音调或速度&#xff0c;或将我们的声音转换成其他人或其他东西的声音&#xff0c;如名人、卡通人物、机器人或不…

【C/C++】相机标定

参考文章 相机标定&#xff08;Camera calibration&#xff09;原理、步

WinForms 应用(.NET 8.0)使用ReportViewerCore.WinForms显示打印RDLC报表

在要WinForms 应用&#xff08;.NET 8.0&#xff09;中&#xff0c;显示RDLC报表&#xff0c;就要使用ReportViewerCore.WinForms。原来的ReportViewer只能在.NET Framework框架下运行。 1.ReportViewerCore.WinForms 程序包说明 SQL Server Reporting Services ReportViewer…

Windows下使用netty的SelfSignedCertificate进行SSL加密通信

在使用netty的时候&#xff0c;经常需要对通信进行SSL加密&#xff0c;这就需要相关的证书和秘钥&#xff1b; 当我们在自己的开发环境中进行测试的时候&#xff0c;有一个非常简单的方法来创建证书和私钥文件&#xff0c;netty提供了SelfSignedCertificate类。 SelfSignedCer…

UG12编程怎么没有:深度解析与困惑探寻

UG12编程怎么没有&#xff1a;深度解析与困惑探寻 UG12编程作为现代制造业的重要工具&#xff0c;其应用广泛且功能强大。然而&#xff0c;对于初学者或某些特定需求的用户来说&#xff0c;有时可能会遇到“UG12编程怎么没有”的困惑。这种困惑可能源于软件功能的不熟悉、操作…

[stm32]——uc/OS-III多任务程序

目录 一、获取uC/OS-III源码 二、移植源代码 &#xff08;1&#xff09;建立工程文件 &#xff08;2&#xff09;移植uC/OS-III源码 &#xff08;3&#xff09;添加工程组件和头文件路径 &#xff08;4&#xff09;添加头文件路径 三、修改代码 总结 一、获取uC/OS-III源码 …

【Vue】声明式导航-自定义类名(了解)

问题 router-link的两个高亮类名 太长了&#xff0c;我们希望能定制怎么办 解决方案 我们可以在创建路由对象时&#xff0c;额外配置两个配置项即可。 linkActiveClass和linkExactActiveClass const router new VueRouter({routes: [...],linkActiveClass: "类名1&quo…

【中篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了Yolo v1, 今天从Yolov2开始。 YOLOv2:更好、更快、更强 2017 年 7 月一个闷热的星期二下午,雷德蒙(Joseph Redmon, Yolo创始人)再次走上舞台。 …

Android gradle kts 8.0以上版本配置签名和修改APK输出名字

目录 概述修改签名配置新建签名文件目录配置签名信息使用签名信息打包 修改APK名称 概述 之前写过一篇文章是通过Kotlin的Dsl结合gradle编写的插件来管理项目依赖&#xff0c;我是从一个开源项目叫DanDanPlayAndroid项目上学到的&#xff0c;那时还没有使用toml文件来管理项目…

【CS.SE】使用 docker pull confluentinc/cp-kafka 的全面指南

文章目录 1 引言2 准备工作2.1 安装 Docker2.1.1 在 Linux 上安装 Docker2.1.2 在 macOS 上安装 Docker2.1.3 在 Windows 上安装 Docker 2.2 验证 Docker 安装 3 拉取 confluentinc/cp-kafka Docker 镜像3.1 拉取镜像3.2 验证镜像 4 运行 Kafka 容器4.1 启动 ZooKeeper4.2 启动…

【原创】springboot+mysql农业园区管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

公差基础(互换性和测量基础)

互换性概念&#xff1a; 图纸设计是理论的&#xff0c;理性的&#xff0c;没有误差的&#xff0c;但是实际上加工上市有误差的。 所以说&#xff0c;实际加工出来的零件是否符合要求&#xff0c;我们需要对图纸上的尺寸精度&#xff0c;几何精度&#xff0c;表面粗糙度进行说明…

STM32关于uc/OS-III的多任务程序

目录 一、UCOS-III源码获取 二、HAL库工程的建立 1.RCC配置 2.SYS配置 3.USART1配置 4.GPIO配置 5.时钟配置 6.项目配置 三、KEil文件添加 1.文件复制 2.KEil工程添加 3.添加文件路径 四、代码修改 1. 2.修改文件app_cfg.h中代码 3.修改include.h的代码 4.修改…