LoRAとは?仕組み・学習・使い方・学習パラメータまで完全ガイド

LoRAとは何か?
LoRAとは、Low-Rank Adaptation(低ランク適応)の略で、大規模なモデル(例:Stable Diffusion)の重みをすべて再学習するのではなく、一部だけを効率的に調整できる手法です。モデル全体ではなく、小さな追加モジュール(LoRA層)を学習させることで、
GPUリソースが少なくても学習できる
学習時間が短くて済む
微調整(ファインチューニング)がしやすい
という特徴があり、画像生成AIや大規模言語モデルの軽量ファインチューニング技術として広く使われています。
未来本体モデルに着せ替えアイテムや拡張パックを加えるような感覚で、カスタマイズができます!
目次
LoRAの仕組み
LoRAは「学習元のモデル(base model)」の特定の層に、追加の小さな行列(LoRA層)を挿入します。この行列は初期状態ではゼロに近い値で、元のモデルの動作を邪魔しませんが、学習によって変化し、出力を補正するようになります。
LoRAで出来る事
- 特定のキャラや服装、ポーズに特化したスタイル
- 自分のオリジナルキャラを再現したモデル
- 特定の背景や構図、画風を再現するための補助モデル
LoRAを使うメリット
- **フルファインチューニングに比べてVRAM消費が圧倒的に少ない(8GBでも可能)
- 目的に合わせたモデルを簡単に追加・切り替えできる
- モデル容量が小さい(数十MB〜数百MB)
| 手法 | 特徴 |
|---|---|
| **フルファインチューニング | モデル全体を学習。高精度だが時間とVRAMが必要 |
| DreamBooth(ドリームブース) | 人物やキャラに特化。学習に時間がかかることも |
| LoRA | 効率よく学習・切替可能。軽量で実用的 |
| Textual Inversion | 文字列を新しい概念に対応させる。非常に軽量 |
LoRAの制約・デメリット
高度な表現力や複雑な概念には限界がある(→ DreamBoothやフルファインチューニングが必要)
学習データの質に強く影響される(少量データでも効率的だが、データ品質が重要)
既存モデルの構造に依存する(特定のベースモデルと互換性が必要)
LoRAのファイル形式とサイズ感
ファイル形式:.safetensors または .pt
サイズ目安:30MB~200MB程度(内容やrankによる)
学習時間:10~60分程度(GPU、**学習ステップ数などによる後で解説)
※高性能GPU(例:A100やRTX 4090):高速処理が可能で、同じステップ数でも短時間で学習できます。
※低スペックGPU(例:T4やVRAM 8GB以下):メモリ制限や処理速度の関係で、同じ条件でも2倍〜数倍時間がかかることがあります。
RunPodなどでは、A100(VRAM 80GB)であれば10分程度、
ColabでT4(VRAM 16GB)なら20〜40分程度が目安になります(ステップ数500前後)。
LoRAが使える主なツールとフレームワーク
LoRAは、「学習」フェーズ(LoRAを作る)と「推論/使用」フェーズ(LoRAを使う)で使うツールや目的が異なります。
LoRAの「学習」フェーズ:【画像生成系】(Stable Diffusion関連)
目的:絵柄や特定のスタイル・キャラの特徴をAIに覚えさせる
おすすめは、Kohya_ss(できれば自分のPCにインストールする方法)です。
| ツール名 | 特徴 |
|---|---|
| Kohya_ss | 最も有名なLoRA学習ツール。細かい設定が可能。 Colab RunPodでの使用方法についてはこちらhttps://sakasaai.com/runpod-set01/ 自分のPCにインストールする方法はこちらhttps://sakasaai.com/local_kohya_ss/ |
| sd-scripts | Kohyaのベース。コマンドライン操作が必要で、玄人向け |
| ComfyUI (学習向け拡張あり) | ノード式で直感的。LoRA学習用ノードも登場しつつあるが、構築がやや難しい |
| Diffusers (Transformers系) | HuggingFaceベースのコードライクな学習。LoRA統合も可能だがやや専門的 |
作ったLoRAを再び学習にかけて、さらに調整したり、別のスタイルを混ぜたりと、再学習(ファインチューニング)も可能です。Kohya_ssなどでは、元のLoRAを初期値として使うことで、そこからさらにデータを加えて再学習できます。
LoRAの「推論/使用」フェーズ:【画像生成系】(Stable Diffusion関連)
ここでは、ツールでLoRAを「読み込み」だけで使用する事を指しています。
目的: 作ったLoRAを使って画像生成する(学習は行わない)
| ツール名 | 特徴 |
|---|---|
| web UI (AUTOMATIC1111) | Stable Diffusion定番UI。LoRAの読み込みに対応(<lora:name:weight>など) |
| ComfyUI | ノード式でLoRAを差し込むノードがある(LoRA Loaderなど) |
| InvokeAI / Fooocus | 一部LoRAに対応しているツールも増えている |
| Stable Diffusion XL 対応UI | SDXL対応版はLoRA Block Weightなど専用ノードが必要なことも |
【言語モデル系(LLM)】
| フレームワーク | 主な用途 | 備考 |
|---|---|---|
| PEFT (Hugging Face) | LLM向けのLoRA学習ライブラリ。 | ChatGPTのようなLLMにもLoRAが使われる |
| QLoRA | メモリ節約型LoRA。GPUが小さくても学習可能。 | LLM学習の省リソース化に最適 |
| Axolotl | LLaMA系のLoRA微調整に使われる。 | GPUクラスタでも使える学習基盤 |
| OpenVINO / ONNX | エッジ端末でのLoRA適用に対応。 | 展開用途に適している |
LoRAの使い分け例(画像・言語モデル)
| タイプ | 使用目的 | 推奨ツール |
|---|---|---|
| 画像生成 | キャラ特化・画風学習 | Kohya_ss、sd-scripts |
| 画像生成 | LoRAモデルのテスト・合成 | A1111、ComfyUI |
| 文章生成(LLM) | 文章スタイル・応答の調整 | PEFT、QLoRA、Axolotl |
| 音声・動画系 | 試験的導入が進行中 | まだ一般向けツールは少ない |
LoRAを組み合わせる活用例
| 活用パターン | 説明 |
|---|---|
| 複数LoRAの組み合わせ | 「キャラLoRA」+「画風LoRA」+「構図LoRA」などをA1111などで合成使用 |
| 管理ツールとの併用 | LoRA Manager拡張などで効率的に切り替え・比較 |
| LoRA強度(weight)調整 | <lora:name:0.6> のように、生成時に強度を調整可能(ComfyUIでも可) |
Stable Diffusionモデルに新しい情報(人物・スタイル・キャラクターなど)を学習させるためのLoRA系の軽量学習手法(ファインチューニング手法)
類似手法
| 手法名 | 概要 | 備考 |
|---|---|---|
| LoRA | モデルの重みの一部(特定の層)にだけ低ランク行列を追加して学習 | 現在の主流、非常に軽量 |
| LyCORIS | LoRAの拡張版。複数の変換方法を組み合わせて柔軟性を向上 | より精細なチューニングが可能 |
| LoHa / LoCon | LyCORISに含まれる手法。LoRAよりも学習が安定しやすいことがある | 画像ジャンルによって相性がある |
| Dylora(Dynamic LoRA) | LoRAを層ごとに動的に使い分ける発展型 | 学習の柔軟性が高いがやや複雑 |
LoRA系は「後から読み込み式(追加モジュール)」で、WebUIやCivitaiで多用されています。
LoRA学習での設定項目について
※学習の際の設定は、学習する**データセットの内容と、使用するGPUによって設定が変わります。
**データセット・・・自身が学習させたい画像とテキストタグのセットの事を指します。
あわせて読みたい

【自作イラストをLoRA化】画像とテキストタグ(キャプション)の準備からフォルダ構成まで徹底解説 学習用データセットの作り方 LoRA(Low-Rank Adaptation)は、既存のAIモデルに対して、自分のイラストや作風を学習させられる技術です。でもいざ始めようとすると── 「…
上の記事内では、フォルダ構成に関してもまとめてあります。
※ここからは、画像と、テキストタグ、が正しいフォルダ構成でフォルダ内に入っている事を前提に話を進めていきます。
LoRA用訓練設定
それでは、必要な設定項目を見ていきましょう。
GUI画面で以下を設定します。
- Model:
runwayml/stable-diffusion-v1-5(または自前モデル) - Train batch size: 下で記載
- Max train steps: 100〜数千(テストなら少なめで)
- Save trained model as:
safetensors推奨 - Mixed Precision:
fp16
「output name」「model name」について
Kohya GUI の「Training」で、「LoRA」や「DreamBooth」などの学習種類を選ぶと、「Training」や「Basic」タブが表示されます。
「output name」で選択したフォルダ名が .safetensors のファイル名になります。
| ラベル名例 | 説明 | 例 |
|---|---|---|
Output name | 出力されるLoRAの名前(.safetensors) | 20_cat |
Output directory(出力フォルダ) | 保存先のディレクトリ(/outputsなど) | /outputs |
output_name = last(デフォルト)の場合
- 学習によって出力されるモデル(
.safetensorsなど)のファイル名が、last.safetensorsになります。 - これは **「最後のエポックのモデル」**という意味合いで、わかりやすい汎用名です。
- 保存先は通常
/outputsに保存されます。

上の画像内では、Trained Model output name に10_sakasaを指定しています。
この例では、/kohya_ss/output/10_sakasa にLoRAファイル(.safetensors)が生成されます。.safetensorsは、AUTOMATIC1111 に組み込めば即使用可能です。
注意点
空白や日本語のパスは避ける(例:C:\Users\ユーザー名\マイ ドキュメント\ は非推奨)
Windowsではバックスラッシュ \ を使う(ただしGUIや設定ファイルではスラッシュ / でも通ることが多い)
手動で読み込ませる方法(上級者向け)
もし別フォルダに置きたい場合は、WebUIの webui-user.bat や launch.py を編集して環境変数 --lora-dir を追加することで、LoRAの読み込み場所を変更できます(ただし一般には非推奨)。
VRAM制限あり/なしでの設定の主な違い(一覧)
| 設定項目 | VRAMに制限がない場合(例:24GB〜) | VRAMに制限あり(例:~8GBの) | 違いの理由・ポイント |
|---|---|---|---|
| 学習解像度 | 768×768、1024×1024 も可能 | 原則512×512まで(768は片側のみ) | 高解像度はVRAMを大幅に消費 |
| バッチサイズ(batch) | 2〜8(高速学習) | 1(これ以外はほぼOOM) | VRAMに最も直結する項目 |
| LoRA Rank | 8〜32(高精度) | 4〜8(VRAM制限のため低く) | Rankが高いほど学習に必要な重みが増える |
| gradient accumulation | 基本的に不要(バッチサイズで調整) | 必須(例:4〜8) | 小バッチでの学習安定化に必要 |
| mixed precision | fp16 or bf16 | fp16固定(fp32は不可) | 高精度(fp32)はメモリ消費が大きい |
| キャッシュの活用 | 使わなくても余裕がある | cache latents は必ず有効 | エンコード処理を減らしメモリを節約 |
| optimizer | 何でも選べる(AdamW, Lion, DAdaptなど) | AdamW8bit, Lion8bitなど軽量最適化器推奨 | 8bitオプティマイザはVRAM消費が少ない |
| 複数モデル同時学習 | 可能(LoRA+TextualInversionなど) | 基本不可(VRAM不足) | マルチ学習は負荷が非常に高い |
| エポック数の調整 | 短時間で済むので少なめでもOK(5〜10) | 小バッチなので多めが必要(10〜20以上) | 学習の進みが遅いため、反復で補う必要あり |
| 学習速度 | 非常に高速(大バッチで並列処理) | 遅い(小バッチ+反復) | 効率の差は大きい |
Train batch size は、主にGPUのVRAM容量によって決めます。
Train batch size を大きくすると、一度に学習する画像の数が増える=使うVRAMも増えます。
目安(LoRA学習・画像サイズ512×512)
| VRAM容量 | 推奨バッチサイズ(batch size) |
|---|---|
| 6GB | 1(低解像度でもギリギリ) |
| 8GB | 1~2 |
| 12GB | 2~4 |
| 16GB | 4~6 |
| 24GB以上(例:A100) | 8以上も可能 |
※ 実際の上限は学習設定や画像サイズによって前後します。
モデルファイル fp16とfp32の違いについてはこちらをクリック
Stable DiffusionなどのAIモデルでは、モデルファイルに「fp16」または「fp32」という表記があることがあります。
これは浮動小数点(floating point)精度の違いを意味しています。
基本的な違い
| 項目 | fp16(半精度) | fp32(単精度) |
|---|---|---|
| 精度 | 16ビット | 32ビット |
| ファイルサイズ | 小さい(例:2GB前後) | 大きい(例:4GB以上) |
| メモリ消費 | 少ない(軽い) | 多い(重い) |
| 処理速度 | 速い(対応GPUなら) | 遅い(より計算コストが高い) |
| 対応GPU | RTX 20XX以降がおすすめ | すべてのGPUで動作可能 |
| 精度(品質) | 若干落ちる場合あり(ほぼ差なし) | 高精度(LoRA学習ではこちら推奨) |
fp16のメリット・用途
- 画像生成に向いている
- 軽くて高速、VRAM消費も少なめ
- GPUに
Tensor Core(例:NVIDIA RTXシリーズ)があると恩恵が大きい - LoRAの**生成(推論)**時はほとんどの場合fp16で十分
fp32のメリット・用途
- 学習(トレーニング)に向いている
- 精度を重視する必要があるときに使用
- LoRAやDreamBoothなどの学習作業にはfp32が安定
- ただし重く、メモリ消費が多い
| 目的 | おすすめ |
|---|---|
| 画像生成のみ | fp16 |
| 学習やLoRA作成 | fp32 |
| 低VRAM環境(8GB未満) | fp16 |
- 入力画像(例:512×512)
- 学習対象のモデル(例:Stable Diffusion v1.5)
- 重みの更新に必要な中間データ(勾配など)
- バッチ全体のデータ(画像の枚数 × 各種情報)
注意点
- フォルダ名は 「Lora」(Lが大文字)です。
※小文字の「lora」だと読み込まれないことがあります。 - ファイル名に日本語やスペースが入っていると、うまく動作しないことがあるので、半角英数字・アンダーバー推奨です。
「 Save every N epochs」
ave every N epochs は、Kohya_ssでLoRA学習中に、何エポックごとに中間モデルを保存するかを指定する項目です。
| 項目名 | 説明 |
|---|---|
Save every N epochs | Nエポックごとに1回、LoRAファイルを保存する設定 |
例:2 | → 2エポックごとに保存される(2, 4, 6…) |
例:0 | → 中間保存せず、最後だけ保存される |
学習結果の過程を比較したい場合や、学習途中で品質が下がるリスクに備えたい場合に使用します。
「Save every N steps」
ステップ(バッチ数単位)ごとに保存するオプションで、通常は Save every N epochs の方がわかりやすく使いやすいのです。
| 設定 | 動作 |
|---|---|
0 | 最後に1回だけ保存(中間モデルなし) |
1 | すべてのエポック終了時に毎回保存 |
2 | 2エポックごとに保存(バランス良) |
5〜10 | 長期学習向き。ログ用の軽保存 |
「Max train epoch」について
デフォルトの「10」は多いかもしれません。使用データ量によって調整します。
- 意味:「何回データセットを繰り返して学習するか」を指定します。
- デフォルトは
10ですが、以下のように調整するのが一般的です。
| 画像枚数(×1枚に1タグ付き) | 推奨 Epoch |
|---|---|
| 10〜20枚 | 10〜20回 |
| 30〜50枚 | 5〜10回 |
| 100枚以上 | 2〜5回 |
Epoch が多すぎると、訓練データに特化しすぎて汎用性が下がる「過学習」になります。
network_rankについて
network_rank(ネットワークランク)は LoRA学習での超重要な設定項目 です!
これは、LoRAが「元モデルに追加する微小な学習層(低ランク行列)」の**パラメータ数(≒学習力)**をコントロールするものです。
学習できる情報量の多さ(≒容量・精度)を決める
- 数値が高いほど学習能力が高く、表現力も上がる
- でもVRAM消費・ファイルサイズも増える
Rank の目安と比較表
| Rank | 特徴 | 使用シーン例 |
|---|---|---|
2 | 非常に軽量・低精度(LoRA Tiny) | 容量重視。効果は薄め |
4 | 軽量でVRAM節約向き | 8GB環境や軽量キャラ向け |
8 | 標準的な精度と軽さのバランス | 初心者や汎用LoRAに最適 |
16 | 精度重視、高情報量 | 表情・ポーズ・背景も細かく覚えさせたいとき |
32〜64 | 非常に高精度(モデルに近い重さ) | 高VRAM環境(24GB〜)、特定用途向け |
Dreambooth/LoRA Dataset Balancingについて
- こちらは**複数のコンセプトフォルダ(例:キャラA、キャラB)**がある場合の補助機能です。
- 学習画像数が極端に偏っているとき、自動でバランスを取ってくれる処理です。
- たとえばこういう構成
/dataset
├── character_A
│ ├── a1.png
│ └── a1.txt
└── character_B
├── b1.png
└── b1.txtコンセプト数が多く、かつ枚数バランスに偏りがあるときに使用。
学習ステップ数とは?
LoRAでいう「ステップ数」とは、「どれくらい強く学ばせるか」の指標で、学習に使うデータのバッチを何回処理するかを指します。
「500ステップ」は「バッチ500回分の学習」を意味します。
| 用途 | ステップ数の目安(参考) | 備考 |
|---|---|---|
| 単純な表情差分/ポーズ差分 | 50〜200ステップ | LoRA Rankも低めでOK |
| キャラクターの顔・髪・服などの一貫性を持たせたい | 200〜400ステップ | 学習画像10〜20枚程度想定 |
| オリジナルキャラを強く固定したい | 400〜800ステップ | 学習画像が20〜50枚以上で調整 |
※「ステップ数が多い=強く学習する」ですが、過学習になるリスクも上がります。
画像枚数やバッチサイズ、目的(微調整 or 作風付与)別の具体的な指標
目安1:画像枚数 × エポック数 × バッチサイズ = ステップ数
これがステップ数の基本計算です。
以下は、計算が苦手な自分用に作成した計算ツールです。求めたい値(エポック数orステップ数)をラジオボタンで選択して各数値を入力して計算します。(小数点以下は切り捨て。)
ステップ数・エポック数 計算ツール
ステップ数を求める
エポック数を求める
例1:25枚の画像、エポック20、バッチサイズ1
→ 25 × 20 / 1 = 500ステップこの構成なら ステップ数500は妥当です。
例2:10枚の画像、エポック10、バッチサイズ1
→ 10 × 10 = 100ステップこれにステップ数500を設定すると、同じ画像を5回繰り返すことになります。
→ 過学習のリスクが高まります。
一般的なステップ数の目安
| 用途 | 画像枚数の目安 | エポック数 | 合計ステップの目安 |
|---|---|---|---|
| キャラ特化LoRA(簡易) | 10〜20枚 | 10〜20 | 100〜400 |
| 作風付与LoRA(軽量) | 30〜50枚 | 10〜15 | 300〜750 |
| 高精度LoRA(丁寧な作り) | 100枚以上 | 10〜20 | 1000〜2000 |
同じ画像を何度も回すと劣化・崩れやすい(顔が潰れるなど)ため、足りない場合は、「正則化画像(regularization)」で補うことも可能です。
設定の保存
「Load/Save Config file」について
「Load/Save Config file」は、Kohya GUI(kohya_ss)で使う学習設定の保存/読み込み機能です。以下のように使います。
Save Config file(設定の保存)
- 現在GUIで設定した 学習条件(画像フォルダ、出力名、エポック数など) を、
.jsonファイルとして保存できます。 - 次回、同じ学習設定を再利用したいときに便利です。
- 設定をGUIで入力
Save Config fileボタンをクリック.jsonファイル名を指定して保存
例:lora_cat_config.json
Load Config file(設定の読み込み)
- 以前保存した
.jsonの設定ファイルを読み込むと、GUIに自動で値が反映されます。 - 複数のLoRA学習パターンを切り替えて使う時にとても便利です。
Load Config fileをクリック- 以前保存した
.jsonファイルを選択
保存される内容(例)
- 画像フォルダのパス
- 出力名・保存先
- エポック数、バッチサイズ
- 学習率(Learning rate)
- 使用モデルのパス(Pretrained model)
- 正則化や学習スケジュールなどの高度なパラメータも含む
出力される2種類の .safetensors ファイル
① 出力フォルダ名-000004.safetensors
- エポック番号(チェックポイント付き)
- これは「学習ステップ途中のスナップショット」です。
--save_every_n_epochsや--save_every_n_stepsを指定していると、自動で一定間隔ごとに保存されます。- 用途:
- 学習の途中経過を検証したいとき
- 精度が最も高かった中間地点に戻したいとき
例:出力フォルダ名-000004.safetensors → 4エポック終了時のモデル
② 出力フォルダ名.safetensors
- 最終エポックまで完了した学習モデル(最終出力)
- 学習がすべて終わった後、自動的に出力されます。
- 最も安定した「完成モデル」として扱われます。
- 用途:
- 実際に画像生成で使うモデル
- Hugging Faceなどで公開するモデル
カスタマイズしたいときの設定項目
| 項目名 | 説明 |
|---|---|
--save_model_as=safetensors | 出力形式(safetensors / ckpt など) |
--output_name=出力フォルダ名 | モデル名の指定。出力ファイル名の先頭に反映されます |
--save_every_n_epochs=1 | 何エポックごとに中間モデルを保存するか(例:毎回保存) |
--max_train_epochs=10 | 最後のエポックで .safetensors(番号なし)が生成 |
注意点
出力フォルダ名.safetensorsは 学習が最後まで正常に完了しないと生成されません。途中で止まった場合は、番号付き(例:-000004)しか残らないので、必要に応じてそれを手動でリネームして使うことが可能です。
