これは、EC2 インスタンス上で AUTOMATIC1111/stable-diffusion-webui の最新バージョンを起動するためのサンプルの CloudFormation テンプレートです。いくつかのバリエーションでは、モデルのトレーニングに bmaltais/kohya_ss、GUI ベースのファイル操作に filebrowser/filebrowser が含まれています。
次の4つの CloudFormation テンプレートがあります:
Launch Stack | Cfn Template | Description |
---|---|---|
sd-webui.yaml | パブリックにアクセス可能 (一部の機能はセキュリティ上の理由から無効化されています) | |
sd-webui-private.yaml | SSM セッションマネージャーポートフォワーディングを介してプライベートにアクセス可能。filebrowser/filebrowser を使用してファイルにアクセスできます。 | |
sd-webui-kohya-private.yaml | bmaltais/kohya_ss がインストールされた状態で、SSM セッションマネージャーポートフォワーディングを介してプライベートにアクセス可能。filebrowser/filebrowser を使用してファイルにアクセスできます。 | |
sd-webui-kohya-private-s3.yaml | bmaltais/kohya_ss がインストールされた状態で、SSM セッションマネージャーポートフォワーディングを介してプライベートにアクセス可能。ファイルをクラウド上に保持するために S3 がマウントされます。filebrowser/filebrowser を使用してファイルにアクセスできます。 |
※ Cloud Formation とは、アプリケーションに関連する様々な AWS のリソースを一度に構築できる仕組みです。AWSで環境を構築した際、リソースの消し忘れで課金がされてしまったことはないでしょうか? Cloud Formation を使用すると必要なリソースをまとめて作成しまとめて消すことができます。
本ページの Cloud Formation は、基本的に EC2 インスタンスを立ててそこにアプリケーションを配置し、外部からアクセスできるようにします。 EC2インスタンスを立てる場所を決めるために、 VPC とサブネットの指定が必要です。作成方法やそもそも意味がわからない方は、 [初心者向け]VPC作成からEC2インスタンス起動までを構成図見ながらやってみる(その1) の解説が丁寧であるため参照してください。
EC2 インスタンスとして GPU が搭載された G 系のインスタンスを使用します。ただ、デフォルトでは立ち上げられる数が制限されており Cloud Formation の実行がエラーになることがあります。そのため、事前に 引き上げのリクエスト を参照し制限を引き上げてください。設定値はインスタンスの数ではなく vCPU の数になっており、 sd-webui
で使用する g4dn.xlarge
の vCPU 数は 4 です。そのため最低4、さらに 2xlarge
を使用する場合は 8 とxlarge
の前の数をかけて数を申請してください。なお、vCPUの数は次世代の g5.xlarge
でも 4 です。申請の承認に数十分程度かかるので、Running On-Demand G and VT instances からまず申請だけしておくのを推奨します。"On-Demand" とある通り、スポットインスタンスを使う場合の申請と別れています。
のボタンを押すと、 Cloud Formation が実行できます。エラーになってしまった場合は、AWS コンソール上で Cloud Formation > Stacks と選択しエラーになったスタックを削除してください。削除した後、制限が足りないなどの原因を解消した後再度ボタンを押し実行してみてください。
起動ができた後の料金について記載しておきます。 g4dn.xlarge の場合、0.526 USD / hour = 約75円/hour となります。最新の価格はリンク先の価格表で確認してください。なお、1日4時間までであれば無料で GPU インスタンスが利用できる SageMaker Studio Lab でのStable Diffusion Web UI の実装 もあります。1日4時間以上利用する/安定的に運用するケースではこちらの CloudFormation Template をお使いください。
- コンソールからテンプレートを起動するか、次のコマンドを使用します :
aws cloudformation create-stack --stack-name sd-webui-stack --template-body file://sd-webui.yaml --region us-east-1 --parameters ParameterKey=SubnetId,ParameterValue=<SubnetId> ParameterKey=VpcId,ParameterValue=<VpcId>
- アプリケーションの起動には 10 分程度かかります。
<public ip address>:7860
を開きます。
前提条件:
- インストールされていない場合は、ドキュメント に従ってセッションマネージャープラグインをインストールします。
- コンソールからテンプレートを起動するか、次のコマンドを使用します :
aws cloudformation create-stack --stack-name sd-webui-stack --template-body file://sd-webui-private.yaml --region us-east-1 --parameters ParameterKey=SubnetId,ParameterValue=<SubnetId>
- アプリケーションの起動には 10 分程度かかります。
./port-forwarding.sh <instance_id> <region> 7860 8080
を使用してポートフォワーディングを実行します。- 安定した拡散 Web UI には
localhost:7860
を開きます。ファイルブラウザにはlocalhost:8080
を開きます。
SSM セッションマネージャーの詳細な制御については、ドキュメント を参照して、特定のユーザーの特定のインスタンスへのアクセスを制限してください。
- コンソールからテンプレートを起動するか、次のコマンドを使用します :
aws cloudformation create-stack --stack-name sd-webui-stack --template-body file://sd-webui-kohya-private.yaml --region us-east-1 --parameters ParameterKey=SubnetId,ParameterValue=<SubnetId>
./port-forwarding.sh <instance_id> <region> 7860 7861 8080
を使用してポートフォワーディングを実行します。- Stable Diffusion Web UI には
localhost:7860
を開きます。Kohya-ss にはlocalhost:7861
を開きます。ファイルブラウザにはlocalhost:8080
を開きます。
- コンソールからテンプレートを起動するか、次のコマンドを使用します :
aws cloudformation create-stack --stack-name sd-webui-stack --template-body file://sd-webui-kohya-private-s3.yaml --region us-east-1 --parameters ParameterKey=EC2InstanceProfileName,ParameterValue=<InstanceProfile> ParameterKey=S3BucketName,ParameterValue=<Bucket> ParameterKey=SubnetId,ParameterValue=<SubnetId>
./port-forwarding.sh <instance_id> <region> 7860 7861 8080
を使用してポートフォワーディングを実行します。- Stable Diffusion Web UI には
localhost:7860
を開きます。Kohya-ss にはlocalhost:7861
を開きます。ファイルブラウザにはlocalhost:8080
を開きます。
- ポート 8080 にアクセスします。
- デフォルトのユーザー名とパスワード
admin/admin
を入力します。 /home/ubuntu
はデフォルトでfiles
にマップされています(例 :/files/s3
=/home/ubuntu/s3
)。
- ポート 7861 にアクセスします。
- Filebrowser を使用して画像をアップロードします。
- ユーティリティタブから画像のための CLIP を生成します。
- トレーニングを開始します。トレーニングログには
kohya-log.txt
をチェックしてください。 - モデルファイルをダウンロードし、
~/stable-diffusion-webui/models/Lora
に移動して使用します。 - 詳細な手順については、bmaltais/kohya_ss を参照してください。
使用しない場合は、インスタンスを停止することができます。EC2 インスタンスが再起動すると、アプリケーションが自動的に起動されます。
以下のコマンドを使用してインスタンスを起動/停止できます。
aws ec2 stop-instances --region <region> --instance-ids <instance-id>
aws ec2 start-instances --region <region> --instance-ids <instance-id>
拡張機能を追加するには、UI またはコマンドラインのいずれかを使用できます。
SSM セッションマネージャーを使用してコマンドラインで操作する場合:
- サーバーにアクセスします :
aws ssm start-session --region <region> --target <instance_id>
ssm-user
は、SSM セッションマネージャーを使用する場合のデフォルトのユーザーです。例えば、sudo su ubuntu
でユーザーを変更できます。- 手動で拡張機能をインストールします。
- サーバにアクセスできない
- VPC Reachability Analyzerで到達可能性を確認する
- ポート7860がブロックされている場合は、VPNをオフにしてください。
- ログを見る
- 1.コンソールから SSM Session Manager でインスタンスにログインするか、
aws ssm start-session --region <region> --target <instance_id>
コマンドを実行する。 -
tail /var/log/cloud-init-output.log
でユーザーデータの実行ログを見る。
-
- Stable Diffusion Web UI のログを
tail /home/ubuntu/sd-webui-log.txt
で表示する。
- Stable Diffusion Web UI のログを
-
- Kohya SS のログを
tail /home/ubuntu/kohya-log.txt
で表示する。
- Kohya SS のログを
- 1.コンソールから SSM Session Manager でインスタンスにログインするか、
- SSMセッションマネージャでサーバにアクセスできない
- SSMセッションマネージャのガイドに従って、セッションマネージャを有効にしてください。
- リージョンレベルの設定は Fleet Managerから選ぶと簡単です。
- UI から拡張機能をインストールできない (Error: AssertionError: extension access disabled because of command line flags)
- トレーニング時の CUDA out of memory。
- Stable Diffusion Web UIを停止すると、GPUメモリが節約される場合があります。
nvidia-smi
でGPUメモリを消費しているpidを確認し、kill -9 <pid>
で停止してください。 - あるいは、より大きなインスタンスでcloudformationテンプレートを起動することもできます。
- Stable Diffusion Web UIを停止すると、GPUメモリが節約される場合があります。
- kohya_ss の train / caption をクリックしても何も起こらない。
- kohya_ssのUIフィードバックはありません。ログは
kohya-log.txt
を参照してください。ファイルブラウザからアクセスしてください。
- kohya_ssのUIフィードバックはありません。ログは
- インスタンス起動時の容量不足
- AMIをサポートする別のインスタンスタイプか、別のリージョンを試してください。
このプロジェクトの CloudFormation テンプレートは、以下のソフトウェアを使用しています。
- AUTOMATIC1111/stable-diffusion-webui: GNU Affero General Public License v3.0
- bmaltais/kohya_ss: Apache License 2.0
- filebrowser/filebrowser: Apache License 2.0
お好みのモデルを選択することもできますが、stable-diffusion-webui はデフォルトで以下のモデルをダウンロードします。