AI・機械学習
中級
LoRA(低ランク適応)(ローラ)
大規模言語モデルを効率的にファインチューニングする手法。重み行列を低ランク行列の積で近似し、元のパラメータを固定したまま少数のアダプタ重みのみ更新する。
0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
lora
fine-tuning
peft
llm
adapter
low-rank
LoRA(低ランク適応)とは
LoRA(Low-Rank Adaptation of Large Language Models)は、Microsoftが2021年に発表した大規模言語モデルのパラメータ効率的ファインチューニング(PEFT)手法。元の重み行列を固定したまま、少数の低ランク行列のみを学習することで、計算コストとメモリ消費を劇的に削減する。
動作原理
従来のフルファインチューニングでは全パラメータ(例:GPT-3で1750億)を更新するが、LoRAは各Transformer層の重み行列W(d×d)の更新分ΔWを低ランク行列の積BA(d×r × r×d、r≪d)で近似する。
rを小さくするほどパラメータ削減率が高まるが精度に影響する。r=8でGPT-3サイズモデルの学習可能パラメータをフルファインチューニング比で10,000分の1以下に抑えられる。
PEFT手法との比較
- フルFT: 100%パラメータ更新、推論オーバーヘッドなし、メモリ非常に大
- LoRA: 0.1〜1%、マージ後オーバーヘッドなし、メモリ小
- QLoRA: 0.1〜1%、マージ後オーバーヘッドなし、メモリ最小
- Prefix Tuning: <1%、推論時オーバーヘッドあり、メモリ中
HuggingFace PEFTでの実装例
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8b")
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.1,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: 4,194,304 || all params: 8,030,261,248 || trainable%: 0.05
主要パラメータ
- rank (r): 低ランク行列の次元数。大きいほど高精度だが計算コスト増(典型: 8〜64)
- lora_alpha: スケーリング係数(典型: r×2)
- target_modules: LoRAを適用するレイヤー(q_proj/v_proj/k_proj/o_proj等)
- lora_dropout: 過学習防止のドロップアウト率
LoRAマージ
学習後のLoRAアダプタは元のベースモデルに統合(マージ)できる。マージ後は推論時に追加計算ゼロでフルモデルと同じ速度になる。マージせずアダプタ単体で配布し、同一ベースモデルに複数アダプタを動的に切り替えることも可能(Multi-LoRA Serving)。
応用事例
- ドメイン特化モデル(医療・法律・コードの専門知識注入)
- スタイル転換(日本語会話スタイル・口調の調整)
- タスク特化(テキスト分類・感情分析・QA)
- 多言語対応(英語ベースモデルへの日本語能力追加)
2025年の発展
- DoRA(Weight-Decomposed LoRA): 振幅と方向を分離した改良版
- LoRA+: 異なる学習率をA/B行列に適用
- MoLoRA: Mixture of LoRA Experts
まとめ
LoRAは大規模モデルの民主化に最も貢献した技術の一つ。24GB VRAMのコンシューマGPUでLlama-3-70Bのファインチューニングも現実的になり、独自データで特化モデルを作るコストが劇的に下がった。