はじめに
前回の記事では、
キャラクターLoRAの作り方を実践的に解説しました。
「推奨値で学習してみたけど、もっと品質を上げたい」
「パラメータの意味がわからないまま使っている」──
そんな方のための記事ですわ。
この記事では、
各パラメータが結果にどう影響するかを、
たとえ話や比較表を使って丁寧に解説します。
理屈を理解すれば、自分の目的に合った設定を自力で見つけられるようになります。
- Network Rank(DIM)と Alpha の関係
- 学習率(Learning Rate)の設定と影響
- LRスケジューラの種類と選び方
- Epoch・バッチサイズの計算方法
- オプティマイザの比較と選択
- その他の重要設定(Mixed Precision、xformersなど)
- パラメータ早見表
第1章:Network Rank(DIM)と Alpha
LoRAの品質に最も大きく影響するのが、この2つのパラメータです。
🎨 Network Rank(DIM)とは?
Rankは、LoRAの「表現力の広さ」を決めるパラメータです。
Rankは「絵を描くときの色鉛筆の本数」に似ています。
4色しかなければ簡素な絵しか描けませんが、128色あれば非常に細かい表現が可能です。
ただし、色鉛筆が多すぎると整理が難しくなり、描くのに時間もかかりますわ。
Rankの値と影響
| Rank | ファイルサイズ | 表現力 | 向いている用途 | リスク |
|---|---|---|---|---|
| 4〜8 | 小(数MB) | 低い | 簡単なスタイル、色調変更 | 学習不足になりやすい |
| 16〜32 | 中(10〜50MB) | 適度 | キャラクターLoRA(推奨✅) | バランスが良い |
| 64 | 大(50〜100MB) | 高い | 複雑なキャラ / 高精度要求 | 過学習に注意 |
| 128 | 特大(100MB〜) | 非常に高い | 特殊な要件のみ | 過学習リスク大 |
🛡️ Network Alpha とは?
Alphaは学習の「ブレーキの強さ」を決める正則化パラメータです。
専門的には、LoRAの出力にかけるスケーリング係数です。
Alpha の計算式: 実効学習率 = 学習率 × (Alpha / Rank) 例: Rank=32, Alpha=16 の場合: スケール = 16/32 =0.5Rank=32, Alpha=32 の場合: スケール = 32/32 =1.0(正則化なし) Rank=32, Alpha=1 の場合: スケール = 1/32 =0.03(非常に穏やか)
📉 Alpha が低い(1〜Rank/4)
- 学習がとても穏やか
- 過学習しにくい
- キャラの特徴が薄くなりがち
- 多くのEpochが必要
📈 Alpha が高い(Rank/2〜Rank)
- 学習が速い
- キャラの特徴がしっかり出る
- 過学習しやすい
- 少ないEpochで済む
Alpha = Rank ÷ 2 が最も安定した設定です。
例えば Rank=32 なら Alpha=16。迷ったらこれで問題ありませんわ。
第2章:学習率(Learning Rate)
学習率(Learning Rate / LR)は、1回の学習ステップで どのくらい大きく重みを更新するかを決めるパラメータです。
学習率は「歩幅」のようなものです。
大きな歩幅で走れば早く目的地に着けますが、
最適な場所を通り過ぎてしまうかもしれません。
小さな歩幅で慎重に歩けば正確ですが、時間がかかりすぎます。
📊 3つの学習率
LoRA学習では、以下の3つの学習率を個別に設定できます。
| パラメータ | 対象 | 推奨値 | 役割 |
|---|---|---|---|
| Learning Rate | 全体 | 1e-4 |
基本の学習率。UNet/TE LRが未設定の場合に使用 |
| UNet LR | UNet (画像生成エンジン) |
1e-4 |
画像の見た目(色、形、構造)を学習する部分 |
| Text Encoder LR | テキストエンコーダ | 5e-5 |
プロンプト(テキスト)の理解を学習する部分 |
学習率の影響(UNet LR)
| 学習率 | 学習速度 | 品質 | リスク |
|---|---|---|---|
1e-5 |
非常に遅い | 細かい調整向き | 学習不足になりやすい |
5e-5 |
やや遅い | 安定した品質 | 多めのEpochが必要 |
1e-4 ✅ |
適度 | 良好 | バランスが良い |
5e-4 |
速い | やや不安定 | 過学習・色のノイズ |
1e-3 |
非常に速い | 不安定 | 画像の破綻リスク大 |
- UNet LRの半分(5e-5)が安定 ✅
0に設定 → テキストエンコーダを学習しない(トリガーワードが効きにくくなる)- SDXLはテキストエンコーダが2つあるので、配列で指定:
[5e-5, 5e-5]
第3章:LRスケジューラとウォームアップ
📉 LRスケジューラとは?
スケジューラは、学習の進行に合わせて学習率を自動的に変化させる仕組みです。
料理にたとえるなら、「最初は強火で表面を焼き、その後は弱火でじっくり」という火加減の調整ですわ。
シンプルだが最適化されにくい
予測しやすい
最も人気の選択肢
局所最適解の脱出に有利
| スケジューラ | 挙動 | 向いている状況 |
|---|---|---|
| constant | 終始一定 | Prodigy等の自動調整オプティマイザと組み合わせ |
| linear | 直線的に0へ | 短いEpochでの学習 |
| cosine ✅ | 最初は速く、 終盤はゆっくり減少 |
ほとんどのLoRA学習(推奨) |
| cosine_with_restarts | cosineを繰り返す | 長いEpoch、局所最適解の回避 |
🔥 LRウォームアップ
ウォームアップは、学習開始時に学習率をゆっくり上げていく期間のことです。
いきなり全力で走るとケガをするように、AIもいきなり高い学習率で始めると不安定になります。
| 設定値 | 意味 | 推奨 |
|---|---|---|
0 |
ウォームアップなし | 短い学習には不要 |
0.1 ✅ |
全ステップの10%をウォームアップに | 推奨値 |
0.2 |
全ステップの20% | 非常に慎重な学習 |
第4章:Epoch・バッチサイズ・繰り返し数
📐 総ステップ数の計算
学習の「量」を理解するには、総ステップ数を把握することが重要です。
計算式: 総ステップ数 = (画像枚数 × 繰り返し数 × Epoch数) ÷ バッチサイズ 例: 24枚、繰り返し10、Epoch 10、バッチ1の場合: (24 × 10 × 10) ÷ 1 =2,400 ステップ例: 50枚、繰り返し5、Epoch 15、バッチ2の場合: (50 × 5 × 15) ÷ 2 =1,875 ステップ
🔄 Epoch(エポック)
Epochは、全学習画像を一巡学習する回数です。
| Epoch数 | 特徴 | 使いどころ |
|---|---|---|
| 5以下 | 少なめ。学習不足になりやすい | 大量の画像(100枚以上) |
| 10 ✅ | 標準的。バランスが良い | 20〜50枚の画像 |
| 15〜20 | 多め。高精度だが過学習リスク | 少ない画像(10枚以下) |
Epochを多め(10〜15)に設定して、save_every_n_epochs = 1 で毎Epoch保存。
あとから比較して最適なEpochを選ぶのが最も確実な方法ですわ。
📦 バッチサイズ
バッチサイズは、一度に何枚の画像を同時に学習するかの設定です。
📦 バッチサイズ = 1
- VRAM消費: 少ない(8〜10GB)
- 学習のノイズ: やや多い
- 向いている: VRAM 8〜12GBのGPU
📦 バッチサイズ = 2〜4
- VRAM消費: 多い(14〜24GB)
- 学習の安定性: 高い
- 向いている: VRAM 16GB以上のGPU
VRAMが足りないけどバッチサイズを大きくしたい場合、
Gradient Accumulation Stepsを使えます。
例えば batch_size=1, accumulation=2 にすると、
VRAMはバッチ1のまま、効果はバッチ2相当になりますの。
🔁 繰り返し数(フォルダ名の数字)
| 画像枚数 | 推奨繰り返し | 理由 |
|---|---|---|
| 10〜20枚 | 10 | 十分なステップ数を確保するため |
| 30〜50枚 | 5〜8 | 画像が多いので繰り返しは少なめ |
| 50枚以上 | 3〜5 | 繰り返しが多すぎると過学習に |
第5章:オプティマイザの選択
オプティマイザ(Optimizer / 最適化アルゴリズム)は、 学習率をもとにどのようにパラメータを更新するかを決めるアルゴリズムです。
目的地への移動方法に似ています。
AdamWは「カーナビ付きの車」── 安定して速い。
AdamW8bitは「カーナビ付きの軽自動車」── 同じ精度で燃費が良い。
Prodigyは「自動運転車」── 速度(学習率)を自分で調整してくれますわ。
AdamW
AdamW8bit ✅
Lion
Prodigy
DAdaptAdam
- 🔰 初心者・とりあえず使いたい → AdamW8bit
- 🎯 学習率のチューニングが面倒 → Prodigy(LR=1, scheduler=constantで)
- 💎 VRAM に余裕がある + 最高品質 → AdamW
- ⚡ 高速収束したい → Lion(LRは通常の1/10に)
第6章:その他の重要設定
🔧 Mixed Precision(混合精度)
計算の精度を下げてメモリを節約する設定です。
| 設定 | 精度 | VRAM消費 | 特徴 |
|---|---|---|---|
no |
fp32(全精度) | 最大 | 最高精度だがVRAM大量消費 |
fp16 ✅ |
半精度浮動小数点 | 約半分 | ほとんどの環境で推奨 |
bf16 |
bfloat16 | 約半分 | RTX 30xx/40xx向け。fp16より安定する場合あり |
⚡ xformers
Attention(注意機構)の計算をメモリ効率よく高速化するライブラリです。
常にONにしておくことを推奨します。
ONにすると、VRAM消費が20〜40%削減され、学習速度も向上します。
📦 Gradient Checkpointing(勾配チェックポイント)
Gradient Checkpointingは、VRAMの消費を大幅に削減するための機能です。
通常の学習では、途中の計算結果をすべてVRAMに保存しておく必要がありますが、
この機能をONにすると途中経過を一部捨てて、必要なときに再計算するようになります。
料理にたとえるなら、通常は「下ごしらえした材料をすべてキッチンに広げておく」方法です。
Gradient Checkpointingは「冷蔵庫にしまっておいて、使うときに取り出す」方法ですの。
キッチン(VRAM)は狭くても済みますが、取り出す手間(再計算)が増えるので少し時間がかかります。
✅ ONにする場合
- VRAMを30〜50%節約できる
- VRAM 8〜12GBのGPUでSDXL学習が可能に
- 学習速度は10〜30%低下
❌ OFFのままにする場合
- 学習速度は最速
- VRAMに余裕がある場合はOFFで問題なし
- VRAM 16GB以上推奨
- 学習中にCUDA out of memory(メモリ不足)エラーが出たとき → まずこれをON
- SDXL + VRAM 12GB以下の環境 → ONにしないと学習できない場合が多い
- VRAM 16GB以上で余裕がある → OFFのままで速度優先
VRAMが足りないときの最初の切り札として覚えておきましょう。 xformersと併用するとさらに効果的ですわ。
💾 Cache Latents
VAE(画像のエンコード/デコード)の出力をキャッシュして、
2回目以降のEpochで再計算を省略する設定です。
ONにすると学習速度が向上し、VRAM消費も多少減ります。
デメリットはほぼないので常にONで問題ありません。
🪣 Bucket(バケット機能)
異なるサイズの画像を効率的に学習するための機能です。
すべての画像を完全に同じサイズに
リサイズしなくても、
Bucket機能が自動的に近いサイズのグループにまとめてくれます。
| 設定 | 推奨値 | 説明 |
|---|---|---|
| Enable Bucket | ✅ ON | 異なるサイズの画像に対応 |
| Bucket reso steps | 64 |
バケットの解像度ステップ |
| Bucket no upscale | ✅ ON | 小さい画像を拡大しない(品質維持) |
✂️ Clip Skip
CLIPテキストエンコーダの最後から何層をスキップするかの設定です。
| モデル | 推奨値 | 理由 |
|---|---|---|
| SD 1.5 | 2 |
アニメ系モデルではSkip 2が主流 |
| SDXL | 1 |
SDXLではデフォルトの1が推奨 |
🌊 Noise Offset
学習時にノイズにオフセットを加える設定です。
これをONにすると、
非常に明るい・非常に暗い画像の生成品質が向上します。
値は 0.05〜0.1 が推奨です。
特に暗いシーンのイラストを生成する予定がなければ、設定しなくても問題ありません。
まとめ
📋 パラメータ早見表
| パラメータ | 推奨値 | ひとこと |
|---|---|---|
| Network Rank (DIM) | 32 | キャラLoRAの標準。迷ったらこれ |
| Network Alpha | 16 | Rankの半分 |
| Learning Rate | 1e-4 | 全体の学習率 |
| UNet LR | 1e-4 | 画像生成部分 |
| Text Encoder LR | 5e-5 | UNetの半分 |
| Optimizer | AdamW8bit | 初心者に最もおすすめ |
| LR Scheduler | cosine | 最も人気 |
| LR Warmup | 0.1 | 全ステップの10% |
| Epoch | 10 | 毎Epoch保存して比較 |
| Batch Size | 1 | VRAMに余裕あれば2 |
| Mixed Precision | fp16 | ほぼ必須 |
| xformers | ON | 常にON |
| Cache Latents | ON | 常にON |
| Gradient Checkpointing | VRAM不足時にON | VRAM節約の切り札 |
| Clip Skip | SD1.5: 2 / SDXL: 1 | モデルに合わせる |
- Rank = LoRAの表現力。キャラLoRAなら
32が最適 - Alpha = 学習のブレーキ。Rankの半分(
16)が安定 - 学習率 = UNet
1e-4, TE5e-5がバランス◎ - スケジューラ =
cosineが最も人気で安定 - オプティマイザ =
AdamW8bit(初心者推奨)orProdigy(自動調整) - Epoch = 多めの設定 + 毎Epoch保存 → あとから選ぶ
- パラメータに正解はない。推奨値で始めて、結果を見て微調整
- キャラクターLoRAの作り方 ─ kohya_ssで自分だけのLoRAを学習しよう【実践編】
- LoRAとは? ─ LoRAの基本概念と使い方
- 生成パラメータ解説 ─ 生成時のパラメータ設定ガイド
- おすすめチェックポイント紹介 ─ LoRA学習のベースモデル選び
- Stable Diffusionとは? ─ 仕組みの基礎知識
- LoRA: Low-Rank Adaptation of Large Language Models (Hu et al., 2021) ─ LoRAの元論文
- Hugging Face PEFT LoRA解説 ─ 技術的な背景
- kohya_ss GitHub ─ GUI付きLoRA学習ツール
- sd-scripts GitHub ─ kohya_ssの元となるスクリプト集