Stable Diffusion云服务器部署完整版教程

Stable Diffusion云服务器部署完整版教程

2023年07月04日 22:30 3607浏览 · 18喜欢 · 22评论

  <span class="bili-avatar-icon bili-avatar-right-icon  "></span>
</div>

薯片_AI
粉丝: 1513 文章: 1

  • 设置分组
  • 取消关注
    已关注

文本旨在将stable diffusion部署在云服务器上,利用云服务器的优势让我们更好的体验AI绘图。本文的教程是作者一步步实践所总结出来的,完整的按照作者的步骤执行,是可以在云服务器上部署一个较为完整的sd。本教程中包括了很多配置和换源是其他教程所没有的,相对其他sd安装教程更为完整。

提醒:本文是stable diffusion部署在云服务器的教程,当然你也可以拿来部署在本地电脑上,但是没有必要,本地部署可以使用秋叶大神的一件安装包,方便又快捷。

一、SD的基础环境和安装

AV6hxhhLecygpjnle">(一)购买服务器

我使用的是腾讯云GPU服务器,腾讯云服务器经常做活动,可以趁折扣的时候进行购买,这是我此次服务器的基本信息,我选用的是GN7 8核32GB,N卡,操作系统选择Ubuntu Server。

ubuntu server配置

购买后在后台实例中可看到该服务器

腾讯云后台

点击「登录」即可进入服务器,首次进入会自动安装驱动,等待几分钟即可。

进入服务器

(二)配置运行环境

利用anaconda是它集成了很多我们需要的安装包,只要安装它一个,python下载、环境配置那些都不用我们再去设置,使用起来比较方便。

1、配置Anaconda

1、下载anaconda

python 复制代码
`wget https`://`mirrors`.`tuna`.`tsinghua`.`edu`.`cn`/`anaconda`/`archive`/`Anaconda3`-2023.03-0-`Linux`-`x86_64`.`sh`

若遇到这种不能下载的,前面加上 -U NoSuchBrowser/1.0

python 复制代码
`wget `-`U NoSuchBrowser`/1.0` https`://`mirrors`.`tuna`.`tsinghua`.`edu`.`cn`/`anaconda`/`archive`/`Anaconda3`-2023.03-0-`Linux`-`x86_64`.`sh`

2.安装anaconda,提示enter按回车,提示yes or no的地方全部输入yes即可。vscode不安装

python 复制代码
`bash Anaconda3`-2023.03-0-`Linux`-`x86_64`.`sh`

3.找到.bashrc这个文件并修改,修改文件有两种方式:

①通过vim修改。

python 复制代码
#用vim打开.bashrc文件
`
vim `~/.`bashrc`

#再按i开始insert,将以下内容添加到文件最后一行

export PATH=$PATH:/home/ubuntu/anaconda3/bin

#按Esc并输入:wq即为保存退出文件再保存退出
:wq

②也可以通过编辑器修改,找到.bashrc文件直接输入内容即算保存

4.如果输入conda,提示找不到命令的话执行下source,(执行一次即可,以后都不用再 source 了,启动 Ubuntu会自动source)

python 复制代码
`source `~/.`bashrc`

然后验证下

python 复制代码
`conda info`

至此anaconda已经安装完毕

2、安装pytorch

1.去pytorch官网配置自己服务器所需要的pytorch

Pytorch build选择stable稳定版,操作系统是linux,由于上面我安装了anaconda所以package选择conda,语言python,我的CUDA是12.0所以选择了CUDA11.8,最后获取comand

pytorch官网

2、pytorch需要安装到anaconda的虚拟环境中,所以使用conda时需要先有一个虚拟环境并进入

python 复制代码
#若还没有虚拟环境需要创建一个,<env_name>是环境名称,python选择指定的版本,sd需要的python>3.10 #conda create -n <env_name> python=x.xx.x
`
conda create `-`n sd python`=3.10.11`
`

#启动虚拟环境,activate就是启动,sd是环境名称

conda activate sd

然后再执行pytorch的安装

python 复制代码
`conda install pytorch torchvision torchaudio pytorch`-`cuda`=11.8` `-`c pytorch `-`c nvidia`

如果出现提示需要升级conda版本的就输入,没有的话就跳过这步。我这里没截到图,会有个wanning的,注意看

python 复制代码
`conda update `-`n base `-`c defaults conda`

验证安装结果

python 复制代码
#首先要启动我们的sd虚拟环境,因为我们所有与stable diffusion有关的配置环境都是建立在这个虚拟环境之下的python,pytorch等都是如此
`
`#进入虚拟环境
`
conda activate sd
`

#进入python环境

python

#导入torch
import torch

#查看torch的版本

torch.version #各有两条下划线

#查看cuda版本

torch.version.cuda

#查看GPU是否运行

torch.cuda.is_available()

#退出

exit()

(三)安装sd-webui

1、启动sd

1.将sd webui clone到服务器上,此处我用了镜像。

python 复制代码
`git clone https`://`github`.`moeyy`.`xyz`/`https`://`github`.`com`/`AUTOMATIC1111`/`stable`-`diffusion`-`webui`.`git`

2.链接换源。打开stable-diffusion-webui/modules/launch.until.py文件,替换以下内容

python 复制代码
`torch_command `=` os`.`environ`.`get`('TORCH_COMMAND',` `"pip install torch2.0.1 torchvision0.15.2")

3.每个https://github.com/ (就在上一步的下面几行,每一个网址都要改)链接前面添加https://ghproxy.com/,替换为以下内容

python 复制代码
`gfpgan_package `=` os`.`environ`.`get`('GFPGAN_PACKAGE',` `"https://ghproxy.com/https://github.com/TencentARC/GFPGAN/archive/8d2447a2d918f8eba5a4a01463fd48e45126a379.zip")
`
clip_package `=` os`.`environ`.`get`('CLIP_PACKAGE',` `"https://ghproxy.com/https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip")
`
openclip_package `=` os`.`environ`.`get`('OPENCLIP_PACKAGE',` `"https://ghproxy.com/https://github.com/mlfoundations/open_clip/archive/bb6e834e9c70d9c27d0dc3ecedeebeaeb1ffad6b.zip")
`
stable_diffusion_repo `=` os`.`environ`.`get`('STABLE_DIFFUSION_REPO',` `"https://ghproxy.com/https://github.com/Stability-AI/stablediffusion.git")
`
taming_transformers_repo `=` os`.`environ`.`get`('TAMING_TRANSFORMERS_REPO',` `"https://ghproxy.com/https://github.com/CompVis/taming-transformers.git")
`
k_diffusion_repo `=` os`.`environ`.`get`('K_DIFFUSION_REPO',` `'https://ghproxy.com/https://github.com/crowsonkb/k-diffusion.git')
`
codeformer_repo `=` os`.`environ`.`get`('CODEFORMER_REPO',` `'https://ghproxy.com/https://github.com/sczhou/CodeFormer.git')
`
blip_repo `=` os`.`environ`.`get`('BLIP_REPO',` `'https://ghproxy.com/https://github.com/salesforce/BLIP.git')

4.先进入虚拟环境

python 复制代码
#启动虚拟环境,因为刚刚上面我们已经创建过虚拟环境了
`
conda activate sd`

5.先定位到的stable-diffusion-webui项目下

python 复制代码
`cd stable`-`diffusion`-`webui`

6.第一次启动sd,sd会安装基础的配置,这里等待一段时间,网速慢的个把小时,所需要的内容才会下载完毕。

python 复制代码
#以下两者都是启动公网环境,二选一执行即可。
`
`./`webui`.`sh `--`listen `#(推荐)`
`

#或者加--share也可以
./webui.sh --share

#listen与share的区别在于listen启动的地址是0.0.0.0:7860,而share启动后是一个随机的地址。

7.第一次执行会自动下载"v1-5-pruned-emaonly.safetensors"这个模型,如果下载速度还行就耐心等待,如果网络慢的同学,可以先"ctrl+C"断开下载步骤,然后到C站随便下个大模型上传上去。

2、打开webui

后续我们启动stable diffusion时分为3个步骤:

#启动虚拟环境 conda activate sd #定位到sd根目录 cd stable-diffusion-webui #加listen是启动公网环境 ./webui.sh --listen

python 复制代码
#启动虚拟环境
`
conda activate sd
`

#定位到sd根目录

cd stable-diffusion-webui

#加listen是启动公网环境
./webui.sh --listen

然后等待有出现http:/0.0.0.0:7860就说明已启动成功。浏览器访问http://x.x.x.x(云主机公网ip):7860,出现stable diffusion内容即为成功。

webui界面

(四)小结

虽然webui已经启动,但是我们可以看到页面下边的配置

  • version:当前webui的版本,我在写这份文档时最新版本就是1.4,当你们看到这份文档的时候注意使用最新版本的。

  • python:版本是3.10.11,这个版本会比较合适,既能用xformers,刚刚安装又不会报错,我试过3.10.12、3.11这些版本,会出现安装不上,至于原因我没去深入研究,你们想要用最新版本的话就研究下怎么配置。

  • torch:2.0.1+cu117,sd会用到的神经网络和cuda版本,这里我cuda只有117,但是上面我安装的cuda是11.8。我不知道为什么会降一个版本,有大佬懂得话可以评论区解答下。

  • xformers:N/A,等会会安装这个,能提升出图速度。

  • gradio:这个是AI的界面,可以不用管。

  • checkpoint:这个是大模型,我们还没下载,后面步骤会下载。

二、webui-user.sh文件配置

通过我自己部署整个sd后,认为修改webui.user.sh文件,去先行配置一些参数,可以减少我们后续启动时输入的内容,以及减少后续的一些麻烦。这是其他教程所没有的,大家有必要可以参考下。

1.打开sd根目录下的webui-user.sh文件,将export commandline_args前面的#去掉,并且加上后面内容。

python 复制代码
#!/bin/bash
`
`#########################################################
`
`# Uncomment and change the variables below to your need:# #########################################################
`
`# Install directory without trailing slash #install_dir="/home/$(whoami)"
`
`# Name of the subdirectory #clone_dir="stable-diffusion-webui"
`
`# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
`
export COMMANDLINE_ARGS`="--theme dark --xformers --enable-insecure-extension-access --listen"
`
`# python3 executable
`
`#python_cmd="python3"
`
`# git executable
`
`#export GIT="git"
`
`# python3 venv without trailing slash (defaults to  i n s t a l l d i r / {install_dir}/ installd​ir/{clone_dir}/venv) #venv_dir="venv"
`
`# script to launch to start the app
`
`#export LAUNCH_SCRIPT="launch.py"
`
`# install command for torch #export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113"
`
`# Requirements file to use for stable-diffusion-webui #export REQS_FILE="requirements_versions.txt"
`
`# Fixed git repos
`
`#export K_DIFFUSION_PACKAGE=""
`
`#export GFPGAN_PACKAGE=""
`
`# Fixed git commits #export STABLE_DIFFUSION_COMMIT_HASH=""
`
`#export CODEFORMER_COMMIT_HASH=""
`
`#export BLIP_COMMIT_HASH=""
`
`# Uncomment to enable accelerated launch
`
`#export ACCELERATE="True"
`
`# Uncomment to disable TCMalloc #export NO_TCMALLOC="True" ###########################################
  • --theme dark。让webui变为暗色模式。有需要就加,没需要就不用加。

  • --xformers。Xformers库可以加速图像的生成。

  • --enable-insecure-extension-access。在我们用--listen启动时,会成为公网环境,在公网环境下,系统会阻止extension(扩展)的使用,以避免风险因素。所以我们如果只是自己使用的话,完全可以通过这个绕开安全检查,这样我们在启用公网环境时可以继续使用extension(扩展)功能。

  • --listen。启用公网环境。(--listen要在最后一个)。

配置完后我们在启动sd时,便不用再输入--listen

python 复制代码
#启动虚拟环境
`
conda activate sd
`

#定位到sd根目录

cd stable-diffusion-webui

#加listen是启动公网环境
./webui.sh

最后我们启动起来的webui就是这样。

三、extensions换源

automatic1111大佬自带的extensions源我们国内无法直接访问,所以我们需要替换成境内的源,方便于我们后续使用扩展。这里我使用秋叶大佬的源地址。

找到sd/modules/ui_extensions.py文件的这段。

python 复制代码
with` gr`.`TabItem`("Available",` `id="available"):
`
`with` gr`.`Row`():
`
refresh_available_extensions_button `=` gr`.`Button`(`value`="Load from:",` variant`="primary")
`
available_extensions_index `=` gr`.`Text`(`value`="https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json",` label`="Extension index URL").`style`(`container`=False)
`
extension_to_install `=` gr`.`Text`(`elem_id`="extension_to_install",` visible`=False)
`
install_extension_button `=` gr`.`Button`(`elem_id`="install_extension_button",` visible`=False)

将其中的地址这段替换为https://gitee.com/akegarasu/sd-webui-extensions/raw/master/index.json

python 复制代码
with` gr`.`TabItem`("Available",` `id="available"):
`
`with` gr`.`Row`():
`
refresh_available_extensions_button `=` gr`.`Button`(`value`="Load from:",` variant`="primary")
`
available_extensions_index `=` gr`.`Text`(`value`="https://gitee.com/akegarasu/sd-webui-extensions/raw/master/index.json",` label`="Extension index URL").`style`(`container`=False)
`
extension_to_install `=` gr`.`Text`(`elem_id`="extension_to_install",` visible`=False)
`
install_extension_button `=` gr`.`Button`(`elem_id`="install_extension_button",` visible`=False)

这样我们就可以秒加载扩展

四、CheckPoint的下载

(一)下载至本地再上传至服务器

  1. 从模型网站上下载checkpoint的模型到本地后

  2. 再打开服务器的编辑

  1. 打开model下的sd路径:stable-diffusion-webui/models/Stable-diffusion,并右键点击上传

上传至服务器后刷新webui就可以看到该模型了

(二)直接下载至服务器

1.获取下载路径,如:

python 复制代码
`https`://`huggingface`.`co`/`runwayml`/`stable`-`diffusion`-`v1`-5/`resolve`/`main`/`v1`-5-`pruned`-`emaonly`.`ckpt`

2.cd到stable-diffusion-webui/models/Stable-diffusion目录下,用wget指令下载

python 复制代码
#wget指令下载
`
wget https`://`huggingface`.`co`/`runwayml`/`stable`-`diffusion`-`v1`-5/`resolve`/`main`/`v1`-5-`pruned`-`emaonly`.`ckpt
`

#若出现Unable estalish SSL connent,SSL无法连接的情况,加上该指令

wget --no-check-certificate https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt

#如果wget版本过旧,更新wget

apt-get install wget -y

#以上是通过apt升级wget,如果没有apt,则需要先安装apt管理工具包

sudo apt-get install

五、LoRA的下载与安装

每个lora都附带一张图片,这张图片的名称与模型名称相同,一并上传到服务器中的lora文件夹下,在webui中就会显示该模型和预览图。当然你也可以后面安装C站助手,通过C站助手下载预览图。

六、VAE的下载与安装

1.VAE的模型全部放在这个文件夹下。模型继续使用上面提到的上传方法(这里我用本地部署的举例,服务器配置的时候要找到服务器中的path)

2.VAE模块默认是没有出来的,需要到「Settings --- User interface --- Quicksettings list」中添加VAE模块

3.再保存、重启UI即可。

七、ControlNet的下载与安装

(一)直接安装

若是境外服务器可以直接在sd上安装

https://github.com/lllyasviel/ControlNet

python 复制代码
`https`://`github`.`com`/`lllyasviel`/`ControlNet`

(二)压缩包安装

1.我的是境内服务器,所以无法直接从github上下载,所以直接下载压缩包

然后将压缩包上传至服务器/stable diffusion/extensions目录下

2.定位到extensions目录下

python 复制代码
`cd stable`-`diffusion`/`extensions`

3.解压zip

python 复制代码
`unzip ControlNet`-`main`.zip

4.重启webui就能看到

(三)安装models

1.下载秋叶大佬已经整理好的包

链接: https://pan.baidu.com/s/1rh39DI9xVbguLO5l7O4pjA

提取码: yqqe

2.将预处理器下的downloads文件压缩成zip

3.定位位置,具体path看自己的服务器

python 复制代码
`cd stable`-`diffusion`-`webui`/`extensions`/`sd`-`webui`-`controlnet`/`annotator`

4.解压zip

python 复制代码
`unzip downloads`.zip

5.再将下载文件中"模型"文件下的所有文件放到stable diffusion/models/ControlNet/文件内。

6.最后即可使用ControlNet。

八、Clip skip的配置

Clip skip具体有什么用可以百度下,Clip skip默认是不显示的,需要我们自己配置。

1.先到「Settings --- Stable Diffusion --- Clip skip」中将数值调成2

2.再到「Settings --- User interface --- Quicksettings list」中添加clip模块

注意:这两个步骤不可颠倒,否者先把clip模块加载出来的话,就无法设置clip的默认值,这是个坑。

九、hypernetworks的下载与安装(选装)

去模型网站上下载hypernetworks的模型,然后上传到sd/models/hypernetworks文件夹中,然后在webui界面点击刷新就可以看到了

十、插件的使用

(一)sd的汉化

1.扩展中搜索zh

2.然后找到这2个进行安装

3.到Setting------User interface------localization选择zh-hans,然后保存,重启webui。

(二)中英对照tag自动补齐

这个插件能汉化 UI 界面、Tag 自动补全、提示词 prompt 翻译等功能,解决英文不好的问题,有效减少用翻译软件的时间,不过测试发现词库并不全,有些可能还会用到翻译软件。

想要安装这个插件,需要先装一个前置插件,叫"a1111-sd-webui-tagcomplete-main"

可以通过「扩展---从网址安装」输入以下github仓下载安装。

python 复制代码
`https`://`github`.`com`/`DominikDoom`/`a1111`-`sd`-`webui`-`tagcomplete`.`git`

最后重启webui就可以看到

十一、其他

(一)可下载模型的网站

(二)如何让服务器不断开连接

腾讯云的这个OrcaTerm shell经常会不定时的断开,而我们的sd需要一直启动住,所以我们需要解决服务器断开的问题。

1.下载Putty,https://www.chiark.greenend.org.uk/\~sgtatham/putty/latest.html

2.打开putty并在host name输入自己服务器的公网ip,然后点击open

3.点击accept即可

4.此处写上自己服务器的名称和密码就是我们用orcaterm登录时这里的用户名和密码。

注意这里输入密码是不会显示的,输入完后回车即可。

5.顶部右键选择"change setting",connection这里,输入60,意味着每60秒向服务器发送一个空包保持session处于活动中。

(三)其他

python 复制代码
#定位到models中的Stable-diffusion
`
cd stable`-`diffusion`-`webui`/`models`/`Stable`-`diffusion
`

#用wget命令来下载sd-v1-4模型

wget https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt

#如果出现SSL无法连接,那么加上---no-check-certificate

wget ---no-check-certificate https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt

#如果文件太大,一次性没办法下载完,可以加上断点续传

wget ---no-check-certificate --continue https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt

十二、总结

以上就是作者在Linux服务器下安装stable diffusion的全部内容,通过以上方法,大家可以配置一个较为完整的在线sd。至于更多的插件、模型大家就根据自己的需求去下载安装即可,更多sd的功能大家就自己去挖掘。

如果觉得本文有用,请来个三连吧~

如果觉得专栏的排版不够美观的话,可以去我的飞书看https://k9v8wpkvnx.feishu.cn/docx/Icdjdcw53oGEltxhE6yc5lmhn0e
本文为我原创 本文禁止转载或摘编
云服务器 sd stable diffusion sd安装教程 stable diffusion云部署

link

相关推荐
大白要努力!几秒前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix1 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9992 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️2 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98763 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
苏-言3 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring