Stable Diffusion用LoRAのハイパーパラメータ備忘録

  • バッチサイズ: 基本的に大きければ大きいほどよい(学習ステップ数がバッチサイズで除されるので計算時間が短くなる)、out of memoryにならないギリギリを攻める。

  • エポック数: 学習強度を高める場合にはエポック数を多くしておく。1エポックごとに出力させておくと過学習にならないラインを把握できる。

  • 繰り返し数: 正則化画像を利用しない場合には1でよい。その場合はエポック数を大幅に引き上げればOK(合計ステップ数が同じであればほとんど同じ学習結果になった)
    正則化画像を利用する場合には主データセットとの枚数が等しくなるように調整する。

  • オプティマイザ: AdamW, AdamW8bitどちらを使っても良いが、AdamW8bitを使うとプロンプトへの応答性や手足の描画など、学習の精度が結構落ちた。また、VRAM削減効果は学習対象のサイズに依存するので精度低下とのバランスを考えるとAdamWを使うべきだという結論に達した。もし8bit版を使う場合には高バッチサイズで何回も学習させてトライアンドエラーを行ったあと、仕上げに32bit版で学習させるという手法が良いかも。

  • color augmentation: オフでOK。オンにすると若干鮮やかになったかも?

  • cache latents: color augmentationはあまり意味がないのでオンにしておいて計算時間を削減したほうがよい。結構変わります。

  • gradient checkpointing: 1ステップあたりの計算時間が2倍近く遅くなるので、バッチサイズを2倍以上に引き上げられる場合にのみ有効化。高解像度になるほど1バッチサイズあたりのVRAM使用量が大幅に増えるため512で学習させるときくらいしか使わないほうがよいと思われる。

  • スケジューラ: cosine with restartsが良いっぽい。

  • 学習率: 1e-4~1e-5くらいがいい。低学習率でステップ数を重ねたほうがいいっぽい?


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