国内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.txt 和 requirements.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
以上就是本次踩坑的记录。愿看到的小伙伴不迷路。
相关文章:
国内Ubuntu环境Docker部署Stable Diffusion入坑记录
国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题,以及解决方案,原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览: …...
现代光学基础6
总结自老师的ppt yt6 半导体激光器开卷考试学习资料 目录 半导体激光器边发射半导体激光器垂直腔面发射激光器(VCSEL)激光产生条件(激光原理)半导体激光器的水容器模型有源半导体区域类型和载流子注入发光二极管(L…...
解决HBuilderX报错:未安装内置终端插件,是否下载?或使用外部命令行打开。
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 错误描述 在HBuilderX中执行npm run build总是提醒下载插件;图示如下: 但是,下载总是失败。运行项目时候依然弹出上述提醒。 解决方案 …...
基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】
目 录 1、绪论 1.1背景以及现状 1.2 Java语言的特点 1.3 系统运行环境及开发软件: 1.4 可行性的分析 1.4.1 技术可行性 1.4.2 经济可行性 1.4.3 操作可行性 2、 需求分析 2.1 用户需求分析 2.2功能需求分析 2.3界面设计需求分析…...
Spring Boot项目中使用单一动态SQL方法可能带来的问题
1. 查询计划缓存的影响 深入分析 数据库系统通常会对常量SQL语句进行编译并缓存其执行计划以提高性能。对于动态生成的SQL语句,由于每次构建的SQL字符串可能不同,这会导致查询计划无法被有效利用,从而需要重新解析、优化和编译,…...
conan从sourceforge.net下载软件失败
从sourceforge.net下载软件,经常会没有开始下载就返回了。 原因是: 自动选择的镜像站不能打开。 在浏览器中,我们可以手动选择站点尝试,但是conan就不行了。 手动选择一个站点,能够有文件保存窗口弹出,之后…...
通过爬虫方式实现视频号助手发布视频
1、将真实的cookie贴到解压后目录中cookie.txt文件里,修改python代码里的user_agent和video_path, cover_path等变量的值,最后运行python脚本即可; 2、运行之前根据import提示安装一些常见依赖,比如requests等; 3、2025年1月份最新版; 代码如下: import json import…...
springboot525基于MVC框架自习室管理和预约系统设计与实现(论文+源码)_kaic
摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装自习室管理和预约系统软件来发挥其高效地信息处理的作用&am…...
“大数据+职业本科”:VR虚拟仿真实训室的发展前景
在新时代背景下,随着科技的飞速进步和产业结构的不断升级,职业教育正迎来前所未有的变革。“大数据职业本科”的新型教育模式,结合VR(虚拟现实)技术的广泛应用,为实训教学开辟了崭新的道路,尤其…...
Python 数据可视化的完整指南
目录 一、为什么选择 Python 进行数据可视化? 二、常用 Python 可视化库及其特点 三、常用图表类型及其代码示例 折线图:用于展示数据随时间或其他连续变量的变化趋势。 柱状图:用于比较不同类别的数据大小。 散点图:用于展示两个变量之间的关系,并发现数据中的模式…...
滑动窗口。
1456 定长子串中元音的最大数目 采用滑动窗口。每次移动一个位置,判断当前窗口内的子串内目标元素的个数,若比之前更大就更新结果。 如何判断是否更新结果?也即,如何判断当前窗口内所含目标元素个数,是否为遍历到这个…...
【Python运维】用Python和Ansible实现高效的自动化服务器配置管理
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着云计算和大规模数据中心的兴起,自动化配置管理已经成为现代IT运维中不可或缺的一部分。通过自动化,企业可以大幅提高效率,降低人为错…...
Chapter4.2:Normalizing activations with layer normalization
文章目录 4 Implementing a GPT model from Scratch To Generate Text4.2 Normalizing activations with layer normalization 4 Implementing a GPT model from Scratch To Generate Text 4.2 Normalizing activations with layer normalization 通过层归一化(La…...
EA工具学习使用笔记 ———— 插入图片或UI
文章目录 介绍导入使用方法一方法二方法3介绍 在使用EA的过程中,我们可以EA的图像管理器自定义图像,从而创建有吸引力的图表。也可以通过图像管理器快速扩展可用图像的范围。方法是导入一个捆绑的基于uml的图像剪辑艺术集合作为图像库文件。EA的图像库下载链接为: 导入 Doc…...
[2474].第04节:Activiti官方画流程图方式
我的后端学习大纲 Activiti大纲 1.安装位置: 2.启动:...
JVM和异常
Java 虚拟机(Java Virtual Machine,简称 JVM) 概述 JVM 是运行 Java 字节码的虚拟计算机,它是 Java 程序能够实现 “一次编写,到处运行(Write Once, Run Anywhere)” 特性的关键所在。Java 程…...
Harmony OS开发-ArkUI框架速成四
程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前! 1.图标库 1.1 图标库概述 HarmonyOS 图标库为 HarmonyOS 开发者提供丰富的在线图…...
卡码网 ACM答题编程模板
背景: input() 在 ACM 编程中的底层调用原理 1. input() 的核心原理 在 Python 中,input() 的底层实现依赖于标准输入流 sys.stdin。每次调用 input() 时,Python 会从 sys.stdin 中读取一行字符串,直到遇到换行符 \n 或文件结束…...
逆向入门(6)汇编篇-外挂初体验
代码分析部分 游戏里面还是体验了不少自己CV来的外挂的,自己编写的程序还是头一次体验,程序源码如下 void startAcctack() {printf("开始攻击\n");// 获取当前系统时间time_t now time(0); // 获取当前时间的时间戳struct tm *local_time …...
Vulnhub靶场(Earth)
项目地址 https://download.vulnhub.com/theplanets/Earth.ova.torrent 搭建靶机 官网下载.ova文件双击vm打开导入 获取靶机IP kail终端输入 arp-scan -l 获取靶机 IP 192.168.131.184 信息收集 端口扫描 sudo nmap -sC -sV -p- 192.168.131.184 可以看到开启22端口&…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor
1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
