「webui-user.bat」を編集する

Last-modified: 2024-02-26 (月) 22:57:43

webui-user.batは起動時に使う実行ファイルです。
これを編集しコマンドライン引数を指定することにより
便利なオプションを付加できます。

編集方法

1.webui-user.bat を開く

 webui-user.bat をテキストエディタで開きます(※)。
 ダブルクリックじゃないよ。編集するために開くんだよ。
 ※右クリック→「編集」、またはメモ帳で開く。

   stable diffusionのフォルダ
  └webui
       ├ webui-user.bat  ←これ。
        └ webui.bat    ←こっちじゃない。

2.webui-user.bat を編集&保存

  • 下記が初期設定です。この中の set COMMANDLINE_ARGS= に引数(オプション)を追記していきます。
    ※アップデートによって初期設定が変更になる可能性有り。
  • 編集の際は「webui-user.bat」のバックアップを残しておきましょう。
@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=

call webui.bat
 
  • 2つ以上の引数を記述する時は、下記のようにスペースで区切ってください。
set COMMANDLINE_ARGS=--autolaunch --xformers
//autolanuchは一例です。
  • 見やすくしたい場合は、引数の間に「スペース+^」を追加します。
set COMMANDLINE_ARGS= ^
  --autolaunch ^
  --xformers

「スペース+^」は次の行に継続するandを表す、batファイル作成のルールです。
最後の行には「スペース+^」は付けないでください。

3.stable diffusionを起動

上記webui-user.batの設定は、stable diffusionを起動時にはじめて有効になります。

オプション

 
  • 代表的な引数は、下表の通り。
    分類オプション名機能
    生成系--xformers画像生成速度の大幅な向上と使用VRAM量の大幅削減に寄与する。
    詳しくはXformersを導入するに掲載
    --no-half-vaeVAEモデルをfp16で使用しないようにする。黒画像発生率低減の効果が期待できる。
     (関連) エラー解決メモ#A tensor with all NaNs was produced in VAE.
    ただしVAEの処理をfp32で行うようになるので、VRAM使用量が少し増す
    --disable-nan-check黒画像生成時の警告処理をスキップする。
    いわゆるNaNエラーで止まっちゃうのを回避する。
    黒画像自体が生成されなくなるわけではない。
    しかし出現率が低いなら、これの利用をもって解決という扱いにすることをおすすめする
    --lowvramGPU↔CPU間でモジュールを転送する*1。特にVRAM不足時に積極的にメインメモリへ移動する。
    --medvramlowvramと基本機能は同じで、必要なモジュールを厳選して転送しVRAMを活用する*2
    --medvram-sdxlSDXL系列モデルに対してのみ、medvramと同じ処理を行う。
    生成結果は変わらない
    --opt-channelslastnVIDIA社のTensorコアを積んでるグラボではさらなる高速化を図れる。
    具体的には16xxや20xx以上のグラボ
    --ckpt-dir追加のモデルフォルダを指定する
    (例)--ckpt-dir "D:\hogehoge\ahoaho"
    --vae-dirだいたい上と同じ
    追加のvaeフォルダを指定する
    (例)--vae-dir "E:\Toshiaki\vae"
    UI系--autolaunch1111起動時にwebuiのブラウザページも自動的に開く。
    v1.6.0以降ではwebui上で設定可能になったため、不要なオプションとなった。
     Settings → System → Automatically open webui in browser on startup
    --theme darkwebuiをダークテーマに変更する。闇属性のとしあきにおすすめ
    http://127.0.0.1:7860/?__theme=dark のURLを利用する手もある
    その他--reinstall-xformersXformerの更新に使用する。
    普段は使用せず、webui起動時に「xformersのバージョンが古いよ」と指摘されたときに使う。
    --reinstall-torchpytorchの更新に使用する。
    普段は使用せず、webui起動時に「torchのバージョンが古いよ」と指摘されたときに使う。
    リモート系--listenLAN内の他端末から操作できるようになる。
    --port xxxx1111のデフォルトではポート7860が使用されているが、それを任意のポート番号に変更する。
    なお1023以下のポートは管理者権限が必要なため、避けるのが望ましい。
    --share危険につき使用厳禁!*3
    参考:https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/2579
    インターネット経由で他端末から操作できるようになる。セキュリティに注意。
    起動時にコマンドコンソール(白黒画面)にアクセス用のURLが表示される。72時間有効。
    --gradio-auth ユーザー名:パスワードアクセス時にユーザー名とパスワードによるログインが必要となるよう設定する。
    (例)--gradio-auth toshiaki:hogehoge
    --enable-insecure-extension-access--listenまたは--shareオプションを利用すると、セキュリティ上の理由から、1111への拡張機能の新規導入ができなくなる。他人が勝手に拡張機能を導入してしまうことを未然に防止するためである。
    これはその安全装置を外して、拡張機能の導入を可能にするオプション。リスクに注意。

VRAM消費量を削減するオプション

下記の方法で、メインメモリを一部使用することでVRAM消費量を低減できる。
モジュールの転送時間分だけ速度が犠牲になる。

VRAM不足(CUDA out of memory)に遭遇しない場合は不要。

VRAM不足になったら、まずは

set COMMANDLINE_ARGS=--medvram

それでも out of memory が出た場合

set COMMANDLINE_ARGS=--medvram --opt-split-attention

まだまだ out of memory が出た場合

set COMMANDLINE_ARGS=--lowvram --always-batch-cond-uncond --opt-split-attention
 
  • ある程度選択的にモジュールを移動するので、
    用途やVRAM容量によっては効果を実感できない場合があります。
  • モジュールを小刻みに分割して転送はしないので、
    VRAMが小さすぎる場合、または巨大なモデルを使用する場合(SDXL等)には対応できなくなりやすい。
    その辺りは妥協が肝心。

SDXLの省VRAM対策オプションについて

  • SDXLはcheckpointだけで6GB程度あるため、SD1.5より多くのVRAMが必要になる。
    上記の--medvram-sdxlはSDXL利用時のみmedvramを有効にするオプションなのでこれを活用すると良い。
    だだしVRAMが十分な場合は出力時間が無駄に増えるだけである
    • としあきの検証例では3060(12GB) SDXL出力 896x1152で最初の1枚目を除いて3~4枚出力してみたところ
      medvram-sdxlありで1枚約30秒、無しで23秒、1枚で7秒、24%程度の差が出た。
  • Optimum SDXL Usage(githubのA1111解説)によると、推奨オプションは
    • 12GB以上 --xformers のみ
    • 8GB(おそらく10GBも) --medvram-sdxl --xformers
    • 4GB --lowvram --xformers
  • ただし12GB以上でもhires等で解像度の高い画像を出力したり、サイズの大きなLoRAを使う場合はVRAMサイズを超える可能性が十分考えられる。
    タスクマネージャーのパフォーマンスタブ>GPU項目で処理中のグラフを見てVRAMの利用状態をチェックした上で判断して欲しい。
  • 起動batを「webui-user_medvram-sdxl.bat」など別名でコピーして--medvram-sdxlを記入し、利用状況で切り替えて使う手もある。

Geforce GTX16XX向け必須オプション

バグでfp16が使えないという報告がある。そのため、fp16を使わないよう下記のオプションを指定する。

set COMMANDLINE_ARGS=--precision full --no-half

VRAM消費量が大幅に増加するので --medvram を併用した方が良いかも。

※関連:GTX16xxユーザー向け

不要になった起動オプション

もっと見る

deepdanbooruを使用する

set COMMANDLINE_ARGS=--deepdanbooru

ちなみに、これ初回起動だいぶ時間かかると思うし、初回に使うときもだいぶ時間かかる ※ダウンロードが入るため
画像の内容からタグやプロンプトを推測して候補を挙げる機能。

現在はInterrogate DeepBooruボタンとして標準機能になっている。

img2imgで色付きペイントをする

set COMMANDLINE_ARGS=--gradio-img2img-tool=color-sketch

img2imgタブ内のimg2img時に使用可能です。
色に関しては様々な方法で指定することが可能です。
別ウィンドウの画像の色をスポイトすることもできます。
マウスでは描きにくいので板タブなどを使ってもよいかも。

現在はimg2imgにsketchタブとして標準機能になっている。


短縮URL

https://wikiwiki.jp/sd_toshiaki/-s/30cd5838

*1 lowvram.pyから引用
*2 詳細はlowvram.pyを参照。
*3 自分のUIが公開されるという危険が認知されていながら、webui公式wikiでは--shareが紹介されているので、初心者向けに注意喚起です。既にとしあきに被害が発生しているので、ちょっと過剰めに「厳禁」と表現しました。2023/8/20時点