Docker部署Stable-Diffusion-webui


前排提示:如果不想折腾,可直接跳到最后获取封装好的容器,一键运行 :D


前言

乘上AI生成的快车,一同看看沿途的风景。

启一个miniconda容器

docker run -itd -v 宿主机内SD项目路径:/tmp --gpus all --ipc host -p 7860:7860 continuumio/miniconda3:latest

打开容器:

docker exec -it 容器id bash
cd /tmp

下载项目代码

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

注:如果搭了梯子也无法 git clone,可以直接下载 项目.zip 文件,然后在本地解压。

安装依赖

先安装 torch和更新setuptools,不然:在使用pip安装basicsr库的时候卡住在Preparing metadata (setup.py)。

pip install --upgrade pip setuptools wheel
pip3 install torch torchvision --index-url https://download.pytorch.org/whl/你的cuda版本,比如:cu121

上面的 index-url 参考 pytorch 官方:

Start Locally | PyTorch

使用清华源安装 requirements_versions.txt :

pip install -r requirements_versions.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

使用阿里源安装 requirements.txt :

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

注:清华源安装 requirements.txt 会出现报错:

 Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [26 lines of output]
      Traceback (most recent call last):
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/setup.py", line 50, in get_hash
          from basicsr.version import __version__
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/basicsr/__init__.py", line 3, in <module>
          from .archs import *
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/basicsr/archs/__init__.py", line 5, in <module>
          from basicsr.utils import get_root_logger, scandir
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/basicsr/utils/__init__.py", line 3, in <module>
          from .img_process_util import USMSharp, usm_sharp
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/basicsr/utils/img_process_util.py", line 1, in <module>
          import cv2
      ModuleNotFoundError: No module named 'cv2'
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/setup.py", line 139, in <module>
          write_version_py()
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/setup.py", line 67, in write_version_py
          sha = get_hash()
                ^^^^^^^^^^
        File "/tmp/pip-install-_h0cg0e2/basicsr_f6e24d42eda94c67800f8a48e46b0e6a/setup.py", line 53, in get_hash
          raise ImportError('Unable to get git version')
      ImportError: Unable to get git version
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

下载模型

推荐在 Hugging Face 下载模型文件:

Stable Diffusion 2.1 版本:https://huggingface.co/stabilityai/stable-diffusion-2-1/tree/main

把文件下载到本地:(需要登录后才能下载)

注:如果网络不好,可以选择网盘地址(如果失效,和我联系 :D)。

最后,把下载到的模型文件放到./models/Stable-diffusion下。

运行 webui.py

打开 ./modules/launch_utils.py,添加https://ghproxy.com/def prepare_environment函数中的如下位置:

清空 ./repositories 文件夹内的所有文件(如果为空,可忽略),然后依次执行(顺序不要错):

git clone https://github.com/Stability-AI/stablediffusion.git "repositories/stable-diffusion-stability-ai"
git clone https://github.com/crowsonkb/k-diffusion.git "repositories/k-diffusion"
git clone https://github.com/salesforce/BLIP.git "repositories/BLIP"
git clone https://github.com/sczhou/CodeFormer.git "repositories/CodeFormer"

运行 webui.py

可能的报错:ImportError: libGL.so.1: cannot open shared object file: No such file or directory

解决:

pip install opencv-python-headless

可能使用wsl2的同学会遇到一个问题:宿主机无法打开 127.0.0.1:7860

原因参考:使用 WSL 访问网络应用程序

参数对应代码:

modules/cmd_args.py里:

parser.add_argument("--listen", action="store_true", help="launch gradio with 0.0.0.0 as server name, allowing to respond to network requests")

webui.py里:

api.launch(
        server_name="0.0.0.0" if cmd_opts.listen else "127.0.0.1",
        ...
)

注1: 对于同一个局域网下,不在宿主机上直接打开网页的同学,可以在你的主机浏览器里输入:

宿主机ip:7860

注2:如果要用CPU推理( :D ) ,可能出现报错:

RuntimeError: "xxx" not implemented for 'Half'

解决:启动 webui.py 的时候,再加上参数 --no-half

注3:如果报错 CUDA out of memory:

torch.cuda.OutOfMemoryError: CUDA out of memory. {省略一长串}. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

解决:只需把 PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32可以加到系统环境变量里面:(镜像里我已加上)

接下来就可以愉快地生成图片啦!

资源消耗

生成图片分辨率设置为768(SD 2.0 使用 768*768 分辨率图片训练所得),8G显存已经无法满足生成需求,因此单张图片生成时间极其缓慢(花费31.8s):

Ubuntu平台:因为能使用更多显存,3060 12G的生成速度快于 3070 8G(其实也可能和WSL性能损耗有关)

最后得到一张效果较为不错的照片:

标醉里不知天在水,满船清梦压星河题

一键运行:

对于不想折腾的同学,可以直接下载我封装好的镜像:网盘地址

打开终端,运行如下命令:

cd 镜像名称.tar所在的路径
docker load -i wind_Stable_Diffusion_Webui.tar
docker run -it --rm --gpus all --ipc host -p 7860:7860 wind/stable_diffusion_webui:v1
python webui.py

入股一键运行出现报错,可参考前面的详细教程。

—End

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

15- OpenCV:模板匹配(cv::matchTemplate)

目录 1、模板匹配介绍 2、cv::matchTemplate 3、模板匹配的方法&#xff08;算法&#xff09; 4、代码演示 1、模板匹配介绍 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。 它可以在一幅图像中寻找与给定模板最相似的部分。 模板匹配的步骤&#xff1a; &a…

windows 搜狗输入法几款 简洁皮肤

预览 下载地址 见附件 使用方法 下载到本地&#xff0c;解压&#xff0c;双击直接使用 分流下载链接 windows搜狗输入法皮肤.zip - 蓝奏云

SQL - 事务控制

SQL - 事务控制 文章目录 SQL - 事务控制TCL - 事务事务的边界事务的特性事务的应用 事务隔离等级MySQL支持四种隔离级别 TCL - 事务 **模拟场景&#xff1a;**生活当中转账是转账方账户扣钱&#xff0c;收账方账户加钱。用数据库操作来模拟现实转账。 数据库模拟&#xff1a…

etcd未授权到控制k8s集群

在安装完 K8s 后&#xff0c;默认会安装 etcd 组件&#xff0c;etcd 是一个高可用的 key-value 数据库&#xff0c;它为 k8s 集群提供底层数据存储&#xff0c;保存了整个集群的状态。大多数情形下&#xff0c;数据库中的内容没有加密&#xff0c;因此如果黑客拿下 etcd&#x…

02-Redis持久化、主从与哨兵架构详解

文章目录 Redis持久化RDB快照&#xff08;snapshot&#xff09;bgsave的写时复制(COW)机制AOF&#xff08;append-only file&#xff09;AOF重写RDB 和 AOF &#xff0c;我应该用哪一个&#xff1f; Redis 4.0 混合持久化Redis数据备份策略&#xff1a; Redis主从架构redis主从…

选择排序(堆排序和topK问题)

选择排序 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完 。 如果我们用扑克牌来举例&#xff0c;那么选择排序就像是提前已经把所有牌都摸完了&#xff0c;而再进行牌…

消息中间件之RocketMQ(三)

常见问题 1.重复消费 产生的原因是发送消息时采用了多数分布式消息中间件产品提供的最少一次(at least once)的投递保障&#xff0c;对于这个问题最常见的解决方案,就是消息消费端实现业务幂等&#xff0c;只要保持幂等性&#xff0c;不管来多少条重复消息&#xff0c;最后处…

视频监控方案设计:EasyCVR视频智能监管系统方案技术特点与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…

【LMDeploy 大模型量化部署实践】学习笔记

参考学习教程【LMDeploy 的量化和部署】 理论 作业 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型&#xff0c;生成 300 字的小故事 本地对话 API服务 Client 命令 端口转发 网页Gradio

C语言每日一题(48)回文链表

力扣 234 回文链表 题目描述 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&#xff1…

【渗透测试】借助PDF进行XSS漏洞攻击

简介 在平时工作渗透测试一个系统时&#xff0c;常常会遇到文件上传功能点&#xff0c;其中大部分会有白名单或者黑名单机制&#xff0c;很难一句话木马上传成功&#xff0c;而PDF则是被忽略的一个点&#xff0c;可以让测试报告更丰富一些。 含有XSS的PDF制作步骤 1. 编辑器…

JavaSE基础学习

一、编程入门 二、Java语言概述 三、Java基本语法 四、程序流程控制 五、数组 六、面向对象(上) 数组工具类的封装: 七、面向对象(中) 八、面向对象(下) 九、异常处理 十、多线程 十一、常用类 十二、枚举类与注解 十三、集合 十四、泛型 十五、IO流 十六、网络编程 十七、反射…

Linux-----Shell编程之循环语句

一、小命令 1、echo echo -n 表示不换行输出 echo -e 表示输出转义符 常用的转义符 选项作用\r光标移至行首&#xff0c;并且不换行\s当前shell的名称&#xff0c;如bash\t插入Tab键&#xff0c;制表符\n输出换行\f换行&#xff0c;但光标仍停留在原处\表示插入"\&qu…

Idea上操作Git回退本地版本,怎么样保留已修改的文件,回退本地版本的四种方式代表什么?

Git的基本概念:Git是一个版本控制系统,用于管理代码的变更历史记录。核心概念包括仓库、分支、提交和合并。 1、可以帮助开发者合并开发的代码 2、如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突 3、代码文件版本管理 问题描述 当我们使用git提交代码…

unity 装饰器模式(实例详解)

文章目录 简介1. **组件装饰器&#xff08;Component Decorators&#xff09;**:2. **游戏对象特效装饰器&#xff08;GameObject Effects Decorator&#xff09;**:3. **输入处理装饰器&#xff08;Input Handling Decorators&#xff09;**:4. **性能优化装饰器&#xff08;P…

2022年至2023年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题

2022 年至 2023 年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题 一、 第一阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛第一阶段试题&#xff0c;第一阶段内容包 括&#xff1a;网络平台搭建、网络安全设备配置与防护。 本阶段比赛时间为 180 分钟…

Make.com的发送邮件功能已经登峰造极

make.com的发送邮件功能已经做到了登峰造极。 我给你个任务&#xff0c;让你发送个新邮件给谁谁&#xff0c;你一定想到SMTP服务器不就行了。 我给你第二个任务&#xff0c;我让你自动回复一个邮件&#xff0c;注意是回复。 做不到了吧&#xff5e;&#xff5e;&#xff01;…

[C#]winform部署yolov7+CRNN实现车牌颜色识别车牌号检测识别

【官方框架地址】 https://github.com/WongKinYiu/yolov7.git 【框架介绍】 Yolov7是一种目标检测算法&#xff0c;全称You Only Look Once version 7。它是继Yolov3和Yolov4之后的又一重要成果&#xff0c;是目标检测领域的一个重要里程碑。 Yolov7在算法结构上继承了其前…

C++ 设计模式之责任链模式

【声明】本题目来源于卡码网&#xff08;卡码网KamaCoder&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是责任链模式&#xff08;第21种设计模式&#xff09; 责任链模式是⼀种行为型设计模式&am…

计算机工作原理解析和解剖(基础版)

我们会从软件⼯程师的⻆度解释计算机是如何⼯作的&#xff0c;我们的主要⽬标既不是期待 ⼤家可以造出⾃⼰的计算机&#xff0c;也不是介绍如何编程&#xff0c;⽽是希望让⼤家了解计算机的核⼼⼯作机制后&#xff0c;打破计算机的神秘感&#xff0c;并且有利于理解我们平时编程…