Flux-dev2pro-fp8 special use for training Flux LoRA
詳細
ファイルをダウンロード
モデル説明
これは再投稿されたモデルです。
私は元の作成者ではありません。
警告: このモデルは基本的にLoRAのトレーニング用のベースモデルとしてのみ使用され、このモデルの画像生成効果はf1.d-fp8ほど良くありません。
しかし、このモデルを使って画像を生成したい場合は、それでも動作します。お試しください。
ソース:Kijai/flux-dev2pro-fp8 · Hugging Face
上記のソースもおそらく元の作成者ではないかもしれませんが、以下にfp16バージョンがあります。
ソース:ashen0209/Flux-Dev2Pro · Hugging Face
両者がどのように関連しているかは不明なので、両方のソースを掲載します。
このベースモデルの原理と効果は以下の通りです:(こちらも再投稿)
ソース:Why Flux LoRA So Hard to Train and How to Overcome It? | by John Shi | Aug, 2024 | Medium
なぜFlux LoRAのトレーニングは難しいのか?そしてどう乗り越えるのか?
TL;DR
- Flux-devやschnellのような蒸留モデルでLoRAをトレーニングしないでください。
- 入力ガイドランス=1.0で微調整されたモデルでLoRAをトレーニングしてください。
- 以下は、300万件の高品質データで微調整したモデルです。自分自身の生成結果は満足できるものではありませんが、LoRAのトレーニング結果は向上します。(この微調整モデルにLoRAを適用せず、蒸留モデルFlux-devに適用してください。)
https://huggingface.co/ashen0209/Flux-Dev2Pro
LoRAの例:
https://huggingface.co/ashen0209/flux-lora-wlop

同じトレーニング/検証設定で、異なるモデルから微調整したLoRAの結果
背景
ブラックフォレストラボが最近リリースしたFluxモデルは、優れたテキスト理解力と細部に至るまでの高品質な画像生成で非常に印象的です。現在のすべてのオープンソースモデルを大きく上回り、Midjourney v6のような最先端のクローズドソースモデルとも比較しても優位性を持っています。

しかし、テキストから画像へのモデルのオープンソースコミュニティがFluxの微調整を試みたところ、多数の課題が明らかになりました。私は、モデルが短期間で完全に崩壊してしまうか、あるいは劣化した微調整結果しか得られないことを発見しました。歪んだ人間の四肢、意味理解の低下、ぼやけて無意味な画像などが頻発しました。SD1.5やSDXLとは異なり、Flux.1の微調整やLoRAのトレーニングははるかに困難であることがわかりました。ここでは、その困難の潜在的な理由を考察し、克服するための方法を探ります。
Flux-devの蒸留について理解する
まず、Flux-devがどのように機能するかを推測しましょう。SDや他の多くのT2Iモデルとは異なり、Flux-devはCFG(分類器なしガイドランス)に否定的プロンプトを使用しません。これは、ガイドランスがすでにモデルに蒸留されているためです。トレーニング目的はおそらく以下のように推測されます(個人的な仮説ですが、非常に可能性が高い):

推測されたトレーニングプロセス
まずFlux-devはFlux-proで初期化され、各トレーニング反復中にガイドランスはランダムに選択され、そのガイドランススケールを使ってFlux-devはノイズ除去結果を予測します。一方、Flux-proはガイドランス埋め込みなしでノイズ除去結果を予測しますが、分類器なしガイドランス方式(つまり、正と負を同時に予測し、ガイドランススケールで組み合わせる)で実行されます。Flux-devは、この蒸留監督に加えてフロー整合損失でトレーニングされている可能性があります。この蒸留プロセス後、Flux-devモデルは分類器なしガイドランス法と比較して計算コストを半分に抑えながら、同程度の品質で画像を生成できます。
Flux-schnellについては、SDXL-turboで紹介されたような敵対的蒸留法で生成された可能性があります。しかし、トレーニングがより困難であるため、ここではさらに議論しません。

プロモデルから一部の能力が「削除」された可能性
さらに、まだ不明な他の詳細もあるかもしれません。例えば、Flux-devおよびFlux-schnellの出力多様性スコアはFlux-proに比べて著しく低いです。これは、他の能力が「削除」または減衰している可能性を示唆しています。たとえば、Flux-proの教師モデルの蒸留中に、美学的入力埋め込みのような別の入力条件が(おそらく人間の好みのために)狭い範囲に制限され、Flux-devには存在しない可能性があります。あるいは、devモデルがトレーニングセットの非常に小さなサブセットに対して過剰適合している可能性もあります。このようなすべての推測は可能性が高いですが、現時点では真実は不明です。
なぜトレーニングが失敗するのか
Fluxの蒸留プロセスを理解した後、Flux-devのトレーニングが失敗する主な理由はCFGガイドランススケールであることがわかります。Flux-proからの蒸留なしで、トレーニング中にこのスケールをどう設定すべきでしょうか?
推論段階で推奨されるように、ガイドランススケールを3.5や1より大きい適切な範囲に設定すると、元のトレーニング段階で使用された値を模倣しているように思えるため、良いアプローチのように見えます。しかし、Flux-proのCFG結果による制約がない場合、トレーニングのダイナミクスは大きく変化します。ガイドランス埋め込みが破壊され、蒸留が存在しないため、トレーニングが長ければ長いほどモデルが崩壊することがよくあります。
より簡単なアプローチは、トレーニング中にガイドランススケールを1.0に設定することです。これは直感的ではないように思えるかもしれません。なぜなら、元のトレーニングおよび推論段階では1.0のガイドランススケールは使用されていないからです。しかし、この設定が良い理由は2つあります:(1) ガイドランス=1.0での蒸留損失は最小化されます。CFGがFlux-proに作用しないため、Flux-devに近似可能であり、教師モデルを排除できます。(2) 蒸留なしのトレーニング設定はFlux-proと一致しており、Flux-pro自体は入力としてガイドランススケールベクトルを持たず、デフォルトで1.0です。したがって、一般的にガイドランススケール1.0でトレーニングすることは、Flux-proモデルを回復させることを意味します。
しかし、まだ問題があります。どのくらいの画像数と計算リソースが必要かは誰にもわかりません。また、ガイドランススケール1.0は、元のFlux-dev蒸留トレーニングの分布外である可能性があり、十分なステップ数でトレーニングされなければ安定性が不足する可能性があります。
Fluxをうまくトレーニングする方法
残念ながら、簡単な解決策はおそらく存在しません。多くのLoRAモデルが作成されていますが、十分なデータセットとトレーニングステップがない限り、満足できるものはほとんどありません。良いモデルを生み出す最も信頼できる方法は、Flux-devをトレーニングしてFlux-proを回復し、その回復モデル上でLoRAを微調整することです。Flux-dev自体で行うのではなく、です。そうでなければ、ガイドランス埋め込みを失うか、低品質な結果に終わるリスクがあります。
以下は、300万件の高品質画像で2エポックトレーニングして得た微調整モデル「Flux-dev2pro」です。https://huggingface.co/ashen0209/Flux-Dev2Pro
このモデルは完璧ではありません。実際、Flux-devより劣化した結果を生成しますが、いくつかの改善点が見られました。ガイドランス入力を1.0に設定したときに生成された画像を見てみましょう:

ガイドランス入力1.0は、推論では一般的な設定ではなく、元のモデルでは通常、劣化した結果を生み出します。しかし、この特定のトレーニング設定では、元のモデルが失敗する中で、微調整モデルがより良い性能を発揮していることを示しています。実際、通常の推論設定ではパフォーマンスが劣化します(より大きなガイドランススケールでの蒸留トレーニングが欠如しているため)。しかし、これは大きな問題ではありません。このモデルは推論用ではなく、トレーニング用(前節で述べたように)にのみ使用し、この設定でLoRAを継続してトレーニングすることで、より良い結果を得られます。
以下は、このモデルで行った実験の一部の結果です。私は「Flux-dev2pro」微調整モデルと元の「Flux-dev」の2つのベースモデル上で、有名なアーティストWlopのスタイルでLoRAをトレーニングしました。
LoRAのURL:https://huggingface.co/ashen0209/flux-lora-wlop

微調整モデルでLoRAをトレーニングし、元のモデルで推論した場合が最良の結果
予想通り、「Flux-dev2pro」でトレーニングしたLoRAをFlux-devに適用した場合が、他の方法よりも大幅に優れた結果を出しました。これは、SDXLでLoRAをトレーニングし、SDXL-turboやSDXL-lightningに適用する場合と同様の効果です。
「Flux-dev2pro」でLoRAをトレーニングし、Flux-devに適用した初期結果は有望であり、大幅な改善が見られますが、現時点で私の「Flux-dev2pro」は未完成であることは明らかです。さらなる改良の余地があり、継続的な努力やコミュニティからの貢献により、より優れたモデルが登場すると信じています。これらのモデルを完成させる道のりは困難ですが、一歩一歩、その可能性を最大限に引き出すことに近づいています。この分野がどのように進化するか、そして今後の革新に大いに期待しています。


