LabHub

ブログ

LLMファインチューニング2026 完全ガイド - LoRA · QLoRA · DoRA · GaLore · Unsloth · Axolotl · TRL · PEFT · MLX-LM 深層解析

한국어English日本語

プロローグ — 2026年、ファインチューニングが「ユーザの道具」になった年

2021年6月、MicrosoftのEdward Huが発表したLoRA論文は、「百万個のパラメータだけ学習してもGPT-3レベルの適応ができる」と示した。当時、ファインチューニングはスーパーコンピュータの仕事だった。2023年5月、Tim DettmersがQLoRAを出して、65Bモデルを単一の48GB GPUに押し込んだ。それからファインチューニングは「研究者の仕事」から「エンジニアの仕事」へと移った。

そして2026年5月の今、ファインチューニングは「ユーザの道具」だ。M3 Ultra Mac Studio一台で70BモデルをLoRAチューニングできる。Unslothが4ビット量子化を自動処理し、TRLのSFTTrainerが5行でSFTを終わらせる。AxolotlとLLaMA-FactoryはYAML一枚で全てのハイパーパラメータを外部化した。AppleのMLX-LMはM4 Max MacBook ProでMistral 7BをLoRA学習する。これらすべてが4年の間に起こった。

ファインチューニングはもはや「モデルを最初から学習し直す」ことではない。 90%以上の場合、答えはLoRA系列のPEFT(Parameter-Efficient Fine-Tuning)だ。そしてPEFTの中でも、どの変種を選ぶかが効率・品質・ハードウェア要件を決める。

本稿が扱うこと:

  1. フルファインチューニング vs PEFT — いつ何を使うか
  2. LoRAの数学と直感 (Hu et al., 2021)
  3. QLoRA — 4ビットNF4とダブル量子化 (Dettmers, 2023)
  4. DoRA — 重み分解 (NVIDIA, 2024)
  5. GaLore — 勾配射影 (Zhao, 2024)
  6. PiSSA, LoRA+, rsLoRA, VeRA, LoftQ, OFT, BOFT
  7. PEFT 0.14 — Hugging Face統合API
  8. TRL 0.13 — SFT, DPO, ORPO, KTO, IPO, GRPO, RLOO
  9. Unsloth — 2倍速学習
  10. Axolotl 0.6 — YAMLベースのマルチGPU
  11. LLaMA-Factory — 100以上のモデル、Web UI
  12. MLX-LMとMLX-Tuner — Apple Siliconオンデバイス
  13. Torchtune — Meta PyTorchのレシピ
  14. データセット — ShareGPT, OpenHermes, Magpie, Tülu, Nectar
  15. DPO vs PPO — RLHFの代替
  16. 合成データ — Augmentoolkit, Distilabel, Self-Instruct
  17. サービング用の量子化 — GGUF, AWQ, GPTQ, EXL2
  18. ハードウェア — H100/H200, A100, 4090/5090, M3/M4, MI300X
  19. クラウド — Together, Modal, RunPod, vast.ai, Lambda Labs
  20. 韓国・日本モデルのファインチューニング
  21. どのツールを選ぶべきか
  22. 参考資料

1章 · フルファインチューニング vs PEFT — GPUメモリの算術

ファインチューニングの最初の決定は「すべての重みを学習するか、一部だけ学習するか」だ。答えはほとんど常に一部だけである。理由はGPUメモリの算術で明確だ。

フルファインチューニングのメモリ算術

7Bモデルをフルファインチューニングするとしよう。fp16の重みだけで14GB。Adamオプティマイザは重みごとにモメンタムと分散の二つの状態をfp32で持つので、重みの4倍 = 56GB。勾配は重みと同じサイズで14GB。活性化はシーケンス長に比例して数十GB追加される。合計100GB以上が7Bモデルのフルファインチューニングの現実だ。H100 80GB一枚では不可能だ。

70Bはこの数字を10倍すれば良い。1TBのメモリ。8x H100ノード一台でも厳しい。

PEFTのメモリ算術

LoRAで7Bを学習すると?ベースの重み14GBはそのまま(または4ビットで3.5GB)。LoRAアダプターは通常ベースの0.1~1% — 7M~70Mパラメータでfp16なら14~140MB。オプティマイザ状態はこのアダプターだけを扱うので同様に小さい。活性化は似ているが、ベースが4ビットなら活性化メモリも減る。合計8~20GBで7Bを学習できる。RTX 4090 24GB一枚で十分だ。

フルファインチューニングが合理的な場合

それでもフルファインチューニングが答えになる場合がある:

それ以外の95%のケースはPEFTが答えだ。


2章 · LoRA — Low-Rank Adaptation (Hu et al., 2021)

LoRAのアイデアを一文で言うと: 「重みの更新は低ランクだ」。フルファインチューニング時にWがW + dWに変わるとして、dWは通常フルランクではなく非常に低いランクを持つという観察だ。

数学

ベース重みW(サイズd×k)に対して、LoRAは二つの小さな行列A(d×r)とB(r×k)の積でdWを近似する — ここでr << min(d, k)。学習時はWを凍結してA・Bだけを更新する。推論時には二つの選択肢がある:

  1. マージ — W + A・Bを事前計算して新しい重みとして保存。推論オーバーヘッドなし。
  2. アダプターを保持 — Wをそのまま置きA・Bを別のアダプターとして適用。複数のアダプターをホットスワップできる。

主要なハイパーパラメータは三つ:

実用ガイド (2026年基準)


3章 · QLoRA — 4ビットNF4とダブル量子化 (Dettmers, 2023)

Tim DettmersのQLoRA(2023年5月)を一文で言うと: 「ベースを4ビット量子化した状態でLoRA学習すれば、メモリが4倍減る」

主要な貢献3つ

  1. NF4 (NormalFloat 4-bit) — 正規分布に最適化された4ビット量子化。事前学習された重みは平均0で分散の小さい正規分布に近いので、正規分布の分位点に4ビットエンコーディングを割り当てる。INT4より正確だ。
  2. Double Quantization — 量子化定数(スケール)も量子化する。最初の量子化で各ブロックごとにfp32スケールが1個、これをさらに量子化してメモリを減らす。平均0.5ビット/パラメータの追加節約。
  3. Paged Optimizers — NVIDIA Unified Memoryでオプティマイザ状態をCPU↔GPUページにスワップ。OOMを避けて学習安定性を上げる。

実用的なメモリ削減

7B fp16 = 14GB → 7B NF4 = 3.5GB。4倍削減。オプティマイザ状態もLoRAアダプターだけを扱うので小さい。結果: 7BモデルをRTX 3090 24GB一枚で学習可能。

QLoRAは2026年現在、LoRA学習の事実上のデフォルトになっている。Unsloth・Axolotl・LLaMA-Factoryすべてが、QLoRAを一級オプションとして提供する。

QLoRAの微細な短所

4ビットベースはfp16ベースより学習が少し不安定なことがある。だから非常に大きな分布シフト(言語転換・ドメイン特化)はfp16ベースのほうが安全だ。また4ビットに量子化されたベースにアダプターを学習した後、アダプターを再びfp16ベースにマージするときに微細な品質損失が出ることがある。LoftQがこれを解決しようとする(7章)。


4章 · DoRA — Weight-Decomposed LoRA (NVIDIA, 2024)

NVIDIAのShih-Yang Liuが2024年に発表したDoRA(Weight-Decomposed Low-Rank Adaptation)。一行要約: 「重みの変化を方向と大きさに分解すれば、LoRAがより良くなる」

直感

重み行列Wを二つの要素に分解する:

DoRAは方向にはLoRAを適用し、大きさmは別の学習可能パラメータとして置く。フルファインチューニングの学習パターンを分析すると、フルファインチューニングは大きさと方向の両方を大きく変えるが、LoRAは二つが結合して不自然に動くというのがDoRA論文の観察だ。

実験結果

PEFTのサポート

Hugging Face PEFT 0.10からDoRAを use_dora=True 一行で有効化できる。2026年現在、新しいLoRA学習の30%程度がDoRAで使われるという非公式統計がある。


5章 · GaLore — Gradient Low-Rank Projection (Zhao, 2024)

Jiawei Zhao(Meta)の2024年3月の論文GaLore。一行要約: 「重みはフルランクだが勾配は低ランクだ — 勾配を低ランクに射影してメモリを減らそう」

何が違うか

LoRAはアダプター(低ランク)を学習してベース重み自体は凍結する。結果として学習されるパラメータが少ない — 表現力の上限がある。GaLoreは全体の重みを学習しつつ、オプティマイザの状態(Adamのモメンタム・分散)を低ランクの部分空間に置く。N ステップごとにSVDで勾配の主成分方向を見つけ、その方向だけをオプティマイザ状態として持つ。

結果: フルファインチューニングの表現力 + LoRAに近いメモリ

メモリ節約

7Bフルファインチューニングのオプティマイザ状態は56GB(fp32 Adam) → GaLoreでは7~14GBに減る。重み自体と活性化はフル学習と同じなので、合計メモリはLoRAより大きいがフルファインチューニングの半分以下。

短所

GaLoreは「LoRAでは足りないがフルファインチューニングはメモリ不足」のニッチを狙う。2026年現在はニッチだが、シェアが伸びている。


6章 · PEFTの変種 — PiSSA, LoRA+, rsLoRA, VeRA, LoftQ, OFT, BOFT

LoRA以降、数多くの変種が出た。2026年現在PEFT 0.14がサポートする主要なものを短くまとめる。

これらの変種は「基本のLoRAよりわずかに良い」という微細な利益だ。90%のケースは普通のLoRAで十分だ。変種は評価ベンチマークで最上位を狙うときに試す。


7章 · Hugging Face PEFT 0.14 — 統合API

Hugging FaceのPEFTライブラリは上で挙げたすべての変種の統合APIだ。2026年5月現在、0.14がstable、0.15がbetaだ。

基本的な使い方

from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")

config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules="all-linear",
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
    use_dora=False,  # TrueにするとDoRA
)

model = get_peft_model(model, config)
model.print_trainable_parameters()
# trainable params: 24,313,856 || all params: 3,236,000,000 || trainable%: 0.75

アダプターの保存とロード

model.save_pretrained("./my-lora-adapter")

# 後でロード
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")
model = PeftModel.from_pretrained(base, "./my-lora-adapter")

アダプターのマージ

merged = model.merge_and_unload()
merged.save_pretrained("./merged-model")

マルチアダプター

PEFTは一つのベースに複数のアダプターを同時に置いてホットスワップできる — 同じモデルインスタンスを英語・日本語・韓国語アダプターに即時に切り替えられる。推論サーバで非常に有用。


8章 · TRL 0.13 — SFT, DPO, ORPO, KTO, IPO, GRPO, RLOO

TRL(Transformer Reinforcement Learning)はHugging FaceのRLHF・アライメント(alignment)ライブラリだ。2026年5月現在、0.13がstable、GRPO・RLOOといった最新アルゴリズムが一級市民として追加された。

SFTTrainer (Supervised Fine-Tuning)

最もよく使う道具。チャットデータセットでSFTを終わらせる。

from trl import SFTTrainer, SFTConfig

config = SFTConfig(
    output_dir="./sft-output",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=2e-4,
    bf16=True,
    packing=True,
    max_seq_length=4096,
)

trainer = SFTTrainer(
    model=model,
    args=config,
    train_dataset=dataset,
    peft_config=lora_config,  # PEFTと統合
)
trainer.train()

DPOTrainer (Direct Preference Optimization)

ペアデータ(prompt, chosen, rejected)でアライメント。PPOよりずっと単純で安定的。

ORPOTrainer (Odd Ratio Preference Optimization)

SFTとDPOを一度に行う新生アルゴリズム(2024)。別のリファレンスモデルがないのでメモリ節約。

KTO (Kahneman-Tversky Optimization)

プロスペクト理論(prospect theory)から着想を得たアライメント。ペアではなく単一のラベル(良い・悪い)データでもアライメント可能。

GRPO (Group Relative Policy Optimization)

DeepSeek-R1が使ったアルゴリズム。推論能力学習に強い。2026年現在、reasoningモデル学習の標準。

RLOO (REINFORCE Leave-One-Out)

ベースライン推定にleave-one-outを使うことで、PPOより単純でありながら効果的。


9章 · Unsloth — 2倍速学習、メモリ50%節約

Unsloth(Daniel HanとMichael Han兄弟、2024)はシングルGPUファインチューニングのゲームチェンジャーだ。一行要約: 「手書きTritonカーネルでLoRA/QLoRA学習を2倍速く」

どう速いのか

使用例

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/llama-3.2-3b-instruct-bnb-4bit",
    max_seq_length=4096,
    load_in_4bit=True,
)

model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
                    "gate_proj", "up_proj", "down_proj"],
    lora_alpha=32,
    use_rslora=False,
    use_dora=False,
)

その後SFTTrainerで学習。結果: RTX 4090 24GBでLlama 3.2 8Bを4時間で学習 (同じデータでvanilla Transformersは8~10時間)。

制約


10章 · Axolotl 0.6 — すべてをYAMLで

Axolotl(OpenAccess AI Collective、2023~)を一行要約: 「YAML一枚ですべてのハイパーパラメータを外部化せよ」

なぜYAMLなのか

Pythonスクリプトで書かれた学習コードは再現が難しい。誰がどの学習率・バッチサイズ・アダプター設定で学習したかをgitに残すには、コード自体が変数だ。YAMLはこれを単一の真実の源(single source of truth)にする。

設定例

base_model: meta-llama/Llama-3.2-3B
model_type: LlamaForCausalLM
tokenizer_type: AutoTokenizer

load_in_4bit: true
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_target_modules:
  - q_proj
  - k_proj
  - v_proj
  - o_proj

datasets:
  - path: tatsu-lab/alpaca
    type: alpaca

sequence_len: 4096
sample_packing: true
gradient_accumulation_steps: 4
micro_batch_size: 2
num_epochs: 3
learning_rate: 2e-4
bf16: auto
optimizer: paged_adamw_32bit

強み

弱み


11章 · LLaMA-Factory — 100以上のモデル、Web UI

HiYouga (Zheng et al., 2023) のLLaMA-Factoryを一行要約: 「ファインチューニングのGUI時代」

特徴

使い方

pip install llamafactory
llamafactory-cli webui

ブラウザでモデル・データセット・学習方式をクリックで選択、学習開始。非コーダーのユーザーもアクセスできる。韓国・日本・中国企業の社内LLMファインチューニングに急速に普及した。

誰が使うか


12章 · MLX-LMとMLX-Tuner — Apple Siliconオンデバイス

Appleは2023年12月にMLX(Machine Learning eXperience)フレームワークを公開した。PyTorchと似たAPIだが、統合メモリアーキテクチャ(Unified Memory Architecture)に最適化されているため、M1~M4チップでCPUとGPUが同じメモリプールを見る。

MLX-LMの意味

使用例

pip install mlx-lm
python -m mlx_lm.lora \
    --model mistralai/Mistral-7B-v0.3 \
    --train \
    --data ./my_data \
    --iters 1000 \
    --lora-layers 16 \
    --batch-size 4

制約

それでも「自分のノートでファインチューニング」の意味は大きい。韓国・日本の小さなチームがクラウド費用なしで実験を回せる。


13章 · Torchtune — Meta PyTorchの公式レシピ

TorchtuneはMeta PyTorchチームが2024年4月に公開したライブラリ。一行要約: 「PyTorchネイティブ、メモリ効率、レシピベース」

哲学

使い方

pip install torchtune
tune download meta-llama/Llama-3.2-3B-Instruct \
    --output-dir /tmp/Llama-3.2-3B \
    --hf-token YOUR_TOKEN

tune run lora_finetune_single_device \
    --config llama3_2/3B_lora_single_device

強み

弱み


14章 · データセット — ShareGPT, OpenHermes, Magpie, Tülu, Nectar

良いファインチューニングの70%はデータだ。2026年現在よく使われるオープンSFTデータセット。

データの質は量より重要

LIMA論文(Meta, 2023)が示した: 1,000個のよくキュレーションされた例が50,000個の平凡な例よりSFT結果が良い。2026年現在、学習データのキュレーションは「より多く」ではなく「より良く」が標準になった。


15章 · DPO vs PPO — RLHFの進化

InstructGPT(2022)とChatGPT(2022)の時代はPPO(Proximal Policy Optimization)が標準だった。PPOは次のものを要求する: ベースモデル、報酬モデル、リファレンスモデル、actor、critic。4つのモデルを同時にGPUに載せる必要があった — メモリ爆発。

DPOの登場 (2023)

StanfordのRafailov et al.が2023年5月に発表したDPO(Direct Preference Optimization)を一行要約: 「報酬モデルなしに直接ペアデータで方策を最適化せよ」

数学的にDPOはPPOと同じ最適化を、ペアデータに対する単純な分類損失に変換する。結果:

2026年現在の競争

いつPPOを使うか? ほとんど使わない。2026年現在、PPOは学習インフラがすでによく構築された大きなラボでのみ保存される(例: OpenAI内部)。新規に始めるならDPOやその後継者が答えだ。


16章 · 合成データ — Augmentoolkit, Distilabel, Self-Instruct

良いSFTデータがない?作れ。2026年現在、合成データ生成がファインチューニングの一級市民になった。

Self-Instruct (Wang et al., 2022)

元祖。小さなシードインストラクション175個をLLMに与えて新しいインストラクションを生成させ、再びLLMが答えを作るブートストラップ。Alpaca・Wizard・Magpieの土台。

Augmentoolkit (e-p-armstrong, 2024)

原文テキストからQAペアを生成するパイプライン。PDF・本・内部文書をSFT可能な形式に変換する。

Distilabel (Argilla → Hugging Face, 2024)

Argillaチーム(現Hugging Face所属)が作った合成データフレームワーク。段階的パイプラインを定義する — インストラクション生成、答え生成、AI評価、フィルタリング。UltraFeedbackがDistilabelで作られた。

NeMo Curator (NVIDIA)

大規模データキュレーション — 重複除去、品質フィルタリング、PII除去。事前学習・SFT両方に使われる。

Magpieの技法

Llama-3-Instructに空のプロンプトだけを与えると、モデルが自分で「ユーザの番」を生成する — これをインストラクションとして使い、再びモデルが答える。コスト0(自己生成)で1M以上のデータを作る。短所: モデルのバイアスがそのまま入る。

合成データの落とし穴


17章 · サービング用の量子化 — GGUF, AWQ, GPTQ, EXL2

ファインチューニングされたモデルをサービングするには量子化が必要だ。学習時のQLoRA 4ビットとは別に、推論時の量子化形式が別途ある。

ワークフロー

  1. fp16/bf16でLoRA学習 → アダプターをベースにマージ。
  2. マージされたモデルをGGUF (CPU/Mac)、AWQ (サーバGPU)、EXL2 (RTX推論)に変換。
  3. 変換されたモデルをvLLM、TGI、llama.cpp、Ollamaでサービング。

2026年現在最もよくある流れ: PyTorchでLoRA学習 → マージ → GGUFに量子化 → Ollamaでサービング


18章 · ハードウェア — H100/H200, A100, 4090/5090, M3/M4, MI300X

ファインチューニングのハードウェアは2026年現在以下の通り。

NVIDIAデータセンター

NVIDIAコンシューマ

Apple Silicon

AMD

どう選ぶか


19章 · クラウド — Together, Modal, RunPod, vast.ai, Lambda Labs, Replicate

GPUを買わず借りるのが普通だ。2026年現在の主要オプション。

価格感覚 (2026年5月基準、おおよそ)


20章 · 韓国・日本モデルのファインチューニング

韓国・日本のLLM生態系は、自国のベースモデルビルダーとファインチューニングコミュニティの両方が活発だ。

韓国

日本

韓・日のファインチューニングパターン


21章 · どのツールを選ぶべきか — 決定木

最後にまとめ。状況別の推奨組み合わせ。

初めてLoRAをやってみる個人

会社内部データで社内モデル

韓国語/日本語特化モデル

推論(reasoning)モデル

ノートで小さく

素早いプロトタイプ


22章 · 参考資料

主要論文

ライブラリ公式ドキュメント

韓・日LLM生態系


エピローグ — ファインチューニングはもう秘密ではない

本稿の一文要約: 2026年のLLMファインチューニングは「ユーザの道具」だ。 LoRAが単純なアダプターから出発してDoRA・GaLoreまで進化する間、UnslothがシングルGPU学習を2倍速くし、AxolotlとLLaMA-Factoryが参入障壁を消した。M3 Ultra Mac Studio一台で70BモデルをLoRAチューニングできる時代になった。

残された問いは「できるか」ではなく「何を学習させるか」だ。良いデータ、良い評価、良いユースケース — これが2026年のファインチューニングエンジニアの本当の仕事だ。

「ツールはもはやボトルネックではない。データがボトルネックだ。」

— LLMファインチューニング2026、了。

コメント

まだコメントはありません。

ログインするとコメントできます