🎨

Stable Diffusion WebUI Forge を AWS の EC2 でサクッと立ち上げる

2024/02/19に公開

はじめに

Stable Diffusion といえば、AUTOMATIC1111 氏が開発した Stable Diffusion Web UI が有名ですが、その改良版である Syable Diffusion WebUI Forge がリリースされましたね。

https://github.com/lllyasviel/stable-diffusion-webui-forge

開発者は ControlNet 等で有名な lllyasviel 氏です。どう改良されているのか、について詳しくは上記 Github に書かれていますが、簡単に言うと「少ない VRAM でより高速に画像生成ができるよ!」という感じです。

実際に、EC2 の g5.xlarge インスタンスで動作させてみると、Plain な WebUI に比べて 1.5~2倍ぐらい生成が速くなっている気がします(私のガバガバな体感ベースです)

ということで、AWS の EC2 上にサクッと Stable Diffusion WebUI Forge を構築していきましょう。

CloudFormation でリソースを作成する

サクッと構築するために CloudFormation を用意しています。
以下の Github リポジトリにアクセスし、sd-webui-stack.yml をダウンロードします。
https://github.com/kobayasd/sd-webui-forge-on-ec2

CloudFormation にテンプレートを読み込ませる

EC2 の GPU インスタンスの料金はリージョンによって異なります。今回は GPU インスタンスが安価に利用できるバージニア北部(us-east-1)にリソースを作っていきます。

マネジメントコンソールから、CloudFormation のページを開き、リージョンが バージニア北部 になっていることを確認してください。以下のリンクからアクセスしてもOKです。
https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1

スタック画面にて、スタックの作成 -> 新しいリソースを使用 を押します。

以下の画像のとおり選択し、Gitub からダウンロードした sd-webui-stack.yml をアップロードします。準備ができたら 次へ を押します。

スタックのパラメータを設定する

以下はスタックのパラメータの説明です。
スタック名のみ入力していただければ、デフォルトでも構いません。

スタック名

  • 任意の名前を入力します

AccessCidrIp

  • EC2インスタンスにアクセスできる CIDR を定義します。
  • 自宅のIPアドレスや、会社のグローバルIPなどを設定することで、外部からのアクセスを防ぐことが可能です。

Ec2ImageId

  • 利用する AMI の ID を入力します
  • デフォルトでは、バージニア北部リージョンのDeep Learning AMI GPU PyTorch 1.13.1 (Ubuntu 20.04) 20230510 の ID になっています

Ec2InstanceType

  • EC2 のインスタンスタイプを設定します
  • サクサク画像生成をしたい場合は g5.xlarge を選んでください。
Instance Type On-Demand Price per Hour
g4dn.xlarge $0.526
g4dn.2xlarge $0.752
g5.xlarge $1.006

GradioPassword / GradioUsername

  • SD WebUI にアクセスする際の認証情報を設定します
  • 任意のユーザー名、パスワードを設定しましょう

SubnetAZ

  • EC2インスタンスを起動するサブネットを選択します
  • デフォルトのままで問題ありません

入力できたら 次へ を押します。

オプションの設定画面が表示されるので、スクロールして 次へ を押します。

確認画面が表示されるので、スクロールして 送信 を押します。

リソースの構築を確認する

CloudFormation の画面に戻り、リソースの構築が行われます。
CREATE_COMPLETE と表示されたらリソースの作成は完了です。

出力 タブでは、作成された EC2 インスタンス関連のリソース情報を確認できます。WebUIUrl の URL を使って、ブラウザから SD-WebUI にアクセスすることが可能です。

20分ほど待って上記 URL にアクセスしても、SD WebUI のログイン画面が表示されない場合は、以下の手順で起動状況を確認しましょう。

実行中のインスタンス一覧を確認する

マネジメントコンソールの EC2 の画面から、実行中のインスタンス一覧を確認します。以下の URL にアクセスしても OK です。
https://us-east-1.console.aws.amazon.com/ec2/home?region=us-east-1#Instances:instanceState=running

起動中のインスタンスに接続してログを確認する

起動している sd-web-ui-cf インスタンスにチェックを入れて、接続 を押します

EC2 Instance Connect を選択し、接続 を押します。

これで起動中の EC2 インスタンスに接続することができました。

ホームディレクトリ直下に sd-webui-log.txt というファイルがあり、SD-WebUI のログが吐かれているので中身を見て見ましょう。

tail -f sd-webui-log.txt

Running on local URL: http://0.0.0.0:7860 というログが出ていれば起動完了です。

Launching Web UI with arguments: --xformers --listen --enable-insecure-extension-access --gradio-auth admin:password --gradio-queue
Style database not found: /home/ubuntu/stable-diffusion-webui-forge/stable-diffusion-webui/styles.csv
Loading weights [6ce0161689] from /home/ubuntu/stable-diffusion-webui-forge/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors
Running on local URL:  http://0.0.0.0:7860

To create a public link, set `share=True` in `launch()`.

しばらく待っても動かない場合は、以下のコマンドで SD-WebUI を再起動してみましょう。

sudo systemctl restart sd-webui

起動が完了したら、ログインに進みます

SD-WebUI にログインする

http://{パブリックIP}:7860 を開くと、ログイン画面が表示されます。
CloudFormation 実行時に入力した username と password を入力してログインしましょう。

SD WebUI の画面が表示されれば設定は完了です!
めくるめく画像生成ワールドへようこそ!

おわりに

CloudFormation を利用することで、サクッと EC2 上に Stable Diffusion Web UI Forge 環境を構築することができました。

応用編として以下のような記事も書いているので、ぜひ試してみてください!
https://zenn.dev/kobayasd/articles/8511afa5f5c70e

Discussion