Stable Diffusion XL, Paperspace 導入の記録(2023年11月10日)

自分用の覚書に。以前SDXLを導入したときに試行錯誤したことがあったのだけど、流石に現在はある程度こなれてきていると見込んで、イチからやり直してみようと思った。以下にその記録を書いていくけど、この note は初心者向けの Stable Diffusion ガイドではないのでご注意を。

必要なファイルの準備

まず参考にしたのがこちらの動画。日付が比較的新しかったので選んでみた。概要欄に必要なファイルの案内があったので、まずはそれをダウンロード。

今回はSDXLまでの構築が目的なので、これらのファイルを全てダウンロードする。前者は Stable Diffusion をブラウザ上で簡単に扱うための Automatic1111 をセットアップするために必要なもの。後者は XL のためのファイルを準備するためのもの。

Paperspace の準備

Paperspace は例によって 'start from scratch' つまり空っぽの状態で Notebook を作成する。そこへさっきダウンロードしたファイルを全てアップロードする。

必要なファイルがアップロード完了

セットアップ開始

最初に a1111.pynb の冒頭部分に手を加える。

a1111.pynb の冒頭部分

4行目の先頭に '#' を付けてその行をコメントアウトし、7行目の先頭にあった '#' を削除して有効化させた。なぜなら私は有料会員だからだ。そして、なぜこれが必要なのかというと、無料会員と有料会員で使用できるストレージが違うからだ。

無料会員 (Free Tier) 5GB
有料会員 (Paid Tier) 15GB
※これらのストレージはログアウトしても内容が保存される

5GBだと、Stable Diffusion のシステム関係だけでほぼ大半を消費してしまう。いろんな絵柄を楽しむために必要なチェックポイントファイルは、1個につき数GBのサイズがあるので、無料会員はこのままだとチェックポイントファイルを利用できない。そこで、tmpディレクトリと呼ばれる、マシンを起動している間だけ好きなだけ(未検証)使えるディレクトリを使って、そこにチェックポイントを保存するのだ。ただし、tmpディレクトリはマシンを停止する(6時間経過する)と自動的に中身が消去されてしまうので、無料会員は作業を開始するたびに毎回チェックポイントファイルをダウンロードしなきゃならないわけだ。

有料会員の場合は上記のようにコメントアウト部分を変更し、無料会員の場合は何もしなくてよい。そして右上の RUN ALL ボタンを押せば、1111.pynb に記述されている全てのスクリプトが走り出す。なんか途中でエラーとか警告がでるけど、それらは全て無視して構わない。

ちなみに、4つ目のセル(スクリプトのまとまり)で、tmpファイルにチェックポイントがダウンロードされているけど、以降の作業で自分で好みのチェックポイントを準備するならば基本的には不要。ただ、チェックポイントが何もない状態で Atuomatic1111 を起動しようとすると、デフォルトのチェックポイント(結構サイズがデカい)をダウンロードし始めるので、そいつを防止するという意味でも、残しておいてもいいかもしんない。

親の顔より見るやつ

Run a1111 のセルが起動し、gradio.live のリンクが表示されたら成功。つぎは SDXL のチェックポイントを導入しよう。

SDXL のチェックポイントを導入

SDXL のチェックポイントを必要なディレクトリにダウンロードの作業。左側のファイル一覧から SDXL.pynb を選んで画面に表示させる。ここには4つのセルが記述されていて、それぞれ

  • Base models (基本モデルとなるチェックポイント)

  • VAE (VAE)

  • Your models (自分の好みのチェックポイント)

  • Lora (自分の好みのLora)

について書かれていて、それぞれ予め必要なチェックポイントを記述しておけば、RUN ALL で一度にダウンロードできるようになっている仕組み。ちなみに、

# Base models
%cd /notebooks/stable-diffusion-webui
%mkdir /tmp/models
%mkdir /tmp/models/stable-diffusion
%mkdir /tmp/models/stable-diffusion/SDXL
%cd /tmp/models/stable-diffusion/SDXL

Base models、Your models の箇所はこのような記述があって、チェックポイントファイルを tmp ディレクトリ以下に保存する指定となっている。先ほど有料会員は15GBの保存可能ストレージが与えられている、と書いたが、SDXL のチェックポイントファイルは1つ5GB以上あるのがザラで、しかも画質を上げるためには Refiner と呼ばれる補完データも準備しなくてはならない(必須ではない)ため、完全にストレージが不足してしまう。そのためやむを得ず tmp ディレクトリを使用することになるわけだ。つまり起動を行うたびに毎回これらファイルのダウンロードを行う必要があるということ。上級の Growth メンバーであれば50GBのストレージが使えるのだが……

デフォルトでは SDXL.safetencors と SDXL_Refiner.safetensors の2つのチェックポイントファイルを、基本の(ベースの)モデルとしてダウンロードできるようになっている。もちろん、ここはとりあえずコメントアウトしておいて、後のセルにある Your models で好みのチェックポイントをダウンロードするようにしてもよい。

!wget -O SDXL.safetensors https://civitai.com/api/download/models/128078
!wget -O SDXL_Refiner.safetensors https://civitai.com/api/download/models/128080

チェックポイントを含む各ファイルは、civitai から直接ダウンロードできるようになっている。wget コマンドについてはメモ的に書いておくと、

  • コマンドの先頭には '!' が必要。

  • -O(大文字のオー)の次には、ダウンロードしたファイルをこの名前で保存するよ、というファイル名の指定。

  • 最後の数値は、civitai でのファイルID。

civitai でのファイルID

VAEやLora が必要なときは、同様に該当箇所に必要なモデル名を記述しておく。ちなみに、VAEやLoraはファイルサイズがそんなに大きくないためか、ユーザーのストレージに保存されるような設定となっている。このため、

-O の前に -nc オプションを入れておくと、すでにそのファイルが存在する場合はダウンロードを行わない、という設定にできるので、これを利用するのも良いかも。

 A1111の通常の起動ルーティン

以上の準備が整ったら、実際に起動を行ってみる。手順としては:

  1. SDXL.pynb を RUN ALL する。

  2. a1111.pynb の ##Run a1111  のセルを実行する。

となる。SDXL のモデルチェックポイントをダウンロードするのに若干時間がかかる場合があるが、これは仕方なしか。

補足)ファイル構造について

全てのファイルをインストールし終えると、このようなファイルやフォルダが出来上がっているはず。これらは /notebooks/ というディレクトリに修められていて、上記の表示内容は、その /notebooks/ の中身を表示していることになる。

ちなみに、上記のファイル、フォルダをここで全部削除しても、使用ディスク量はほとんど変化しない。なぜか。それは、ここに表示されるファイルの大半が、ここには実体が存在しないからだ。

/notebooks/

これは /notebooks/ の中身をターミナルで確認したもの。よく見ると、stable-diffusion-webui や storage などのディレクトリが、シンボリックリンク(Win だとショートカット、Mac だとエイリアスに相当)になっていて、実体がここにあるわけではない、ということが見て取れる。

実際の主なディレクトリ構成は:

root/notebooks/ ショートカットや .pynb を置くところ(作業スペース?)
root/storage/ ファイルの実体が格納されるところ。
root/tmp/ マシンが動いている間だけ保存できる。

となっている。

この記事が気に入ったらサポートをしてみませんか?