Stable Diffusion Web-UI を SageMaker Studio で動かしてみる
Stable Diffusion Web-UI を SageMaker Studio で動かすための備忘録です
事前準備
- Hugging Face のアカウントを準備する
- Ngrok のアカウントを準備する
ngrok のトークンを取得する
- ngrok(エングロック) の公式ページ(https://dashboard.ngrok.com/) からアカウントを登録する
- [Your Authtoken] を押して、表示された Token を控えておく
Hugging Face のアカウントを準備する
- Hugging Face の公式ページ(https://huggingface.co/) からアカウントを登録する
- [Settings] -> [Access Tokens] -> [New token] を押し、トークンを作成し控えておく
SageMaker Studio を起動する
-
SageMaker Studio を開く
-
Studio が開いたら [File] -> [New] -> [Terminal] を押す
Notebook を Clone する
- ShMcK 氏が公開している Notebook を使います
- https://gist.github.com/ShMcK/d14d90abea1437fdc9cfe8ecda864b06
# ./root/SageMaker ディレクトリがハードコーディングされているので、git clone の際にディレクトリ名を指定しています
git clone https://gist.github.com/ShMcK/d14d90abea1437fdc9cfe8ecda864b06 SageMaker
Notebook を開く
-
SageMaker ディレクトリを開き、
StableDiffusionUI_SageMaker.ipynb
をダブルクリックして開きます
-
Notebook の環境設定を開き、Image を
Base Python 3.0
にします -
Instance Type は GPU インスタンスを選択します(ここでは
ml.g4dn.xlarge
) -
選択できたら、
Select
を押しましょう
Notebook のコードを修正する
pip install の追加
ipywidgets
, opencv-python-headless
をインストールするために、[Installation: Clone webui repository] の処理の先頭に2行追加します。
!pip install ipywidgets # この行を追加
!pip install opencv-python-headless # この行を追加
%cd ~/SageMaker/
!git clone --depth 1 https://github.com/AUTOMATIC1111/stable-diffusion-webui
#create softlink to /tmp/outputs for storing images
#contents of /tmp folder will be deleted when each session ends
!ln -vs /tmp/outputs stable-diffusion-webui/outputs
#create softlink to /tmp in ~/SageMaker/
!ln -vs /tmp ~/SageMaker/tmp
#create softlink to /tmp/models in stable-diffusion-webui/models/Stable-diffusion/
!ln -vs /tmp/models stable-diffusion-webui/models/Stable-diffusion/tmp_models
Hugging Face のトークンの書き換え
HUGGING_FACE_TOKEN
トークンの値を、事前準備で控えた値に書き換えます
import ipywidgets as widgets
token_textbox = widgets.Text(
value='HUGGING_FACE_TOKEN', # ここを書き換える
description='Token:',
)
token_textbox
NGROK トークンの書き換え
YOUR_NGROK_TOKEN
トークンの値を、事前準備で控えた値に書き換えます
import ipywidgets as widgets
ngrok_token_textbox = widgets.Text(
value='YOUR_NGROK_TOKEN', # ここを書き換える
description='Token:',
)
ngrok_token_textbox
Web-UI ログイン情報の書き換え
Stable Diffusion Web-UI ログイン時に利用する USERNAME と PASSWORD を設定します
WEBUI_USERNAME=""
WEBUI_PASSWORD=""
以上で準備は完了です。
コードの実行
上から順番にコードを実行していきます。
Optional でモデルをダウンロードする部分については、スキップしてOKです。
(※ 実行しても問題ありませんが、時間がかかります)
Web-ui の起動
Run: Launch web ui
部分のコードが、Stable Diffusion web-ui の起動処理です。
以下のように To create a public link, set share=True in launch()
と表示されたら起動は完了です。
その上に表示されている https://xxx.ngrok-free.app
にアクセスしましょう。
You are about to visit..
メッセージが表示されたら Visit Site
を押します。
ログイン
ログインページが表示されたら、ユーザー名とパスワードを入力してログインします
Stable Diffusion web-ui が表示されれば OK です!
Stable Diffusion してみる
試しに画像を生成してみましょう。
美しい風景を出力するためのポジティブプロンプトと、低品質を避けるためのネガティブプロンプトを入れます
a beautiful realistic photo of landscape, green mountains in the background, a river in the center, blue sky and some clouds
low quality, worst quality
綺麗な風景が生成できました!
おわりに
作業が終わった後は、インスタンスを停止することを忘れずに!
Discussion