コラム 比較

LoRA / QLoRA / DPO / SFT 学習手法を仕組みから比較 2026年版:ローカルLLM を自分のデータで学習させる 4手法の VRAM 要件・精度・使い分け

ローカルLLM を自分のデータで学習させたい人向けに、SFT(Supervised Fine-Tuning)/ LoRA / QLoRA / DPO(Direct Preference Optimization)の4手法を仕組みと数式レベルで比較。7B / 13B / 70B モデルで必要な VRAM、精度・学習速度・使い分けを整理し、どの手法を選ぶかを判断できるようにします。

  • #LoRA
  • #QLoRA
  • #DPO
  • #SFT
  • #ファインチューニング
  • #PEFT
  • #ローカルLLM
  • #DoRA
  • #ORPO
  • #KTO

LoRA / QLoRA / DPO / SFT 学習手法比較 2026:ローカルLLM 学習 4 手法の VRAM 要件と使い分け

結論:自分のデータでローカルLLM を学習させるなら QLoRA が実質的な標準解です。7B なら RTX 5090(32GB)1 枚、13B なら同じ 32GB で射程内、70B ならデュアル 5090 か RTX PRO 6000 96GB で動きます。基本挙動を仕込むのが SFT(教師あり学習)、その上で好みを微調整するのが DPO(Direct Preference Optimization)、学習コスト削減が LoRA / QLoRA という役割分担です。Full SFT(全パラメータ更新)は 7B でも 100GB 級の VRAM が要るためクラウドの領域で、家庭内では QLoRA + DPO の組み合わせが 2026 年時点の現実解です。

ローカルLLM を「動かす」から「自分のデータで育てる」に踏み込む人向けの記事です。ハードウェア側の VRAM 要件は「ローカルLLM ファインチューニング向けPC構成ガイド 2026年版:QLoRA で何B まで学習できるか、推論機との VRAM 要件の違い」で「機材の選び方」に絞って扱っています。この記事は一段手前の「手法そのものが何を計算していて、どう違うのか」を仕組みから比較します。

4 手法の役割分担

全体像は次の通りです。SFT / LoRA / QLoRA / DPO は競合する 4 択というより、それぞれ目的の違う 4 手法で、実運用では組み合わせて使います。

手法何をする方法かいつ使うか
SFT (Supervised Fine-Tuning)「正解の応答」を模倣させる教師あり学習。ベース挙動を仕込むベースモデルを自分のタスク・ドメインに適応させたい
LoRA (Low-Rank Adaptation)Attention の重み更新を低ランク行列で近似する PEFT 手法フル学習より軽く SFT / DPO を回したい
QLoRA4bit 量子化したベース重み + LoRA アダプタで単一 GPU 学習を実現GPU が 24〜48GB しかない、大型モデルを自宅で学習したい
DPO (Direct Preference Optimization)chosen / rejected ペアから相対的な好みを学ばせる強化学習の代替SFT 後にトーン・スタイル・安全性を微調整したい

SFT と DPO は「何を学ばせるか」の軸、LoRA と QLoRA は「どう省メモリで学ばせるか」の軸で、直交します。実務では「QLoRA + SFT」「QLoRA + DPO」「QLoRA + SFT → QLoRA + DPO の 2 段階」といった組み合わせで使います。

モデルサイズ別 VRAM 早見表

7B / 13B / 32B / 70B の 4 サイズを、SFT(Full)/ LoRA / QLoRA の 3 手法で並べます。バッチサイズ 1・シーケンス長 2,048・勾配チェックポイント有効を前提にした目安です。

モデルサイズFull SFT VRAMLoRA (16bit ベース) VRAMQLoRA (4bit) VRAMQLoRA が動く最小 GPU
7B約 100〜120 GB約 16 GB約 7 GBRTX 3060 12GB / RTX 5060 Ti 16GB
13B約 200〜240 GB約 26 GB約 13 GBRTX 4090 24GB / RTX 5090 32GB
32B約 500 GB 超約 60 GB約 24 GBRTX 5090 32GB / A6000 48GB
70B約 1.1 TB 超約 140 GB約 46〜48 GBRTX PRO 6000 96GB / デュアル 5090 / A100 80GB

Full SFT の桁が異常に大きいのは、勾配(重みと同サイズ)+ Adam オプティマイザ状態(重みの 2 倍相当)+ アクティベーションを全部抱えるためです。7B(FP16 で 14GB の重み)を Full SFT すると、重み 14GB + 勾配 14GB + オプティマイザ状態 56GB(FP32 相当)+ アクティベーションで 100GB を超えます。「推論で 70B が動いた GPU で学習もできる」という発想は成立しません。学習は推論の 5〜10 倍の VRAM を食うという前提で機材を選ぶ必要があります。

LoRA / QLoRA の桁が下がるのは、更新するパラメータが全体の 0.1〜1% だけに絞られているためです。7B の全パラメータを更新する代わりに、Attention の Q / V 射影に挿した数百 MB のアダプタだけを更新するので、勾配とオプティマイザ状態のメモリが劇的に減ります。

LoRA の仕組み:低ランク行列で重みの差分を近似する

LoRA(Low-Rank Adaptation of Large Language Models, Hu et al., 2021)は、ベース重み W₀ に対する更新分 ΔW を、低ランク行列 A × B で近似する手法です。

数式で書くと以下の形になります。

W = W₀ + ΔW = W₀ + BA

ここで A は r × k、B は d × r の行列で、r(ランク)は 4 〜 64 程度の小さい値を使います。重み W₀ が d × k の巨大行列(たとえば 4,096 × 4,096 で 1,600 万パラメータ)だとしても、A と B は合計で数十万パラメータ程度に収まるので、更新対象が 1/1,000 以下になります。

学習中はベース重み W₀ を凍結し、A と B だけを勾配降下で更新します。推論時は BA を計算して W₀ に足す(マージする)か、そのままアダプタとして重みを分離しておくかを選べます。分離しておくと、複数のドメイン別アダプタを 1 つのベース重みに切り替えて使えるという運用上の利点があります。

Attention のどの重みに LoRA を挿すかは「Q(Query)と V(Value)に挿す」のが LoRA original paper の推奨で、これだけで Full SFT の 99% 以上の性能を出せる報告があります。K / O まで含めるかは実験的に決める部分です。

QLoRA の仕組み:4bit NF4 量子化 + LoRA + Paged Optimizer

QLoRA(Dettmers et al., 2023)は LoRA を単一 GPU で大型モデルに適用するために 3 つの工夫を組み合わせた手法です。

  1. 4bit NF4 (NormalFloat) 量子化:ベース重みを 4bit に量子化して VRAM 消費を 1/4 に。NF4 は正規分布に沿った非線形量子化で、通常の 4bit int より情報損失が小さい設計
  2. Double Quantization:量子化定数自体をさらに量子化して、追加で 0.37 bit / 重み の削減
  3. Paged Optimizer:勾配のピーク時に Adam 状態を GPU から CPU RAM へ一時退避(CUDA Unified Memory を利用)

これで 7B が 7GB、13B が 13GB、70B が 48GB という「大体モデルサイズと同じ数字の VRAM で学習できる」水準に落ちます。学習中はベース重みを 4bit のまま保持し、LoRA アダプタ側だけを bf16 で更新します。

精度面では QLoRA original paper が「Full FP16 の 99.3%」を報告しており、実務でも LoRA と QLoRA の精度差は 0.1〜0.3 ポイント程度に収まるケースが多いです。単一 GPU で学習したいならほぼ QLoRA 一択、と言い切れるくらいには標準化しています。

学習ライブラリは Hugging Face の PEFT + bitsandbytes が定番で、Unsloth を挟むと学習速度が 2〜3 倍に伸びる報告もあります。

SFT の仕組み:クロスエントロピーで応答を模倣させる

SFT(Supervised Fine-Tuning)は、教師データ「(prompt, response) のペア」を大量に用意して、モデルに「この prompt が来たらこう応答する」を教える方式です。損失関数は次単語予測のクロスエントロピーです。

L_SFT = -Σ log P(y_t | y_<t, x; θ)

x が prompt、y が response、θ が学習対象パラメータ(Full SFT なら全重み、LoRA / QLoRA なら アダプタのみ)です。

実運用では以下の順序で回します。

  1. ベースモデル(例:Llama 3.1 8B、Qwen 2.5 7B)をロード
  2. 教師データ(数千〜数十万件の対話ペア)を JSONL 形式で用意
  3. LoRA / QLoRA アダプタを挿す
  4. AdamW オプティマイザで 1〜3 エポック回す(学習率 1e-4 〜 5e-5、warmup ステップあり)
  5. アダプタを保存し、推論時にベース重みにマージ

SFT はデータの品質がすべてです。10,000 件の低品質ペアより 1,000 件の高品質ペアのほうが良い結果が出るのが定石で、Dolphin / Airoboros / Nous 系の公開データセットも「量より質」の方針で作られています。

DPO の仕組み:報酬モデルなしで好みを学ばせる

DPO(Direct Preference Optimization, Rafailov et al., 2023)は、RLHF(Reinforcement Learning from Human Feedback)の代替として登場した好み学習の手法です。

RLHF が「報酬モデルを学習 → 報酬モデルで PPO 強化学習」の 2 段階だったのに対し、DPO は次のような単純化を行います。

  • chosen(望ましい応答)と rejected(望ましくない応答)のペアを用意
  • 報酬モデルは学習せず、参照モデル(学習前のモデル)との対数尤度比を直接損失関数に組み込む

損失関数の概形は次の通りです。

L_DPO = -log σ(β * [log π(y_w|x)/π_ref(y_w|x) - log π(y_l|x)/π_ref(y_l|x)])

y_w が chosen、y_l が rejected、π が学習中モデル、π_ref が参照モデル、β が温度パラメータ(0.1〜0.5 が定石)です。要点は「chosen の対数尤度を上げ、rejected の対数尤度を下げる」を、参照モデルからの距離を制約しつつ行うことです。

DPO は SFT の後に回すのが定番です。順序は以下の通りです。

  1. SFT でベース挙動を仕込む(QLoRA + SFT)
  2. SFT モデルのコピーを参照モデル π_ref として保持
  3. (prompt, chosen, rejected) のトリプルデータでさらに QLoRA + DPO を回す
  4. アダプタを SFT アダプタとマージ or 分離して運用

RLHF より軽量で、コードも簡素、報酬モデルの学習ハイパーパラメータ調整が要らないというのが DPO 最大の利点です。ただし chosen / rejected のデータ品質が精度を決めるので、SFT 以上にデータ設計が重要になります。

4 手法の派生:DoRA / ORPO / KTO / SimPO

2024〜2026 年に登場した派生手法も 1 段落だけ触れます。QLoRA + DPO の組み合わせで精度が足りない場合の次の選択肢です。

  • DoRA(Weight-Decomposed LoRA, Liu et al., 2024):LoRA を「重みの大きさ(magnitude)」と「方向(direction)」に分解して学習する手法。同じ VRAM で LoRA より 1〜3 ポイント精度が伸びる報告があり、PEFT ライブラリに実装されて広く使えます
  • ORPO(Odds Ratio Preference Optimization, Hong et al., 2024):SFT と DPO を 1 段階に統合した手法。参照モデルが不要で、SFT 損失と好み損失を同時に最適化するため学習パイプラインが簡素になります
  • KTO(Kahneman-Tversky Optimization, Ethayarajh et al., 2024):chosen / rejected のペアを用意せず、単一の「良い応答 / 悪い応答」ラベルから学べる手法。ペアデータを作るコストが高いドメインで有効
  • SimPO(Simple Preference Optimization, Meng et al., 2024):DPO から参照モデル π_ref を外し、長さ正規化を導入した簡素化手法。VRAM が半分程度になり、精度も DPO と同等〜わずかに上

現時点で「まず 1 つ試す」なら DPO で、精度が足りないと感じたら ORPO / SimPO / DoRA を順に試すのが穏当な進み方です。

LoRA vs Full SFT の精度差:ベンチマークの実態

「LoRA は Full SFT に近い精度が出る」という主張は各種論文で繰り返されていますが、実測レンジを整理します。

ベンチマークFull SFTLoRA (r=16)QLoRA (r=16)
MMLU(5-shot)ベース−0.5 〜 +0.3−0.7 〜 +0.2
HellaSwagベース±0.5 以内±0.8 以内
GSM8K(数学)ベース−1〜−3 ポイント−1〜−4 ポイント
HumanEval(コード生成)ベース−2〜−5 ポイント−3〜−6 ポイント
ドメイン特化 QAベース−0.5 〜 −2−1 〜 −3

汎用言語理解(MMLU、HellaSwag)では Full SFT と LoRA / QLoRA の差はほぼ埋もれます。数学とコード生成では Full SFT がやや有利で、精度を極めたい商用モデルは Full SFT を選ぶ理由が残ります。ただし Full SFT のために H100 80GB クラスタを組む投資と、LoRA / QLoRA の 3〜5 ポイント差を天秤にかけると、ほとんどの用途では LoRA / QLoRA が合理解です。

なお、7B より 70B のほうが LoRA と Full SFT の差が縮む傾向があります。大型モデルほど冗長性が高く、少数パラメータ更新の影響が相対的に小さくなるためです。70B クラスなら QLoRA でほぼ Full SFT に肉薄する精度が出るのが 2026 年時点の実感値です。

使い分けフロー:手元の GPU から逆算する

「どの手法を選ぶか」を、手元の GPU 容量と目的から逆算するフローチャートです。

  • GPU 12〜16GB(RTX 3060 12GB / 5060 Ti 16GB):QLoRA で 7B まで。ドメイン特化の対話モデル、独自データでの試作
  • GPU 24〜32GB(RTX 4090 / 5090):QLoRA で 13B、20B もシーケンス長を切り詰めれば射程。個人開発の本命帯
  • GPU 48GB(RTX PRO 6000 Blackwell の下位 / A6000):QLoRA で 32B、LoRA で 13B。小規模チームの本番学習
  • GPU 96GB(RTX PRO 6000 Blackwell / H100 80GB×1):QLoRA で 70B、LoRA で 32B。小規模ラボの本格運用
  • クラウド H100 80GB × 8:Full SFT で 70B、LoRA で 175B。商用モデルのフルスクラッチ学習

目的別の使い分け は次のように整理できます。

  • ベース挙動をドメインに合わせたい:SFT + QLoRA。教師データ(プロンプト・応答ペア)5,000〜50,000 件を用意
  • トーン・スタイル・安全性を微調整したい:DPO + QLoRA。chosen / rejected ペア 1,000〜10,000 件
  • Preference データがない・単一ラベルしかない:KTO + QLoRA
  • SFT + DPO を 1 段階に統合したい:ORPO + QLoRA
  • 精度を極めたい・Full SFT に近づけたい:DoRA + QLoRA

生成側 LLM の選び方(Llama 3.1 系 vs Qwen 2.5 系 vs Swallow 系)は「ローカルLLM モデル選定ガイド 2026年版」でカバーしています。学習ハードウェア側の詳細構成は「ローカルLLM ファインチューニング向けPC構成ガイド 2026年版」を参照してください。量子化フォーマット全体との関係は「ローカルLLMの量子化フォーマットとは 2026年版」で扱っています。

実装の入口:Hugging Face PEFT + TRL の最小コード

「まず動かしたい」人向けに、QLoRA + SFT の最小構成を示します。Hugging Face の transformers + PEFT + TRL + bitsandbytes の組み合わせが 2026 年時点の定番です。

from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype="bfloat16",
    bnb_4bit_use_double_quant=True,
)

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3.1-8B",
    quantization_config=bnb_config,
    device_map="auto",
)
model = prepare_model_for_kbit_training(model)

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora_config)

trainer = SFTTrainer(
    model=model,
    train_dataset=your_dataset,
    args=training_args,
)
trainer.train()

DPO を回す場合は SFTTrainer を DPOTrainer に置き換え、データを (prompt, chosen, rejected) のトリプル形式に変えます。実装の細部は TRL の公式ドキュメントを参照してください。

結論:2026 年時点の推奨構成

要点をもう一度整理します。

  • 手法選び:単一 GPU で学習するなら QLoRA が実質標準。SFT で基本挙動、DPO でトーン微調整の 2 段構成が定石
  • VRAM 早見表:7B → 7GB / 13B → 13GB / 32B → 24GB / 70B → 48GB(すべて QLoRA 4bit)
  • 精度の実感値:LoRA / QLoRA は Full SFT の 99% を維持する。数学・コードでは 2〜5 ポイント差が残るが、汎用タスクでは埋もれる
  • 派生手法:QLoRA + DPO で足りなければ DoRA / ORPO / SimPO を試す順序が穏当

「ローカルLLM を自分のデータで育てる」は 2026 年時点で個人にも手が届く領域になっています。GPU 24GB クラスで 13B、48GB で 32B、96GB で 70B が現実的に学習できるようになったので、まずは QLoRA + SFT の最小コードから動かしてみるのが入口です。


あなたに合うPCを診断する

用途や予算をもう少し細かく入力すると、3つの候補構成を提案します。

診断スタート

関連記事

よくある質問

LoRA と QLoRA の違いは何ですか?
LoRA は 16bit(bf16/fp16)のベース重みに低ランクアダプタを挿す方式で、7B なら約 16GB の VRAM が要ります。QLoRA は同じ LoRA アダプタを、4bit(NF4)量子化したベース重みの上に挿す方式で、7B なら約 7GB まで下がります。学習精度はほぼ同等(QLoRA original paper では平均 0.1〜0.3 ポイント差)で、単一 GPU で大型モデルを学習したい場合は QLoRA が実質的な標準解です。
DPO と SFT はどう違いますか?どちらを先にやるべきですか?
SFT(Supervised Fine-Tuning)は「正解の応答」を模倣させる教師あり学習で、DPO(Direct Preference Optimization)は「chosen(望ましい応答)と rejected(望ましくない応答)」のペアから相対的な好みを学ばせる手法です。運用上は「SFT で基本挙動を仕込んでから DPO で微調整」の順が一般的で、DPO 単独で使うより SFT + DPO の 2 段階が精度が出やすい構成です。RLHF(人間フィードバックによる強化学習)の代替として登場した DPO は、報酬モデルを別途学習させないため RLHF より軽量に回せます。
70B のモデルを自宅で学習できますか?必要な VRAM は?
QLoRA なら現実的に射程内です。70B の QLoRA は約 46〜48GB の VRAM で回せる報告があり、RTX PRO 6000 Blackwell 96GB 1 枚、もしくはデュアル RTX 5090(合計 64GB)で FSDP / DeepSpeed ZeRO を使うと安定運用できます。Mac Studio M3 Ultra 128GB ユニファイドメモリでも QLoRA 70B は動きますが、学習速度は NVIDIA GPU の 1/3〜1/2 程度が目安です。LoRA(16bit ベース)や Full SFT では H100 80GB 級のクラスタが必要になり、家庭内では現実的ではありません。
GPU が 24GB しかない場合はどの手法を選ぶべきですか?
QLoRA 一択です。RTX 5090(32GB)や RTX 4090(24GB)1 枚なら QLoRA で 13B クラスまで安定学習でき、20B 級もシーケンス長を切り詰めれば射程に入ります。LoRA(16bit ベース)で 13B を回すと約 26GB 要るため 24GB では OOM になりやすく、Full SFT は 7B でも 100GB 級で不可能です。QLoRA 4bit を選び、勾配チェックポイント・バッチサイズ 1・シーケンス長 2,048 の設定で始めるのが定石です。
LoRA / QLoRA の後継である DoRA / ORPO / KTO / SimPO とは何ですか?
いずれも 2024〜2026 年に登場した LoRA・DPO の派生手法です。DoRA(Weight-Decomposed LoRA)は LoRA を重みの大きさと方向に分解して精度を上げる手法で、同じ VRAM で LoRA より 1〜3 ポイント精度が伸びる報告があります。ORPO(Odds Ratio Preference Optimization)は SFT と DPO を 1 段階でまとめて回す手法、KTO(Kahneman-Tversky Optimization)は単一の良/悪ラベル(chosen/rejected のペアを必要としない形式)から学習する手法、SimPO(Simple Preference Optimization)は DPO から参照モデルを外して簡素化した手法です。基本は QLoRA + DPO で組み、精度が足りないと感じたら DoRA や ORPO を試すのが穏当な順序です。
LoRA と Full SFT で精度はどれくらい違いますか?
汎用ベンチ(MMLU、HellaSwag、GSM8K など)では、LoRA と Full SFT の差は 1〜3 ポイント程度に収まる報告が多いです。「LoRA original paper」(Hu et al., 2021)や QLoRA paper では、LoRA / QLoRA が Full SFT の 99% 以上の性能を維持しつつ、更新パラメータを 1/1000 以下に抑えられるとされています。ただしドメイン特化タスク(特定業界の QA、コード生成、多言語対応)では Full SFT の優位性が出るケースもあり、絶対精度が要る本番モデルは Full SFT、試作と個人利用は LoRA/QLoRA、という使い分けが実務的です。