【初心者向け】Google Colabで簡単FLUX LoRA作成!キャプション自動生成から学習まで全手順解説
はじめに
この記事では、Google Colaboratory(Colab)環境とGoogle Driveを利用して、お手持ちの画像から自動でキャプションを生成し、そのキャプションを使って最新の画像生成モデル「FLUX」に対応したLoRA(Low-Rank Adaptation)ファイルを作成する手順を、ステップバイステップで解説します。
複雑な設定は極力避け、最低限必要な設定変更だけでLoRAを作成することを目指します。LoRA作成に初めて挑戦する方や、FLUXモデルでのLoRA作成を試してみたい方を対象としています。
全体の流れ(ワークフロー)
この記事では、以下の流れでキャプション生成からFLUX LoRA作成までを進めます。
- LoRA学習環境の準備:Google Driveに必要なフォルダ構成を準備できます。
- キャプションの自動生成:Colabノートブックを使い、手持ちの画像から説明文(キャプション)を自動で作成できます。
- 学習データの効率的な整形:生成したキャプション全てに、LoRA学習に必要なトリガーワードを一括で追加できます。
- FLUX対応LoRAの作成:準備した画像とキャプションをもとに、最新のFLUXモデルで利用可能なLoRAファイルをColab上で学習・生成できます。
- 成果物の確実な保存:完成したLoRAファイルを、指定したGoogle Driveフォルダに安全に保存できます。
必要なもの
- Googleアカウント:Google DriveとColabを使用するために必要です。
- Google Drive:学習用の画像、生成されたキャプション、最終的なLoRAファイルを保存するために、ある程度の空き容量が必要です。
- Hugging Faceアカウント:LoRA学習のベースとなるFLUXモデルをダウンロードするために必要です。
- Hugging Face トークン:Hugging Face Hubからモデルをダウンロードするための認証キーです。
read権限を持つトークンを事前に準備してください。(Hugging Face Tokensページで作成できます) - 学習させたい画像:LoRAで学習させたい対象の画像ファイル(
png、jpg、jpeg、webp形式)を複数枚準備してください。
注意点
- GPU要件:
・キャプション生成:比較的軽量ですが、GPU(Google Colabの無料枠で使えるT4など)があると高速です。
・LoRA生成(FLUX):非常に高いGPU性能(特にVRAM)が必要です。Google Colabの有料プランで利用可能なA100 GPUでの実行を強く推奨します。T4などのGPUではメモリ不足で失敗する可能性が高いです。 - FLUXモデルへのアクセス許可:
・LoRA学習の前に、使用するHugging FaceアカウントでFLUXモデル(black-forest-labs/FLUX.1-dev)へのアクセス許可をWebサイト上で事前に取得しておく必要があります。詳細はステップ2で説明します。 - 実行時間:LoRAの学習には時間がかかります。データ量や設定によっては数時間かかることもあります。
事前準備:学習用画像フォルダの作成
まず、Google Drive内にLoRA学習に使用する画像ファイルと、生成されるキャプションファイルを保存するためのフォルダを作成します。このフォルダパスは後続のステップで何度も使用します。
- Google Drive(https://drive.google.com/)を開きます。
- 「マイドライブ」内に、例えば
lora_projectというようなフォルダを作成します(既にあればそれを使用しても構いません)。 - 作成した
lora_projectフォルダ内に、さらに学習データ用のフォルダを作成します。ここでは例としてtraining_dataという名前にします。 - 作成した
training_dataフォルダに、LoRAで学習させたい画像ファイル(png、jpgなど)をアップロードします。
この例では、学習用フォルダのフルパスは以下のようになります。このパスを後でColabノートブックに設定します。
/content/drive/MyDrive/lora_project/training_data
(※ lora_project や training_data の部分は好きな名前に変更しても構いませんが、その場合は以降の手順で読み替えてください。)
ステップ1:キャプション生成とトリガーワード追加
次に、提供される1つ目のColabノートブック「キャプション生成(共有用).ipynb」を使用して、準備した画像からキャプションを自動生成し、トリガーワードを追加します。
- ノートブックを開く:提供された
キャプション生成(共有用).ipynbファイルをGoogle Colabで開きます。(Colabのメニュー「ファイル」>「ノートブックをアップロード」などで開けます) - セル1「環境構築」を実行:
・「Google Driveを使用しますか?」はチェックを入れたまま(True)にしておくことを推奨します。
・セルの左側にある実行ボタン(▶)をクリックして実行します。Google Driveへのアクセス許可を求められたら許可してください。
・ライブラリのインストールなどが完了するまで待ちます。 - セル2「キャプション生成の実行」を設定・実行:
・【必須設定】image_folderの値を、事前準備で作成した画像フォルダのフルパスに変更します。
例:image_folder = "/content/drive/MyDrive/lora_project/training_data"
・(他の設定項目、例えばcaption_model_nameやcaption_extensionは、この手順ではデフォルトのままでOKです。)
・設定を変更したら、セルを実行します。
・画像フォルダ内の画像が読み込まれ、各画像に対応するキャプションファイル(デフォルトでは.txt)が同じフォルダ内に生成されます。画像の枚数によっては少し時間がかかります。(推奨GPU: T4)
- セル3「トリガーワードの一括追加」を設定・実行:
・【必須設定】target_dirの値を、セル2のimage_folderと同じパス(事前準備で作成した画像フォルダのパス) に設定します。
例:target_dir = "/content/drive/MyDrive/lora_project/training_data"
・【必須設定】trigger_wordの値に、このLoRAを後で呼び出す際に使いたい「トリガーワード」を設定します。半角英数字で、他の単語と被らないようなユニークなものが推奨されます。
例:trigger_word = "mycharstyle"
・設定を変更したら、セルを実行します。
・セル2で生成された各.txtファイルの先頭に、指定したトリガーワード(例:mycharstyle,)が追加されます。
このステップが完了すると、Google Driveの training_data フォルダ内には、元の画像ファイル(.jpgなど)と、それに対応する「トリガーワード, (自動生成されたキャプション)」という内容のテキストファイル(.txt)が存在する状態になります。
ステップ2:FLUX LoRAの生成
次に、2つ目のColabノートブック「LoRA生成(FLUX)共有用).ipynb」を使用して、ステップ1で準備した画像とキャプションを使ってFLUX LoRAを学習・生成します。
【超重要】このステップを実行するには、A100などの高性能GPUが必要です。Colabの有料プランなどを検討してください。また、事前にHugging FaceサイトでFLUXモデルへのアクセス許可が必要です(後述)。
- ノートブックを開く:提供された
LoRA生成(FLUX)共有用.ipynbファイルをGoogle Colabで開きます。 - セル1「環境構築」を実行:
・「Google Driveを使用しますか?」はチェックを入れたまま(True)にしておくことを推奨します。
・セルを実行し、Google Driveへのアクセス許可、リポジトリのクローン、ライブラリのインストールが完了するまで待ちます。 - セル2「設定ファイルの準備と編集」を設定・実行:
・【必須設定】dataset_folder_pathの値を、ステップ1で使用した画像フォルダのフルパスに設定します。
例:dataset_folder_path = "/content/drive/MyDrive/lora_project/training_data"
・【必須設定】trigger_wordの値に、ステップ1のセル3で設定したトリガーワードと全く同じものを設定します。
例:trigger_word = "mycharstyle"
・【必須設定】lora_nameの値に、作成するLoRAのファイル名(および学習中のフォルダ名)として使いたい名前を設定します。半角英数字とアンダースコアなどが使えます。
例:lora_name = "my_character_flux_lora"
・(他の設定項目、例えばtraining_stepsやlora_rankなどは、この手順ではデフォルトのままでOKです。)
・設定を変更したら、セルを実行します。LoRA学習用の設定ファイル(設定したlora_name.yaml)が生成されます。
- 【超重要】Hugging Faceサイトでの事前準備:
・この次のセルを実行する前に、必ず以下の操作を行ってください。
・Hugging Faceにログインした状態で、ウェブブラウザで FLUX.1-devモデルページ を開きます。
・ページに表示される利用規約などを確認し、「Agree and access repository」(または類似の同意ボタン)をクリックして、モデルへのアクセス権を取得します。(通常、すぐに承認されます)
・このアクセス許可がないと、次のステップでトークンを設定してもモデルをダウンロードできず、エラーになります。 - セル3「Hugging Face トークン設定」を設定・実行:
・【必須設定】hf_tokenの値に、事前に準備した自分のHugging Face Read権限トークン(hf_...で始まる文字列)を貼り付けます。
・設定したら、セルを実行します。トークン情報が環境設定ファイル(.env)に保存されます。
- セル4「トレーニング実行」を実行:
・設定は不要です。セルを実行します。
・設定ファイルが読み込まれ、ベースモデル(FLUX)のダウンロードが始まります(初回は時間がかかります)。
・ダウンロード完了後、LoRAの学習が開始されます。セルの出力に進捗状況(ステップ数など)が表示されます。
・(設定によりますが、学習完了まで時間がかかります。A100 GPUでもステップ数によっては数十分~数時間かかる場合があります。)
・エラーが発生せず、「トレーニング実行 完了」と表示されれば成功です。 - セル5「成果物 (LoRAファイル) をGoogle Driveへ保存」を設定・実行:
・【必須設定】gdrive_lora_save_folderの値に、学習済みLoRAファイル(.safetensors)を保存したいGoogle Drive上のフォルダパスを指定します。
例:gdrive_lora_save_folder = "/content/drive/MyDrive/lora_project/flux_output"(このフォルダが存在しない場合は自動で作成されます)
・設定したら、セルを実行します。
・Colab環境内の/content/ai-toolkit/output/設定したlora_name/フォルダに生成された.safetensorsファイルが、指定したGoogle Driveのフォルダにコピーされます。
生成されたLoRAファイルについて
ステップ2のセル5が正常に完了すると、指定したGoogle Driveのフォルダ(例:/content/drive/MyDrive/lora_project/flux_output)内に、学習されたLoRAファイルが .safetensors 形式で保存されているはずです。
ファイル名は、学習途中で設定した保存間隔(save_every_steps)ごとに保存された場合は 設定したlora_name-ステップ数.safetensors のようになり、最終的に学習完了時のファイル(例:設定したlora_name.safetensors または最後のステップ数のファイル)が生成されます。
この .safetensors ファイルを、Stable Diffusion WebUI(AUTOMATIC1111版やComfyUIなど、FLUXモデルとLoRAに対応したもの)の適切なフォルダ(例:stable-diffusion-webui/models/Lora)に配置することで、画像生成時にトリガーワード(例:<lora:my_character_flux_lora:1> mycharstyle ... のように)を使って学習させた特徴を適用できるようになります。(WebUIでの具体的な使用方法は、各ツールのドキュメント等をご参照ください。)
補足:その他の設定項目について(任意)
今回は最低限の設定でLoRAを作成しましたが、各ノートブックには他にも調整可能な設定項目があります。より高品質なLoRAを目指したり、特定の目的に合わせたりする場合に調整を検討できます。
キャプション生成ノートブック(セル2)
caption_model_name:キャプション生成に使用するモデルを変更できます。デフォルトのSalesforce/blip2-opt-2.7bは詳細なキャプションを生成しやすいですが、Salesforce/blip-image-captioning-largeはより簡潔なタグに近いキャプションになる傾向があり、LoRA学習にはこちらの方が適している場合もあります。他の選択肢も含め、生成結果を見て選ぶのが良いでしょう。caption_extension:出力するキャプションファイルの拡張子を変更できます(通常は.txtのままで問題ありません)。batch_size:一度に処理する画像の枚数です。GPUメモリに余裕があれば増やすと少し速くなりますが、T4 GPUでは1か2程度が推奨です。max_length:生成するキャプションの最大長(トークン数)です。overwrite_captions:Trueだと、既に同名のキャプションファイルが存在する場合に上書きします。Falseだとスキップします。
LoRA生成ノートブック(セル2)
training_steps:学習を行う総ステップ数です。データセットの画像枚数とbatch_size(設定ファイル内で別途定義)によって適切な値は変わりますが、一般的には1000~2000ステップ程度が目安とされることが多いです。lora_rank:LoRAの次元数です。値が大きいほど表現力は増しますが、ファイルサイズが大きくなり、過学習のリスクも上がります。32や64が一般的ですが、FLUXではより大きな値(128、256など)が試されることもあります。lora_alpha:LoRAのスケーリング係数です。通常、Rankの半分から同程度の値を設定します(例:Rank 32ならAlpha 16)。Rankとのバランスで学習の効き具合が変わります。learning_rate:学習率です。値が大きいほど学習は速く進みますが、不安定になったり過学習したりしやすくなります。4e-4(0.0004) はadamw8bitオプティマイザの一つの目安ですが、データや他の設定によって最適な値は異なります。optimizer:学習の最適化アルゴリズムです。adamw8bitは省メモリで安定した選択肢として広く使われています。prodigyは学習率を自動調整する比較的新しいオプティマイザですが、設定がやや異なります。save_every_steps:学習途中のLoRAファイルを何ステップごとに保存するかを指定します。途中経過を確認したい場合に設定します(例:500ステップごと)。sample_every_steps:何ステップごとにサンプル画像を生成するかを指定します(0で無効)。学習の進捗を視覚的に確認できます。sample_prompts:サンプル画像生成に使用するプロンプトを複数行で指定します。[trigger]と書くと、設定したトリガーワードに置き換えられます。mixed_precision:計算に使用する精度です。bf16はA100・L4などで高速化と省メモリ化が期待できます。T4などではfp16が適しています。noは単精度(float32)ですが、メモリ消費が大きくなります。save_precision:LoRAファイルを保存する際の精度です。fp16が一般的で、ファイルサイズと互換性のバランスが良いです。cache_latents:学習データを事前に変換してキャッシュすることで、学習中のデータ読み込みを高速化します。VRAMを消費するため、メモリが少ない場合はFalseにします。gradient_checkpointing:計算グラフの一部を再計算することで、VRAM使用量を削減します。学習速度は少し遅くなりますが、メモリ不足対策に有効です。fp8_base:FP8(8ビット浮動小数点数)を使ってベースモデルの計算を行うことで、VRAM使用量をさらに削減します。A100などの対応GPUで効果があります。
おわりに
この記事では、2つのColabノートブックを使って、画像からのキャプション自動生成、トリガーワード追加、そしてFLUXモデルに対応したLoRAの学習・生成までを、最低限の設定変更で実行する手順を解説しました。
特にLoRA生成は高性能なGPUが必要となりますが、この手順に従うことで、比較的簡単に自分だけのFLUX LoRAを作成する第一歩を踏み出せるはずです。
生成したLoRAの品質をさらに向上させるためには、キャプションの内容を手動で編集・調整したり、LoRA学習の各種パラメータ(ステップ数、Rank・Alpha、学習率など)を試行錯誤したりすることが有効です。ぜひ、この記事を足がかりに、さらなるLoRA作成に挑戦してみてください。