comfyui-lora-training について
ComfyUI ワークフロー向けに、キャラクター LoRA のデータセット準備、学習設定、評価を案内するスキルです。FLUX と SDXL、低 VRAM 設定、トラブルシューティングを扱います。
主な機能
- 01キャラクターデータセットの準備とキャプション作成
- 02FLUX と SDXL の学習設定
- 03低 VRAM 向け設定の調整
- 04同じプロンプトでチェックポイントを比較
- 05学習時の問題のトラブルシューティング
活用シーン
- 01シリーズ作品向けのキャラクター一貫性の学習
- 02LoRA 学習とゼロショット生成の選択
- 03過学習や同一性のずれの特定
- 04学習済み LoRA の ComfyUI ワークフローへの追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mckruz/ comfyui-expert --skill comfyui-lora-trainingインストール後、Claude Code で/comfyui-lora-trainingを入力して読み込まれたか確認します。
詳細
ComfyUI LoRA トレーニング
キャラクター LoRA のデータセット準備、トレーニング設定、評価をユーザーに案内します。
トレーニングする場合とゼロショット生成を使う場合
| シナリオ | 推奨事項 |
|---|---|
| 多数の画像で絶対的な一貫性が必要な場合 | LoRA をトレーニングする |
| キャラクターシリーズや継続的なプロジェクトを作成する場合 | LoRA をトレーニングする |
| 単発の画像をすばやく生成する場合 | ゼロショット生成を使う(InstantID/PuLID) |
| 参照画像が少ない場合(1〜5 枚) | ゼロショット生成を使う |
| コンセプトを試す場合 | まずゼロショット生成を使い、本格的に取り組む場合はトレーニングする |
トレーニングパイプライン
1. DATASET PREP
|-- Collect/generate 15-30 reference images
|-- Preprocess (crop, resize, diversify styles)
|-- Caption with trigger word + descriptions
|
2. CONFIGURE TRAINING
|-- Select training tool (Kohya/AI-Toolkit/FluxGym)
|-- Set hyperparameters based on model type
|-- Configure checkpointing
|
3. TRAIN
|-- Monitor loss curve
|-- Save checkpoints every 250-500 steps
|
4. EVALUATE
|-- Test each checkpoint with identical prompts
|-- Check identity accuracy, flexibility, overfitting
|-- Select best checkpoint
|
5. INTEGRATE
|-- Copy to ComfyUI models/loras/
|-- Update character profile with trigger word + strength
|-- Test in full workflow (LoRA + identity method)
データセットの準備
画像の要件
| 項目 | 最低 | 最適 | 最大 |
|---|---|---|---|
| 枚数 | 10-15 | 20-30 | 50+ |
| 解像度 | 512x512 | 1024x1024 | - |
| 形式 | PNG/高品質 JPEG | PNG | - |
コンテンツの多様性チェックリスト
- 複数のアングル(正面、3/4、横顔、後ろ姿)
- さまざまな表情(無表情、笑顔、真剣な表情、笑い顔など)
- 異なる照明条件(スタジオ光、自然光、ドラマチックな照明)
- 変化に富んだ背景(または透明/単色)
- 複数の服装/シチュエーション
- クローズアップとミディアムショットをそれぞれ含める
- 3D レンダリングの場合は、スタイルのバリエーションを含める(下記参照)
3D レンダリングの前処理
問題点:3D レンダリングをそのままトレーニングに使うと、「3D」の美的表現が焼き付いてしまいます。
解決策:まずスタイルのバリエーションを生成します。
- 各レンダリングに対し、スタイルプロンプトを変えながら img2img を実行する
- スタイルのバリエーションを 60%、元のレンダリングを 40% の割合で混ぜる
- これにより、スタイルではなくアイデンティティを学習させます
バリエーション用のスタイルプロンプト:
"photorealistic portrait, dslr photo"
"oil painting portrait"
"digital illustration"
"pencil sketch"
"watercolor portrait"
キャプションのルール
トリガーワード:必ず固有のトークンを最初の単語として使います。
- 良い例:
sage_character、ohwx_sage、sks_person - 悪い例:
woman、redhead、character(一般的すぎます)
キャプションの構成:
{trigger}, {subject type}, {clothing}, {pose}, {setting}, {lighting}, {style}
顔の特徴は説明しないでください(モデルに学習させます)。
- 悪い例:「緑色の目、そばかす、赤褐色の髪、くっきりした頬骨の女性」
- 良い例:「sage_character、女性、室内のポートレート、青いセーターを着用」
それ以外はすべて説明してください:服装、ポーズ、背景、照明、表情。
フォルダー構成
dataset/{character_name}/{repeats}_{trigger_word}/
001.png + 001.txt
002.png + 002.txt
...
フォルダー名:10_sage_character = 各画像をエポックごとに 10 回繰り返します。
トレーニング設定
FLUX LoRA(AI-Toolkit) - 推奨
network:
type: lora
linear: 16 # Rank (16-32 for characters)
linear_alpha: 16 # Alpha = rank for FLUX
train:
batch_size: 1
gradient_accumulation_steps: 4
steps: 1500 # FLUX converges faster
lr: 4e-4 # Higher than SDXL
optimizer: adamw8bit
dtype: bf16
datasets:
- resolution: [1024]
caption_ext: "txt"
sample:
sample_every: 250
prompts:
- "{trigger}, photorealistic portrait"
FLUX のトレーニングに関する注意事項:
- SDXL より 2〜3 倍速く収束します
- 通常、1000〜2000 ステップで十分です
- 過学習に注意してください(品質が早期に頭打ちになります)
- 標準では 24GB の VRAM が必要です。NF4 量子化を使う場合は 9GB です(SimpleTuner)
SDXL LoRA(Kohya_ss) - 実績あり
pretrained_model: "RealVisXL_V5.0.safetensors"
network_dim: 32 # Rank (16-64)
network_alpha: 16 # Usually dim/2
resolution: "1024,1024"
train_batch_size: 1
gradient_accumulation_steps: 4
learning_rate: 0.0001 # 1e-4
lr_scheduler: "cosine_with_restarts"
lr_scheduler_num_cycles: 3
max_train_epochs: 10
optimizer_type: "AdamW8bit"
mixed_precision: "bf16"
enable_bucket: true
min_snr_gamma: 5
ステップ数の計算:
total_steps = (images x repeats x epochs) / batch_size
Target: 1500-3000 steps for SDXL
Example: 20 images x 10 repeats x 5 epochs / 1 = 1000 steps
低 VRAM でのトレーニング(FluxGym / SimpleTuner)
VRAM が 12〜16GB の場合:
use_8bit_adam: true
gradient_checkpointing: true
cache_latents_to_disk: true
max_data_loader_n_workers: 0
train_batch_size: 1
gradient_accumulation_steps: 8
quantize_base_model: nf4 # SimpleTuner only
評価プロトコル
各チェックポイントをテストする
すべてのチェックポイントで同一のプロンプトを使用します。
Prompt 1: "{trigger}, photorealistic portrait, neutral expression"
Prompt 2: "{trigger}, photorealistic portrait, smiling, outdoor"
Prompt 3: "{trigger}, wearing formal suit, standing, office"
Prompt 4: "a person standing in a park" (WITHOUT trigger - should NOT produce character)
品質の指標
良好なトレーニング:
- トリガーワードだけでキャラクターを認識できる
- 異なるプロンプト/コンテキストに応じた生成ができる
- 常に同じポーズ/表情を生成するわけではない
- プロンプト 4 ではキャラクターが生成されない
過学習の兆候:
- プロンプトに関係なく、まったく同じポーズ/表情になる
- トレーニングに使った背景が生成画像に現れる
- 服装/設定に関するプロンプトを無視する
- プロンプト 4 でキャラクターが生成される(効きすぎています)
最適なエポックの選択
1500 ステップで sample_every: 250 を使用する場合:
- チェックポイント 250:通常は学習不足です
- チェックポイント 500-750:FLUX ではこの範囲が最適になることがよくあります
- チェックポイント 1000-1500:過学習している可能性があります
見た目を比較し、アイデンティティの再現性とプロンプトへの柔軟性のバランスが最も良いチェックポイントを選択します。
トレーニング後の統合
- 最適なチェックポイントを
{ComfyUI}/models/loras/にコピーします - キャラクタープロファイルを更新します。
lora: trained: true model_file: "sage_character_flux.safetensors" trigger_word: "sage_character" best_strength: 0.8 - LoRA(0.7-0.9)+ PuLID/IP-Adapter(0.5-0.7)を使って、ワークフロー全体でテストします
- 成功した設定をキャラクターの
generation_historyに記録します
LoRA とゼロショット手法の併用
ベストプラクティス:LoRA を基本のアイデンティティとして使い、ゼロショット手法で強化します。
[Load Checkpoint] → [Load LoRA (0.7-0.9)] → [Apply PuLID/IP-Adapter (0.5-0.7)] → [Generate]
両方の重みを下げることで、競合を防ぎながらアイデンティティを強化できます。
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| LoRA が有効にならない | トリガーワードのスペルを確認し、KSampler の前に読み込まれていることを確認してください |
| 角度によって本人らしさが崩れる | データセットにさまざまな角度を追加し、network_dim を小さくしてください |
| 過学習 | エポック数を減らし、データセットを増やし、network_dim を小さくしてください |
| スタイルの混入 | キャプションの多様性を高め、キャプションにスタイルを記述しないでください |
| 品質の低さ/アーティファクト | 学習画像に圧縮がないか確認し、LR を下げてください |
リファレンス
references/lora-training.md- パラメーターの完全なリファレンスreferences/models.md- 学習ツールのダウンロードリンク- トリガーワードと参照画像については、
projects/内のキャラクタープロファイルを参照してください
コメント
Markdown 対応