Open6

Runpod、Kohya SSでのLoRA学習環境構築

kondoyukokondoyuko

データセットの準備

SDXLでの学習においては、1024*1024ピクセルの透過pngが推奨。表情や服装、髪色の差分なども同じキャラなら同じデータセットとしておいて問題ない。
ファイル名はyuko_blouse_brownhair_front_neutral.pngなどのように特徴が分かり規則性のあるものだと便利。

kondoyukokondoyuko

Runpodの環境構築

今回は、LoRA学習スクリプトであるKohya SSをRunpodでセルフホストする。
Podは、すでにComfyUIで使っていたら別のものを立てる。ネットワークボリュームを立てていたら共有してよい(推奨)。学習モデルの共有が楽になる。

今回はRTX 4090環境において、以下のテンプレートを利用する。

※GPUによっては対応していない環境もあるとのことなので注意

kondoyukokondoyuko

Kohya SSのGUIにアクセスする

Connectから、私の環境だとHTTPS Service → :3000 よりGUI環境にアクセスできる

kondoyukokondoyuko

データセットの準備2(アップロード&キャプション付け)

ネットワークボリューム上に準備した画像をアップする(JupyterLabからなど)。フォルダ名はrepeat数を含む必要があり、後述のEpoch数が10なら「10_キャラクター名」など。これを設定しないと学習が進まない。

Kohya SS GUIから「Utilities」→「BLIP Captioning」より

  • Image folder to caption (containing the images to caption):キャプションを付けたい画像が入っているフォルダ
  • Prefix to add to BLIP caption:キャラクター名などのトリガーワードを入れる。最後にカンマとスペースも

「Caption Images」を押すと、あまり手応えがないですが、画像の枚数分、画像のファイル名と同じテキストファイルができていて、仮のキャプションが入っている。

kondoyukokondoyuko

LoRA学習

使いたいモデル(SDXLなど)をネットワークボリューム内にダウンロードしておく。

wget -P /workspace/kohya_ss/models/ https://huggingface.co/stabilityai/stable-diffusion-xl-**base-1.0/resolve/main/sd_xl_base_1.0.safetensors

Kohya SS GUIより

デフォルトから変更したところは以下

  • Pretrained model name or path:さっきダウンロードしたモデル
  • Image folder (containing training images subfolders):データセットを入れたフォルダのさらにその上の階層のフォルダを指定する
  • Trained Model output name:トリガーワードと学習回数を入れておくのがよい
  • Output directory for trained model:できたモデルを入れておくフォルダ
  • Logging directory (Optional. to enable logging and output Tensorboard log):ログが溜まっていくフォルダ
  • Epoch:10〜20&Max train stepsを0にする、もしくはMax train stepsを360✕学習したい回数にする(今回の私の環境)※空欄にするとエラーになる
  • LR Scheduler:cosine_with_restarts
  • Max resolution:1024,1024(SDXLの基準の解像度)
  • Minimum bucket resolution:640
  • Maximum bucket resolution:1024
  • Text Encoder learning rate:0.00001
  • T5XXL learning rate:0.00001
  • Network Rank (Dimension):32
  • Network Alpha:16(Network Rankの半数)
kondoyukokondoyuko

ログを見たい

Kohsya SS GUI上も、Podのログもうんともすんとも言わないが、何が起こっているのか、動作の状況を知りたい場合は、JupyterLabでターミナル上で以下のコマンドを実行する。

tail -f /workspace/logs/kohya_ss.log