FLUX LoRAはAIコミュニティで大変人気があり、特に自分のデータセットでAIモデルを微調整しようとする人々に支持されています。このアプローチにより、既存のFLUXモデルを簡単に独自のデータセットに適応させることができ、非常にカスタマイズ可能で多様な創造的プロジェクトに効率的です。ComfyUIに既に精通している場合、ComfyUI FLUX LoRAトレーニングワークフローを使用してFLUX LoRAモデルをトレーニングするのは簡単です。このワークフローと関連ノードはKijaiによって作成されましたので、彼の貢献に大きな感謝を!詳細はをチェックしてください。
ComfyUI FLUX LoRAトレーニングワークフローは、FLUX LoRAモデルをトレーニングするために設計された強力なプロセスです。ComfyUIでのトレーニングは、特にそのインターフェースに慣れているユーザーにとって多くの利点があります。FLUX LoRAトレーニングでは、推論に使用される同じモデルを使用できるため、同じPython環境で作業する際に互換性の問題が発生しません。さらに、異なる設定を比較するためのワークフローを構築することができ、トレーニングプロセスを強化します。このチュートリアルでは、ComfyUIでFLUX LoRAトレーニングを設定および使用するための手順を案内します。
以下をカバーします:
FLUX LoRAトレーニングのためのトレーニングデータを準備する際には、ターゲットとなる被写体の高品質な画像を用意することが重要です。
この例では、特定のインフルエンサーの画像を生成するためにFLUX LoRAモデルをトレーニングします。これには、インフルエンサーのさまざまなポーズや設定の高品質な画像セットが必要です。これらの画像を集める便利な方法は、を使用することで、同じキャラクターが異なるポーズをとりつつ外観を一貫させた画像のコレクションを簡単に生成できます。トレーニングデータセットには、インフルエンサーのさまざまなポーズや設定の高品質な画像を5枚選び、FLUX LoRAトレーニングが一貫性と正確な出力を生成するために必要な詳細を学習できるようにしました。
また、特定のニーズに基づいて独自のデータセットを収集することもできます——FLUX LoRAトレーニングは柔軟で、さまざまな種類のデータと連携します。
FLUX LoRAトレーニングワークフローは、モデルをトレーニングおよび検証するために連携するいくつかの主要なノードで構成されています。ここでは、データセット、設定と初期化、トレーニングの3つの部分に分けて主要なノードの詳細な概要を示します。
データセットセクションには、トレーニングデータを構成およびカスタマイズするのに役立つ2つの重要なノードが含まれています:TrainDatasetGeneralConfigとTrainDatasetAddです。
TrainDatasetGeneralConfigノードは、FLUX LoRAトレーニングでトレーニングデータセットの全体的な設定を定義する場所です。このノードでは、データの増強や前処理のさまざまな側面を制御できます。たとえば、さまざまな色のバリエーションに対するモデルの一般化能力を向上させるためにカラー増強を有効または無効にすることができます。同様に、フリップ増強を切り替えて画像をランダムに水平反転させ、より多様なトレーニングサンプルを提供できます。さらに、各画像に関連付けられたキャプションをシャッフルしてランダム性を導入し、過学習を減らすことができます。キャプションのドロップアウト率を設定してトレーニング中にキャプションをランダムにドロップし、欠落したり不完全なキャプションに対してモデルがより堅牢になるようにすることができます。
TrainDatasetAddノードは、FLUX LoRAトレーニングに含める各個別のデータセットの詳細を指定する場所です。
このノードを最大限に活用するには、トレーニングデータを適切に整理することが重要です。RunComfyのファイルブラウザを使用する場合、トレーニングデータを/home/user/ComfyUI/input/{file-name}
ディレクトリに配置し、{file-name}
はデータセットに割り当てる意味のある名前です。
トレーニングデータを適切なディレクトリに配置したら、TrainDatasetAddノードのimage_dir
パラメータにそのディレクトリへのパスを指定する必要があります。これにより、ノードがトレーニング画像を見つける場所を示します。
データセットに特定のクラストークンやトリガーワードを使用する場合、それらをclass_tokens
パラメータに入力できます。クラストークンは各キャプションの前に付け加えられ、モデルの生成プロセスをガイドする特別な単語やフレーズです。たとえば、さまざまな動物種のデータセットをトレーニングしている場合、生成された画像に望む動物を示すために"dog"、"cat"、"bird"などのクラストークンを使用できます。これらのクラストークンをプロンプトで使用することで、生成したい特定の側面を制御できます。
image_dir
およびclass_tokens
パラメータに加えて、TrainDatasetAddノードはデータセットを微調整するための他のオプションも提供します。画像の解像度(幅と高さ)を設定し、トレーニング用のバッチサイズを指定し、データセットをエポックごとに繰り返す回数を決定できます。
FLUX LoRAトレーニングの強力な機能の1つは、複数のデータセットをシームレスに組み合わせる能力です。FLUX LoRAトレーニングワークフローでは、3つのTrainDatasetAddノードが連続して接続されています。各ノードは独自の設定を持つ個別のデータセットを表します。これらのノードをリンクさせることで、さまざまなソースからの画像とキャプションを取り入れた豊かで多様なトレーニングセットを作成できます。
これを例として、猫、犬、クマの3つの別々のデータセットがあるとします。3つのTrainDatasetAddノードを設定し、それぞれのデータセットに専用の設定を行います。最初のノードでは、image_dir
パラメータに"cats"データセットへのパスを指定し、class token
を"cat"に設定し、解像度やバッチサイズなど他のパラメータをニーズに合わせて調整します。同様に、2番目と3番目のノードをそれぞれ"dogs"と"bears"データセットに対して設定します。
このアプローチにより、FLUX LoRAトレーニングプロセスはさまざまな画像を活用し、異なるカテゴリ間での一般化能力を向上させます。
この例では、1つのデータセットのみを使用してモデルをトレーニングするため、1つのTrainDatasetAddノードを有効にし、他の2つはバイパスします。以下はその設定方法です:
設定と初期化セクションでは、FLUX LoRAトレーニングの主要なコンポーネントとパラメータを構成します。このセクションには、トレーニング環境を設定するために連携するいくつかの重要なノードが含まれています。
まず、FluxTrainModelSelectノードがあります。これは、FLUX LoRAトレーニング中に使用されるFLUXモデルを選択する役割を果たします。このノードでは、transformer、VAE(Variational Autoencoder)、CLIP_L(Contrastive Language-Image Pre-training)、およびT5(Text-to-Text Transfer Transformer)の4つの重要なモデルのパスを指定できます。これらのモデルはFLUXトレーニングプロセスのバックボーンを形成し、すべてRunComfyプラットフォームに設定されています。
OptimizerConfigノードは、FLUX LoRAトレーニング内のオプティマイザを設定するために重要で、トレーニング中にモデルのパラメータがどのように更新されるかを決定します。オプティマイザのタイプ(例:AdamW、CAME)を選択し、勾配クリッピングの最大勾配ノルムを設定して勾配爆発を防ぎ、学習率スケジューラ(例:一定、コサイン減衰)を選択できます。さらに、ウォームアップステップやスケジューラのパワーなど、オプティマイザ固有のパラメータを微調整し、追加の引数を提供してさらにカスタマイズできます。
よりメモリ効率が高く、大規模なモデルを処理できることで知られるAdafactorオプティマイザを好む場合は、OptimizerConfigAdafactorノードを使用できます。
InitFluxLoRATrainingノードは、FLUX LoRAトレーニングプロセスを開始するためにすべての重要なコンポーネントが集まる中心的なハブです。
InitFluxLoRATrainingノードで指定する重要な項目の1つは、トレーニングされたモデルが保存される出力ディレクトリです。RunComfyプラットフォームでは、/home/user/ComfyUI/output/{file_name}
を出力の場所として選択できます。トレーニングが完了すると、ファイルブラウザで確認できます。
次に、ネットワークの寸法と学習率を設定します。ネットワークの寸法はLoRAネットワークのサイズと複雑さを決定し、学習率はモデルがどれだけ速く学習し適応するかを制御します。
もう1つの重要なパラメータは、max_train_steps
です。これはトレーニングプロセスをどれだけ長く実行するか、つまりモデルが完全に焼き上がるまでにかかるステップ数を決定します。データセットのサイズや特定のニーズに基づいてこの値を調整max_train_stepを調整できます。適切なポイントを見つけることが重要です。
最後に、FluxTrainValidationSettingsノードを使用して、FLUX LoRAトレーニングプロセス中にモデルのパフォーマンスを評価するための検証設定を構成します。検証ステップ数、画像サイズ、ガイダンススケール、再現性のためのシードを設定できます。さらに、タイムステップサンプリングメソッドを選択し、シグモイドスケールとシフトパラメータを調整して、タイムステップスケジューリングを制御し、生成された画像の品質を向上させます。
FLUX LoRAトレーニングのトレーニングセクションは、魔法が起こる場所です。これは4つの部分に分かれています:Train_01、Train_02、Train_03、およびTrain_04。これらの各部分はFLUX LoRAトレーニングプロセスの異なる段階を表しており、モデルを徐々に洗練し改善することができます。
まず、Train_01です。ここでは初期トレーニングループが行われます。このセクションの主役はFluxTrainLoopノードで、指定されたステップ数のトレーニングループを実行します。この例では250ステップに設定されていますが、ニーズに応じて調整できます。トレーニングループが完了すると、トレーニングされたモデルはFluxTrainSaveノードに渡され、定期的にモデルが保存されます。これにより、トレーニングの異なる段階でのモデルのチェックポイントを持つことができ、進行状況を追跡したり、予期しない中断から回復したりするのに役立ちます。
しかし、トレーニングはモデルを保存するだけではありません。モデルのパフォーマンスを検証して、その進行状況を確認する必要があります。そこでFluxTrainValidateノードが登場します。このノードはトレーニングされたモデルを検証データセットを使用してテストします。このデータセットはトレーニングデータとは別で、見たことのない例に対するモデルの一般化能力を評価します。FluxTrainValidateノードは検証データに基づいてサンプル画像を生成し、この段階でのモデルの出力を視覚的に確認できます。
トレーニングの進行状況を監視するために、VisualizeLossノードがあります。この便利なノードは、トレーニング損失の時間経過を視覚化し、モデルがどれだけうまく学習しているか、適切な解決策に収束しているかを確認できます。まるで個人トレーナーが進行状況を追跡し、軌道に乗るのを助けてくれるようなものです。
FLUX LoRAトレーニングのTrain_02では、Train_01から続けてさらに指定されたステップ数(例:250ステップ)のトレーニングを行います。Train_03およびTrain_04も同様のパターンで進行し、スムーズな進行のために更新された接続を持つトレーニングを拡張します。各ステージはFLUX LoRAモデルを出力し、パフォーマンスをテストおよび比較することができます。
この例では、250ステップずつ実行するTrain_01とTrain_02のみを使用することを選択しました。Train_03とTrain_04は今回はバイパスしました。ただし、特定のニーズやリソースに応じてトレーニングセクションの数やステップ数を調整して実験してください。
FLUX LoRAモデルを手に入れたら、に組み込むことができます。既存のLoRAモデルをトレーニングしたモデルに置き換え、結果をテストしてそのパフォーマンスを評価します。
この例では、FLUX LoRAワークフローを使用して、FLUX LoRAモデルを適用し、そのパフォーマンスを観察してインフルエンサーの画像をさらに生成します。
ライセンスファイルを表示:
FLUX.1 [dev] モデルはBlack Forest Labs. Inc.によってFLUX.1 [dev] 非商用ライセンスの下でライセンスされています。著作権はBlack Forest Labs. Inc.に帰属します。
IN NO EVENT SHALL BLACK FOREST LABS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH USE OF THIS MODEL.
© 著作権 2024 RunComfy. All Rights Reserved.