一份保姆级的 Stable Diffusion 部署教程,开启你的炼丹之路

news2024/9/28 11:21:56

市面上有很多可以被用于AI绘画的应用,例如DALL-E、Midjourney、NovelAI等,他们的大部分都依托云端服务器运行,一部分还需要支付会员费用来购买更多出图的额度。

在2022年8月,一款叫做Stable Diffusion的应用,通过算法迭代将AI绘画的精细度提上了一个新的台阶,并能在以秒计数的时间内完成产出,还可以在一台有“民用级”显卡的电脑上运行。

图片

通过Stable Diffusion,可以绘制出各种风格的作品,比如动漫风、插画立绘、国风水墨、3D建模,甚至是照片级的拟真图像,而借助诸如LoRa、ControlNet等衍生功能,还可以做到精准控制美术风格、角色细节、姿势、动作、构图等。

更更重要的是,它是全面开源的,这意味着你可以在自己的电脑上部署整个程序,使用它出图、作画是完全免费而且不限量的!市面上大多数商业级的AI绘画应用,都是基于SD去开发的。

在经历了一系列的探索后,我总结出了一套零基础的、非常好上手的部署安装Stable Diffusion WebUI以及相关工具和插件的保姆级教程,请查收。

内容教程,共计1.2w字,梳理不易,喜欢点赞、收藏、关注。需要继续交流,可以加入我们

文章目录

    • 通俗易懂讲解大模型系列
    • 技术交流
    • 一、创建GPU主机实例
      • 1.1 创建GPU云主机
      • 1.2 创建安全组并绑定
    • 二、环境安装
      • 2.1 安装GPU驱动
      • 2.2 安装CUDA
      • 2.3 安装Python 3.10
      • 2.4 安装Anaconda
      • 2.5 安装PyTorch
    • 三、部署Stable Diffusion WebUI
      • 3.1 下载stable-diffusion-webui
      • 3.2 安装依赖
      • 3.3 启动stable-diffusion-webui
      • 3.4 使用stable-diffusions生成图片
    • 四、常用相关工具与插件
      • 4.1 安装LoRa插件Additional Networks
      • 4.2 安装ControlNet
      • 4.3 Jupyter Notebook
      • 4.4 模型训练工具Kohya\_ss
    • 五、总结

通俗易懂讲解大模型系列

  • 用通俗易懂的方式讲解:大模型 RAG 在 LangChain 中的应用实战

  • 用通俗易懂的方式讲解:一文讲清大模型 RAG 技术全流程

  • 用通俗易懂的方式讲解:如何提升大模型 Agent 的能力?

  • 用通俗易懂的方式讲解:使用 Mistral-7B 和 Langchain 搭建基于PDF文件的聊天机器人

  • 用通俗易懂的方式讲解:ChatGPT 开放的多模态的DALL-E 3功能,好玩到停不下来!

  • 用通俗易懂的方式讲解:结合检索和重排序模型,改善大模型 RAG 效果明显

  • 用通俗易懂的方式讲解:基于扩散模型(Diffusion),文生图 AnyText 的效果太棒了

  • 用通俗易懂的方式讲解:在 CPU 服务器上部署 ChatGLM3-6B 模型

  • 用通俗易懂的方式讲解:ChatGLM3-6B 功能原理解析

  • 用通俗易懂的方式讲解:使用 LangChain 和大模型生成海报文案

  • 用通俗易懂的方式讲解:一个强大的 LLM 微调工具 LLaMA Factory

  • 用通俗易懂的方式讲解:ChatGLM3-6B 部署指南

  • 用通俗易懂的方式讲解:LangChain Agent 原理解析

  • 用通俗易懂的方式讲解:HugggingFace 推理 API、推理端点和推理空间使用详解

  • 用通俗易懂的方式讲解:使用 LangChain 封装自定义的 LLM,太棒了

  • 用通俗易懂的方式讲解:使用 FastChat 部署 LLM 的体验太爽了

  • 用通俗易懂的方式讲解:基于 Langchain 和 ChatChat 部署本地知识库问答系统

  • 用通俗易懂的方式讲解:使用 Docker 部署大模型的训练环境

  • 用通俗易懂的方式讲解:在 Ubuntu 22 上安装 CUDA、Nvidia 显卡驱动、PyTorch等大模型基础环境

  • 用通俗易懂的方式讲解:Llama2 部署讲解及试用方式

  • 用通俗易懂的方式讲解:LangChain 知识库检索常见问题及解决方案

  • 用通俗易懂的方式讲解:基于 LangChain 和 ChatGLM2 打造自有知识库问答系统

  • 用通俗易懂的方式讲解:代码大模型盘点及优劣分析

  • 用通俗易懂的方式讲解:Prompt 提示词在开发中的使用

  • 用通俗易懂的方式讲解:万字长文带你入门大模型

技术交流

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

本文完整代码、相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:来自CSDN + 技术交流

在这里插入图片描述

一、创建GPU主机实例

1.1 创建GPU云主机

京东云GPU云主机的标准型的配置包含Tesla P40 24G显卡、12核48G,跑Stable Diffusion体验非常好,配置推荐如下:

图片

1.2 创建安全组并绑定

首先在左侧菜单【安全组】创建一个安全组,在【入站规则】和【出站规则】中分别添加并开放7860、7861、8080、8888端口。其中

图片

然后在实例详情中,点击【安全组】-【绑定安全组】绑定刚刚创建的安全组。

二、环境安装

2.1 安装GPU驱动

在英伟达官网根据显卡型号、操作系统、CUDA等查询驱动版本。官网查询链接https://www.nvidia.com/Download/index.aspx?lang=en-us

注意这里的CUDA版本,如未安装CUDA可以先选择一个版本,稍后再安装CUDA.

图片

点击Search

图片

如上图,查询到合适的版本为510. 然后可以使用apt安装对应驱动版本,使用apt安装更方便一些。

# 安装510版本驱动
apt install nvidia-driver-510
# 查看驱动信息
nvidia-smi

如安装成功,则可以展示如下提示信息。

图片

2.2 安装CUDA

访问英伟达开发者网站先选择CUDA版本(版本要对应2.1中GPU驱动支持的CUDA版本),

再根据操作系统选择对应CUDA安装命令,访问链接https://developer.nvidia.com/cuda-toolkit-archive

图片

如上面安装确定所选择驱动对应的CUDA版本为11.6,根据安装命令安装, 以下命令适用Ubuntu 20.04 x86_64, GPU驱动510版本

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-6-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

2.3 安装Python 3.10

Stable Diffusion WebUI目前最低支持Python 3.10,所以直接安装3.10版本,安装命令:

  apt install software-properties-common
  add-apt-repository ppa:deadsnakes/ppa
  apt update
  apt install python3.10
  python3.10 --verison

PIP设置国内源,由于默认源在国外,所以安装可能经常会出现timeout等问题,使用国内源可以很大程度避免下载包timeout的情况。将如下内容复制到文件~/.pip/pip.conf当中,如没有该文件,先创建touch ~/.pip/pip.conf。

  [global] 
  index-url = https://pypi.tuna.tsinghua.edu.cn/simple
  [install]
  trusted-host = https://pypi.tuna.tsinghua.edu.cn

2.4 安装Anaconda

非常推荐使用Anaconda。Anaconda可以便捷获取包且对包能够进行管理,同时对Python环境可以统一管理的发行版本。安装命令也很简单:

  wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
  bash ./Anaconda3-2023.03-1-Linux-x86_64.sh

创建Python3.10.9环境,并使用该环境

conda create -n python3.10.9 python==3.10.9
conda activate python3.10.9

2.5 安装PyTorch


首先在PyTorch官网查询对应CUDA版本的Torch,如上述章节2.2中CUDA 11.6需要安装pytorch1.13.1

# 使用conda安装,两种安装方式二选一
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia

# 使用pip安装,两种安装方式二选一
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116

三、部署Stable Diffusion WebUI

3.1 下载stable-diffusion-webui

注意首先激活Python3.10环境:

conda activate python3.10.9

然后下载stable-diffusion-webui

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

3.2 安装依赖

cd到stable-diffusion-webui目录安装相应的依赖,如有访问网络超时、失败等,注意按照章节2.3中设置国内源,如果再次失败,重试几次一般都可完成安装。

cd stable-diffusion-webui
pip install -r requirements_versions.txt
pip install -r requirements.txt

3.3 启动stable-diffusion-webui

安装完成后,执行如下启动命令:

python launch.py --listen --enable-insecure-extension-access

这一步骤会下载一些常用模型,如果遇到下载失败,根据报错提示在huggingface.co下载模型放到对应目录,如下载stable-diffusion-v1-5模型,搜索找到https://huggingface.co/runwayml/stable-diffusion-v1-5/tree/main

图片

点击图中下载按钮,下载v1-5-pruned-emaonly.safetensors到stable-diffusion-webui/models/Stable-diffusion目录,其他模型同理。

模型下载完成,再次执行启动命令,提示已启动到7860端口,则可以通过IP+7860端口访问:

图片

公网建议设置访问密码,注意替换下面命令当中的username:password为用户名、密码。

python launch.py --listen --enable-insecure-extension-access --gradio-auth username:password

3.4 使用stable-diffusions生成图片

下载一个模型到/stable-diffusion-webui/models/Stable-diffusion目录,模型可以在https://civitai.com/查找,如下图所用majicMIX realistic模型。下载完成后点击左上角刷新按钮,然后选择刚下载的模型,输入Promot和参数即可生成图片。

图片

附上图所用Promot和参数

Prompt

1 girl a 24 y o woman, blonde, dark theme, soothing tones, muted colors, high contrast, look at at viewer, contrasty , vibrant , intense, stunning, captured in the late afternoon sunlight, using a Canon EOS R6 and a 16-35mm to capture every detail and angle, with emphasis on the lighting and shadows, late afternoon sunlight, 8K
Negative prompt
(deformed, distorted, disfigured, doll:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, 3d, illustration, cartoon, flat , dull , soft, (deformed, distorted, disfigured:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs,

其他参数
图片

四、常用相关工具与插件

4.1 安装LoRa插件Additional Networks

使用Lora必不可少的插件,Additional Networks可以用来控制checkpoint+LoRa或者多个LoRa模型生成混合风格的图像,并且可以设置Lora模型的Weight。安装方式如下:

打开stable-diffusion-webui,点击【Extensions】- 【Install from URL】输入https://ghproxy.com/https://github.com/kohya-ss/sd-webui-additional-networks.git

然后点击【Install】等待安装,直到在【Installed】中显示,然后直接用命令重启stable-diffusion-webui(不是reload webui),强烈推荐所有插件安装完成都命令重启stable-diffusion-webui,可以免去很多麻烦。

最后点击【Setting】-【Additional Networks】输入LoRa文件夹的绝对路径,如/root/stable-diffusion-webui/models/Lora(示例,请填写你的系统路径),然后【Reload UI】等待重启完成。

图片

然后可以在【txt2img】或【img2img】中选择Lora模型并设置权重使用。

图片

4.2 安装ControlNet

作为Stable Diffusion必装插件,ControlNet 允许用户对生成的图像进行精细的控制,以获得更好的视觉效果,ControlNet让AI绘画的可控性有了质的突变,让AGIC真正的可以投入生产使用。

打开stable-diffusion-webui,点击【Extensions】- 【Install from URL】输入https://ghproxy.com/https://github.com/Mikubill/sd-webui-controlnet.git

然后点击【Install】等待安装,直到在【Installed】中显示,然后直接用命令重启stable-diffusion-webui(不是reload webui)。

由于controlNet会使用很多模型,所以在重启的时候会默认下载,如果下载失败或超时,需要手动下载到controlnet目录。

访问huggingface.co找到controlnet的地址:https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

图片

手动下载上面模型文件到stable-diffusion-webui/extensions/sd-webui-controlnet/models目录,查看已下载controlnet模型:

图片

下载完成,重启stable-diffusion-webui即可在【txt2img】或【img2img】使用。

图片

4.3 Jupyter Notebook

Jupyter Notebook是一个基于网页的交互环境,可以用来编辑、运行Python代码,可视化看到运行结果。同时提供了基础的文件树操作功能等。
如已在章节2.4中安装了Anaconda,直接使用以下命令运行notebook

jupyter notebook --allow-root --NotebookApp.token='设置你的token'

访问IP+8888端口,可以开始使用notebook

图片

4.4 模型训练工具Kohya_ss

Kohya_ss是公认推荐训练Stable Diffusion模型的可视化工具,尤其在windows平台支持比较好,经过尝试在linux直接使用会遇到各种环境原因的问题,为了避免这些问题,十分推荐使用docker安装。

先按照docker官方文档安装好docker,Ubuntu安装docker文档:https://docs.docker.com/engine/install/ubuntu/

由于在docker容器中需要使用GPU资源,所以还需要先安装NVIDIA Container Toolkit

sudo apt-get update \
    && sudo apt-get install -y nvidia-container-toolkit-base

# 查看是否安装成功
nvidia-ctk --version

然后下载kohya_ss:

git clone https://github.com/bmaltais/kohya_ss.git

如下图,修改kohya_ss/docker-compose.yaml文件端口为0.0.0.0:7861:7860(将kohya_ss的7860端口映射到宿主机的7861端口,因为7860会被Stable Diffusion WebUI占用),

启动参数设置为"–username xxxx --password xxxx --headless",注意替换xxxx为需要设置的账号密码

图片

然后执行

docker compose build # 首次执行需要build

docker compose run --service-ports kohya-ss-gui

过程中会从huggingface.co下载模型文件,如果下载失败,可以尝试手动下载到目录kohya_ss/.cache/user/huggingface/hub/models–openai–clip-vit-large-patch14/snapshots/8d052a0f05efbaefbc9e8786ba291cfdf93e5bff,最后的hash值注意改成对应的版本。

下载地址https://huggingface.co/openai/clip-vit-large-patch14/tree/main,注意下载全部文件

图片

下载完成,然后访问端口+7861端口,可以开始使用Kohya_ss训练模型了。

图片

五、总结

安装完Stable Diffusion及上面的推荐插件,你的Stable Diffuion已经具备强大的生产力。后续我会继续同大家一起探索和分享更多的使用经验,敬请期待系列文章下一集。

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

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

相关文章

GPT-4V的图片识别和分析能力原创

GPT-4V是OpenAI开发的大型语言模型,是GPT-4的升级版本。GPT-4V在以下几个方面进行了改进: 模型规模更大:GPT-4V的参数量达到了1.37T,是GPT-4的10倍。 训练数据更丰富:GPT-4V的训练数据包括了1.56T的文本和代码数据。 …

伴鱼实时数仓建设案例

伴鱼实时数仓建设案例 文章目录 伴鱼实时数仓建设案例伴鱼实时作业应用场景伴鱼实时数仓的建设体系DWD 层复杂场景数据处理方案1. 数据的去重2. join场景两条实时数据流相关联对于关联历史数据 3. 从数据形态观查join DWS 数据层数据处理方案未来与展望 随着伴鱼业务的快速发展…

openAI API key不需要中转,自己就可以使用正版

很多小伙伴因为不知道怎么使用原版,用的都是国内套壳的,国内套壳的有些价格不合适,如何是3.5的话只需要绑定虚拟信用卡就可以使用 想使用openai API key4.0的话你需要先开通ChatGPTplus,在绑定openai API key,绑定ope…

磁盘直通卡/阵列卡讲解

服务器SAS卡 ① 华为SR120 (LSI 2308 6Gb SAS直通卡),适合数据安全等级不高或 更换简单 硬盘即插即用 ② 华为SR320 (LSI 2208 6Gb SAS阵列卡 带512M缓存),适合对数据安全等级要求高或追求磁盘性能的客户 推荐上阵列卡 ③ 华为SR130 (LSI 3008 12Gb SAS直通卡),适合数据安全等…

APM链路监控: Linux 部署 pinpoint

目录 一、实验 1.环境 2. 准备 3.HBase单机部署 4.pinpoint部署 二、问题 1.pinpoint有哪些功能 2.pinpoint架构是如何组成的 3.Linux中自带的jdk 如何设置JAVA_HOME 4. hbase启动报错 5.hbase的master启动失败 6.JPS命令如何安装和使用 一、实验 1.环境 &#x…

大一统的监控探针采集器 cprobe

需求背景 监控数据采集领域,比如 Prometheus 生态有非常多的 Exporter,虽然生态繁荣,但是无法达到开箱即用的大一统体验,Exporter 体系的核心问题有: 良莠不齐:有的 Exporter 写的非常棒,有的…

爬虫—响应页面乱码问题解决方法

爬虫—响应页面乱码问题解决方法 案例:腾牛网图片抓取 源代码如下: import requestsurl https://www.qqtn.com/wm/meinvtp_1.html headers {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) …

七麦数据js逆向(补环境版)

本文目标地址如下,使用base64解码获得 aHR0cHM6Ly93d3cucWltYWkuY24vcmFuay9tYXJrZXRSYW5rL21hcmtldC82L2NhdGVnb3J5LzUvY29sbGVjdGlvbi9hbGwvZGF0ZS8yMDI0LTAxLTEy 本文逆向破解分为扣代码版和补环境版,扣代码版请看专栏另一篇文章 废话不多说了&#…

SAP OData(三)Query Option

Query option是指客户端在获取EntitySet的URL中后缀的一些指令,在第一篇第四小节我们已经见识了一部分Query指令。在下面表中列出了最重要的QueryOption。注意指令在URL中必须小写。 Operation Query Option Filtering and projecting $filter and $select Sort…

ubuntu 22 搭建git服务

第一步,安装git: sudo apt-get install git 创建用户信息 git config --global user.name soft 第二步,创建一个git用户,用来运行git服务: sudo adduser git 创建git仓库的存储目录、更改文件目录属主为代码仓库…

6. 逻辑删除

逻辑删除对应的是物理删除,分别介绍一下这两个概念: 物理删除 :指的是真正的删除,即:当执行删除操作时,将数据表中的数据进行删除,之后将无法再查询到该数据逻辑删除 :并不是真正意…

TensorRT模型优化模型部署(七)--Quantization量化(PTQ and QAT)(二)

系列文章目录 第一章 TensorRT优化部署(一)–TensorRT和ONNX基础 第二章 TensorRT优化部署(二)–剖析ONNX架构 第三章 TensorRT优化部署(三)–ONNX注册算子 第四章 TensorRT模型优化部署(四&am…

JVM基础(12)——G1调优

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

解释程序基本原理

解释程序基本原理 1、解释程序的基本结构2、高级语言编译与解释方式的比较 语言处理程序是一类系统软件的总称,其主要作用是将高级语言或汇编语言编写的程序翻译成某种机器语言程序,使程序可在计算机上运行。语言处理程序主要分为汇编程序、编译程序和解…

【详解】结构体的内存对齐(每步配图)

目录 引言: 为什么存在结构体内存对齐? 结构体内存对齐规则: 练习一: 测试代码: 结果如下: 第二个练习:结构体的嵌套问题 测试代码: 代码结果如下: 两个关于结构体的易错…

thinkphp递归实现无限级子分类合并上级children

//设别分类列表public function getCategoryList(){$list = Db::name(categorys)->select(

在vue中实现树形结构的表格,以及对数据结构的处理

需求:有一些告警数据,如果他们的计划编码相同则实现折叠效果,单击某行数据可以进行关闭,状态发生改变,关闭以后按钮禁用。 实现效果:目前所有告警消息都被关闭,如果未被关闭则可以进行关闭 实现…

leetcode 2645. 构造有效字符串的最少插入数-python

题目: 给你一个字符串 word ,你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次,返回使 word 有效 需要插入的最少字母数。 如果字符串可以由 “abc” 串联多次得到,则认为该字符串 有效 。 解题方法 1.先判断字符串是否…

李沐之神经网络基础

目录 1.模型构造 1.1层和块 1.2自定义块 1.3顺序块 1.4在前向传播函数中执行代码 2.参数管理 2.1参数访问 2.2参数初始化 3.自定义层 3.1不带参数的层 3.2带参数的层 4.读写文件 4.1加载和保存张量 4.2加载和保存模型参数 1.模型构造 1.1层和块 import torch fr…

一种具有轨迹优化的无人驾驶车实时运动规划器 论文阅读

论文题目:A Real-Time Motion Planner with Trajectory Optimization for Autonomous Vehicles Abstract 本文的实时规划器首先将空间离散化,然后基于一组成本函数搜索出最佳轨迹。迭代优化所得到的轨迹的Path和Speed。post-optimization计算复杂度低&…