🌹

Stable Diffusion Web-UI を SageMaker Studio で動かしてみる

2023/05/23に公開

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 する

# ./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