![見出し画像](https://assets.st-note.com/production/uploads/images/156715266/rectangle_large_type_2_75e43df7d8dc224485f7ed1960118f0f.jpeg?width=1200)
Paperspace で webui Forge を動かす。チェックポイントファイルは tmp に保存。
Paperspace を Pro で契約していると、常に付きまとうのがストレージのやりくり。12GB「しか」ないので、いろんなモデルを試すことが非常にやりづらい。最近は Flux.1 dev しか使っていないのでチェックポイントファイルは1種類だけで済んでいるのだけど、それでもコイツは16GBくらいあるので、何も考えずに導入すると自動的にストレージを超過、そして追加料金、なんてことになってしまう。
そういうこともあって、日頃からチェックポイントファイルは tmp 領域に保存することにしております。つまり、毎回 Paperspace を立ち上げるごとに、ここにチェックポイントファイルをダウンロードしてるのです。面倒だけど、とりあえず最初にこれをやっておけば、6時間は作業ができるので、まあ、良いかな、と。
今回新たに webui Forge を導入してみたので、デフォルトのチェックポイントディレクトリから、新たに tmp ディレクトリ内の指定場所を設定し直してやる必要があったのです。ちょいと調べるのが面倒だったけど、なんとかできるようになったので、ここに書き残しておきます。
(0) Forge の導入
詳しい導入方法についてはここでは触れない。Perplextly なんかに聞くとすぐに出てくるので、そちらを参照してみてね。
私はこのテンプレートを使いました。コイツを空の notebook にアップロードし、(1)から順に実行していけば通常は起動するはず。ただし今回は tmp ディレクトリ以下にチェックポイントファイルを置いていくので、途中でいくつか手順を変える必要がある。
(1) FORGE のダウンロード
ここはそのまま実行すれば良い。なお、このテンプレートは、(3) が先頭に来ているけど、これは一旦初期セットアップをしたら以降は(3)で実行するだけなので、やりやすいようにそうしてあるのだろう。
(2) モデルのダウンロード
ここは以下のように全面的に変更した。
#(2) モデルのダウンロード(ここにダウンロードしたいモデルを追加)
%cd /notebooks/stable-diffusion-webui-forge
!pip install --upgrade gdown
%mkdir -p /tmp/forge/models/Stable-diffusion
%mkdir -p /tmp/forge/models/embeddings
%mkdir -p /tmp/forge/models/VAE
%mkdir -p /tmp/forge/models/Lora
%cd /tmp/forge/models/Stable-diffusion
!wget https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors
%cd /tmp/forge/models/embeddings
%cd /tmp/forge/models/VAE
%cd /tmp/forge/models/Lora
最初に gdown を最新版に更新する処理を入れている。Google Drive から直接ファイルを引っ張ってくるためには gdown というコマンドを使う必要があるのだけど、Papaerspace でこれを使う場合には、常に最新版にしておく必要があるっぽい。以前はこれでよく躓いていたので、毎回アップデートするようにしている。
次に tmp以下に必要なディレクトリを作成する。上記のコードの通り。
それ以降にチェックポイントファイルやら、LoRAやらをダウンロードできるように記述していく。必要なら gdown もここで使う。civitai からダウンロードもできるけど、API Key を記述する必要があるので注意。
(4) FORGEアップデート(アップデートが必要な時のみ実行)
ちょっと順番がおかしくなったけど、まあ、アップデートはしておいたほうがいいよね。
webui-user.sh にディレクトリ情報を書き込む
ここに今回新たに設ける tmp 以下のファイル情報を書き込んでおく。
# Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention"
export COMMANDLINE_ARGS="--ckpt-dir /tmp/forge/models/Stable-diffusion --vae-dir /tmp/forge/models/VAE --embeddings-dir /tmp/forge/embeddings --lora-dir /tmp/forge/models/Lora"
最初はこの部分がコメントアウトされているはずなので、#を削除して有効化させる。しかる後に、それぞれのディレクトリ情報を上記の様に書き込んでゆく。
(3) WebUI起動 を少し手入れする
どうやら webui-user.sh は、そのままでは実行されないようなので、コイツを確実に起動させるように実行プロセスに組み込む。(3) WebUI起動 のセクションの最後尾を、以下のように変更する。
# !python3.10 launch.py --xformers --enable-insecure-extension-access --share --gradio-queue
!source ./webui-user.sh && python3.10 launch.py --xformers --enable-insecure-extension-access --share --gradio-queue
コメントアウトしたのは、もともと書いてあったもの。一応、元に戻せるように残しておいた。launch.py を実行する前に、webui-user.sh を実行するようになっている。
(3) WebUI起動
これでめでたく Forge を起動することができるようになった。この投稿を書きながら実際に実行させているのだけど、感覚的には、ComfyUI の方が実行が早い気もする。ただ、見慣れた webui で作業ができるのは気が楽だし、必要な操作系がまとまっているのもやりやすい。ComfyUI はとにかくあちらこちらに操作が散らばりがちだからね。