Flux Gymは、AI-ToolkitとKohya Scriptsを組み合わせたFLUX LoRAをトレーニングするためのシンプルな WebUIです。LOW VRAM (12GB/16GB/20GB) もサポートしておりミドルグラボでも学習可能なアプリケーションになります。
実行環境
グラフィックボードは、12GB以上のVRAMが必要になります。メモリは32GB以上あるとよいです。
OS | Windows11 23H2 |
fluxgym | 5ca0afbdf0577ad8e92cd7df006fb3f4b9574c72 |
グラフィックボード | NVIDIA GeForce RTX 3060 12GB |
メモリ | DDR4 48GB |
インストール
FluxgymのインストールはPinokioを使って行います。
LoRA学習
今回は以下のキャラクター画像7枚を使ってLoRAトレーニングを行いました。
Step 1. LoRA Info
- LoRAの名前を設定
- トリガーワード(ベースモデルが知らない文字列がよいでしょう)
- ベースモデル(bdsqlsz/flux1-dev2pro-singleがおすすめ。こちらはFlux1-devを微調整したモデルでトレーニングの問題が改善されています。bdsqlsz/flux1-dev2pro-singleはトレーニングでのみ使用し、推論でLoRAを適用するときには通常モデルを使用してください。)
- 使用VRAMを設定
Step 2. Dataset
- 学習する画像をアップロードします。
- 画像にキャプションを付けます。Add AI captions with Florence-2をクリックして自動でキャプションをつけることができます。(生成時に再現しやすいようにどのようなキャプションをつけたか確認しときましょう)
Step 3. Train
- Start trainingをクリックしてトレーニングを開始します。
トレーニングの予想されるステップ数についてです。Repeat trains per image x Max Train Epochs x 学習画像枚数によってExpected training steps変わります (10 x 16 x 7 = 1120) デフォルト設定のままでよいですが学習画像枚数が増えるにつれ学習時間が長くなります。
Sample Image Every N Stepsでは、設定したステップ数ごとに画像を生成し進捗を確認することができます。ベースモデルをbdsqlsz/flux1-dev2pro-singleに設定している場合は、通常モデルでの生成じゃないため実際の結果が出ないので0にしました。
今回7枚の画像でトレーニングにかかった時間は、RTX3060で1120steps約3時間ほどでした。
📁C:\pinokio\api\fluxgym.git\outputsにLoRAファイルが保存されています。
Forgeで推論
トレーニングしたLoRAを使って画像生成を行いたいと思います。今回はForgeを使用しました。
以下の3つの量子化モデルを試しましたがすべて適用できました。リンク先のモデルは、VAEとText Encoderを含んでいます。また、schnell以外は非商用ライセンスになります。
- flux1-dev-fp8.safetensors fp8
- flux1-schnell-fp8.safetensors fp8, 4stepsの高速モデル
- flux1-dev-bnb-nf4-v2.safetensors bnb-nf4, fp8の約半分のウェイトなのでLow VRAMでも速度低下しにくい(VRAMオフロードの量による)。多くのケースにおいてfp8を上回る性能らいしのですが、、、
ポイントとしては、Diffusion in Low BitsのタブをAutomatic (fp16 LoRA)に変更してください。
髪色やシャツなどはキャプションに設定していたので容易にコントロールできました。逆に時計をキャプションに加えていなかったので、トリガーワードに関連付けられ生成されてしまいます。学習前にキャプションの確認と修正をしときましょう。