可変感情可変予定制御

街歩きブログになりつつあるなにか

Stable DiffusionでLoRA(Low-rank Adaptation)を試す

Stable Diffusionのファインチューニングで最近主流になりつつあるのが、LoRA(Low-rank Adaptation)である。ハイパーネットワークと同様にベースのモデルに追加のネットワークをくっつける仕組みであり、モデルのサイズが小さいながらDreamBoothに匹敵する再現性を持っているとまで言われている。複数の実装があるが、今回はKohya氏の実装を使用する。

Windows上で環境構築を行うことが前提となっているが、あいにくVRAMが4GBしかないのでGolabにPython 3.10を無理矢理入れて動かすことにした。(デフォルトの3.8だとエラーが出てしまった)

学習方法は2通りあるのだが、今回はタグ付けが不要なDreamBooth手法を採用した。

学習データはこの6枚。

400ステップほど学習を回したが、数分で完了した。どの程度学習させるのがベストなのかはまだ知見不足だが、学習速度はかなり速いと感じた。

Anything v3.0にLoRAを適用して生成してみた結果がこちら。

 

10次元のLoRAモデルで23MB程度のサイズとなったが、ちゃんと特徴を捉えることができていた。
Stable Diffusionのモデルだけで100GBくらいHDDの容量を食っているので、どんどん普及してほしいなぁ。

 

Colabのノートブックとモデルは公開しておくので自己責任でご自由にどうぞ。