2.3. 命令列引數

註:這篇文章僅供參考,本系列教學已經附上預先設定好的指令引數了,照抄即可。

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無作用