LoRAとは?仕組み・学習・使い方・学習パラメータまで完全ガイド(Stable Diffusion/LLM対応)

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-scriptsKohyaのベース。コマンドライン操作が必要で、玄人向け
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 対応UISDXL対応版はLoRA Block Weightなど専用ノードが必要なことも

【言語モデル系(LLM)】

フレームワーク主な用途備考
PEFT (Hugging Face)LLM向けのLoRA学習ライブラリ。ChatGPTのようなLLMにもLoRAが使われる
QLoRAメモリ節約型LoRA。GPUが小さくても学習可能。LLM学習の省リソース化に最適
AxolotlLLaMA系の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モデルの重みの一部(特定の層)にだけ低ランク行列を追加して学習現在の主流、非常に軽量
LyCORISLoRAの拡張版。複数の変換方法を組み合わせて柔軟性を向上より精細なチューニングが可能
LoHa / LoConLyCORISに含まれる手法。LoRAよりも学習が安定しやすいことがある画像ジャンルによって相性がある
Dylora(Dynamic LoRA)LoRAを層ごとに動的に使い分ける発展型学習の柔軟性が高いがやや複雑

LoRA系は「後から読み込み式(追加モジュール)」で、WebUIやCivitaiで多用されています。

LoRA学習での設定項目について

※学習の際の設定は、学習する**データセットの内容と、使用するGPUによって設定が変わります。
**データセット・・・自身が学習させたい画像とテキストタグのセットの事を指します。

上の記事内では、フォルダ構成に関してもまとめてあります。
※ここからは、画像と、テキストタグ、が正しいフォルダ構成でフォルダ内に入っている事を前提に話を進めていきます。

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の名前(.safetensors20_cat
Output directory(出力フォルダ)保存先のディレクトリ(/outputsなど)/outputs

output_name = last(デフォルト)の場合

  • 学習によって出力されるモデル(.safetensors など)のファイル名が、
    last.safetensors になります。
  • これは **「最後のエポックのモデル」**という意味合いで、わかりやすい汎用名です。
  • 保存先は通常 /outputs に保存されます。
Kohya_ssでのトレーニング設定
Kohya_ssでの設定画面

上の画像内では、Trained Model output name 10_sakasaを指定しています。

この例では、/kohya_ss/output/10_sakasa にLoRAファイル(.safetensors)が生成されます。
.safetensorsは、AUTOMATIC1111 に組み込めば即使用可能です。

注意点
空白や日本語のパスは避ける(例:C:\Users\ユーザー名\マイ ドキュメント\ は非推奨)
Windowsではバックスラッシュ \ を使う(ただしGUIや設定ファイルではスラッシュ / でも通ることが多い)

手動で読み込ませる方法(上級者向け)

もし別フォルダに置きたい場合は、WebUIの webui-user.batlaunch.py を編集して環境変数 --lora-dir を追加することで、LoRAの読み込み場所を変更できます(ただし一般には非推奨)。

VRAM制限あり/なしでの設定の主な違い(一覧)

設定項目VRAMに制限がない場合(例:24GB〜)VRAMに制限あり(例:~8GBの)違いの理由・ポイント
学習解像度768×768、1024×1024 も可能原則512×512まで(768は片側のみ)高解像度はVRAMを大幅に消費
バッチサイズ(batch)2〜8(高速学習)1(これ以外はほぼOOM)VRAMに最も直結する項目
LoRA Rank8〜32(高精度)4〜8(VRAM制限のため低く)Rankが高いほど学習に必要な重みが増える
gradient accumulation基本的に不要(バッチサイズで調整)必須(例:4〜8)小バッチでの学習安定化に必要
mixed precisionfp16 or bf16fp16固定(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)
6GB1(低解像度でもギリギリ)
8GB1~2
12GB2~4
16GB4~6
24GB以上(例:A100)8以上も可能

※ 実際の上限は学習設定や画像サイズによって前後します。

モデルファイル fp16とfp32の違いについてはこちらをクリック

Stable DiffusionなどのAIモデルでは、モデルファイルに「fp16」または「fp32」という表記があることがあります。
これは浮動小数点(floating point)精度の違いを意味しています。

基本的な違い

項目fp16(半精度)fp32(単精度)
精度16ビット32ビット
ファイルサイズ小さい(例:2GB前後)大きい(例:4GB以上)
メモリ消費少ない(軽い)多い(重い)
処理速度速い(対応GPUなら)遅い(より計算コストが高い)
対応GPURTX 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」だと読み込まれないことがあります。
  • ファイル名に日本語やスペースが入っていると、うまく動作しないことがあるので、半角英数字・アンダーバー推奨です。

kohya_ss/configsなどに保存されます。

「 Save every N epochs」

ave every N epochs は、Kohya_ssでLoRA学習中に、何エポックごとに中間モデルを保存するかを指定する項目です。

項目名説明
Save every N epochsNエポックごとに1回、LoRAファイルを保存する設定
例:2→ 2エポックごとに保存される(2, 4, 6…)
例:0→ 中間保存せず、最後だけ保存される

学習結果の過程を比較したい場合や、学習途中で品質が下がるリスクに備えたい場合に使用します。

「Save every N steps」

ステップ(バッチ数単位)ごとに保存するオプションで、通常は Save every N epochs の方がわかりやすく使いやすいのです。

設定動作
0最後に1回だけ保存(中間モデルなし)
1すべてのエポック終了時に毎回保存
22エポックごとに保存(バランス良)
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〜20100〜400
作風付与LoRA(軽量)30〜50枚10〜15300〜750
高精度LoRA(丁寧な作り)100枚以上10〜201000〜2000

同じ画像を何度も回すと劣化・崩れやすい(顔が潰れるなど)ため、足りない場合は、「正則化画像(regularization)」で補うことも可能です。

設定の保存

Load/Save Config file」について

Load/Save Config file」は、Kohya GUI(kohya_ss)で使う学習設定の保存/読み込み機能です。以下のように使います。

Save Config file(設定の保存)

  • 現在GUIで設定した 学習条件(画像フォルダ、出力名、エポック数など) を、.json ファイルとして保存できます。
  • 次回、同じ学習設定を再利用したいときに便利です。
  1. 設定をGUIで入力
  2. Save Config file ボタンをクリック
  3. .jsonファイル名を指定して保存
     例: lora_cat_config.json

Load Config file(設定の読み込み)

  • 以前保存した .json の設定ファイルを読み込むと、GUIに自動で値が反映されます。
  • 複数のLoRA学習パターンを切り替えて使う時にとても便利です。
  1. Load Config file をクリック
  2. 以前保存した .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)しか残らないので、必要に応じてそれを手動でリネームして使うことが可能です。
  • URLをコピーしました!
目次