Paperspace版導入

Last-modified: 2023-03-30 (木) 14:59:48

メモ
 Colab用のノートブックでは、「ngrok」というプログラムが使用されることがありますが、Paperspaceのマシンでngrokを実行すると、即座にBANされます。ただし、問い合わせれば復旧可能です。ngrokは、ローカルで動作しているサーバーにインターネットからアクセスできるようにするツールですが、過去に悪用されたことがあるため、自動的にBANされる仕組みになっています。Web UIのGradioも同様のことを行っていますが、とりあえずngrokさえ使用しなければ、BANされるようなことは起こらないようです。

2022/11/26 情報
ここが今後更新される可能性は低い(適度に修正は入ります)
PCのスペックが低い。GPUがNvidiaでは無い。等スレのとしと同じような設定が使える場所で戦いたい!という人向け?
Google Colabの仕様が変わって、使用制限が厳しくなったりでPaperspaceの方で試してみたい人用

  • アカウント登録(googleアカウントやgithubアカウントでも可)が必要
  • 1日の使用時間制限はないが、一度立ち上げた環境は最長6時間で自動シャットダウン
  • 自動シャットダウンされた場合も、永続ストレージのデータは保持される
  • 無料で借りられるGPUはQuadro M4000 8GB(GTX970相当)だから学習にはちょっと辛いかも(TI/HNぐらいならワンチャン?)
  • 無料コースでもメモリがcolabの2倍あるので大きなモデルを読み込んだり、colabでは不可能なモデルマージも可能
  • 利用規約的には明らかな違法行為での使用は禁止されている(一般的なクラウドの規約と大差ない)のでまあ常識の範囲で使用しようね

英語だけどここ読むといいよ。「馬鹿たれのためのPaperspaceガイド」ですって。
https://github.com/Engineer-of-Stuff/stable-diffusion-paperspace/blob/master/docs/Paperspace%20Guide%20for%20Idiots.md

導入

マシンスペック

基本的にその時空いているマシンを最長6時間借りられる。課金コースによって借りられるマシンの最高性能が変わってくる

  • 無料コース
    GPU Quadro M4000 8GB(GTX970相当、運が悪いと埋まってるのでその時はまた来ようね)
    メモリ 30GB
    ディスク(永続ストレージ) 5GB
  • $8コース
    GPU NVIDIA A4000 16GB(RTX3070相当。埋まってたら下位のGPUを選ぼう。大概は空いてるけど)
    メモリ 45GB
    ディスク(永続ストレージ) 15GB
  • $40コース
    GPU NVIDIA A6000 48GB(RTX3090相当。運が良ければ最強GPUのA100 80GBが空いてることも)
    メモリ 45GB
    ディスク(永続ストレージ) 50GB

40ドルコースにして、最強GPUのA100 80GBを数日使用してみた。速い気がするが、8ドルコースの A4000とそこまで速度差がない印象…。
額を考えたら8ドルのもので十分な気がした。
ちなみにストレージについては、月またぎで料金発生が決まるという話。月末までにストレージ削除しておけば追加料金は取られない、とのこと

Paperspaceアカウント作成

https://www.paperspace.com/ から「SIGN UP FREE」を選択。メアドで登録するかgoogleかgithubアカウントでも可
携帯認証が必要なので携帯番号を入れる。国を日本にして、頭の0を抜いた番号(090-1234-5678なら9012345678)を入れてね
SMSが飛んでくるから番号を入れてアカウント作成完了

Project/Notebook作成

アカウントを作って最初の画面(プロジェクト一覧)の右上にある赤い「CREATE PROJECT」をクリック
適当な名前をつけてプロジェクト作成
プロジェクトが出来たらまた右上にある赤い「CREATE」をクリックしてノートを作成
「Select a Runtime」にテンプレートがずらっと並んでるけど、ここは右下の「Start from Scrach」を選択
次に下のプルダウンからGPU選択。頭に「Free」がついている奴を選ばないと従量課金が発生するので注意
無料版であれば「Free GPU(Quadro M4000)」しか選べないはず(P5000選べたかもしれないが忘れた)
課金コースであればその時空いてる一番いいFree GPUを選択
Auto Shutdown Timeは「6 hours」にすること(デフォルトだと1hourでシャットダウンされる)
最後に左下の「START NOTEBOOK」を押して開始
スタートするとノートブック画面に遷移し、マシンが起動するので、左サイドバーの一番下のオレンジのわっかのようなボタンをクリックして実際のノート画面に移動する

Terminalの起動とノートのコピー

ノート画面に遷移するとランチャー画面になるので、「Others」の「Terminal」をクリック
Linuxのshell(コマンドプロンプトのようなもの)が出るので、以下のコマンドを実行

wget https://raw.githubusercontent.com/Engineer-of-Stuff/stable-diffusion-paperspace/main/StableDiffusionUI_Voldemort_paperspace.ipynb -O /notebooks/StableDiffusionUI_Voldemort_paperspace.ipynb

notebookがダウンロードされて、左側のファイルビューに出てくるはずなので、ファイルビューからダウンロードされたノートをダブルクリック

2回目以降はダウンロードは不要。永続ストレージにノートが残っているからそれをダブルクリックするだけでおk。

環境設定(初回)

まず初回はモデルや生成物の置き場所を設定する必要がある
最初のセルにある

# Free tier
# symlink_to_notebooks = True                          # Enables the creation of symlinks back to /notebooks/
# model_storage_dir = '/tmp/stable-diffusion/models'   # Where the models will be downloaded to.
# repo_storage_dir = '/notebooks'                      # Where the repository will be downloaded to.

# Paid Tier
# symlink_to_notebooks = False
# model_storage_dir = '/storage/models'
# repo_storage_dir = '/notebooks'

の部分を、無料版($8コースもモデルたくさん使う気ならこっちがいいかも)なら

# Free tier
symlink_to_notebooks = True                          # Enables the creation of symlinks back to /notebooks/
model_storage_dir = '/tmp/stable-diffusion/models'   # Where the models will be downloaded to.
repo_storage_dir = '/notebooks'                      # Where the repository will be downloaded to.

# Paid Tier
# symlink_to_notebooks = False
# model_storage_dir = '/storage/models'
# repo_storage_dir = '/notebooks'

有料版なら

# Free tier
# symlink_to_notebooks = True                          # Enables the creation of symlinks back to /notebooks/
# model_storage_dir = '/tmp/stable-diffusion/models'   # Where the models will be downloaded to.
# repo_storage_dir = '/notebooks'                      # Where the repository will be downloaded to.

# Paid Tier
symlink_to_notebooks = False
model_storage_dir = '/storage/models'
repo_storage_dir = '/notebooks'

というようにコメントアウトをはずす
これはモデルを永続ストレージに置くか、マシン終了時に消える一時領域に置くかを決めている
無料版は特にストレージが少ないので一時領域に置かないと厳しい

書き換えたら該当セルを実行(notebook一番上の三角ボタンをクリック)。
続いて、「Clone the central repository」と「Install requirements and download repositories」のセルを実行
(こちらは特に書き換え不要)

モデルのダウンロード

各種モデルのダウンロード用セルがあるので必要なものを選んで実行
永続ストレージに保存する設定にしてある場合、調子に乗ってモデルをダウンロードしすぎないよう注意
wd1.2等のtorrent上のモデルもダウンロードしてくれる
モデルの保存先を永続ストレージにした場合は一度ダウンロードしたら二回目以降はダウンロード不要
オリジナルのnotebookには縁等最近のモデルがないので、必要であればhuggingfaceにある奴(縁やHD、エイミーちゃん等)であれば
trinart 60000あたりのセルを複製して以下のように変更して実行

縁pruned

%store -r symlink_to_notebooks model_storage_dir repo_storage_dir
!wget https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/Anything-V3.0-pruned.ckpt -O "{model_storage_dir}/Anything-V3.0-pruned.ckpt"

縁full

%store -r symlink_to_notebooks model_storage_dir repo_storage_dir
!wget https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/Anything-V3.0.ckpt -O "{model_storage_dir}/Anything-V3.0.ckpt"

縁vae

%store -r symlink_to_notebooks model_storage_dir repo_storage_dir
!wget https://huggingface.co/Linaqruf/anything-v3.0/resolve/main/Anything-V3.0.vae.pt -O "{model_storage_dir}/Anything-V3.0.vae.pt"

EimisAnimeDiffusion

%store -r symlink_to_notebooks model_storage_dir repo_storage_dir
!wget https://huggingface.co/eimiss/EimisAnimeDiffusion_1.0v/resolve/main/EimisAnimeDiffusion_1-0v.ckpt -O "{model_storage_dir}/EimisAnimeDiffusion_1-0v.ckpt"

EimisSemiRealistic

%store -r symlink_to_notebooks model_storage_dir repo_storage_dir
!wget https://huggingface.co/eimiss/EimisSemiRealistic/resolve/main/EimisSemiRealistic_1-0v.ckpt -O "{model_storage_dir}/EimisSemiRealistic_1-0v.ckpt"

HD17

%store -r symlink_to_notebooks model_storage_dir repo_storage_dir
!wget https://huggingface.co/Deltaadams/HentaiDiffusion/resolve/main/HD-17.ckpt -O "{model_storage_dir}/HD-17.ckpt"

カーネルのリセット

モデルのダウンロードまで終わったら、「Clean up and restart the kernel」のセルを実行してカーネルを再起動

シンボリックリンク生成

「Link the models directory」のセルを実行して、永続もしくは一時ストレージにダウンロードしたモデルをWebUI内の適切なディレクトリにリンクする
永続ストレージにモデルを置いた場合は原則初回のみの実行でおk
(新しくモデルをダウンロードした場合に限り再実行)

WebUIの起動

「Launch the WebUI」のセルを実行して1111を起動
起動が終わると「ほにゃららgradio.appにアクセスしてや」と出るのでリンクを開いてWebUI起動

Extentionの追加

1111のExtentionから必要なExtentionをインストールする
インストール後は一度WebUIのセルを■ボタンで停止して、セルを再実行させる必要がある

出力結果の保存

WebUIを止めてから、「Export Generations」のセルを実行すると1111の出力結果を現在の日時フォルダに移動した上で7zに固めてくれるので、
左側のファイルビューから7zファイルを右クリックからダウンロードする
ダウンロードし終わったら下のセルのコメントアウトを外して日付フォルダを削除
7zファイルはファイルビューから右クリックで削除すればおk

notebookの終了

1111とnotebookの画面を閉じた上で、paperspaceに再度ログインし、notebookの一覧からshutdown instanceを選ぶのが一番確実
まあ放って置いたら設定時間で勝手に止まるけど次の人のためにちゃんとマシンを開放してあげようね

二回目以降の起動

二回目以降にnotebookを開始して、START MACHINEする前にGPUプルダウンを確認して、その時空いている一番いいGPUを選んでからSTART
二回目以降にnotebookを立ち上げた場合は「環境設定(初回)」にある項目を再度実行する必要がある
ただ二回目以降はリポジトリ情報が残っているのでわりとすぐ終わるはず
モデルを一時領域に置いている場合はモデルのダウンロードとリンク作成を再度行う。永続ストレージに置いてあるならこの工程は不要
実行後にカーネルリセットを実行した後にWebUIを起動すれば前回導入したExtensions等は有効な状態で1111が起動する

過去バージョンの利用

アップデートなどでまともに動かなくなった場合の対処法
ここでは例としてgradio3.23になる前まで戻す方法を書く

gradio3.16.2

  1. まず↑の導入でWEBUIが起動できる直前までセットアップする
  2. ノートブック「Launch the WebUI」のセルより更に下、Toolsのセルまで移動し、
    その中にある「Reset Repository」を開く
  3. そのセルの最後の行が
    !git reset --hard <commit>
    となっているので、<commit>部分を以下に書き換える
    !git reset --hard a9eab236d7e8afa4d6205127904a385b2c43bb24
  4. 書き換えたらセルを実行する

これでGradioが3.16.2だった頃のWEBUIが起動できるようになる

gradio3.9(先にgradio3.16.2以前の環境にしておく)

一旦gradio3.16.2にするのはgradio3.23以降とではファイル構成が一部異なっており
直接3.9をインストールするとそのままだと起動できないため

  • ngrokが使えない(使うと強制BANされる)paperspaceではこれが特に安定しており
    数枚生成すると固まる問題も解決する
  • URLがgradio.liveではなくgradio.appになる
  • ただし生成こそ安定してるが、WEBUI側が古くて一部拡張が動作しなかったりする
  • 上記のgradio3.16.2にしてから適当なセルを作成し以下をペーストして実行する
    !pip uninstall -y gradio
    !pip install gradio==3.9
  • これで現在のgradioをアンインストールしてgradio3.9をインストールできる
    • ちなみに逆に最新のgradioをインストールしたい場合は ==3.9 部分だけ削れば良い

好きなバージョンのWEBUIに戻す

  1. https://github.com/AUTOMATIC1111/stable-diffusion-webui/commits/master
    • ↑ここを見ればAUTOMATIC1111のWEBUIがどういう変更を行ったか見れる
  2. 例えば2023年3月25日にgradio3.23に変更されたので、それ以前に戻したい場合はその直前のSHAを取得する
    • これは変更時点を特定するための履歴番号みたいなもの
      commit.jpg
    • 例として上記画像の部分をコピーすると以下の羅列がコピーされる
      a9eab236d7e8afa4d6205127904a385b2c43bb24
  3. あとはgradio3.16.2で行った時のように<commit>部分をコピーしたSHAに書き換えて実行すればコピーしたSHAのバージョンまで戻せる

xformers 0.0.16

※ここは動いているならそのままの方が良い
xformersを導入するとエラーが出る人向け

  • このノートブックではxformersを導入する場合、下記の様に常に最新をインストールするようになっている
    !pip install xformers
  • ただ編集時点でインストールされるxformers0.0.17だとtorchの依存先が2.0.0になっているため、このままだと動作しない可能性がある
  • 以前のバージョンのxformersをインストールしたい場合はそのままバージョン指定すると良い
    !pip install xformers==0.0.16

コメントとか

  • 動作が不安定すぎる上に生成できても生成進捗が表示されない事が多々発生してたので過去バージョンに戻す方法を書きました -- 2023-03-28 (火) 17:14:27
    • 使い物にならないレベルで止まってて、調べてもなかなかバージョン下げれなかったので助かりました。ありがとうございます。 -- 2023-03-29 (水) 02:34:22
    • すごく助かりました、ありがとうございまうs! -- 2023-03-30 (木) 02:58:14
    • 過去バージョンにしたら起動できませんでした。一体なぜ・・・ -- 2023-03-30 (木) 13:00:11
  • 今日課金始めたら残り4日で1か月分とられちゃうのかな -- 2023-03-28 (火) 18:11:55
  • 最後のLaunch the WebUIを起動するとパイソンのバージョンでエラー見たいのが出て起動できないです。以下のようなエラー文?が出ました。If you cannot immediately regenerate your protos, some other possible workarounds are: 1. Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower). -- 2023-03-29 (水) 02:48:33
  • フォルダ一覧にstorageとかmodelとかフォルダが全く表示されなくなっちまった…なんか消しちゃいけないもの消しちゃったのか? -- 2023-03-30 (木) 00:46:59
  • なぜか今週から7zipのダウンロード速度約200kbps以下で全くダウンロード進まない…同じような方いるでしょうか? -- 2023-03-30 (木) 14:01:03

(Tips)

  • 既存コメントの先頭にあるラジオボタンをONにすると、そのコメントの下にぶら下げ返信する形になる(ツリー構造)。
  • コメントの文中で↵ボタン(下の画像参照)を押すと「&br;」の文字列が挿入される。これは送信後に改行として機能するので、文章の整形に役立つ。
    br.png

短縮URL生成