Ubuntu系统安装开源绘图工具Stable Diffusion

# Ubuntu系统安装开源绘图工具Stable Diffusion

# 系统环境

操作系统:Ubuntu 22.04.2 LTS

Ubuntu 22.04.4 LTS

CPU: i5-10400F

内存:32G

硬盘: 512G SSD

显卡: NVIDIA GeForce GTX 1060 6GB

内网IP: 192.168.1.21

# Docker安装

# 安装docker

curl -sSL https://get.docker.com/ | sh

systemctl start docker

systemctl enable docker.service
1
2
3
4
5

# 基于Docker安装Diffusion Webui(安装失败)

参考: https://hub.docker.com/r/siutin/stable-diffusion-webui-docker

# Run with CUDA

拉取镜像:

# docker pull siutin/stable-diffusion-webui-docker

创建目录:
# mkdir /root/stable-diffusion

# docker run -itd --name sdw --gpus all --network host   -v /root/stable-diffusion/models:/app/stable-diffusion-webui/models   -v /root/stable-diffusion/outputs:/app/stable-diffusion-webui/outputs   --rm siutin/stable-diffusion-webui-docker:latest-cuda   bash webui.sh --share
 
 
输出消息: 
Stable diffusion model failed to load
Applying attention optimization: Doggettx... done.
Running on local URL:  http://127.0.0.1:7860

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 模型下载失败报错:

Stable diffusion model failed to load
Applying attention optimization: Doggettx... done.
Running on local URL:  http://127.0.0.1:7860

Could not create share link. Missing file: /app/stable-diffusion-webui/venv/lib/python3.10/site-packages/gradio/frpc_linux_amd64_v0.2. 

Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps: 

1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
2. Rename the downloaded file to: frpc_linux_amd64_v0.2
3. Move the file to this location: /app/stable-diffusion-webui/venv/lib/python3.10/site-packages/gradio
Startup time: 279.3s (prepare environment: 1.7s, import torch: 3.1s, import gradio: 0.7s, setup paths: 0.8s, initialize shared: 0.1s, other imports: 0.5s, list SD models: 135.2s, load scripts: 0.4s, create ui: 0.5s, gradio launch: 136.3s).
1
2
3
4
5
6
7
8
9
10
11
12

由于网络问题,模型下载失败。

查看镜像

# docker ps
CONTAINER ID   IMAGE                                                      COMMAND                   CREATED         STATUS         PORTS                                       NAMES
12f384716f6d   siutin/stable-diffusion-webui-docker:latest-cuda           "/opt/nvidia/nvidia_…"   4 minutes ago   Up 4 minutes                                               sdw
1
2
3

使用浏览器访问:IP+端口,http://127.0.0.1:7860

image-20240522160449325

# 普通安装 Stable Diffusion(安装失败)

如果通过docker安装成功之后,这步可以不用操作。

# 一、建立安装空间和python虚拟环境

在硬盘上建立一个AiSpace的文件夹,未来所有的安装和配置都在这个文件夹下进行。

$ sudo -i
在root用户下操作
# mkdir StableDiffusion
1
2
3

在StableDiffusion文件里建立虚拟环境。

cd   StableDiffusion
apt install python3.10-venv
python3.10 -m venv .
1
2
3

进入到Python虚拟环境

source bin/activate
1

# 二、在Python虚拟环境下,进行Stable Diffusion的基础安装

在StableDiffusion目录下,clone到Stable Diffusion文件。直接stable-diffusion-webui,省点事儿。

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

进入到stable-diffusion-webui,安装运行需要的包。

cd stable-diffusion-webui

修改pip源为阿里:
step1 设置pip的全局安装源为阿里云镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
step2 设置pip安装时信任的主机地址
pip config set install.trusted-host mirrors.aliyun.com


升级pip:
python3 -m pip install --upgrade pip 

pip3 install -r requirements_versions.txt
1
2
3
4
5
6
7
8
9
10
11
12
13

小提示:

1、pip一开始用的清华的源,不知道为什么有一些包找不到或者不兼容,很费解。换成阿里的就好用了。

2、basicsr安装的及其费尽,耗时特别长,没找到什么好的解决办法。

3、如果cache里面有了以前的包,如果没什么其他项目的关联,可以考虑先删除干净。目录是~/.cacha/pip

# 三、启动Stable Diffusion

python launch.py

运行的时候,还会安装很多的包。一定要保证github的访问畅通。如果连接断开了,就再次执行命令,直到运行成功

Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 227.0s (prepare environment: 85.5s, import torch: 3.6s, import gradio: 0.6s, setup paths: 0.7s, initialize shared: 0.1s, other imports: 0.6s, list SD models: 135.0s, load scripts: 0.3s, create ui: 0.4s, add APIs: 0.1s).

有报错:no module 'xformers'. Processing without

pip3 install transformers



后台运行,并且把错误日志输出到文件中:
source /home/star/StableDiffusion/bin/activate
nohup python launch.py >/dev/null 2> stable-diffusion-webui.log &

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

在浏览器中输入IP+7860 端口访问 Stable Diffusion

image-20240521182607668

# 利用Anaconda进行安装(安装失败)

# 1.下载安装包

mkdir sd
cd sd
wget http://repo.continuum.io/archive/Anaconda3-5.3.1-Linux-x86_64.sh

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh

1
2
3
4
5
6

除了上面的下载方式,也可到清华软件镜像站 (opens new window)直接下载安装包,并上传到主机上

# 2.安装Anaconda

bash Anaconda3-5.3.1-Linux-x86_64.sh 
1

image-20240529170446192

# 3.安装完成

$ conda info
     active environment : base
    active env location : /home/star/anaconda3
            shell level : 1
       user config file : /home/star/.condarc
 populated config files : 
          conda version : 4.5.11
    conda-build version : 3.15.1
         python version : 3.7.0.final.0
       base environment : /home/star/anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/linux-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/linux-64
                          https://repo.anaconda.com/pkgs/pro/noarch
          package cache : /home/star/anaconda3/pkgs
                          /home/star/.conda/pkgs
       envs directories : /home/star/anaconda3/envs
                          /home/star/.conda/envs
               platform : linux-64
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Linux/6.5.0-35-generic ubuntu/22.04 glibc/2.35
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 4.Anaconda简单使用


1、创建环境:conda create -n <env_name> <packages>
例如:conda create -n python3.10.9 python==3.10.9

2、激活环境:conda activate <env_name>

3、退出环境:conda deactivate <env_name>

4、查看已安装的环境信息:conda env list

5、复制环境:conda create -n <new_env_name> --clone <origin_env_name>

6、删除环境:conda env remove -n <env_name>

7、保存环境信息到environment.yaml文件中:conda env export > environment.yaml

8、通过environment.yaml环境文件创建文件: conda env create -f environment.yaml

9、查看已安装的包:conda list

10、搜索包:conda search <package_name1>

11、安装包:conda install <package_name1> <package_name2>

12、卸载包:conda remove <package_name>

5).虚拟环境创建好之后建议:升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

python -m pip install --upgrade pip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# 5.克隆 stable-diffusion-webui 项目

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

1
2

# 激活你的python3.10的虚拟环境

# 1.安装pytorch

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0

具体需要根据你们自己的cuda version版本去对应下载


阿里云的命令,因为cuda version是10.2
pip install torch==1.11.0+cu102 torchvision==0.12.0+cu102 --extra-index-url https://download.pytorch.org/whl/cu116

华为云上的命令,cuda version是11.2
pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 2.安装webui依赖


cd stable-diffusion-webui

先执行:
pip install -r requirements_versions.txt
再执行:
pip install -r requirements.txt

这边有可能有一些小坑需要注意:如果有一些包安装不上,你可以自己pip install 对应包,还有就是我在华为云上安装的时候,一开始一直有问题,发现是因为华为云pip直接调用的是https://repo.huaweicloud.com/repository/pypi/simple,导致很多包装不上,这边你可以切换到清华源上https://pypi.tuna.tsinghua.edu.cn/simple/。



1
2
3
4
5
6
7
8
9
10
11
12

# 更换中文

选择Extensions菜单 ---> 选择Available --->Extension index URL使用默认的地址就可以

将ads,localization,installed勾选掉

点击 Load from

image-20240521183027534

在列表里面找到“Zh_CN Localization”,点击Install

image-20240521183152776

选择Settings→User interface,下拉找到Localization栏,选择zh_CN

点击保存设置,并重启

img

更换中文成功

image-20240522110859139

# 下载模型

由于我的系统是国内网络,下载模型会很慢,报错。在其他电脑(有科学上网)上浏览器输入 https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors 这个地址下载,在上传到 stable-diffusion-webui 目录中。

或者用国内的网站下载

启动Stable Diffusion时会

Downloading: "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors" to /home/star/StableDiffusion/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors
Stable diffusion model failed to load
1
2
3
4

image-20240522094645052

这时:

# ll /home/star/StableDiffusion/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors
-rw-r--r-- 1 root root 4265146304  5月 22 10:04 /home/star/StableDiffusion/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors


1
2
3
4

# 国内下载模型

由于huggingface连不上,所以需要使用huggingface的镜像地址来下载。考虑到下载过程比较慢,所以考虑先下载到本地再使用。

模型文件:v1-5-pruned-emaonly.ckpt,v1-5-pruned-emaonly.safetensors

模型下载地址:互链高科 (opens new window) https://aliendao.cn/models/runwayml/stable-diffusion-v1-5#/

把模型下载到\models\Stable-diffusion目录中

在项目的目录下,创建.cache/huggingface/openai/clip-vit-large-patch14文件夹,然后下载参数文件放在里面

cd /home/star/StableDiffusion/stable-diffusion-webui
mkdir -p .cache/huggingface/openai/clip-vit-large-patch14
cd .cache/huggingface/openai/clip-vit-large-patch14
1
2
3

参数文件:vocab.json,tokenizer_config.json,special_tokens_map.json,merges.txt,config.json

参数文件下载地址:互链高科 (opens new window) https://aliendao.cn/models/openai/clip-vit-large-patch14#/

image-20240522112805799

# 修改项目代码

文件:repositories/stable-diffusion-stability-ai/ldm/modules/encoders/modules.py

第100行的__init__方法中,version是openai/clip-vit-large-patch14,把这个值改为自己的保存参数文件的目录

vim repositories/stable-diffusion-stability-ai/ldm/modules/encoders/modules.py

把 def __init__(self, version="openai/clip-vit-large-patch14", device="cuda", max_length=77,

改成你自己的地址:

def __init__(self, version="/home/star/StableDiffusion/stable-diffusion-webui/.cache/huggingface/openai/clip-vit-large-patch14", device="cuda", max_length=77,
1
2
3
4
5
6
7

image-20240522133648589