AI・機械学習
上級

DoRA(ドーラ)

Weight-Decomposed Low-Rank Adaptationの略。LoRAを進化させ、事前学習済み重みを「大きさ(magnitude)」と「方向(direction)」に分解して学習する手法。LoRAより学習効率と性能が向上する。

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

DoRA (Weight-Decomposed Low-Rank Adaptation) とは

DoRAは2024年1月にShih-Yang Liu et al. (NTU / NVIDIA) が提案したPEFT手法(論文: "DoRA: Weight-Decomposed Low-Rank Adaptation")。LoRAの学習効率の問題を「重みのmagnitude/direction分解」で解決し、フルFTに近い学習ダイナミクスを実現する。

LoRAの課題とDoRAの解決策

LoRAの学習パターン

LoRAはΔW = BA(低ランク行列積)で重みを更新。研究者が観察したところ、LoRAの更新はmagnitude(大きさ)とdirection(方向)を同時に変化させる傾向があり、フルFTの更新パターンと異なる。

DoRAの分解

# 通常の重み行列 W
# DoRAはWをmagnitudeとdirectionに分解:
W = m * (V / ||V||)   # m: magnitude列ベクトル, V/||V||: unit directionベクトル

# LoRAはdirectionの低ランク更新のみ担当:
W_new = (m + delta_m) * ((V + delta_V_LoRA) / ||V + delta_V_LoRA||)
  • magnitude (m): 学習可能スカラーベクトル(次元数 = 出力次元)
  • direction (ΔV): LoRAの低ランク更新 (BA) で近似

LoRAとDoRAの比較

項目LoRADoRA
更新対象ΔW = BAmagnitude + direction(BA)
追加パラメータ2×r×d2×r×d + d (magnitude)
VRAMオーバーヘッドなし微増(無視できる程度)
学習安定性標準向上(フルFTに近い)
推論速度LoRAとマージ可能同様にマージ可能

ベンチマーク性能 (LLaMA-7B)

タスクFull FTLoRA (r=16)DoRA (r=16)
Commonsense Reasoning基準-3.2%-1.1%
VQA-v2基準-2.8%-0.9%
COCO Caption基準-1.5%-0.5%

DoRAはLoRAとFull FTの中間に位置し、パラメータ効率を保ちながら性能ギャップを縮小。

実装とフレームワーク対応

HuggingFace PEFT

from peft import LoraConfig, get_peft_model

config = LoraConfig(
    r=16,
    lora_alpha=32,
    use_dora=True,  # DoRA有効化
    target_modules=['q_proj', 'v_proj'],
)
model = get_peft_model(base_model, config)

Unsloth

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name='unsloth/llama-3-8b',
    use_dora=True,  # DoRA有効化
)

DoRAを使うべきケース

  • LoRAで性能が頭打ちの特定ドメイン適応タスク
  • VLM(Vision-Language Model)のマルチモーダルFT
  • Full FTと性能差を最小化したい商用アプリケーション
  • すでにLoRA環境が整備されている(移行コストが低い)

VeRA等の派生手法

DoRAの登場以降、Weight Decompositionアプローチが研究されている:

  • VeRA: 共有ランダム行列 + スケールベクトルで更新(パラメータ数さらに削減)
  • MoLoRA: Mixture-of-LoRA experts でタスク適応
  • LoRA+: AdamW学習率を行列AとBで非対称に設定して収束を改善

よくある質問 (FAQ)

Q1: DoRAはLoRAのドロップイン代替として使えるか? A: ほぼ同じハイパーパラメータ(r, alpha, target_modules)でuse_dora=Trueを追加するだけで試せる。パラメータ数は微増(出力次元分のmagnitudeベクトル追加)するが無視できる程度。

Q2: LoRAよりDoRAが必ずしも良いわけではないか? A: 一般的な指示チューニングではLoRAとDoRAの差は小さい(0〜1%程度)。複雑なドメイン特化・VLMタスクで差が出やすい。シンプルなタスクならLoRAで十分。

Q3: DoRAの学習時間はLoRAより長い? A: magnitude更新の追加計算はごく微小で、実質的に同じ学習時間。Unsloth環境では速度差は測定誤差範囲内。

まとめ

  • LoRAを進化させたPEFT手法(2024年NTU/NVIDIA提案)
  • 重みをmagnitude + directionに分解しフルFTの学習パターンに近づける
  • LoRA比1〜5%性能向上、パラメータ数の微増で実現
  • PEFT v0.10.0+、Unslothでuse_dora=True一行で有効化
この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/6