ファインチューニングの何が問題だったか
LLMをある特定のタスクや文体に合わせたいとき、最も確実な方法は「ファインチューニング」つまり追加学習です。しかしLlama 3(70Bパラメータ)のフルファインチューニングを行うには、複数枚のA100(80GB VRAM)が必要で、一般的な開発者には手が届きませんでした。
LoRA(Low-Rank Adaptation)は、モデルの重みの大部分を凍結したまま、小さな追加行列だけを学習することでこの問題を解決しました。2021年にMicrosoftの研究チームが発表し、今や画像生成モデルから言語モデルまで広く使われています。
LoRAの数学的直感
難しい数式を使わずに核心を説明します。
通常のファインチューニングでは、モデルの重み行列Wに対してΔW(変化量)を加算します。問題はΔWがWと同じサイズであること。70BパラメータのモデルならΔWも同サイズのメモリが必要です。
LoRAの発想は「ΔWは実はずっと低い次元に圧縮できる」という観察です。
ΔW = B × A
ここでAとBは元のΔWよりはるかに小さい行列で、ランク(r)という数で制御します。たとえば1000×1000のΔWをr=8で近似すると、必要なパラメータは(1000×8) + (8×1000) = 16,000個、つまり100万分の1以下になります。
もちろん近似なので完全ではありませんが、多くのタスクでは十分な精度を発揮します。特定のスタイルや専門知識を追加する程度であれば、フルファインチューニングとほぼ同等の結果が得られることが多いです。
どこに挿入するか
LoRAはモデル内のすべての行列に適用する必要はなく、効果が大きい層を選んで適用します。よく使われるのはTransformerのSelf-Attentionレイヤー内のQ(Query)・V(Value)行列です。論文ではこれだけで十分な適応効果が得られると報告されています。
PEFT(Parameter-Efficient Fine-Tuning)ライブラリを使うと、どの層にLoRAを適用するか設定ファイルで簡単に指定できます。
フルファインチューニングとの比較
フルファインチューニングとLoRAの違いを整理します。
学習時のメモリ使用量
フルファインチューニングはモデルパラメータ全体に加えてオプティマイザの状態(Adamなら3倍)も保持するため、70Bモデルでは数百GBのVRAMが必要です。LoRAでは凍結部分のオプティマイザ状態が不要なため、7Bモデルなら24GB VRAM 1枚で学習できる場合があります。
推論時の扱い
LoRAのアダプター(A・B行列)は、推論時に元の重みに加算してマージできます。マージ後は追加のメモリや速度低下が一切ありません。また複数のLoRAアダプターを差し替えることで、同じベースモデルから異なるキャラクターや専門知識を切り替えて使えます。
学習時間
パラメータ数が少ない分、フルファインチューニングより大幅に高速です。7Bモデルを数千件のデータでファインチューニングするなら、RTX 4090で数時間程度で完了する場合もあります。
QLoRAとの違い
QLoRA(Quantized LoRA)は、LoRAをさらに省メモリ化した手法です。2023年にUW(ワシントン大学)のチームが発表しました。
違いはベースモデルの量子化にあります。LoRAではベースモデルをfloat16(16ビット)のまま保持しますが、QLoRAではベースモデルを4ビットに量子化した状態で保持します。これにより70Bモデルを48GB VRAM程度で学習できるようになりました。
量子化による精度の低下は訓練可能なLoRAアダプターが補完するという設計で、実際の性能低下は最小限に抑えられることが確認されています。
量子化の方式としてNF4(Normal Float 4)という特殊なフォーマットが使われており、モデルの重みの分布に最適化されています。
LoRAのランクrをどう選ぶか
rの値が大きいほど表現力は上がりますが、学習パラメータ数も増えます。一般的な目安は次のとおりです。
- r=4〜8:スタイル適応、特定ドメインの口語追加など軽いタスク
- r=16〜32:特定分野の知識追加、コードスタイルの変更
- r=64以上:大きなスタイル変化、複雑な行動パターンの注入
rを上げすぎると過学習(訓練データへの過剰適合)が起きやすくなるため、バリデーションデータでの評価が必要です。
まとめ
LoRAは「重みの変化量は低ランク行列で近似できる」という洞察で、LLMのファインチューニングをコンシューマーグレードのGPUでも可能にしました。QLoRAはその上にベース重みの量子化を組み合わせてさらに省メモリ化しています。画像生成分野では特定の画風や人物を追加するのに広く使われており、LLM分野でも専門特化モデルを作る標準的な手法として定着しています。