Low-Rank Adaptation(LoRA)のアダプタをタスクごとに分離して管理し、推論時に動的に切替・合成することで破壊的忘却をほぼ完全に回避する継続学習手法。ベースモデルの重みを凍結しタスク別のパラメータ効率的な差分のみを学習するため、計算コストとメモリ使用量が極めて低い。
LoRA(Low-Rank Adaptation)は Hu et al.(2022)が提案したパラメータ効率的ファインチューニング(PEFT)手法で、元の重み行列に低ランクの分解行列(A, B)を追加し、この小さな行列のみを学習する。LoRA を継続学習に応用する場合、タスクごとに別々の LoRA アダプタを用意し、ベースモデルの重みは完全に凍結することで、破壊的忘却を原理的に回避する。
2024-2025年にかけて、Hugging Face の PEFT ライブラリが LoRA アダプタの動的ロード・切替を標準サポートし、LoRA ベースの継続学習は実用レベルに到達している。
LoRA は、事前学習済みの重み行列 W₀ ∈ R^{d×k} に対して、低ランク行列の積 BA を追加する。
W = W₀ + BA
B ∈ R^{d×r}, A ∈ R^{r×k} (r << min(d,k))
各タスクに専用の LoRA アダプタを用意し、推論時にタスクに応じて切替える。
| タスク | アダプタ | サイズ(7Bモデル, r=16) | 用途 |
|---|---|---|---|
| 日本語特化 | lora_ja | 約 20MB | 日本語応答 |
| コード生成 | lora_code | 約 20MB | プログラミング |
| 医療 | lora_medical |
| 約 20MB |
| 医療QA |
| 法律 | lora_legal | 約 20MB | 法律相談 |
| 数学 | lora_math | 約 20MB | 数学推論 |
忘却率: 理論上 0%(ベースモデル不変、アダプタ独立)
複数のLoRAアダプタを加重平均して同時に適用する。
W = W₀ + α₁·B₁A₁ + α₂·B₂A₂ + ... + αₙ·BₙAₙ
入力に応じて最適なLoRAアダプタを自動選択するルーター機構を追加。
新タスクの学習時に、前のタスクのLoRAアダプタの上に新しいLoRA層を追加し、階層的に能力を積み上げる。
| ツール | 開発元 | LoRAサポート | 継続学習機能 | 動的切替 |
|---|---|---|---|---|
| PEFT | Hugging Face | LoRA/QLoRA/DoRA | アダプタ管理 | ○ |
| LLaMA-Factory | hiyouga | LoRA + 30手法 | マルチアダプタ | ○ |
| Axolotl | OpenAccess | LoRA/QLoRA | 設定ベース | △ |
| Unsloth | Unsloth AI | LoRA(2x高速) | メモリ最適化 | △ |
| vLLM | UC Berkeley | LoRA推論 | 動的ロード | ◎ |
| TensorRT-LLM | NVIDIA | LoRA推論 | 動的ロード | ◎ |
vLLM はサービング時に複数のLoRAアダプタを同時にロードし、リクエストごとに異なるアダプタを適用する機能を標準サポート。GPU メモリ上にベースモデル1つ + 複数のLoRAアダプタ(各数十MB)を保持し、リクエストのメタデータに応じて切替える。
| 手法 | 訓練コスト(vs全体FT) | 推論オーバーヘッド | 忘却率 | ストレージ/タスク |
|---|---|---|---|---|
| 全体ファインチューニング | 100% | 0% | 25-40% | モデル全体 |
| EWC | 110-120% | 0% | 8-18% | Fisher行列 |
| Experience Replay | 130-150% | 0% | 3-12% | バッファデータ |
| LoRA(タスク別) | 2-5% | 1-3% | ≈0% | 10-50MB/タスク |
| LoRA Composition | 2-5% | 3-8% | ≈0% | 10-50MB/タスク |
| LoRA as MoE | 5-10% | 5-10% | ≈0% | 10-50MB/タスク + ルーター |
{model}_{task}_{version}_{rank} 形式(例: llama3-8b_medical_v2_r32)で管理Q1: LoRAアダプタは何個まで管理できますか? A: ストレージ上は事実上無制限(1アダプタ 10-50MB)。GPU メモリ上の同時ロード数は vLLM で 100+ アダプタが可能(7Bモデル + 100アダプタ × 20MB = 基本 14GB + アダプタ 2GB 程度)。実用上はルーティングの複雑さと品質管理がボトルネック。
Q2: LoRA Composition で異なるドメインのアダプタを混ぜると性能が劣化しませんか? A: 関連性の高いアダプタ(日本語+医療)は高い相乗効果を示すが、無関係なアダプタ(コード生成+感情分析)の合成は性能劣化の原因になりうる。合成前にバリデーションセットで評価し、合成後の性能が各単体の95%以上を維持することを確認するのが推奨。
Q3: LoRAとフルファインチューニングの品質差は? A: 標準的なタスクでは LoRA(r=32)はフルFTの 95-98% の性能を達成。高度な推論やドメイン特化では差が開く場合があるが、QLoRA + 高ランク(r=128)でほぼ埋められる。コスト差(2-5% vs 100%)を考慮すると、ほとんどの実用場面で LoRA が優位。