【SD.Next】PaperspaceでSDXL1.0を導入する
Introduction
最近、機械学習をはじめる人が増えています。しかし、機械学習の環境構築は非常に手間がかかります。そこで、今回はPaperspaceというクラウドサービスを利用して、SD.Nextを導入し、SDXL1.0を使用してみました。
モデルは、ぶるぺん氏の「blue_pencil-XL」を使わせていただきました。
注意点
8/7時点で、SD.NextがSDXL1.0を使用できるか明記されていません。
私の環境では、1枚目は生成されますが、2枚目以降はエラーになるという問題が発生しました。
今回はあくまで導入までを紹介するので、導入後の不具合は自己責任でお願いします。
Paperspaceとは
Paperspaceは、AIや機械学習用の仮想マシンを提供しているクラウドサービスです。Paperspaceを利用することで、手元のPCに高スペックなマシンを持つことなく、機械学習に必要な高い処理能力を持ったマシンを利用することができます。
自宅のPCではスペックが足りない場合は、Paperspaceを試してみてください。
SDXL1.0とは
AUTOMATIC1111版web UIから派生(改造)したものです。AUTOMATIC1111は手動で導入する必要がある拡張機能(ControlNet)がインストール時に既に入っているのがメリットです。
SD.Nextのインストール
プロジェクト、Notebookインスタンスの作成してください。
既にアカウントを登録している前提で説明をします。
Paperspaceのアカウント作成や登録方法は以下を参考にしてください。
パッケージのインストール
先にパッケージのインストールを行います。
SD.Next用に必要なパッケージがわかりませんでしたので、以下のAUTOMATIC1111用を参考にして足りないパッケージを追加しました。
# パッケージのインストール
!apt update && \
!apt -y install python3.10 libpython3.10-dev build-essential && \
!curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 && \
!python3.10 -m pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchaudio==2.0.1+cu118 torchtext==0.15.1 torchdata==0.6.0 --extra-index-url https://download.pytorch.org/whl/cu118 -U && \
!python3.10 -m pip install xformers==0.0.18 triton==2.0.0 -U && \
!python3.10 -m pip install matplotlib -U && \
!python3.10 -m pip install ipython -U && \
!python3.10 -m pip install clip clip_interrogator rembg
# Pythonコマンド
from IPython import get_ipython
get_ipython().run_line_magic('matplotlib', 'inline')
# ディレクトリに移動
%cd /notebooks/automatic
SD.Nextのインストール
パッケージのインストールが完了しましたら、新しくコードを追加して、SD.Nextのインストールを行います。
#SD.Nextのインストール
%cd /notebooks
!git clone https://github.com/vladmandic/automatic
%cd /notebooks/automatic
webuiの起動
インストール直後は、モデルのフォルダは作成されていないので先にwebuiを立ち上げます。
automaticのフォルダに移動します。(先ほどのコマンドを既に実行している場合はこちらは不要です)
%cd /notebooks/automatic
bashセルマジックの使用します。
%%bashを使用して、ジュピターノートブック内でbashコマンドを実行しました。
【注意】以下のコマンドに、コメントアウトやその他のコード(%cd…など)を入れるとエラーになります。
%%bash
echo "N" | python launch.py --share --auth user:password --backend diffusers
SDXL1.0では、 --backend diffusersコマンドが必要みたいです。
user:password は、好きな文字を入れてください。
ログインするためのものです。
なぜ、bash??
SD.Nextでは、webui起動時に以下のことを聞かれます。
Download the default model? (y/N)
ジュピターノートブックでは、以下のコマンドを実行しても回答できなかったので、
回避策としてbashを実行しています。
(ターミナルで実行すれば回答できます)
!python launch.py --share --auth user:password --backend diffusers
SDXL1.0モデルのダウンロード
先ほど、起動したwebuiは一旦終了しておきましょう。
以下のコマンドでモデルをダウンロードします。
#sdxl系モデルのダウンロード
%cd /notebooks/automatic/models/Stable-diffusion
!wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors
VAEのダウンロードですが、SD.NextにはVAEフォルダが作られていません。
手動でフォルダを作成してください。
(VAE-approxフォルダに入れても機能しないそうです…)
#VAEのダウンロード
%cd /notebooks/automatic/models/VAE/
!wget https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors
%cd /notebooks/automatic
SDXL1.0のモデルについては以下が参考になりました。
webuiを起動
再度、以下のコマンドでwebuiを起動します。
%%bash
echo "N" | python launch.py --share --auth user:password --backend diffusers
ログがどんどん出てきますので、
Running on local URL:
Running on public URL:
上記のURLを探します。
Running on public URL:に記載しているURLをクリックするとブラウザが立ち上がります。
ログインが求められますので
先ほど入力したユーザー名とパスワードを入力します。
user:password <-- これです。
SD.Nextが起動しました。
(設定してしまったので初期画面のレイアウトが少し違うかもしれません。)
画像生成を試す
とりあえず、プロンプトに何か入力して右側の「Generate」をクリックしてください。
上記の画面では「1girl」を入力しています。
何か生成されたら、とりあえず導入はOKです。
2枚目以降でエラー
1枚目が出力されますが、2枚目以降はエラーとなり生成されませんでした。
他のモデルも同様なエラーが出たのでモデルの問題ではなさそうです。
とりあえず、ChatGPTに聞いてみる。
よくわからなかったので、そっとブラウザを閉じました。
一時的な処置
SD.Nextを再起動すれば、生成されるようになります(ただし1枚目だけ!)
なので、お試し感覚で導入を検討してみてください。
一応、環境構築はできましたので、今後のアップデートで解消されるかもしれません。
SD.Next以外でSDXL1.0を試す
今回の趣旨とは外れますが、Paperspace公式でもデモ版としてSDXLを利用できるようです。
SD.Nextの更新方法(アップデート)
ジュピターノートブックに以下のコマンドを入力することで最新のバージョンにアップデートすることができます。
%cd /notebooks/automatic
!git checkout master
!git pull
または
!git -C /notebooks/automatic checkout master
!git -C /notebooks/automatic pull
-Cオプションはgitコマンドに対して、指定されたディレクトリ/notebooks/automaticで操作を実行するように指示します。
(%cd /notebooks/automaticと似たような操作)
まとめ
Paperspace上で、SD.Nextを導入し、SDXL1.0を試してみました。2枚目以降の画像生成でエラーが発生してしまうので、今後のアップデートで解消されるかもしれません。
SDXL0.9であれば大丈夫そう?
SDXL1.0を利用したいのであれば、ローカルPCでAUTOMATIC1111やComfyUIを利用するのがいいかもしれないですね。
PaperspaceでSD.Nextを試したい方に、参考になれば幸いです。
参考記事
Discussion