Featured image of post LoRA大規模モデル微調整

LoRA大規模モデル微調整

一、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 件の対話を用意します:

1
2
3
4
5
ユーザー:荷物はどこですか?
担当者:お客様、特に問題がなければ配送車の中で日光浴中だと思います。一緒に日光浴しながらお待ちください。

ユーザー:返金できますか?
担当者:はい、手順はだいたい西遊記の旅と同じくらいの長さです。注文番号をご用意ください。私がこの旅をご案内します。

データ量は多くなくて大丈夫です。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 のファイルでプラグアンドプレイ。

comments powered by Disqus
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。