概要
ホストPCで起動したStable Diffusionのローカルサーバに、同一ネットワーク上にある端末からアクセスをする方法についての記事です。これによって、複数端末で画像生成を行いたい際にホストPC上で環境構築さえしてしまえば他端末では環境構築の必要なくStable Diffusion web UIを使用することができます。
テスト済みの動作環境
- ホストPC: MacBook Pro (Chip: Apple M2 Max, Memory: 96GB, macOS: Ventura 13.4)
- ゲストPC: Surface Pro (Chip: Intel Core i5, Memory: 8GB, OS: Ubuntu 22.04.2)
本記事でMacOSのパソコンをホストとして設定方法を解説していきます。Windowsではセットアップ方法が異なる点に気をつけてください。
また、ゲストPCにUbuntuの端末を使用していますが、これは特に関係ないので(手元にあっただけ)MacやWindowsで問題ありません。
ホストPCのセットアップ
(前提としてホストPCではStable Diffusion web UIの環境構築が問題なくできているものとします。環境構築がまだの方は先に環境構築を行なってください。)
ローカルIPアドレスの確認
まず、ホストPCのIPアドレスを確認します。ターミナルで
$ ifconfig en0 inet
と実行してください。
ifconfig
はネットワークインタフェースの設定を表示するためのコマンドであり、en0
はイーサネット(≒ wifi)、inet
はIPv4という通信規格における端末の現在のプライベートIPアドレスを示しています。
ローカルIPアドレスは同一ネットワーク上では一意に割り振られており、このアドレスを用いて他端末からホストPCのローカルサーバにアクセスすることができます。
ところで、普段Stable Diffuion web UIを起動した際にアクセスする127.0.0.1
というアドレスはローカルループバックアドレスと呼ばれるものであり、各端末のローカルIPアドレスを返すアドレスとなっています。そのため、ローカルサーバを起動後127.0.0.1:7860
の代わりに192.168.X.X:7860
(Xには自分のローカルIPアドレスの数字を入れる)にアクセスしても同じようにStable Diffusion web UIを使うことができます。
Web UIをサーバー化する
しかし、このままでは192.168.X.X:7860
に他端末からアクセスすることができません。APIサーバとしてネットワーク上でアクセスできるようにするためには、サーバ起動時のオプションに--listen
をつける必要があります。Stable Diffusionでは起動時のオプションはwebui-macos-env.sh
のCOMMANDLINE_ARGS
に記載されているので、この末尾に--listen
オプションを追加してあげましょう。
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate --listen"
この状態でサーバーを起動すると、今までは192.168.X.X:7860
で起動していたStable Diffusion web UIが0.0.0.0:7860
で起動するようになります。これにより、同一ネットワーク上にある別の端末からホストPC上で起動しているStable Diffusion web UIにアクセスできるようになります。アクセスするためには、先ほど使用した192.168.X.X:7860
(IPアドレス+ポート番号)というアドレスを使用します。
注意:複数の端末で同時に画像を生成する場合でもキューは1つなので、生成は順番に行われます。これを防ぐためには別ポートで複数サーバーを立てる必要があります。