一、安装配置Anaconda

进入官网下载安装包https://www.anaconda.com/并安装,然后将Anaconda配置到环境变量中。

打开命令行,依次通过如下命令创建Python运行虚拟环境。

conda env create novelai python==3.10.6
E:\workspace\02_Python\novalai>conda info --envs
# conda environments:
#
base                  *  D:\anaconda3
novelai                  D:\anaconda3\envs\novelai
conda activate novelai

二、安装CUDA

笔者的显卡为NVIDIA,需安装NVIDIA的开发者工具进入官网https://developer.nvidia.com/,根据自己计算机的系统情况,选择合适的安装包下载安装。

打开安装程序后,依照提示完成安装。

安装完成后,在命令窗口输入如下命令,输出CUDA版本即安装成功。

C:\Users\yefuf>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

三、安装pytorch

进入官网https://pytorch.org/,根据计算机配置选择合适的版本进行安装。这里需要注意的是CUDA的平台选择,先打开NVIDIA控制面板-帮助-系统信息-组件查看CUDA版本,官网上选择的计算平台需要低于计算机的NVIDIA版本。

配置选择完成后,官网会生成相应的安装命令。

将安装命令复制出,命令窗口执行安装即可。

conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia

当查到Pytorch官网推荐的CUDA版本跟你的显卡版本不匹配时,就需要根据官网的CUDA版本找到对应的显卡驱动版本并升级显卡驱动,对应关系可通过https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html查看

四、安装git

进入git官网https://git-scm.com/,下载安装即可。

五、搭建stable-diffusion-webui

进入项目地址https://github.com/AUTOMATIC1111/stable-diffusion-webui,通过git将项目克隆下来。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
Cloning into 'stable-diffusion-webui'...
remote: Enumerating objects: 10475, done.
remote: Counting objects: 100% (299/299), done.
remote: Compressing objects: 100% (199/199), done.
remote: Total 10475 (delta 178), reused 199 (delta 100), pack-reused 10176
Receiving objects: 100% (10475/10475), 23.48 MiB | 195.00 KiB/s, done.
Resolving deltas: 100% (7312/7312), done.

克隆下载扩展库。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui-aesthetic-gradients “extensions/aesthetic-gradients”
Cloning into 'extensions/aesthetic-gradients'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (12/12), done.
remote: Total 21 (delta 3), reused 18 (delta 3), pack-reused 0
Receiving objects: 100% (21/21), 1.09 MiB | 1.34 MiB/s, done.
Resolving deltas: 100% (3/3), done.
git clone https://github.com/yfszzx/stable-diffusion-webui-images-browser “extensions/images-browser”
Cloning into 'extensions/images-browser'...
remote: Enumerating objects: 118, done.
remote: Counting objects: 100% (118/118), done.
remote: Compressing objects: 100% (70/70), done.
remote: Total 118 (delta 42), reused 65 (delta 24), pack-reused 0
Receiving objects: 100% (118/118), 33.01 KiB | 476.00 KiB/s, done.
Resolving deltas: 100% (42/42), done.

克隆完成后,extensions目录会多如下文件夹:

下载模型库https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Dependencies,并将下载的.ckpt

放到models/Stable-diffusion文件夹中。模型很大,推荐使用下载器。

安装项目所需的Python依赖库。

pip install -r requirements.txt


安装完成之后,运行如下命令,顺利的话,当程序加载完成模型之后,会自动打开http://127.0.0.1:7860/显示平台主页。

python launch.py --autolaunch

进入平台的设置页面,选择语言为中文,重启程序之后,即可看到页面显示为中文。


在界面中输入作画内容的正向提示词(画想要什么特征)和反向提示词(画不想要什么特征),点击生成即可开始自动作画。


如上述的提示词作出的画如图(由于随机种子不同,生成的画会有差异)。

六、如何设置提示词

这里建议使用元素法典https://docs.qq.com/doc/DWHl3am5Zb05QbGVs,上面有前人整理好的提示词及效果,以供参考。

七、可能遇到的问题

1、GitHub访问不了或访问慢

一般为DNS解析问题,需要修改本地host文件,增加配置内容,绕过域名解析,达到加速访问的目的。

访问https://www.ipaddress.com/,分别输入github.comgithub.global.ssl.fastly.net,获取域名对应的IP地址。


打开系统的Host文件,将IP和域名的对应关系配置到Host文件中。

配置文件内容如下:

140.82.114.4   github.com
199.232.5.194 github.global.ssl.fastly.net

执行命令ipconfig /flushdns刷新DNS即可。

2、pip安装依赖库慢或常下载失败

pip安装依赖库时默认选择国外的源,安装速度会非常慢,可以考虑切换为国内源,常用的国内源如下:

阿里云 https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) https://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 https://pypi.mirrors.ustc.edu.cn/simple/

在安装依赖库时,可使用pip install -i 源 空格 安装包名称进行源的选择,如pip install -i https://mirrors.aliyun.com/pypi/simple numpy

也可以通过增加配置文件,使安装依赖库时默认选择国内的源,在用户目录下增加pip.ini文件。

在文件中写入如下内容。

[global]
timeout = 60000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple[install]
use-mirrors = true
mirrors = https://pypi.tuna.tsinghua.edu.cn

3、安装CLIP时提示Connection was aborted, errno 10053

出错时的错误打印如下:

(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Installing clip
Traceback (most recent call last):File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 251, in <module>prepare_enviroment()File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 178, in prepare_enviromentrun_pip(f"install {clip_package}", "clip")File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 63, in run_pipreturn run(f'"{python}" -m pip {args} --prefer-binary{index_url_line}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}")File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 34, in runraise RuntimeError(message)
RuntimeError: Couldn't install clip.
Command: "D:\anaconda3\envs\novelai\python.exe" -m pip install git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 --prefer-binary
Error code: 1
stdout: Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1Cloning https://github.com/openai/CLIP.git (to revision d50d76daa670286dd6cacf3bcd80b5e4823fc8e1) to c:\users\yefuf\appdata\local\temp\pip-req-build-f8w7kbzgstderr:   Running command git clone --filter=blob:none --quiet https://github.com/openai/CLIP.git 'C:\Users\yefuf\AppData\Local\Temp\pip-req-build-f8w7kbzg'fatal: unable to access 'https://github.com/openai/CLIP.git/': OpenSSL SSL_read: Connection was aborted, errno 10053error: subprocess-exited-with-errorgit clone --filter=blob:none --quiet https://github.com/openai/CLIP.git 'C:\Users\yefuf\AppData\Local\Temp\pip-req-build-f8w7kbzg' did not run successfully.exit code: 128See above for output.note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-errorgit clone --filter=blob:none --quiet https://github.com/openai/CLIP.git 'C:\Users\yefuf\AppData\Local\Temp\pip-req-build-f8w7kbzg' did not run successfully.
exit code: 128See above for output.note: This error originates from a subprocess, and is likely not a problem with pip.

通过访CLIP项目GitHub主页,发现该项目可以通过如下命令进行安装解决。

pip install ftfy regex tqdm
pip install git+https://github.com/openai/CLIP.git

4、项目启动中提示Connection was reset in connection to github.com

出错时的错误打印如下:

(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Cloning Stable Diffusion into repositories\stable-diffusion...
Cloning Taming Transformers into repositories\taming-transformers...
Traceback (most recent call last):File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 251, in <module>prepare_enviroment()File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 201, in prepare_enviromentgit_clone(taming_transformers_repo, repo_dir('taming-transformers'), "Taming Transformers", taming_transformers_commit_hash)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 85, in git_clonerun(f'"{git}" clone "{url}" "{dir}"', f"Cloning {name} into {dir}...", f"Couldn't clone {name}")File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 34, in runraise RuntimeError(message)
RuntimeError: Couldn't clone Taming Transformers.
Command: "git" clone "https://github.com/CompVis/taming-transformers.git" "repositories\taming-transformers"
Error code: 128
stdout: <empty>
stderr: Cloning into 'repositories\taming-transformers'...
fatal: unable to access 'https://github.com/CompVis/taming-transformers.git/': OpenSSL SSL_connect: Connection was reset in connection to github.com:443

在命令窗口中输入如下命令,然后重新运行程序,但实际操作下来,仍有较大概率在克隆项目的过程中失败。

git config --global http.postBuffer 524288000
git config --global http.sslVerify "false"

查看lauch.py中的代码可以发现,程序在启动时有对依赖项目进行检查,如项目不存在,则克隆下来。

def prepare_enviroment():torch_command = os.environ.get('TORCH_COMMAND', "pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113")requirements_file = os.environ.get('REQS_FILE', "requirements_versions.txt")commandline_args = os.environ.get('COMMANDLINE_ARGS', "")gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379")clip_package = os.environ.get('CLIP_PACKAGE', "git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1")deepdanbooru_package = os.environ.get('DEEPDANBOORU_PACKAGE', "git+https://github.com/KichangKim/DeepDanbooru.git@d91a2963bf87c6a770d74894667e9ffa9f6de7ff")xformers_windows_package = os.environ.get('XFORMERS_WINDOWS_PACKAGE', 'https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl')stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/CompVis/stable-diffusion.git")taming_transformers_repo = os.environ.get('TAMING_REANSFORMERS_REPO', "https://github.com/CompVis/taming-transformers.git")k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://github.com/crowsonkb/k-diffusion.git')codeformer_repo = os.environ.get('CODEFORMET_REPO', 'https://github.com/sczhou/CodeFormer.git')blip_repo = os.environ.get('BLIP_REPO', 'https://github.com/salesforce/BLIP.git')stable_diffusion_commit_hash = os.environ.get('STABLE_DIFFUSION_COMMIT_HASH', "69ae4b35e0a0f6ee1af8bb9a5d0016ccb27e36dc")taming_transformers_commit_hash = os.environ.get('TAMING_TRANSFORMERS_COMMIT_HASH', "24268930bf1dce879235a7fddd0b2355b84d7ea6")k_diffusion_commit_hash = os.environ.get('K_DIFFUSION_COMMIT_HASH', "f4e99857772fc3a126ba886aadf795a332774878")codeformer_commit_hash = os.environ.get('CODEFORMER_COMMIT_HASH', "c5b4593074ba6214284d6acd5f1719b6c5d739af")blip_commit_hash = os.environ.get('BLIP_COMMIT_HASH', "48211a1594f1321b00f14c9f7a5b4813144b2fb9")

因此,我们打开git bash重新执行上述两条git命令,预先将项目克隆下来。

git clone https://github.com/CompVis/taming-transformers.git "repositories\taming-transformers"git clone https://github.com/crowsonkb/k-diffusion.git "repositories\k-diffusion"git clone https://github.com/sczhou/CodeFormer.git "repositories\CodeFormer"git clone https://github.com/salesforce/BLIP.git "repositories\BLIP"

克隆完成之后如图:

5、项目启动中提示CUDA out of memory

出错时的错误打印如下:

(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Fetching updates for BLIP...
Checking out commit for BLIP with hash: 48211a1594f1321b00f14c9f7a5b4813144b2fb9...
Installing requirements for CodeFormer
Installing requirements for Web UI
Launching Web UI with arguments:
Moving sd-v1-4.ckpt from E:\workspace\02_Python\novalai\stable-diffusion-webui\models to E:\workspace\02_Python\novalai\stable-diffusion-webui\models\Stable-diffusion.
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
making attention of type 'vanilla' with 512 in_channels
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla' with 512 in_channels
Downloading: 100%|██████████████████████████████████████████████████████████████████| 939k/939k [00:00<00:00, 1.26MB/s]
Downloading: 100%|███████████████████████████████████████████████████████████████████| 512k/512k [00:01<00:00, 344kB/s]
Downloading: 100%|████████████████████████████████████████████████████████████████████████████| 389/389 [00:00<?, ?B/s]
Downloading: 100%|████████████████████████████████████████████████████████████████████████████| 905/905 [00:00<?, ?B/s]
Downloading: 100%|████████████████████████████████████████████████████████████████████████| 4.41k/4.41k [00:00<?, ?B/s]
Downloading: 100%|████████████████████████████████████████████████████████████████| 1.59G/1.59G [03:56<00:00, 7.23MB/s]
Loading weights [7460a6fa] from E:\workspace\02_Python\novalai\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt
Global Step: 470000
Traceback (most recent call last):File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 252, in <module>start()File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 247, in startwebui.webui()File "E:\workspace\02_Python\novalai\stable-diffusion-webui\webui.py", line 148, in webuiinitialize()File "E:\workspace\02_Python\novalai\stable-diffusion-webui\webui.py", line 83, in initializemodules.sd_models.load_model()File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\sd_models.py", line 252, in load_modelsd_model.to(shared.device)File "D:\anaconda3\envs\novelai\lib\site-packages\pytorch_lightning\core\mixins\device_dtype_mixin.py", line 113, in toreturn super().to(*args, **kwargs)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 987, in toreturn self._apply(convert)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 639, in _applymodule._apply(fn)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 639, in _applymodule._apply(fn)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 639, in _applymodule._apply(fn)[Previous line repeated 2 more times]File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 662, in _applyparam_applied = fn(param)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 985, in convertreturn t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 2.00 GiB total capacity; 1.68 GiB already allocated; 0 bytes free; 1.72 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

根据提示,先尝试用如下命令改变pytorch配置,仍旧报错!

set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6,max_split_size_mb:128

尝试增加代码with torch.no_grad(),使内存就不会分配参数梯度的空间,仍旧报错!

由于提示内存溢出,先通过控制面板->所有控制面板项->管理工具->系统信息,查看显卡内存大小。

官方推荐的显卡内存大小为4GB以上,而笔者的显卡内存只有2GB,显然GPU不符合要求。查看项目的命令选项,发现项目支持CPU计算--use-cpu

(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py -h
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Installing requirements for Web UI
Launching Web UI with arguments: -h
usage: launch.py [-h] [--config CONFIG] [--ckpt CKPT] [--ckpt-dir CKPT_DIR] [--gfpgan-dir GFPGAN_DIR][--gfpgan-model GFPGAN_MODEL] [--no-half] [--no-half-vae] [--no-progressbar-hiding][--max-batch-count MAX_BATCH_COUNT] [--embeddings-dir EMBEDDINGS_DIR][--hypernetwork-dir HYPERNETWORK_DIR] [--localizations-dir LOCALIZATIONS_DIR] [--allow-code][--medvram] [--lowvram] [--lowram] [--always-batch-cond-uncond] [--unload-gfpgan][--precision {full,autocast}] [--share] [--ngrok NGROK] [--ngrok-region NGROK_REGION][--enable-insecure-extension-access] [--codeformer-models-path CODEFORMER_MODELS_PATH][--gfpgan-models-path GFPGAN_MODELS_PATH] [--esrgan-models-path ESRGAN_MODELS_PATH][--bsrgan-models-path BSRGAN_MODELS_PATH] [--realesrgan-models-path REALESRGAN_MODELS_PATH][--scunet-models-path SCUNET_MODELS_PATH] [--swinir-models-path SWINIR_MODELS_PATH][--ldsr-models-path LDSR_MODELS_PATH] [--clip-models-path CLIP_MODELS_PATH] [--xformers][--force-enable-xformers] [--deepdanbooru] [--opt-split-attention] [--opt-split-attention-invokeai][--opt-split-attention-v1] [--disable-opt-split-attention][--use-cpu {all,sd,interrogate,gfpgan,swinir,esrgan,scunet,codeformer} [{all,sd,interrogate,gfpgan,swinir,esrgan,scunet,codeformer} ...]][--listen] [--port PORT] [--show-negative-prompt] [--ui-config-file UI_CONFIG_FILE][--hide-ui-dir-config] [--freeze-settings] [--ui-settings-file UI_SETTINGS_FILE] [--gradio-debug][--gradio-auth GRADIO_AUTH] [--gradio-img2img-tool {color-sketch,editor}] [--opt-channelslast][--styles-file STYLES_FILE] [--autolaunch] [--theme THEME] [--use-textbox-seed][--disable-console-progressbars] [--enable-console-prompts] [--vae-path VAE_PATH][--disable-safe-unpickle] [--api] [--nowebui] [--ui-debug-mode] [--device-id DEVICE_ID][--administrator] [--cors-allow-origins CORS_ALLOW_ORIGINS] [--tls-keyfile TLS_KEYFILE][--tls-certfile TLS_CERTFILE] [--server-name SERVER_NAME]options:-h, --help            show this help message and exit--config CONFIG       path to config which constructs model--ckpt CKPT           path to checkpoint of stable diffusion model; if specified, this checkpoint will be added tothe list of checkpoints and loaded--ckpt-dir CKPT_DIR   Path to directory with stable diffusion checkpoints--gfpgan-dir GFPGAN_DIRGFPGAN directory--gfpgan-model GFPGAN_MODELGFPGAN model file name--no-half             do not switch the model to 16-bit floats--no-half-vae         do not switch the VAE model to 16-bit floats--no-progressbar-hidingdo not hide progressbar in gradio UI (we hide it because it slows down ML if you have hardwareacceleration in browser)--max-batch-count MAX_BATCH_COUNTmaximum batch count value for the UI--embeddings-dir EMBEDDINGS_DIRembeddings directory for textual inversion (default: embeddings)--hypernetwork-dir HYPERNETWORK_DIRhypernetwork directory--localizations-dir LOCALIZATIONS_DIRlocalizations directory--allow-code          allow custom script execution from webui--medvram             enable stable diffusion model optimizations for sacrificing a little speed for low VRM usage--lowvram             enable stable diffusion model optimizations for sacrificing a lot of speed for very low VRMusage--lowram              load stable diffusion checkpoint weights to VRAM instead of RAM--always-batch-cond-unconddisables cond/uncond batching that is enabled to save memory with --medvram or --lowvram--unload-gfpgan       does not do anything.--precision {full,autocast}evaluate at this precision--share               use share=True for gradio and make the UI accessible through their site--ngrok NGROK         ngrok authtoken, alternative to gradio --share--ngrok-region NGROK_REGIONThe region in which ngrok should start.--enable-insecure-extension-accessenable extensions tab regardless of other options--codeformer-models-path CODEFORMER_MODELS_PATHPath to directory with codeformer model file(s).--gfpgan-models-path GFPGAN_MODELS_PATHPath to directory with GFPGAN model file(s).--esrgan-models-path ESRGAN_MODELS_PATHPath to directory with ESRGAN model file(s).--bsrgan-models-path BSRGAN_MODELS_PATHPath to directory with BSRGAN model file(s).--realesrgan-models-path REALESRGAN_MODELS_PATHPath to directory with RealESRGAN model file(s).--scunet-models-path SCUNET_MODELS_PATHPath to directory with ScuNET model file(s).--swinir-models-path SWINIR_MODELS_PATHPath to directory with SwinIR model file(s).--ldsr-models-path LDSR_MODELS_PATHPath to directory with LDSR model file(s).--clip-models-path CLIP_MODELS_PATHPath to directory with CLIP model file(s).--xformers            enable xformers for cross attention layers--force-enable-xformersenable xformers for cross attention layers regardless of whether the checking code thinks youcan run it; do not make bug reports if this fails to work--deepdanbooru        enable deepdanbooru interrogator--opt-split-attentionforce-enables Doggettx's cross-attention layer optimization. By default, it's on for torchcuda.--opt-split-attention-invokeaiforce-enables InvokeAI's cross-attention layer optimization. By default, it's on when cuda isunavailable.--opt-split-attention-v1enable older version of split attention optimization that does not consume all the VRAM it canfind--disable-opt-split-attentionforce-disables cross-attention layer optimization--use-cpu {all,sd,interrogate,gfpgan,swinir,esrgan,scunet,codeformer} [{all,sd,interrogate,gfpgan,swinir,esrgan,scunet,codeformer} ...]use CPU as torch device for specified modules--listen              launch gradio with 0.0.0.0 as server name, allowing to respond to network requests--port PORT           launch gradio with given server port, you need root/admin rights for ports < 1024, defaults to7860 if available--show-negative-promptdoes not do anything--ui-config-file UI_CONFIG_FILEfilename to use for ui configuration--hide-ui-dir-config  hide directory configuration from webui--freeze-settings     disable editing settings--ui-settings-file UI_SETTINGS_FILEfilename to use for ui settings--gradio-debug        launch gradio with --debug option--gradio-auth GRADIO_AUTHset gradio authentication like "username:password"; or comma-delimit multiple like"u1:p1,u2:p2,u3:p3"--gradio-img2img-tool {color-sketch,editor}gradio image uploader tool: can be either editor for ctopping, or color-sketch for drawing--opt-channelslast    change memory type for stable diffusion to channels last--styles-file STYLES_FILEfilename to use for styles--autolaunch          open the webui URL in the system's default browser upon launch--theme THEME         launches the UI with light or dark theme--use-textbox-seed    use textbox for seeds in UI (no up/down, but possible to input long seeds)--disable-console-progressbarsdo not output progressbars to console--enable-console-promptsprint prompts to console when generating with txt2img and img2img--vae-path VAE_PATH   Path to Variational Autoencoders model--disable-safe-unpickledisable checking pytorch models for malicious code--api                 use api=True to launch the api with the webui--nowebui             use api=True to launch the api instead of the webui--ui-debug-mode       Don't load model to quickly launch UI--device-id DEVICE_IDSelect the default CUDA device to use (export CUDA_VISIBLE_DEVICES=0,1,etc might be neededbefore)--administrator       Administrator rights--cors-allow-origins CORS_ALLOW_ORIGINSAllowed CORS origins--tls-keyfile TLS_KEYFILEPartially enables TLS, requires --tls-certfile to fully function--tls-certfile TLS_CERTFILEPartially enables TLS, requires --tls-keyfile to fully function--server-name SERVER_NAMESets hostname of server

尝试构造如下运行参数,--use-cpu all使所有模块均使用CPU计算,--lowram --always-batch-cond-uncond使用低内存配置选项,程序可以成功运行。

(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py --lowram --always-batch-cond-uncond --use-cpu all
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Installing requirements for Web UI
Launching Web UI with arguments: --lowram --always-batch-cond-uncond --use-cpu all
Warning: caught exception 'Expected a cuda device, but got: cpu', memory monitor disabled
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
making attention of type 'vanilla' with 512 in_channels
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla' with 512 in_channels
Loading weights [7460a6fa] from E:\workspace\02_Python\novalai\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt
Global Step: 470000
Applying cross attention optimization (Doggettx).
Model loaded.
Loaded a total of 0 textual inversion embeddings.
Embeddings:
Running on local URL:  http://127.0.0.1:7860To create a public link, set `share=True` in `launch()`.

然而,开始作画时提示RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'错误!如果安装网上的处理方法,将half函数在工程中替换为float函数,则会出现device不匹配问题。

Traceback (most recent call last):File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\ui.py", line 185, in fres = list(func(*args, **kwargs))File "E:\workspace\02_Python\novalai\stable-diffusion-webui\webui.py", line 57, in fres = func(*args, **kwargs)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\txt2img.py", line 48, in txt2imgprocessed = process_images(p)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\processing.py", line 423, in process_imagesres = process_images_inner(p)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\processing.py", line 508, in process_images_inneruc = prompt_parser.get_learned_conditioning(shared.sd_model, len(prompts) * [p.negative_prompt], p.steps)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\prompt_parser.py", line 138, in get_learned_conditioningconds = model.get_learned_conditioning(texts)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\repositories\stable-diffusion\ldm\models\diffusion\ddpm.py", line 558, in get_learned_conditioningc = self.cond_stage_model(c)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_implreturn forward_call(*input, **kwargs)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\sd_hijack.py", line 338, in forwardz1 = self.process_tokens(tokens, multipliers)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\extensions\aesthetic-gradients\aesthetic_clip.py", line 202, in __call__z = self.process_tokens(remade_batch_tokens, multipliers)File "E:\workspace\02_Python\novalai\stable-diffusion-webui\modules\sd_hijack.py", line 353, in process_tokensoutputs = self.wrapped.transformer(input_ids=tokens, output_hidden_states=-opts.CLIP_stop_at_last_layers)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_implreturn forward_call(*input, **kwargs)File "D:\anaconda3\envs\novelai\lib\site-packages\transformers\models\clip\modeling_clip.py", line 722, in forwardreturn self.text_model(File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_implreturn forward_call(*input, **kwargs)File "D:\anaconda3\envs\novelai\lib\site-packages\transformers\models\clip\modeling_clip.py", line 643, in forwardencoder_outputs = self.encoder(File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_implreturn forward_call(*input, **kwargs)File "D:\anaconda3\envs\novelai\lib\site-packages\transformers\models\clip\modeling_clip.py", line 574, in forwardlayer_outputs = encoder_layer(File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_implreturn forward_call(*input, **kwargs)File "D:\anaconda3\envs\novelai\lib\site-packages\transformers\models\clip\modeling_clip.py", line 316, in forwardhidden_states = self.layer_norm1(hidden_states)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_implreturn forward_call(*input, **kwargs)File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\modules\normalization.py", line 190, in forwardreturn F.layer_norm(File "D:\anaconda3\envs\novelai\lib\site-packages\torch\nn\functional.py", line 2515, in layer_normreturn torch.layer_norm(input, normalized_shape, weight, bias, eps, torch.backends.cudnn.enabled)
RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'

考虑到--use-cpu参数可以指定模块,则尝试使工程中的部分模块用CPU计算,其余在可用内存方位内用GPU计算,最终构造参数如下,项目可成功作画。

然而,此方式作画效率非常低,一般每张图片约5-6分钟。当参数设置较大时,会达到数小时。因此如果有条件可以升级计算机的显卡配置,或租赁云服务器效果会更好。


(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py --lowram --always-batch-cond-uncond  --precision full --no-half --opt-split-attention-v1 --use-cpu sd --autolaunch
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Installing requirements for Web UI
Launching Web UI with arguments: --lowram --always-batch-cond-uncond --precision full --no-half --opt-split-attention-v1 --use-cpu sd
Warning: caught exception 'Expected a cuda device, but got: cpu', memory monitor disabled
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
making attention of type 'vanilla' with 512 in_channels
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla' with 512 in_channels
Loading weights [7460a6fa] from E:\workspace\02_Python\novalai\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt
Global Step: 470000
Applying v1 cross attention optimization.
Model loaded.
Loaded a total of 0 textual inversion embeddings.
Embeddings:
Running on local URL:  http://127.0.0.1:7860To create a public link, set `share=True` in `launch()`.
100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [06:30<00:00, 19.50s/it]
Total progress: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████| 20/20 [06:10<00:00, 18.51s/it]

参考文献:

AI作画保姆级教程来了!逆天,太强了!

【作者:墨叶扶风http://blog.csdn.net/yefufeng】

【AI作画】使用stable-diffusion-webui搭建AI作画平台相关推荐

  1. AI绘画指南 stable diffusion webui (SD webui)如何设置与使用

    AI绘画指南 stable diffusion webui (SD webui)如何设置与使用 作者: 去年夏天 分类: AI绘画,Windows,技术文章 发布时间: 2022-11-07 23:0 ...

  2. 【AI绘画】个人电脑部署免费AI绘画软件——Stable Diffusion webui启动器

    文章目录 先看几个生成的作品 什么是AI绘画? 现在主流的AI绘画 什么是Stable Diffusion 缺点 安装前说明 1. 电脑配置需求 2. 本次整合包适合以下人群使用 3. 其他说明 如何 ...

  3. 【AI作画】stable diffusion webui Linux虚拟机 Centos 详细部署教程

    部署环境: 环境:虚拟机Centos7.6处理器.8G内存+10G交换内存.没有GPU使用CPU硬解 windows版本的可以直接使用整合包:看评论的转载链接自行下载,解压即可用 安装Git 2.15 ...

  4. AI图片生成Stable Diffusion参数及使用方式详细介绍

    Stable Diffusion环境搭建与运行请参考上一篇博文<AI图片生成Stable Diffusion环境搭建与运行>,地址为"https://blog.csdn.net/ ...

  5. Stable Diffusion WebUI 在电商场景生成 AI 模特搭配服装的方案探索

    Stable Diffusion 作为一个开源项目,目前被广泛应用在各个行业和领域做应用探索,本文介绍的方案应用场景是针对电商行业,一些电商公司在日常运营工作中,需要处理大量的模特搭配服装的产品图片, ...

  6. AI 绘画 stable diffusion webui 常见模型汇总及简介

    主要是记录索引一下常见的 AI 绘画作画模型,方便自己用.主要收集 stable diffusion webui 用大模型(ckpt与safetensors)包括了常见的模型比如的Waifu Diff ...

  7. 使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion

    使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion 0. 前言 1. Amazon SageMaker 与机器学习 1.1 机器学习流程 1.2 Amazon ...

  8. AI绘画指南 如何设置与使用 stable diffusion webui (SD webui)

    分享最近对AI绘画的理解和实践经验,希望帮助那些对AI绘画有兴趣但不知如何入门的人.分享的内容主要包括对stable-diffusion-webui界面的介绍,解释参数的含义和如何进行调整.此外,还会 ...

  9. AI绘画黑科技Stable Diffusion WebUI在线部署使用教程

    AI绘画黑科技Stable Diffusion,能够根据文字描述生成精美图像,开源且在消费级GPU上就能运行. Stable Diffusion WebUI是Stable Diffusion的Web版 ...

  10. 如何在本地电脑上搭建AI人工智能绘画工具Stable Diffusion

    目录 概述 操作环境 操作步骤 步骤一:安装Python. 步骤二:安装Git. 步骤三:使用git安装stable-diffusion-webui. 步骤四:下载面部重建插件GFPGAN. 步骤五: ...

最新文章

  1. 在linux上装git教程,教你玩转Git-Linux 平台上安装
  2. Eval()特殊绑定
  3. 74HC165的使用
  4. linux tcp socket 请求队列大小参数 backlog 简介
  5. SAP MM模块-实施顾问岗位-面试手册-面试准备
  6. IDEA 设置自动导入包,以及手动导入包
  7. 【转】Rhythm Of The Rain 雨的旋律
  8. 普通开发人员与软件工程师的区别
  9. Python2.X和Python3.X文件对话框、下拉列表的不同
  10. 【黑客免杀攻防】读书笔记15 - 源码免杀、C++壳的编写
  11. Java项目:大学生实习管理系统(java+SpringBoot+Thymeleaf+html+JQuery+bootstrap)
  12. 密度聚类算法python详解_密度聚类python
  13. MPMLink 中 通过 零件号+MBOM版本,查询正确的EBOM版本(相当于对等部件功能)
  14. 支付宝提现至个人账户接口开发
  15. 软件测试人员必备的60个测试工具,果断收藏了!
  16. 【Python】cannot import name ‘ParserError‘ from ‘dateutil.parser‘
  17. 4.3 文本数据分析
  18. 再寄小读者之数学篇[2014.01.01-2014.06.30]
  19. windows蓝屏错误代码查询
  20. java -jar 工作原理_Java 中的 jar ,天天见,可是你知道它的运行机制吗?

热门文章

  1. 跨境电商shopee的本土开店经验
  2. 股灾是对价值投资的洗礼
  3. 独角兽项目 3 - 反叛军
  4. 1.0 如何使用cubemx并且移植RTX操作系统?(方法一)
  5. 微信小程序app.js调用wx.login
  6. 数据分析---常用业务运营指标
  7. php curl获取腾讯视频教程,获取腾讯视频M3U8下载地址
  8. Notepad操作指南
  9. 服务器上的 Git - 在服务器上部署 Git
  10. 为2017年出生的孩子免费取名字,孩子起名要注意的问题