一、LoRA とは?
LoRA(Low-Rank Adaptation、低ランク適応)は大規模モデルの微調整技術です。
問題の出発点
大規模モデル(Qwen、Llama など)は 7B、70B ものパラメータを持っています。新しいことを学習させるたびに全パラメータを再訓練するには、数十枚の A100 GPU を数日間稼働させる必要があり、一般の人はまず不可能です。
LoRA の発想
元のモデルには触れず、横に「小さなプラグイン」を付けるだけ。
比喩で説明します:
| 方法 | たとえ |
|---|---|
| 全量微調整 | 教科書全体を書き換える |
| LoRA | 教科書の余白に付箋を貼って補足を書き加える |
元のモデルの重みはまったく変更しません。LoRA は特定の重要なレイヤーの横に極小の行列(低ランク行列)を挿入し、訓練時にはこの行列のパラメータだけを更新します。
なぜ「低ランク適応」なのか?
数学的には、大きな行列は 2 つの小さな行列の積で近似できます。LoRA はこの原理を利用します。元の重み行列 $W$ はそのままにして、2 つの小さな行列 $A$ と $B$ を追加で訓練し、最終的な出力は $W + A \cdot B$ になります。$A$ と $B$ を合わせても元の重みの 1000 分の 1 程度のサイズです。
二、LoRA の用途
LoRA の核心はたった一つ:非常に低コストで大規模モデルの「振る舞い」を変えることです。
LoRA が変えるのはスタイル/フォーマット/振る舞いであって、知識ではない
- モデルに新しい知識を学習させたい → RAG(検索拡張生成)を使用
- モデルの話し方や振る舞いを変えたい → LoRA を使用
代表的なユースケース
| シナリオ | 例 |
|---|---|
| スタイル変換 | 汎用モデルに魯迅の文体で文章を書かせる |
| フォーマット制約 | モデルに厳密な JSON のみを出力させる |
| ロールプレイ | Qwen を「原神」の鍾離にする |
| ドメイン口調 | 医療問診の口調、法律文書の厳密な表現 |
| 指示追従 | system prompt をより正確に守らせ、脱線を防ぐ |
LoRA のメリット
- VRAM 消費が極めて低い:7B モデルを RTX 3090(24G)1 枚で訓練可能、8G でもなんとか動作
- ファイルサイズが極小:訓練成果物は数 MB だけ。1 つのモデルに数十の異なる LoRA を付けられ、プラグアンドプレイ
- 訓練が高速:数百件のデータで 30 分で結果が出る
- ベースモデルを破壊しない:LoRA をアンロードすればモデルは元に戻り、リスクゼロ
三、LoRA の使い方
大きく分けて 4 ステップ:
ステップ 1:データの準備
モデルに学習させたい「振る舞い」を対話例として書き出します。
モデルを毒舌カスタマーサービスにしたい場合、50〜200 件の対話を用意します:
|
|
データ量は多くなくて大丈夫です。50〜200 件の高品質な例で明らかな効果が得られます。質は量よりはるかに重要です。
ステップ 2:ツールの選択
さまざまなツールがありますが、本質的には同じことを行います。おすすめは 2 つ:
| ツール | 特徴 | 向いている人 |
|---|---|---|
| LLaMA-Factory | Web UI、クリック操作のみ | コードを書きたくない初心者 |
| Unsloth | 2〜5 倍高速、VRAM 半減 | Python を少し書けて効率重視の人 |
Unsloth のコアコードは 30 行未満です。本質は:モデルをロード → LoRA をアタッチ → データを流し込む → 訓練 → 保存。
ステップ 3:訓練
いくつかの重要なパラメータを設定して、待つだけ:
| パラメータ | 役割 | 標準的な値 |
|---|---|---|
| LoRA rank(ランク) | 「プラグイン」の容量を決定。大きいほど细腻だが VRAM を消費 | 8 か 16 で十分 |
| 学習率 | 1 回の学習量 | 5e-5、あまり弄らない |
| エポック数 | データを繰り返す回数 | 3〜5 |
ステップ 4:使用
訓練が完了すると、数 MB の LoRA ファイルが得られます。使用時は元のモデルとこの LoRA ファイルを同時にロードするだけで、モデルは訓練した通りの振る舞いになります。
元のモデルに戻したい?LoRA をアンロードするだけで 1 秒で復元できます。
1 つのモデルに複数の LoRA を同時に付けることもできます。たとえば「毒舌スタイル」と「JSON 出力」の LoRA を付ければ、JSON を出力できる毒舌アシスタントになります。
四、関連概念との関係
| 概念 | 説明 | LoRA との関係 |
|---|---|---|
| 全量微調整 | 全パラメータを変更 | LoRA の代替手段、効果は高いがコストは数百倍 |
| RAG | 外部知識ベースの検索 | 補完関係:RAG は知識、LoRA はスタイルを担当 |
| プロンプトエンジニアリング | プロンプトを書く | 最も軽量だが効果は限定的。プロンプトで足りないときに LoRA |
| QLoRA | LoRA + 4bit 量子化 | LoRA の VRAM 節約版、8G GPU でも 7B モデルが動作 |
| PEFT | パラメータ効率的微調整の大分類 | LoRA は PEFT ファミリーで最も人気のある手法 |
五、一言まとめ
LoRA = 大規模モデルに付ける小さなプラグイン。知識は変えずに振る舞いだけを変更、訓練コストは極めて低く、数 MB のファイルでプラグアンドプレイ。