SDWebUI:AI绘图本地部署及绘图效率实验

服务部署汇总

摘要:本地部署Stable Diffusion Web UI整合包,预设参数修改,绘图效率实验。

Stable Diffusion Web UI-2023/05/02

整合包

预设参数修改-2023/05/06

  • 搞了一堆毫无意义的操作,不好意思发,所以多凑点。
  • 修改位置:sd-webui-aki-v4/ui-config.json
  • 简单示例:
txt2img/*:所有以txt2img开头
*/Width/*:任意开头,Width在第二位,如txt2img/Width表示txt2img的宽度选项
文生图的宽度默认值:txt2img/Width/value
图生图的高度最大值:img2img/Height/maximum
采样方法的迭代次数:*/Sampling method/value
总批次数的默认值:*/Batch count/value
  • 修改示例:
    • 假设文生图的时候都是用 DPM++ SDE Karras 采样方法,一次6张,图像尺寸为 1280x720,迭代28次。
    • 图生图的时候 DPM++ SDE Karras 采样方法,一次1张,图像默认尺寸为 2048x1152,最大尺寸为2560x2560,迭代28次。后处理使用 BSRGAN 上采样至 2560x1440。
    • 修改如下:
"txt2img/Sampling method/value": "DPM++ SDE Karras",
"txt2img/Batch count/value": 6
"txt2img/Width/value": 1280,
"txt2img/Height/value": 720,
"txt2img/Sampling steps/value": 28,

"img2img/Sampling method/value": "DPM++ SDE Karras",
"img2img/Width/value": 2048,
"img2img/Width/maximum": 2560,
"img2img/Height/value": 1152,
"img2img/Height/maximum": 2560,
"img2img/Sampling steps/value": 28,
"customscript/postprocessing_upscale.py/img2img/Width/value": 2560,
"customscript/postprocessing_upscale.py/img2img/Height/value": 1440,
"customscript/postprocessing_upscale.py/img2img/Upscaler 1/value": "BSRGAN",

绘图效率实验

  • 论文实验还在跑,比赛实验和 SD 同时跑会卡着,而比赛实验的代码我又快写好了。
    • 所以来不务正业一下。

实验配置-2023/05/08

  • 我看菩萨说每次一张更好,前几天用的时候我也是这样搞的,省脑子。
    • 但是我跑实验的时候,一般是尽量塞满内存或是使用通用 batch size。
    • 打比赛的时候我用自己笔记本跑,大 batch size 影响不会显著降低速度,但同时跑多个实验会较大影响速度,尤其当实验塞满显存后,完全无法训练。
  • 最近总是在一直调参,论文是,AI 绘图也是,这次把绘图速度的影响实验一下。
    • 实验仅重复一轮,实验时 Prompt 有变动。
  • 实验配置见下表
迭代步数采样方法放大算法上采样器Clip skip
20DPM++ SDE KarrasLatent (nearest-exact)BSRGAN2
  • 实验环境见下表
显卡内存CPU系统
笔记本 3080 16G16x2Gi7-11800HWin11 22H2
  • 涉及名词见下表
名词Batch CountBatch Size2K1080P720P360P
含义总批次数单批数量2560x14401920x10801280x720640X360
  • 文生图,高分,上采样的组合见下表
文生图(T1)文生图+高分辨率修复(T2)文生图+高分辨率修复+上采样(T3)
文生图输出720P720P720P
高分输出-2K1080P
上采样输出--2K
最终输出720P2K2K

实验及结论-2023/05/08-2023/05/09

  • 我的方向里面,推理分辨率和训练分辨率差别越大,效果越差,所以推荐使用模型前确认推荐分辨率。

  • 单纯文生图 2K 效果很差,所以不用。

  • 起始 360P 也不行,毕竟默认 512x512,太窄了质量差。

  • 文生图 720P + 上采样 2K 的话,细节处理不好。

  • 这几天的测试下来,用上高分可以修复错误,增加细节,但大幅高分会带来新的问题。

  • 注:T1 只是添头,细节不够好,我实验的主要对象还是 2K。

  • 推荐三阶段的 T3。

处理类型Batch CountBatch Size总数耗时active/reservedSys VRAM
T14141m9s5445/853810815 (66.01%)
T241413m42s15069/1548216384 (100.0%)
T34146m23s9476/1561016384 (100.0%)
  • 2K 时,我的电脑用 batch size = 4 较快。
    • 我的经验告诉我显存不爆就死劲塞,效率会更高,这里的结论不一致,可能两个原因:
      1. 有专门针对爆显存的处理,所以即便塞满了,它也可以分批计算。
      2. Batch size = 8 时没塞满,但在利用率已经满的时候,越多的数据处理的越慢。
    • 所以 T3 的 Batch size = 2 时效率没有高,可能是利用率没满
处理类型Batch CountBatch Size总数耗时active/reservedSys VRAM
T14141m9s5445/853810815 (66.01%)
T114458s5472/1082613528 (82.57%)
T11882m6s6525/1515616384 (100.0%)
T241413m42s15069/1548216384 (100.0%)
T222413m42s15111/1558216384 (100.0%)
T214410m43s15155/1554216384 (100.0%)
T34146m23s9476/1561016384 (100.0%)
T31445m17s9536/1558416384 (100.0%)
T381812m 57.66s9556/1559416384 (100.0%)
T342812m 59s9578/1559816384 (100.0%)
T324810m36s9671/1560216384 (100.0%)
T318812m17s10912/1561816384 (100.0%)
T3341215m45s9662/1558416384 (100.0%)
T3441621m10s9671/1558616384 (100.0%)
T3843244m
T3404160213m38s9671/1558616384 (100.0%)
T31204480624m57s9663/1562616384 (100.0%)
  • 上面那个10个小时480张的prompt不好,我很喜欢它的场景,但是生成质量很差,我初步筛选只有17张是人体不违和的,可恶。

一堆无效操作

运行以删除环境-2023/05/02

  • GItHub 上介绍直接运行 webui-user.bat,查看该文件,发现有配置python路径。和前面一样,我用的是 ChatGLM 环境,所以这里对应修改。
    • 过分,我改了路径之后可以运行了,但是pip直接被删了。
    • 好哥哥们帮我看看,第一个是我更改的 webui-user.bat,第二个是它调用的 webui.bat,我都没动,为毛这会让我环境被删。
    • 还好这个环境是我前几天才创的,没用平时跑实验的环境。
@echo on

set PYTHON=python.exe
set GIT=
set VENV_DIR=F:\0_DATA\2_CODE\Anaconda\envs\ChatGLM
set COMMANDLINE_ARGS=

call webui.bat
@echo on

if not defined PYTHON (set PYTHON=python)
if not defined VENV_DIR (set "VENV_DIR=%~dp0%venv")

set ERROR_REPORTING=FALSE

mkdir tmp 2>NUL

%PYTHON% -c "" >tmp/stdout.txt 2>tmp/stderr.txt
if %ERRORLEVEL% == 0 goto :check_pip
echo Couldn't launch python
goto :show_stdout_stderr

:check_pip
%PYTHON% -mpip --help >tmp/stdout.txt 2>tmp/stderr.txt
if %ERRORLEVEL% == 0 goto :start_venv
if "%PIP_INSTALLER_LOCATION%" == "" goto :show_stdout_stderr
%PYTHON% "%PIP_INSTALLER_LOCATION%" >tmp/stdout.txt 2>tmp/stderr.txt
if %ERRORLEVEL% == 0 goto :start_venv
echo Couldn't install pip
goto :show_stdout_stderr

:start_venv
if ["%VENV_DIR%"] == ["-"] goto :skip_venv
if ["%SKIP_VENV%"] == ["1"] goto :skip_venv

dir "%VENV_DIR%\Scripts\Python.exe" >tmp/stdout.txt 2>tmp/stderr.txt
if %ERRORLEVEL% == 0 goto :activate_venv

for /f "delims=" %%i in ('CALL %PYTHON% -c "import sys; print(sys.executable)"') do set PYTHON_FULLNAME="%%i"
echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME%
%PYTHON_FULLNAME% -m venv "%VENV_DIR%" >tmp/stdout.txt 2>tmp/stderr.txt
if %ERRORLEVEL% == 0 goto :activate_venv
echo Unable to create venv in directory "%VENV_DIR%"
goto :show_stdout_stderr

:activate_venv
set PYTHON="%VENV_DIR%\Scripts\Python.exe"
echo venv %PYTHON%

:skip_venv
if [%ACCELERATE%] == ["True"] goto :accelerate
goto :launch

:accelerate
echo Checking for accelerate
set ACCELERATE="%VENV_DIR%\Scripts\accelerate.exe"
if EXIST %ACCELERATE% goto :accelerate_launch

:launch
%PYTHON% launch.py %*
pause
exit /b

:accelerate_launch
echo Accelerating
%ACCELERATE% launch --num_cpu_threads_per_process=6 launch.py
pause
exit /b

:show_stdout_stderr

echo.
echo exit code: %errorlevel%

for /f %%i in ("tmp\stdout.txt") do set size=%%~zi
if %size% equ 0 goto :show_stderr
echo.
echo stdout:
type tmp\stdout.txt

:show_stderr
for /f %%i in ("tmp\stderr.txt") do set size=%%~zi
if %size% equ 0 goto :show_stderr
echo.
echo stderr:
type tmp\stderr.txt

:endofscript

echo.
echo Launch unsuccessful. Exiting.
pause

解决 No module named 'pip' -2023/05/02

    from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip' 

重新创环境-2023/05/02

  • conda create --name AIDeploy python=3.10.6
  • conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch
  • pip install requirements.txt
    • requirements.txt 指的是 SDWebUI 源码里的。
  • 没用。

环境复制-2023/05/02

  • 可以直接运行 webui-user.bat,让它自动下载。
    • 但我没流量了,给这几次创环境给搞的剩7G,手机热点速度贼慢。
  • 我把我刚创的给 ChatGLM 用的环境复制过来了,命名成 venv
  • 能用,但安包安一半就报错。

版权声明:
作者:MWHLS
链接:https://panwj.top/4543.html
来源:无镣之涯
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>