AI・機械学習
上級

LoRA(低ランクアダプテーション)(ローラ テイランクアダプテーション)

LLMのファインチューニングを少数の追加パラメータで実現するPEFT手法。元の重み行列を凍結し、低ランク行列ΔW=BA(B∈R^{d×r}, A∈R^{r×k}, r≪d)を追加することでGPUメモリを大幅に削減する。

0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
PEFT
ファインチューニング
LoRA
LLM
低ランク近似

LoRA(低ランクアダプテーション)

概要

LoRA(Low-Rank Adaptation of Large Language Models)は、LLMのファインチューニングを学習パラメータ数の大幅削減で実現するPEFT(Parameter-Efficient Fine-Tuning)手法だ。Hu et al.(2021, ICLR 2022)がMicrosoftで発表し、現在オープンソースLLM・画像生成モデルのファインチューニングの事実上の標準となっている。

核心アイデア:低ランク行列の追加

LLMの重み行列 W₀ ∈ R^{d×k} を**凍結(Frozen)**し、学習可能な低ランク行列ペアを追加する:

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

B ∈ R^{d×r}  (初期値: ゼロ行列)
A ∈ R^{r×k}  (初期値: ランダム)
r ≪ min(d, k)  (ランクrは非常に小さい値、例: 4〜64)

推論時は W₀ + BA を事前計算してマージするため、推論速度の低下はゼロ。

パラメータ削減の規模

GPT-3(175B パラメータ)への適用例:

設定学習パラメータ数GPUメモリ(概算)
フルFT175B2,800 GB
LoRA r=44.7M約24 GB
LoRA r=1618.9M約32 GB

学習パラメータが175B→18.9M(約0.01%)に圧縮される。

実装例(Hugging Face PEFT)

from peft import LoraConfig, get_peft_model, TaskType
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.05,
    bias="none",
    task_type=TaskType.CAUSAL_LM
)

# LoRAモデル作成
model = get_peft_model(model, config)
model.print_trainable_parameters()
# trainable params: 3,407,872 || all params: 8,033,669,120 || trainable%: 0.04

ハイパーパラメータ

  • r(ランク): 小さいほどパラメータ削減(4〜64が一般的、r=16が実用バランス)
  • alpha(スケーリング): alpha/r がLoRAの重みのスケール。通常 alpha=2r
  • target_modules: LoRAを適用するAttention層(q_proj/v_proj/k_proj/o_projなど)
  • dropout: 過学習防止(0.05〜0.1)

LoRAの変種

手法特徴
QLoRA4bit量子化ベースモデル + LoRA → 70Bモデルを1枚のGPUで学習
AdaLoRAランクrを層ごとに自動調整
DoRA重みを方向・大きさに分解してLoRA適用
IA³スケーリングベクトルのみ学習(LoRAより軽量)

Stable Diffusionとの普及

LoRAは画像生成AIでも爆発的に普及した:

  • キャラクターLoRA: 特定のキャラクター・人物の外見をSD-XLに学習
  • スタイルLoRA: 画風・色調を数百枚の画像から学習
  • CivitAI: LoRAファイル(.safetensors)の配布・共有プラットフォームが成立
この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/7