国内Ubuntu环境Docker部署Stable Diffusion入坑记录

国内Ubuntu环境Docker部署Stable Diffusion入坑记录


本文旨在记录使用docker+python进行部署 stable-diffusion-webui 项目时遇到的一些问题,以及解决方案,原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui

问题一览:

  • 国内如何下载大模型?
  • 手写Docker运行时遇到的问题记录。

国内如何快速下载大模型?

使用 modelscope 模块进行下载,你可以在官网找到你需要的模型。
官网地址:https://modelscope.cn/models

# SDK模型下载
from modelscope import snapshot_download
# 示例
snapshot_download('iic/CosyVoice2-0.5B', local_dir='pretrained_models/CosyVoice2-0.5B')

Docker运行时遇到的问题

1、安装带gpu版本的torch?

requirements_versions.txtrequirements.txt 的第一行加入以下文本:

国外:--extra-index-url https://download.pytorch.org/whl/cu121
国内:--extra-index-url https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/wheel/cu121/

一般我们安装带GPU的torch时通常会去 download.pytorch.org 找对应的torch版本。
加上上述文本后会自动从该网址查找并下载安装。

2、以下问题需要重新编译python

是因为手动编译python时,系统依赖安装不足,导致有些依赖库找不到指定的系统包。这种情况只能安装相关系统软件后,重新编译python。

ModuleNotFoundError: No module named '_ctypes'

使用 apt-get install libffi-dev 安装 libffi-dev。

ModuleNotFoundError: No module named '_lzma'

使用 apt-get install liblzma-dev 安装 liblzma-dev。

重新编译方法:

wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz
tar -xzf Python-3.10.13.tgz
cd Python-3.10.13
./configure --with-system-ffi --enable-shared --enable-optimizations && make && make install && echo "/usr/local/lib" | tee /etc/ld.so.conf.d/python3.conf && ldconfig
3、以下问题安装需要安装git
root@58befcdcc1d7:/workspace/automatic1111-stable-diffusion-webui# python3 webui.py 
/usr/local/lib/python3.10/site-packages/torchvision/transforms/functional_tensor.py:5: UserWarning: The torchvision.transforms.functional_tensor module is deprecated in 0.15 and will be **removed in 0.17**. Please don't rely on it. You probably just need to use APIs in torchvision.transforms.functional or in torchvision.transforms.v2.functional.warnings.warn(
Traceback (most recent call last):File "/usr/local/lib/python3.10/site-packages/git/__init__.py", line 87, in <module>refresh()File "/usr/local/lib/python3.10/site-packages/git/__init__.py", line 76, in refreshif not Git.refresh(path=path):File "/usr/local/lib/python3.10/site-packages/git/cmd.py", line 341, in refreshraise ImportError(err)
ImportError: Bad git executable.
The git executable must be specified in one of the following ways:- be included in your $PATH- be set via $GIT_PYTHON_GIT_EXECUTABLE- explicitly set via git.refresh()All git commands will error until this is rectified.This initial warning can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:- quiet|q|silence|s|none|n|0: for no warning or exception- warn|w|warning|1: for a printed warning- error|e|raise|r|2: for a raised exceptionExample:export GIT_PYTHON_REFRESH=quietThe above exception was the direct cause of the following exception:Traceback (most recent call last):File "/workspace/automatic1111-stable-diffusion-webui/webui.py", line 15, in <module>from modules import import_hook, errors, extra_networks, ui_extra_networks_checkpointsFile "/workspace/automatic1111-stable-diffusion-webui/modules/ui_extra_networks_checkpoints.py", line 6, in <module>from modules import shared, ui_extra_networks, sd_modelsFile "/workspace/automatic1111-stable-diffusion-webui/modules/shared.py", line 16, in <module>from modules import localization, extensions, script_loading, errors, ui_components, shared_itemsFile "/workspace/automatic1111-stable-diffusion-webui/modules/extensions.py", line 6, in <module>import gitFile "/usr/local/lib/python3.10/site-packages/git/__init__.py", line 89, in <module>raise ImportError('Failed to initialize: {0}'.format(exc)) from exc
ImportError: Failed to initialize: Bad git executable.
The git executable must be specified in one of the following ways:- be included in your $PATH- be set via $GIT_PYTHON_GIT_EXECUTABLE- explicitly set via git.refresh()All git commands will error until this is rectified.This initial warning can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:- quiet|q|silence|s|none|n|0: for no warning or exception- warn|w|warning|1: for a printed warning- error|e|raise|r|2: for a raised exceptionExample:export GIT_PYTHON_REFRESH=quiet

使用 apt install git 安装 git即可。

4、以下问题是因为缺少python依赖包或依赖包的版本问题
ModuleNotFoundError: No module named 'torchvision.transforms.functional_tensor'

这是因为高版本的torch有些包已经移动或者更改了导入方式,可选择降torch版本到1.13以下或者更改高版本的源码的导入方式。
请参考这篇博客:
https://blog.csdn.net/lanxing147/article/details/136625264

这篇博客讲到了有些版本是可以使用的,比如笔者使用的 torch 2.12 + torchvision0.16.2 + torchaudio2.1.2。
可使用以下命令安装:

pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118

但是国内比较慢,可以选择使用国内镜像源进行提速。使用以下命令:

pip install torch==2.1.2 torchvision torchaudio -f https://mirrors.aliyun.com/pytorch-wheels/cu121/

参考以下文章:
https://docs.infini-ai.com/posts/download-pytorch-from-mirror.html

TypeError: AsyncConnectionPool.__init__() got an unexpected keyword argument 'socket_options'

这是由于 httpcore 版本太低导致的, 使用 pip3 install -U httpcore 升级 httpcore 到最新版本即可。

ModuleNotFoundError: No module named 'clip'

使用 pip3 install clip 安装 clip 库即可。

No module named 'pytorch_lightning.utilities.distributed'

pytorch_lightning的版本较低,安装高版本的 pytorch_lightning 即可。
笔者使用的是 pip3 pytorch_lightning==1.9

No module named 'gdown'

使用 pip3 install gdown 安装 gdown库即可。

No module named 'open_clip_torch'

使用 pip3 install open_clip_torch 安装 open_clip_torch库即可。

5、启动时遇到的问题

最终启动用命令:

python3 webui.py --listen --port=7860 --no-half --disable-nan-check

写在最后

附上完整的Docker 镜像构筑的相关文件,国内基本上也能够很顺畅的一键构筑好docker镜像,总大小约28G。
请在项目根目录下创建一个 docker 目录,然后将 Dockerfile、compose.yaml、requirements.txt 、 requirements_versions.txt、start.sh等文件放进去。
然后执行 cd docker && docker compose -f compose.yaml up 命令。
如果访问浏览器的 7860 端口出现以下界面,恭喜你成功了。

在这里插入图片描述
在这里插入图片描述

Dockerfile
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04ARG VENV_NAME="sd-webui"
ENV VENV=$VENV_NAME
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8ENV DEBIAN_FRONTEN=noninteractive
SHELL ["/bin/bash", "-c"]RUN apt-get update -y
RUN apt-get install -y libgl1-mesa-glx libglib2.0-0
RUN apt-get install -y net-tools wget curl gitRUN apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev# 从国内镜像源下载安装python
# wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz && tar Jxf Python-3.10.13.tar.xz 
RUN wget https://mirrors.huaweicloud.com/python/3.10.13/Python-3.10.13.tar.xz && tar Jxf Python-3.10.13.tar.xz
RUN cd Python-3.10.13 && ./configure --with-system-ffi --enable-shared --enable-optimizations && make && make install && echo "/usr/local/lib" | tee /etc/ld.so.conf.d/python3.conf && ldconfig
RUN python3 -V && pip3 -V# 设置国内镜像源
RUN pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && pip3 config set install.trusted-host mirrors.aliyun.comWORKDIR /workspace
COPY ./requirements_versions.txt ./
COPY ./requirements.txt ./RUN pip3 install -r requirements_versions.txt
RUN pip3 install -r requirements.txt
compose.yaml
services:sd-webui:container_name: sd-webuiimage: sd-webui:1.0restart: alwaysports:- 7860:7860environment:- TZ=Asia/Tokyo- NVIDIA_VISIBLE_DEVICES=allvolumes:- ../../automatic1111-stable-diffusion-webui:/workspace/automatic1111-stable-diffusion-webui# command: tail -f /dev/nullcommand: sh -c "sh /workspace/automatic1111-stable-diffusion-webui/docker/start.sh"deploy:resources:reservations:devices:- driver: nvidiacapabilities: [gpu]
requirements.txt
--extra-index-url https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/wheel/cu121/
blendmodes
accelerate
basicsr
fonts
font-roboto
gfpgan
gradio
invisible-watermark
numpy
omegaconf
opencv-contrib-python
requests
piexif
Pillow
# pytorch_lightning==1.7.7
pytorch_lightning==1.9
realesrgan
scikit-image>=0.19
timm==0.4.12
transformers==4.25.1
# torch
torch==2.1.2
torchaudio==2.1.2
einops
jsonmerge
clean-fid
resize-right
torchdiffeq
kornia
lark
inflection
GitPython
torchsde
safetensors
psutil
open_clip_torch
gdown
clip
requirements_versions.txt
--extra-index-url https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/wheel/cu121/
blendmodes==2022
transformers==4.25.1
accelerate==0.12.0
basicsr==1.4.2
gfpgan==1.3.8
gradio==3.16.2
numpy==1.23.3
Pillow==9.4.0
realesrgan==0.3.0
torch
omegaconf==2.2.3
# pytorch_lightning==1.7.6
pytorch_lightning
scikit-image==0.19.2
fonts
font-roboto
timm==0.6.7
piexif==1.1.3
einops==0.4.1
jsonmerge==1.8.0
clean-fid==0.1.29
resize-right==0.0.2
torchdiffeq==0.2.3
kornia==0.6.7
lark==1.1.2
inflection==0.5.1
GitPython==3.1.27
torchsde==0.2.5
safetensors==0.2.7
# httpcore<=0.15
httpcore
fastapi==0.90.1
open_clip_torch
start.sh
#! /bin/bash
cd automatic1111-stable-diffusion-webui && python3 webui.py --listen --port=7860 --no-half --disable-nan-check

以上就是本次踩坑的记录。愿看到的小伙伴不迷路。

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

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

相关文章

【Linux报告】实训一:GNME桌面环境的设置及应用

实训一&#xff1a;GNME桌面环境的设置及应用 【练习1】在图形模式和文本模式下登录Linux系统。 1、开启Linux虚拟机。 答&#xff1a;打开此虚拟机如图所示 2、观察屏幕上显示的启动信息。 3、当系统启动到图形界面时&#xff0c;用普通用户身份登录。 答&#xff1a;如图…

【sql】CAST(GROUP_CONCAT())实现一对多对象json输出

数据库&#xff1a;mysql 5.7版本以上 问题&#xff1a;一对多数据&#xff0c;实现输出一条数据&#xff0c;并将多条数据转换成json对象输出&#xff0c;可以实现一对多个字段。 项目中关系较为复杂&#xff0c;以下简化数据关系如下&#xff1a; t1是数据表&#xff0c;t…

MySQL UNION

关于《MySQL UNION》的操作&#xff0c;我查找到了一些有用的信息。 MySQL的UNION操作符用于将两个或多个SELECT语句的结果组合到一个结果集中&#xff0c;并去除重复的行。每个SELECT语句的列数和对应位置的数据类型必须相同。其基本语法格式如下&#xff1a; SELECT column…

SQL 中的 EXISTS

我们先从 SQL 中最基础的 WHERE 子句开始。 比如下面这条 SQL 语句&#xff1a; 很显然&#xff0c;在执行这条 SQL 语句的时候&#xff0c;DBMS 会扫描 Student 表中的每一条记录&#xff0c;然后把符合 Sdept IS 这个条件的所有记录筛选出来&#xff0c;并放到结果集里面去…

《深度学习梯度消失问题:原因与解决之道》

在深度学习的训练过程中&#xff0c;梯度消失是一个常见且棘手的问题&#xff0c;它会严重影响模型的训练效果和性能。以下是对该问题的原因分析与解决办法。 梯度消失问题的原因 首先是激活函数选择不当。像Sigmoid和Tanh这类传统激活函数&#xff0c;在输入值较大或较小时&…

动态规划解决整数拆分问题

代码随想录链接:代码随想录 思路: (1).确定dp数组的含义: dp[i]:分拆数字i&#xff0c;可以得到的最大乘积为dp[i] (2).确定递推公式: dp[i]最大乘积是怎么得到: 其实可以从1遍历j&#xff0c;然后有两种渠道得到dp[i]. 一个是j * (i - j)直接相乘。 一个是j * dp[i - …

设计模式の状态策略责任链模式

文章目录 前言一、状态模式二、策略模式三、责任链模式 前言 本篇是关于设计模式中的状态模式、策略模式、以及责任链模式的学习笔记。 一、状态模式 状态模式是一种行为设计模式&#xff0c;核心思想在于&#xff0c;使某个对象在其内部状态改变时&#xff0c;改变该对象的行为…

无人机飞手培训机构大量新增,考取飞手证参军入伍还有优势吗?

尽管无人机飞手培训机构大量新增&#xff0c;考取飞手证参军入伍仍然具有显著优势。以下是对这一观点的详细阐述&#xff1a; 一、无人机飞手证在军队中的通用优势 1. 法规遵从与安全保障&#xff1a; 根据《民用无人驾驶航空器系统驾驶员管理暂行规定》等相关法规&#xff0…

STC单片机内部常见寄存器及其作用

STC单片机内部常见寄存器及其作用 STC单片机是基于8051架构的增强型单片机&#xff0c;广泛应用于嵌入式系统中。其内部有多个特殊功能寄存器&#xff08;SFR, Special Function Register&#xff09;&#xff0c;用于控制硬件模块&#xff08;如定时器、串口、中断等&#xf…

解决Spring3.4版本中使用QueryDSL中出现MongoAnnotationProcessor使用问题

spring boot更新到3.4版本后&#xff0c;Spring官方也是提供了AnnotationProcessor工具&#xff0c;可以不用使用maven-apt这个老旧的不行的依赖了。 但是按照官方教程会出现两个问题 1. maven找不到MongoAnnotationProcessor 如果你按照Spring Boot上的教程直接配置完成后&…

Helm 是什么

Helm 是什么&#xff1f; Helm 是 Kubernetes 的包管理工具&#xff0c;被称为 Kubernetes 的 “Yum” 或 “APT”。它用于简化 Kubernetes 应用的部署、管理和版本控制。通过 Helm&#xff0c;可以以一种声明式的方式定义和部署复杂的 Kubernetes 应用&#xff0c;同时便于升…

【Linux】:多线程(读写锁 自旋锁)

✨ 倘若南方知我意&#xff0c;莫将晚霞落黄昏 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#…

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(2):配置主数据库

Oracle Dataguard&#xff08;主库为 Oracle 11g 单节点&#xff09;配置详解&#xff08;2&#xff09;&#xff1a;配置主数据库 目录 Oracle Dataguard&#xff08;主库为 Oracle 11g 单节点&#xff09;配置详解&#xff08;2&#xff09;&#xff1a;配置主数据库一、配置…

C 实现植物大战僵尸(二)

C 实现植物大战僵尸&#xff08;二&#xff09; 前文链接&#xff0c;C 实现植物大战僵尸&#xff08;一&#xff09; 五 制作启动菜单 启动菜单函数 void startUI() {IMAGE imageBg, imgMenu1, imgMenu2;loadimage(&imageBg, "res/menu.png");loadimage(&am…

SpiderFlow平台v0.5.0之数据库连接

一、寻找lib目录安装方式 在 SpiderFlow 平台中&#xff0c;连接数据库时需要指定数据库的 DriverClassName&#xff0c;并确保正确配置数据库驱动。通常&#xff0c;驱动文件&#xff08;JAR 文件&#xff09;需要放置在指定的文件夹中&#xff0c;以便 SpiderFlow 可以找到并…

【人工智能机器学习基础篇】——深入详解监督学习之模型评估:掌握评估指标(准确率、精确率、召回率、F1分数等)和交叉验证技术

深入详解监督学习之模型评估 在监督学习中&#xff0c;模型评估是衡量模型性能的关键步骤。有效的模型评估不仅能帮助我们理解模型在训练数据上的表现&#xff0c;更重要的是评估其在未见数据上的泛化能力。本文将深入探讨监督学习中的模型评估方法&#xff0c;重点介绍评估指…

单周期CPU电路设计

1.实验目的 本实验旨在让学生通过设计一个简单的单周期 CPU 电路&#xff0c;深入理解 RISC-V 指令集的子集功能实现&#xff0c;掌握数字电路设计与实现的基本流程&#xff0c;包括指令解析、部件组合、电路设计以及功能仿真等环节&#xff0c;同时培养verilog HDL编程能力和…

【AIGC】 ChatGPT实战教程:如何高效撰写学术论文引言

&#x1f4a5; 欢迎来到我的博客&#xff01;很高兴能在这里与您相遇&#xff01; 首页&#xff1a;GPT-千鑫 – 热爱AI、热爱Python的天选打工人&#xff0c;活到老学到老&#xff01;&#xff01;&#xff01;导航 - 人工智能系列&#xff1a;包含 OpenAI API Key教程, 50个…

C语言中的强弱符号

文章目录 一、基本定义二、链接过程中的行为三、应用场景四、强弱符号示例1五、稍有难度示例2 在C语言中&#xff0c;强弱符号是与链接过程相关的重要概念&#xff0c;C中不存在强弱符号&#xff0c;以下是对它们的详细讲解&#xff1a; 一、基本定义 强符号 强符号通常是指在…

Spring中的IOC是什么,优缺点有哪些?

目录 IOC的核心概念 IOC的优点 IOC的缺点 使用场景说明 总结 IOC&#xff08;控制反转&#xff09;是一种设计思想&#xff0c;用于实现低耦合、高内聚的软件架构。它通过将对象的创建和依赖管理交给外部容器来实现&#xff0c;从而减少对象之间的直接依赖关系。 IOC的核…