「SDXL でLoRA学習したけど、うまくいかない...」「パラメータが多すぎて、どれをいじればいいか分からない」そんな悩みを抱えていませんか?
SDXL(Stable Diffusion XL)は、SD1.5よりも高解像度・高品質な画像を生成できますが、LoRA学習のパラメータ設定がSD1.5とは大きく異なります。
筆者はこれまで300回超えのLoRA学習を実施し、その全てのパラメータと結果を記録してきました。総コスト約12万円、28ヶ月間の試行錯誤の集大成として、この記事では用途別の最適パラメータを実測データとともに公開します。
目次
1. SDXLとSD1.5の違い【LoRA学習の観点から】
1-1. モデルサイズの違いが学習に与える影響
SDXLがSD1.5と大きく異なる点は、モデルのパラメータ数です。この差が学習時間やコスト、パラメータ設定に直接的な影響を与えます。
| 項目 | SD1.5 | SDXL |
|---|---|---|
| パラメータ数 | 約9.8億 | 約26億 |
| 推奨解像度 | 512×512px | 1024×1024px |
| VRAM必要量 | 8GB以上 | 12GB以上 |
| 学習速度 | 速い | やや遅い |
| 品質 | 標準 | 高品質 |
学習時間の実測(RTX 4090, データセット45枚, 10エポック)
- SD1.5: 約25分
- SDXL: 約45分
コスト差(クラウドGPU利用時)
- SD1.5: 約0.35ドル(約52円)
- SDXL: 約0.6ドル(約90円)
1-2. パラメータ設定で異なる点
SDXLの高いモデル複雑度に対応するため、以下の点でSD1.5の設定を大幅に調整する必要があります:
| パラメータ | SD1.5 | SDXL | 理由 |
|---|---|---|---|
| 学習率 | 0.0001 | 0.00005~0.00007 | モデルが大きいため、慎重に学習する必要がある |
| Network Dim | 64~128 | 128~256 | より複雑な特徴を表現するため大きめが推奨 |
| Batch Size | 4~8 | 2~4 | VRAM消費が大きいため削減が必須 |
| Resolution | 512×512px | 1024×1024px | SDXLの真価を引き出すには高解像度が必須 |
1-3. 筆者の失敗談:SD1.5の設定をそのまま使った結果
SDXLが登場した2023年7月、筆者は最初の学習で大失敗しました。その時の経験から、多くのことを学びました。
失敗の内容
SD1.5で成功していたパラメータをそのまま使用しました。特に学習率を0.0001のままにしていたのが致命的でした。
結果
オーバーフィッティングで画像が崩壊し、非常に低い品質のLoRAが完成しました。
原因分析
SDXLはモデルが大きいため、同じ学習率では「学習しすぎ」になります。これが過剰に最適化される現象につながりました。
改善と結果
学習率を0.00005に下げ、エポック数も15から10に削減。その結果、安定した品質のLoRAが完成しました。この失敗が、その後300回超えの学習経験につながったのです。
2. パラメータ一覧と意味【完全解説】
パラメータ値の重要な注記
※ここで紹介するパラメータは一般的な推奨値です。用途や素材に応じた最適化が重要です。
2-1. 基本パラメータ(必須)
1. Network Dim(ネットワーク次元)
意味: LoRAの「サイズ」を決定します。大きいほど表現力が高まりますが、ファイルサイズとオーバーフィッティングのリスクも増加します。
推奨値:
- キャラクターLoRA: 128~192
- スタイルLoRA: 64~128
- 質感LoRA: 128~256
実測:
| Dim値 | ファイルサイズ | 品質 | 過剰学習リスク |
|---|---|---|---|
| 64 | 約150MB | やや低い | 低リスク |
| 128 | 約290MB | 良好 | 中リスク |
| 256 | 約570MB | 非常に高い | 高リスク |
結論: 128が最もバランスが良い。品質とリスクの両面を考慮するとこの値が最適です。
2. Network Alpha(ネットワークアルファ)
意味: 学習の安定性を調整します。一般的にはNetwork Dimの半分に設定するのが標準です。
推奨値: Network Dim ÷ 2
- Dim 128 → Alpha 64
- Dim 256 → Alpha 128
3. Learning Rate(学習率)
意味: 1ステップあたりにモデルをどれだけ更新するかを決定します。この値がSDXL成功の鍵です。
推奨値:
- SDXL標準: 0.00005~0.00008
- 高速学習: 0.0001(リスク高)
- 慎重学習: 0.00003(安全)
実測(金箔LoRA、Dim=128、45枚、10エポック):
| LR値 | 学習時間 | 品質 | 安定性 |
|---|---|---|---|
| 0.0001 | 42分 | 過剰品質 | 不安定 |
| 0.00008 | 43分 | 良好 | やや不安定 |
| 0.00005 | 45分 | 良好 | 安定(★最適) |
| 0.00003 | 47分 | やや弱い | 非常に安定 |
結論: 0.00005が最適バランス。
4. Train Batch Size(バッチサイズ)
意味: 1回のステップで処理する画像枚数です。大きいほど学習は安定しますが、VRAM消費が増加します。
推奨値(GPU別):
- RTX 3060(12GB): 1
- RTX 3090(24GB): 2
- RTX 4090(24GB): 2~4
- A100(40GB): 4~8
VRAM使用量の実測(SDXL, Dim=128, 1024×1024px):
- Batch 1: 約11GB
- Batch 2: 約18GB
- Batch 4: 約34GB
5. Max Train Epochs(エポック数)
意味: データセット全体を何回学習するかを決定します。この値も過学習を避けるために慎重に設定すべき重要なパラメータです。
推奨値:
- キャラクターLoRA: 10~15
- スタイルLoRA: 15~20
- 質感LoRA: 10~12
実測(金箔LoRA、45枚、Dim=128、LR=0.00005):
| エポック数 | Loss値 | 品質 | 判定 |
|---|---|---|---|
| 5 | 0.098 | やや弱い | 学習不足 |
| 10 | 0.072 | 良好 | ★最適 |
| 15 | 0.065 | やや過剰 | オーバーフィッティング気味 |
| 20 | 0.058 | 過剰 | オーバーフィッティング |
結論: 10エポックが最適。これ以上増やすと過学習の危険性が高まります。
2-2. 高度なパラメータ(任意)
6. Optimizer(オプティマイザー)
主な選択肢:
- AdamW(標準) - 安定していて推奨される
- AdamW8bit(VRAM節約版) - メモリ効率が良い
- Lion(高速) - より高速な学習が可能
- Prodigy(自動調整) - 自動で最適化を実施
実績: 筆者の300回超えの学習の中で、290回はAdamWを使用しています。
結論: 初心者から中級者はAdamWを推奨します。
7. LR Scheduler(学習率スケジューラー)
主な選択肢:
- constant(一定) - 学習率を常に一定に保つ
- cosine(徐々に減少、推奨) - 途中から学習率を徐々に低下させ、より安定した学習を実現
- polynomial(多項式) - 複雑な減少パターン
推奨: cosine は質感LoRA以外全般でお勧めです。
8. Text Encoder Learning Rate
推奨値: 通常の学習率の1/2~1/5
- 通常LR 0.00005 → Text Encoder LR 0.00001
3. 用途別最適パラメータ【実測データ付き】
3-1. キャラクターLoRA
推奨パラメータセット:
| パラメータ | 推奨値 |
|---|---|
| Dim | 128 |
| Alpha | 64 |
| Learning Rate | 0.00008 |
| Text Encoder LR | 0.00002 |
| Batch Size | 2 |
| Epochs | 12 |
| Optimizer | AdamW |
| LR Scheduler | cosine |
データセット: 30~50枚、多様なポーズ・表情・角度、リピート10
実測結果: 48分(RTX 4090)、約0.64ドル(約96円)、強度0.7~0.9で最適
3-2. スタイルLoRA
推奨パラメータセット:
| パラメータ | 推奨値 |
|---|---|
| Dim | 96 |
| Alpha | 48 |
| Learning Rate | 0.00005 |
| Text Encoder LR | 0.00001 |
| Batch Size | 2 |
| Epochs | 15 |
| Optimizer | AdamW |
| LR Scheduler | cosine |
データセット: 50~100枚、多様なモチーフ、リピート5~8
実測結果: 72分(RTX 4090)、約0.96ドル(約144円)、強度0.5~0.8で最適
3-3. 質感LoRA
推奨パラメータセット:
| パラメータ | 推奨値 |
|---|---|
| Dim | 128 |
| Alpha | 64 |
| Learning Rate | 0.00005 |
| Text Encoder LR | 0.000015 |
| Batch Size | 2 |
| Epochs | 10 |
| Optimizer | AdamW |
| LR Scheduler | constant |
データセット: 40~60枚、質感が明確な画像、リピート10
実測結果: 45分(RTX 4090)、約0.6ドル(約90円)、強度0.6~0.8で最適
3-4. コンセプトLoRA
推奨パラメータセット:
- Dim: 64
- Alpha: 32
- Learning Rate: 0.00007
- Text Encoder LR: 0.00002
- Batch Size: 2
- Epochs: 12
- Optimizer: AdamW
- LR Scheduler: cosine
データセット: 25~40枚、リピート12
4. 実測データとベンチマーク
4-1. Network Dim別の品質とコスト
測定条件: 45枚金箔LoRA、10エポック、LR=0.00005、RTX 4090
| Dim値 | 学習時間 | コスト | ファイルサイズ | 品質 | 過剰学習 |
|---|---|---|---|---|---|
| 32 | 38分 | $0.51 | 75MB | 6.2/10 | なし |
| 64 | 42分 | $0.56 | 150MB | 7.8/10 | なし |
| 128 | 45分 | $0.60 | 290MB | 9.1/10 | 軽度 |
| 192 | 49分 | $0.65 | 430MB | 9.3/10 | 中度 |
| 256 | 52分 | $0.69 | 570MB | 9.2/10 | 高度 |
結論: Dim=128がコストパフォーマンス最高。品質と安定性のバランスが最も優れています。
4-2. Learning Rate別の安定性
測定条件: 45枚、Dim=128、Alpha=64、10エポック
| LR値 | Loss値 | 品質 | 安定性 | 推奨 |
|---|---|---|---|---|
| 0.0001 | 0.048 | 過剰 | 不安定 | ✕ |
| 0.00008 | 0.063 | 良好 | やや不安定 | △ |
| 0.00005 | 0.072 | 良好 | 安定 | ◎ |
| 0.00003 | 0.089 | やや弱い | 非常に安定 | ○ |
| 0.00001 | 0.132 | 弱い | 非常に安定 | ✕ |
結論: 0.00005が最適バランス。品質と安定性の両面で最も優れています。
5. 失敗パターンと改善策
5-1. オーバーフィッティング
症状: 学習データと全く同じ画像しか生成されない
原因:
- エポック数が多すぎ
- 学習率が高すぎ
- データセットが少なすぎ
改善策:
- エポック数を10に削減
- LR を0.00005に設定
- データセットを45枚以上に増やす
5-2. 学習不足(Under-fitting)
症状: LoRA適用してもほとんど変化がない
原因:
- エポック数が少なすぎ
- LR が低すぎ
- Dim が小さすぎ
改善策:
- エポック数を12に増やす
- LR を0.00007に調整
- Dim を128に設定
5-3. VRAM不足エラー
症状: RuntimeError: CUDA out of memory
改善策:
- Batch Size を1に削減
- Gradient Checkpointing を有効化
- fp16 モード を使用
5-4. Loss値が下がらない
原因:
- LR が低すぎ
- タグが不適切
- 画像品質が低い
改善策:
- LR を0.00005に調整
- タグをより具体的に指定
- 低品質画像を削除
6. まとめ
SDXL LoRA学習のパラメータ設定は、SD1.5とは大きく異なります。300回超えの学習経験から得た最適パラメータは、以下の通りです:
初心者~中級者向けの黄金パラメータ
- Network Dim: 128
- Network Alpha: 64
- Learning Rate: 0.00005
- Train Batch Size: 2
- Max Train Epochs: 10
- Optimizer: AdamW
- LR Scheduler: cosine
これらのパラメータは、多くの試行錯誤と実測データに基づいています。あなたも、この黄金パラメータをベースに実験を重ねることで、素晴らしいLoRAを作成できるようになるはずです。
SDXL LoRA学習は、最初は難しく感じるかもしれません。しかし、基本を理解して、段階的に最適化していくことで、確実に成功していきます。筆者の経験が、あなたの学習の道標となれば幸いです。