学習向けによりローカルの様にColab環境を作るには

Last-modified: 2022-10-27 (木) 20:56:28

2022/10/25情報

よりローカルの様にColab環境を作るには

HNでレイヤーを上げたり、TIでNVPTが高い場合容量食うから、Googleドライブの残り容量には注意しよう
このページはColabでの環境作成が済んでいて、モデルをドライブから読み込んだりできる人向けのページです。
「Colab, maintained by Akaibu」版での話ですが、他でも基本的には同じだと思いますです。
また、フォルダ名や場所などは各自見比べて好きにしてください。

今後TIデータやHNデータをドライブに保存したいや、
学習をさせる時にColabの仕様の関係でドライブに保存したいなんてときが出てくるかもしれません。

↓このページの情報を元に書いてます。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings
英語だけど見れる人はそっちのがオリジナルで正確だから見てね

ドライブにフォルダを作る

このページでは「WaifuAIDiffusion」という名のフォルダをドライブ直下に作りそこにまとめることにします。
/content/drive/MyDrive/WaifuAIDiffusion

Colab上でいじる場所

!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py

の文を基本的に編集します。

TIファイルをドライブから読み込む

「WaifuAIDiffusion」フォルダ内に「embeddings」フォルダを作成します。
そのフォルダはパスが以下のようになります。
/content/drive/MyDrive/WaifuAIDiffusion/embeddings
そして、

!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py

--embeddings-dir /content/drive/MyDrive/WaifuAIDiffusion/embeddings

を書き足します。
埋め込みの場所はそこだよって指定するだけです。

!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty --embeddings-dir /content/drive/MyDrive/WaifuAIDiffusion/embeddings" REQS_FILE="requirements.txt" python launch.py

HNファイルをドライブから読み込む

「WaifuAIDiffusion」フォルダ内に「hypernetworks」フォルダを作成します。
そのフォルダはパスが以下のようになります。
/content/drive/MyDrive/WaifuAIDiffusion/hypernetworks
そして、

!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty" REQS_FILE="requirements.txt" python launch.py

--hypernetwork-dir /content/drive/MyDrive/WaifuAIDiffusion/hypernetworks

を書き足します。
ハイパーネットの場所はそこだよって書いているだけです。

!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty --hypernetwork-dir /content/drive/MyDrive/WaifuAIDiffusion/hypernetworks" REQS_FILE="requirements.txt" python launch.py

同時使用する場合

埋め込みファイルの場所・HNファイルの芭蕉を指定するのを同時にする場合は

!COMMANDLINE_ARGS="--share --gradio-debug --gradio-auth me:qwerty --embeddings-dir /content/drive/MyDrive/WaifuAIDiffusion/embeddings --hypernetwork-dir /content/drive/MyDrive/WaifuAIDiffusion/hypernetworks" REQS_FILE="requirements.txt" python launch.py

となります。
つまり、ここに書くものは基本的に半角スペースを空けて連続して書き込むだけです。
モデルの置き場所も同時に変更する場合も同じことをするだけです。

TI・HNの学習データ関連をドライブで"読み込む&書き込む"

こちらはGドライブを接続しておくだけで、Colabの画面は弄りません。
web-uiの、つまりgradioでトレーニング時の設定を書き換えます。
また、都度設定が必要です。
「WaifuAIDiffusion」フォルダ内に
「textual_inversion」「training_images」「textual_inversion_templates」と3つフォルダを作成します。
そのフォルダはパスが以下のようになります。

/content/drive/MyDrive/WaifuAIDiffusion/textual_inversion
/content/drive/MyDrive/WaifuAIDiffusion/training_images
/content/drive/MyDrive/WaifuAIDiffusion/textual_inversion_templates

それぞれのフォルダの役割としては

「textual_inversion」⇒学習の経過保存用
「training_images」⇒学習時のデータセット指定用
「textual_inversion_templates」⇒トレーニング用の「学習テンプレート.txt」保存用

とします。
また、ここまで読んだでいる方ならわかるかと思いますが、
一つフォルダが変わると「/」がついてフォルダ名が指定されるということです。

※もちろんフォルダ・ファイル名は基本半角英数字やスペース抜きで作ろう※

なので、今後TIやHNする時にデータセット(学習に使う画像)は
「traning_images」フォルダ内に「学習させる対象の名前」などの名前でフォルダを作ると
「/content/drive/MyDrive/WaifuAIDiffusion/training_images/学習させる対象の名前」
とパスがなるので
データセットのcaption付け時には
「Source directory」に

/content/drive/MyDrive/WaifuAIDiffusion/training_images/学習させる対象の名前

を指定して
「Destination directory」に

/content/drive/MyDrive/WaifuAIDiffusion/training_images/学習させる対象の名前加工済み

とでも指定して

実際のTrainタブの
「Dataset directory」に

/content/drive/MyDrive/WaifuAIDiffusion/training_images/学習させる対象の名前加工済み

「Log directory」に

/content/drive/MyDrive/WaifuAIDiffusion/textual_inversion

Prompt template file」に

/content/drive/MyDrive/WaifuAIDiffusion/textual_inversion_templates/学習テンプレート.txt

みたいにすればいいだけです。

その他

Settingsタブを見るとほかにもいろいろできることが知れるかもしれません。
それとDeepL翻訳の拡張でもいれて
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings
を見ましょう。
まだ試していませんが

約16GBもあるT4のVRAMにモデルをロードさせる
--lowram

--ui-config-file
画像生成中の無駄にcolab上の行が増えるのを防ぐ?
なんかアレ出してるとPC本体のメモリ食ってる気がするやつを少なくする
--disable-console-progressbars

--deepdanbooru

などは恐らく求めているモノかもしれません

Googleドライブ課金して容量増やした人向け

モデルや学習データを複数いれる場合少しでも容量の節約のためにAUTOMATIC1111web-ui本体はインスタンス上だけの存在でいいかもしれませんが、
もし、課金をして容量を増やしているなら
より快適にするため...
学習環境用と(最新版で)画像生成用で別にするため...
などの理由のために
GoogleDrive本体にAUTOMATIC1111web-uiをcloneしてしまうのもいいかもしれません。
この場合では上で行っている様な場所系指定をしなくてもドライブに入るので簡単かもしれません。
まあ、でも指定したほうが何かの機会で再インストールするときに便利なのかも?
逆に、Googleに検閲されてマズイものを生成する場合にはより注意かもしれません。
ここではGoogleドライブの直下に直接構築するとします。(フォルダを作ってさらに別のとこでcloneして2個環境作ってもOKです。)
するとcloneでフォルダを置きたい場所は
「/content/drive/MyDrive」のパスを持つことになります。

cloneするための場所を選択する

「Clone webui repository」の文の上にコードブロックを作ります。

%cd /content/drive/MyDrive

実行することでこの後のcloneする場所を変えることが出来ます。

そしてColab上ではまだ書き換えるべき箇所があります。

Clone webui repositoryの部分

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd stable-diffusion-webui

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
%cd /content/drive/MyDrive/stable-diffusion-webui


これは一度変更して実行してしまえば環境が壊れて消して再インストールするときくらいしか実行しなくなります。

Normal 1.4 modelの部分

使っている人はいないと思うので書きません。
モデル普通にダウンロードしてドライブにいれよう。

Change into Web UI directory and download updates

この部分はAUTOMATIC1111の更新をする部分です。

%cd stable-diffusion-webui
!git pull

%cd /content/drive/MyDrive/stable-diffusion-webui
!git pull

にします。
これはアプデが来て気になるときに実行しましょう。
アプデ直後は不安定な場合があるのでスレで様子を見ましょう。
アプデ情報はこちら

階層の説明

GPUの確認

!nvidia-smi

コメント

  • Colabで学習途中にPCの電源が切れる(スリープ含む)or追い出された場合には、Models⇒Hypernetwork内のデータは初期のままっぽい。Interrupt処理後に保存される? -- 2022-10-26 (水) 17:23:16
  • なので、途中追い出しされた場合にはLogからnstepsごとに出したファイルを移動して途中から再開するしかない? -- 2022-10-26 (水) 17:23:57