Skip to content

Windows使用Stable Diffusion进行AI画图(GPU)

引言

https://github.com/CompVis/stable-diffusion

Stable Diffusion is a latent text-to-image diffusion model.

Stable Diffusion是近年来流行的AI生成图片工具,这里尝试在Windows系统电脑上使用GPU进行图片生成。

准备工作

  • 1)、Windows11系统,提前安装好Git工具(https://git-scm.com/download/win)
  • 2)、电脑内存16GB以上,否则电脑会很卡,即使有显卡也发挥不了作用
  • 3)、相对顺畅的网络,需要频繁访问github下载大量文件,这部分文件可以预下载放到对应位置
  • 4)、NVIDIA显卡,这里使用的是RTX3080

Windows开启SSH服务

因为日常使用一台Mac,然后另有一台Windows台式机带GPU用于生成图片,采用SSH登录Windows方式进行操作:

  • 进入【设置】-【应用】-【可选功能】-【OpenSSH服务器】-【安装】, 也可以使用PowerShell方式进行安装:
$ Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

$ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


Path          :
Online        : True
RestartNeeded : False
  • 管理员身份启动Powershell来开启SSH服务:
$ Start-Service sshd  # 启动服务

$ Set-Service -Name sshd -StartupType 'Automatic'  # 设置开启自动启动服务

$ Get-NetFirewallRule -Name *ssh*   # 查看防火墙是否放行

Name                          : OpenSSH-Server-In-TCP
DisplayName                   : OpenSSH SSH Server (sshd)
Description                   : Inbound rule for OpenSSH SSH Server (sshd)
DisplayGroup                  : OpenSSH Server
Group                         : OpenSSH Server
Enabled                       : True
......

Miniconda工具与Python 3.10.6虚拟环境

$ conda -V
conda 23.1.0
  • 修改配置:
$ conda config --set show_channel_urls yes

$ conda config --show-sources

==> C:\Users\lesliezhu\.condarc <==  # 手动修改这个文件

channels:
  - defaults
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
show_channel_urls: True

$ conda clean -i   # 清理缓存索引
  • 创建Python 3.10.6虚拟环境:
$ conda create -n sd python=3.10.6

$ conda info --envs

# conda environments:
#
                         C:\Users\lesliezhu\miniconda3\envs\sd
base                     D:\Anaconda3

$ conda activate C:\Users\lesliezhu\miniconda3\envs\sd

$ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
Writing to C:\Users\lesliezhu\AppData\Roaming\pip\pip.ini

$ python -m pip install --upgrade pip
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Requirement already satisfied: pip in c:\users\lesliezhu\miniconda3\envs\sd\lib\site-packages (23.0.1)

CUDA 11.7工具

通过命令nvidia-smi查看对应的CUDA版本,然后下载对应工具包(https://developer.nvidia.com/cuda-toolkit-archive):

$ nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 517.02       Driver Version: 517.02       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name            TCC/WDDM | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ... WDDM  | 00000000:01:00.0  On |                  N/A |
| 30%   32C    P8    20W / 320W |    436MiB / 10240MiB |      3%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      2000    C+G   C:\Windows\System32\dwm.exe     N/A      |
|    ......                                                                   |
+-----------------------------------------------------------------------------+

stable-diffusion-webui项目源码

  • 下载stable-diffusion-webui:
$ git --version
git version 2.36.1.windows.1

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

$ cd stable-diffusion-webui/

下载模型

网站( https://civitai.com/models )上各种模型都有,文件比较大,下载好放到对应目录即可。

启动

$ cd stable-diffusion-webui/

$ conda activate C:\Users\lesliezhu\miniconda3\envs\sd

$ webui-user.bat

如果顺利,执行完打开: http://127.0.0.1:7860 即可使用了。

WebUI使用

目前使用的不太熟练,记录这么几点:

  • 从模型网站上很多图片生成例子,复制其参数后,点击【箭头】可以自动读取参数内容
  • 右侧【Save Style】可以将现有参数命名保存起来
  • 右侧【Show Extrac Networks】可以显示其他Lora模型等
  • 下方【Batch count】是一次生成多少张图片,默认是1张,建议4张
  • 下载的Lora模型注意文件名和复制过来参数是否一致
  • 根据自己SD版本下载支持的模型文件,否则会出现兼容问题,这里是SD-1.4

其它

  • 可以修改文件launch.py里面的github网站链接,加上代理前缀https://ghproxy.com/以加速下载,也可能导致更慢
  • 可以在webui-user.bat里面设置额外参数,比如:
$ type webui-user.bat

@echo off

set PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:32  # GPU内存可能出现不足错误
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=

call webui.bat