Stable Diffusion WebUI Forge を AWS の EC2 でサクッと立ち上げる
はじめに
Stable Diffusion といえば、AUTOMATIC1111 氏が開発した Stable Diffusion Web UI
が有名ですが、その改良版である Syable 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
をダウンロードします。
CloudFormation にテンプレートを読み込ませる
EC2 の GPU インスタンスの料金はリージョンによって異なります。今回は GPU インスタンスが安価に利用できるバージニア北部(us-east-1)にリソースを作っていきます。
マネジメントコンソールから、CloudFormation のページを開き、リージョンが バージニア北部
になっていることを確認してください。以下のリンクからアクセスしてもOKです。
スタック画面にて、スタックの作成 -> 新しいリソースを使用 を押します。
以下の画像のとおり選択し、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 です。
起動中のインスタンスに接続してログを確認する
起動している 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 環境を構築することができました。
応用編として以下のような記事も書いているので、ぜひ試してみてください!
Discussion