0
1

More than 1 year has passed since last update.

Stable Diffusion web UIにブレークポイントを設定してデバッグする

Last updated at Posted at 2023-03-13

本記事では、Windows上で動作するStable Diffusion web UIをVSCodeでデバッグする方法を紹介します。

前提条件

この手順では、Stable Diffusion web UIが既にインストールされており、webui-user.batで動作済みであること、VSCodeでvenv環境を利用できることを前提とします。

  • Stable Diffusion web UIのインストール方法はこちらが参考になります。
  • 初期設定ではこのシステムではスクリプトの実行が無効になっているため、ファイル ~ を読み込むことができませんといったエラーが発生しVSCodeでvenv環境を利用できない可能性がありますが、こちらを参考に解決できます。リンク先の解決法その2を実行済みであるとします。

上記のインストール状態まで実行してStable Diffusion web UIのフォルダをVSCodeで立ち上げると、以下のようにvenvの仮想環境が立ち上がっています。

1.jpg

batファイルに変更がない場合

初期状態からwebui.batwebui-user.batなどの起動時に読み込むバッチファイルを特に変更していない場合、以下の手順でブレークポイントを設定できます。

  1. launch.jsonファイルを作成します。
    a. VSCodeの左側にある実行とデバッグボタンをクリックします。
    b. 実行とデバッグペインでlaunch.jsonファイルを作成しますをクリックします。
    c. デバッガーの選択Pythonを選択します。
    d. デバッグ構成を選択するPythonファイルを選択します。

    ここまで実行すると、以下のようなファイルができます。
    2.jpg

  2. configurationsの下のリストの内容を一部編集します。
    a. name: デバッグ用の任意の名前を設定します。ここではdebug_webuiとします。
    b. program:launch.pyに変更します。

これだけでOKです。結果的にlaunch.jsonは以下のようになります。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug_webui",
            "type": "python",
            "request": "launch",
            "program": "launch.py",
            "console": "integratedTerminal",
            "justMyCode": true,
        }
    ],
}

試しに、launch.pyのprepare_environment()関数の中でブレークポイントを設定してみます。

3.jpg

デバッグを実行するには、左側ペインの実行とデバッグボタンを押し、launch.jsonで設定した名前で登録されている項目を選択して▷ボタンを押します。

4.jpg
ブレークポイントで動作が止まっています。カーソルを合わせれば途中の変数に何が入っているかを確認することもできます。

batファイルを変更している場合

webui.batwebui-user.bat を変更し環境変数を設定しているときは、少し修正が必要です。

仮にwebui-user.batが以下のような状態であると仮定します。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS="--medvram --opt-split-attention"

call webui.bat

COMMANDLINE_ARGSの行がデフォルト状態から変わっています。

この場合、バッチファイルで環境変数を設定しているので、launch.jsonでも同様に環境変数を設定してやる必要があります。次のように編集しましょう。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug_webui",
            "type": "python",
            "request": "launch",
            "program": "launch.py",
            "console": "integratedTerminal",
            "justMyCode": true,
            "env":{
                "COMMANDLINE_ARGS":"--medvram --opt-split-attention"
            }
        }
    ],
}

envの設定が編集されていることを確認してください。

デバッグの実行方法は先と同じです。
実行すると起動時にスクリプトの画面出力から環境変数が設定されていることが確認できます。

5.jpg

webui.batwebui-user.batで他に環境変数を設定している場合は、それぞれenvに追加する必要があります。
スクリプト内での環境変数の読み込みはlaunch.pyスクリプトでos.environ.get()関数で行っているため確認してみてもいいでしょう。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1