个人Blog · 2024年2月9日 0

Stable Diffusion WebUI系列 | 命令行脚本参数

Stable Diffusion WebUI安装的文件夹有启动主程序的脚本(script),称为启动脚本。Linux/macOS的环境变量与启动脚本参数是写在webui-user.sh,接著使用者以终端机执行webui.sh,它会读取webui-user.sh里面写的变数与设定值,將其传给launch.py,然后启动WebUI。Windows也是类似,不过环境变量与启动脚本参数是写在webui-user.bat批处理文件,然后使用者以终端机执行此批处理文件即会启动主程式。因此要修改启动参数,您应该改的是webui-user.sh,而不是webui.sh

1. 环境变量与命令行参数的设定方法

  • Linux/macOS:编辑webui-user.sh,填入export 变数=数值
  • Windows:编辑webui-user.bat,填入set 变数=数值

例如,Windows对webui-user.bat按右键以记事本编辑,加入这行命令列引数:

set COMMANDLINE_ARGS=--xformers --no-half-vae --medvram

2. 环境变量

可在启动脚本使用这些环境变量(environment variables):

名称说明
PYTHON设定Python执行文件路径。
VENV_DIR设定Python虚拟环境的路径。预设值为venv。该值为-时则不建立虚拟环境,直接执行Python程序。
COMMANDLINE_ARGS主程式的额外命令行参数。
IGNORE_CMD_ARGS_ERRORS设定为任意值,使程序遇到未知的命令行参数退出时不显示错误
REQS_FILE启动launch.py安装依赖套件使用的requirements.txt文件名。预设值为requirements_versions.txt
TORCH_COMMAND安装PyTorch的指令
INDEX_URLpip的--index-url参数
TRANSFORMERS_CACHETransformer函式库下载的路径,以及CLIP模型相关文件的路径。
CUDA_VISIBLE_DEVICES如果电脑有多个GPU,使用此引数选取要使用的GPU,例如set CUDA_VISIBLE_DEVICES=0
SD_WEBUI_LOG_LEVEL输出日志格式。有效值为Pyhton內建的logging模组数值。预设为INFO
SD_WEBUI_CACHE_FILE缓存文件路径,预设值为根目录下的cache.json
SD_WEBUI_RESTAR由启动脚本(webui.shwebui.bat)设定的值,告诉WebUI可以使用重启功能。
SD_WEBUI_RESTARTING检测WebUI是否正在重启或重新载入的內部数值,可以用来关闭自动开启浏览器的功能。设为1即不要自动开启浏览器。设为0的话,即使WebUI正在重启也自动开启浏览器。
环境变量

3. 命令行参数

命令行参数(command line arguments)为启动WebUI时使用的选项,写在启动脚本的COMMANDLINE_ARGS=后面。

注意下面命令行参数是二条横线「- -」

引数指令数值预设值说明
设定值
-h, –helpNoneFalse显示此帮助讯息並退出。
–exit安装后终止程式。
–data-dirDATA_DIR./使用者资料储存的路径。
–configCONFIGconfigs/stable-diffusion/v1-inference.yaml建构模型设定档的路径。
–ckptCKPTmodel.ckptStable Diffusion模型的存档点模型路径。一旦指定,该模型会加入至存档点模型列表並载入。
–ckpt-dirCKPT_DIRNone存放Stable Diffusion模型存档点模型的路径。
–no-download-sd-modelNoneFalse即使找不到模型,也不自动下载SD1.5模型。
–vae-dirVAE_PATHNoneVAE的路径。
–gfpgan-dirGFPGAN_DIRGFPGAN/GFPGAN路径
–gfpgan-modelGFPGAN_MODELGFPGAN模型档名
–codeformer-models-pathCODEFORMER_MODELS_PATHmodels/Codeformer/Codeformer模型档的路径。
–gfpgan-models-pathGFPGAN_MODELS_PATHmodels/GFPGANGFPGAN模型档的路径。
–esrgan-models-pathESRGAN_MODELS_PATHmodels/ESRGANESRGAN模型档的路径。
–bsrgan-models-pathBSRGAN_MODELS_PATHmodels/BSRGANBSRGAN模型档的路径。
–realesrgan-models-pathREALESRGAN_MODELS_PATHmodels/RealESRGANRealESRGAN模型档的路径。
–scunet-models-pathSCUNET_MODELS_PATHmodels/ScuNETScuNET模型档的路径。
–swinir-models-pathSWINIR_MODELS_PATHmodels/SwinIRSwinIR和SwinIR v2模型档的路径。
–ldsr-models-pathLDSR_MODELS_PATHmodels/LDSR含有LDSR模型档的路径。
–lora-dirLORA_DIRmodels/Lora含有LoRA模型档的路径。
–clip-models-pathCLIP_MODELS_PATHNone含有CLIP模型档的路径。
–embeddings-dirEMBEDDINGS_DIRembeddings/Textual inversion的embeddings路径 (预设: embeddings)
–textual-inversion-templates-dirTEXTUAL_INVERSION_TEMPLATES_DIRtextual_inversion_templatesTextual inversion范本的路径
–hypernetwork-dirHYPERNETWORK_DIRmodels/hypernetworks/Hypernetwork路径
–localizations-dirLOCALIZATIONS_DIRlocalizations/在地化翻译路径
–styles-fileSTYLES_FILEstyles.csv风格档名
–ui-config-fileUI_CONFIG_FILEui-config.jsonUI设定档档名
–no-progressbar-hidingNoneFalse取消隱藏Gradio UI的进度条 (我们之所以將其隱藏,是因为在瀏览器启动硬体加速的状况下,进度条会降低机器学习的效能)
–max-batch-countMAX_BATCH_COUNT16UI的最大批次数值
–ui-settings-fileUI_SETTINGS_FILEconfig.jsonUI设定值画面的档名
–allow-codeNoneFalse允许在WebUI执行自订指令稿
–shareNoneFalse使用此引数在启动后会產生Gradio网址,使WebUI能从外部网路存取
–listenNoneFalse以0.0.0.0主机名称启动Gradio,使其能回应连线请求
–portPORT7860以给定的通讯埠启动Gradio。1024以下的通讯埠需要root权限。如果可用的话,预设使用7860通讯埠。
–hide-ui-dir-configNoneFalse在WebUI隱藏设定档目录。
–freeze-settingsNoneFalse停用编辑设定。
–enable-insecure-extension-accessNoneFalse无视其他选项,强制启用扩充功能页籤。
–gradio-debugNoneFalse使用 –debug选项启动Gradio
–gradio-authGRADIO_AUTHNone设定Gardio授权,例如”username:password”,或是逗號分隔值形式”u1:p1,u2:p2,u3:p3″
–gradio-auth-pathGRADIO_AUTH_PATHNone设定Gardio授权档案路径。 例如 “/路径/” 再加上--gradio-auth的格式。
–disable-console-progressbarsNoneFalse不在终端机显示进度条。
–enable-console-promptsNoneFalse在使用文生图和图生图的时候,於终端机印出提示词
–apiNoneFalse以API模式启动WebUI
–api-authAPI_AUTHNone设定API授权,例如”username:password”,或是逗號分隔值形式”u1:p1,u2:p2,u3:p3″
–api-logNoneFalse启用所有API请求的纪录档
–nowebuiNoneFalse仅启动API, 不启动WebUI
–ui-debug-modeNoneFalse不载入模型,以更快启动WebUI
–device-idDEVICE_IDNone选择要使用的CUDA装置 (例如在启动指令稿使用export CUDA_VISIBLE_DEVICES=0或1)
–administratorNoneFalse使用系统管理员权限
–cors-allow-originsCORS_ALLOW_ORIGINSNone允许跨来源资源共用,列表以逗號分隔,不可有空格
–cors-allow-origins-regexCORS_ALLOW_ORIGINS_REGEXNone允许跨来源资源共用,后面加上单一正规表达式
–tls-keyfileTLS_KEYFILENone部份启用TLS,,需要配合–tls-certfile才能正常运作
–tls-certfileTLS_CERTFILENone部份启用TLS,需要配合–tls-keyfile才能正常运作
–server-nameSERVER_NAMENone设定伺服器主机名称
–skip-version-checkNoneFalse不检查torch和xformers的版本
–no-hashingNoneFalse停用计算存档点模型的sha256杂凑值,加快载入速度
–skip-version-checkNoneFalse不检查torch与xformers版本。
–skip-version-checkNoneFalse不检查Python版本。
–skip-torch-cuda-testNoneFalse不检查CUDA是否正常运作。
–skip-installNoneFalse跳过安装套件。
–loglevelNoneNone日誌纪录等级,有效值为CRITICAL, ERROR, WARNING, INFO, DEBUG
–log-startupNoneFalse在启动程式时输出launch.py的详细执行內容。
–api-server-stopNoneFalse允许透过API通讯停止/重启/强制停止主程式。
–timeout-keep-aliveint30设定uvicorn的timeout_keep_alive数值。
性能相关
–xformersNoneFalse给cross attention layers启用xformers
–reinstall-xformersNoneFalse强制重装xformers,升级时很有用。但为避免不断重装,升级后將会移除。
–force-enable-xformersNoneFalse强制给cross attention layers启用xformers 此选项无法运作的话请勿回报bug
–xformers-flash-attentionNoneFalse给xformers启用Flash Attention,提昇再现能力 (仅支援SD2.x或以此为基础的模型)
–opt-split-attentionNoneFalse强制启用Doggettx的cross-attention layer最佳化。有CUDA的系统预设启用此选项。
–opt-split-attention-invokeaiNoneFalse强制启用InvokeAI的cross-attention layer最佳化。无CUDA的系统预设启用此选项。
–opt-split-attention-v1NoneFalse启用旧版的split attention最佳化,防止佔用全部可用的VRAM,
–opt-sub-quad-attentionNoneFalse启用增进记忆体效率的sub-quadratic cross-attention layer最佳化
–sub-quad-q-chunk-sizeSUB_QUAD_Q_CHUNK_SIZE1024sub-quadratic cross-attention layer最佳化使用的序列化区块大小
–sub-quad-kv-chunk-sizeSUB_QUAD_KV_CHUNK_SIZENonesub-quadratic cross-attention layer最佳化使用的kv区块大小
–sub-quad-chunk-thresholdSUB_QUAD_CHUNK_THRESHOLDNonesub-quadratic cross-attention layer最佳化过程中,区块化使用的VRAM閾值
–opt-channelslastNoneFalse启用4d tensors使用的alternative layout,或许可以加快推理速度 仅適用搭载Tensor核心的Nvidia显示卡(16xx系列以上)
–disable-opt-split-attentionNoneFalse强制停用cross-attention layer的最佳化
–disable-nan-checkNoneFalse不检查生成图像/潜在空间是否有nan。在CI模式无使用存档点模型的时候很有用。
–use-cpu{all, sd, interrogate, gfpgan, bsrgan, esrgan, scunet, codeformer}None让部份模块使用CPU作为PyTorch的装置
–no-halfNoneFalse不將模型转换为半精度浮点数
–precision{full,autocast}autocast使用此精度评估
–no-half-vaeNoneFalse不將VAE模型转换为半精度浮点数
–upcast-samplingNoneFalse向上取样。搭配 –no-half使用则无效。生成的结果与使用–no-half引数相近,效率更高,使用更少记忆体。
–medvramNoneFalse启用Stable Diffusion模型最佳化,牺牲速度,换取较小的VRAM佔用。
–lowvramNoneFalse启用Stable Diffusion模型最佳化,大幅牺牲速度,换取更小的VRAM佔用。
–lowramNoneFalse將Stable Diffusion存档点模型的权重载入至VRAM,而非RAM
–disable-model-loading-ram-optimizationNoneFalse停用模型载入时降低RAM佔用的优化。
功能
–autolaunchNoneFalse启动WebUI后自动开启系统预设的瀏览器
–themeNoneUnset使用指定主题启动WebUI (light或dark),无指定则使用瀏览器预设主题。
–use-textbox-seedNoneFalse在WebUI的种子栏位使用textbox (没有上下,但可以输入长的种子码)
–disable-safe-unpickleNoneFalse不检查PyTorch模型是否有恶意程式码
–ngrokNGROKNoneNgrok授权权杖, –share引数的替代品。
–ngrok-regionNGROK_REGIONus选择启动Ngrok的区域
–update-checkNoneNone启动时检查有无新版本。
–update-all-extensionsNoneNone在启动WebUI的时候自动更新所有扩充功能。
–reinstall-xformersNoneFalse强制重新安装xformers,適用於更新程式之后执行。更新完之后记得移除此引数。
–reinstall-torchNoneFalse强制重新安装touch,適用於更新程式之后执行。更新完之后记得移除此引数。
–testsTESTSFalse执行功能测试,確认WebUI正常运作。
–no-testsNoneFalse即使有--test引数也不要执行功能测试。
–dump-sysinfoNoneFalse倾印系统讯息並退出程式(不包括扩充功能)
–disable-all-extensionsNoneFalse停用所有扩充功能,包含內建的扩充功能。
–disable-extra-extensionsNoneFalse停用所有扩充功能。
已经无效的选项
–show-negative-promptNoneFalse无作用
–deepdanbooruNoneFalse无作用
–unload-gfpganNoneFalse无作用
–gradio-img2img-toolGRADIO_IMG2IMG_TOOLNone无作用
–gradio-inpaint-toolGRADIO_INPAINT_TOOLNone无作用
–gradio-queueNoneFalse无作用
–add-stop-routeNoneFalse无作用
–always-batch-cond-uncondNoneFalse无作用
命令行参数