「ChatGPTのような大規模言語モデルを、自社のデータや専門分野に合わせて使いたい」——こうしたニーズに応える手法がファインチューニングです。事前学習済みモデルに追加データで再学習をかけ、特定のタスクに特化させる技術です。
しかし、数百億パラメータを持つ大規模言語モデルをフルにファインチューニングしようとすると、重みを保持するだけで数百GBのGPUメモリが必要になります。研究用の高性能GPU(NVIDIA A100)でも1枚あたり最大80GBですから、それだけで何十枚も束ねなければならない計算です。個人や小規模チームが手を出せるスケールではありません。
そこで登場したのが、本記事のテーマであるLoRA(Low-Rank Adaptation)です。LoRAは「重みの変化量を低ランク行列で近似する」というアイデアにより、ごく少数のパラメータだけを学習しながら、フルファインチューニングに匹敵する性能を実現する技術です。
実際に、LoRA論文(Hu et al., 2021)では、GPT-3(1750億パラメータ)への適用で訓練パラメータ数を最大10000分の1程度に削減しながら、複数のベンチマークでフルファインチューニングと同等またはそれ以上の性能を達成しています。
本記事では、「なぜLoRAが必要なのか」という背景から、その数理的な仕組み、実際の応用例、そして最新の発展形まで、順を追って解説します。
Contents
1.ファインチューニングの壁 ― なぜLoRAが必要なのか
大規模言語モデルのファインチューニングにかかるコスト
ファインチューニングの手法はモデルの種類によって異なります。コンピュータビジョンの分野では、最終層(ヘッド)のみを学習するなど、一部のパラメータを再学習する手法が一般的でした。しかし、LLMでは事情が異なります。LLMの能力はTransformerの全レイヤーにわたって分散して埋め込まれており、特定のレイヤーだけを更新する手法では性能が大きく落ちることが知られています。そのため、伝統的なLLMのファインチューニングでは、パラメータを更新する「フルファインチューニング」が標準的なアプローチとされてきました。
しかし、モデルの巨大化に伴い、このフルファインチューニングは現在「現実的でない」と言われるようになっています。その理由は主に3つあります。
① GPUメモリ量の不足
ニューラルネットワークの学習には、モデルの重み(パラメータ)だけでなく、勾配(各パラメータをどの方向にどれだけ更新すべきかを示す値)やオプティマイザの状態(学習を安定させるためにAdamなどの最適化アルゴリズムが保持する補助情報)もGPUメモリに保持する必要があります。例えば、FP16(16bit)形式のGPT-3(175Bパラメータ)の場合、重みだけで350GBを占有します。ここに勾配とオプティマイザ状態を加えると合計で1.2TB(1200GB)超のメモリが必要になります。
一般的な研究用高性能GPU(NVIDIA A100 80GBモデル)1枚の容量を遥かに超えており、学習全体で多数枚のGPUが必要になり、非常に高価な計算環境が求められます。
② 膨大な計算コスト
全パラメータの勾配を計算・更新する処理は、パラメータ数に比例して増大します。GPT-3規模(175B)のモデルのフルファインチューニングは、最先端のデータセンターGPUを何十枚も束ねてはじめて現実的な時間で完了するスケールです。近年のモデル(GPT-4等)では、その学習に数千万ドルから億単位のコストがかかると推定されており、適応(Adaptation)のためだけにこのプロセスを繰り返すことは極めて困難です。
③ モデル管理のコスト
タスクごとにフルファインチューニングを行うと、その都度「モデルの全パラメータ」を個別に保存しなければなりません。医療用、法律用、コード用と3種類作成すれば、チェックポイントだけで数TBのストレージを消費します。これは保存コストだけでなく、推論時にモデルを入れ替える際の転送オーバーヘッドも深刻な問題となります。
「全パラメータを更新する」ことの問題点
ここで根本的な問いを立ててみましょう。
ファインチューニングの際、本当にすべてのパラメータを更新する必要があるのでしょうか?
事前学習済みモデルはすでに言語の基礎的な構造を把握しています。これを特定のタスクに適応させるための「差分」は、全パラメータ空間を埋め尽くすほど複雑ではないはずです。これを数学的に表現したのが、「重みの更新行列 (ΔW) は低い『本質的なランク』で表現できる」というLoRAの核心的な仮説です。
実際、LoRAの研究では、元の重みを凍結したまま、ごく小さなランク(例:r=8)の行列を追加して学習するだけで、フルファインチューニングと同等か、時にはそれを上回る性能が得られることが実験的に証明されています。これは、必要な変化が全パラメータのわずかな方向に集中していることを示唆しています。
2.LoRAの仕組み ― 「差分」だけを賢く、小さく学習する
重みの更新量を「行列の掛け算」で表現する
LoRA(Low-Rank Adaptation)の革新的なアイデアは、「巨大なモデルの重みを直接いじるのではなく、変化した『差分』だけを小さな行列の積で表す」という点にあります。まず、以下の図を見てみましょう。

左の青い四角が凍結された事前学習済み重み $W$、右のオレンジの2つの台形が学習対象の行列 $A$(下)と $B$(上)。台形の「くびれ」がランク $r$ のボトルネックを表しています。入力 $x$ から出力 $h$ へ、2つの経路の出力が足し合わされます。
この図には、入力 $x$ から出力 $h$ への2つの並列した経路が描かれています。
左側(青):元のモデルは、事前学習済みの重み行列 $W_0$ をそのまま通過する経路です。学習中はこの重みを一切更新せず「凍結」します。
右側(オレンジ):LoRAの追加分は、2つの細長い行列 $A$(下の台形)と $B$(上の台形)を通る経路です。台形の「くびれ」がポイントで、$d$ 次元の入力をランク $r$($r \ll d$)という小さな次元まで一度圧縮してから、また $d$ 次元に戻しています。
そして出力 $h$ では、この2つの経路が足し合わされます。数式で書くと次のようになります。
$$
W’ = W_0 + BA
$$
(通常のフルファインチューニングでは $W’ = W_0 + \Delta W$ と全パラメータを書き換えますが、LoRAは $\Delta W \approx BA$ と近似します)
$W_0$ は $d \times d$(例:$1000 \times 1000 = 100$万パラメータ)の大きな行列ですが、$A$ と $B$ はそれぞれ $r \times d$ と $d \times r$(例:$r=8$ なら $8 \times 1000$ と $1000 \times 8$ で合計1万6千パラメータ)。$r$ を小さくするほど、学習するパラメータ数は劇的に減ります。
また、図から $B = 0$(ゼロ初期化)と $A = \mathcal{N}(0, \sigma^2)$(ランダム初期化)であることが読み取れます。$B = 0$ のおかげで学習開始直後は右経路の出力がゼロになり、$W’ = W_0$——元のモデルそのままの状態から安全にスタートできます。
なぜこれでうまくいくのか? ― 「JPEG圧縮」のイメージ
「そんなに削って性能は大丈夫?」と思うかもしれません。しかし、研究によれば、モデルを特定のタスクに適応させるために必要な変化は、実は「低い本質的な次元(Low Intrinsic Dimension)」に集約されていることが分かっています。
これは、高画質な写真を「JPEG」で圧縮する感覚に似ています。
- フルファインチューニング:写真の全ピクセルを一つずつ修正する(データ量が膨大)
- LoRA:重要な特徴だけを抽出して保存する(データ量は劇的に少ないが、見た目はほぼ変わらない)
実際、GPT-3(1750億パラメータ)への適用でも、LoRAを使えば学習が必要なパラメータ数を約10000分の1にまで減らすことができますが、その性能はフルファインチューニングと遜色ないことが論文で示されています(Hu et al., 2021)。

学習・運用上の利点
このアイデアには、実装上の巧みさも備わっています。
学習後の動作が特に秀逸です。LoRAで学習した差分 $BA$ は、事前に $W_0$ へ統合(マージ)できます。そのため、推論時には追加のアダプタ層を実行せず、元のモデルに近い速度で動作させることが可能です。
一方、アダプタを外付けのまま保持する方式では、推論時に追加の演算が発生します。LoRAは「軽量に学習しつつ、必要に応じて元モデルへ吸収できる」という点が大きな特徴です。
ランク $r$ は「表現力」の調整つまみ
ここまでの説明で「行列の幅 $r$ を小さくする」と繰り返してきましたが、この $r$(ランク)は実は自由に設定できるハイパーパラメータです。モデルにどれだけ「新しい知識を書き込むスペース」を与えるか、その広さを決めるつまみだと思ってください。
$r = 4$ や $r = 8$ のような小さな値では、パラメータ数は極めて少なくなりますが、多くの一般的なタスクではこれで十分な性能が得られます。一方、$r = 64$ や $r = 256$ まで大きくしていくと表現力は上がる反面、メモリ消費も増え、フルファインチューニングのコストに近づいていきます。LoRAの「軽量さ」はこのランクを小さく保つことで生まれているわけです。
また、どのレイヤーにLoRAを適用するかも性能を大きく左右します。当初はアテンション機構(Q, K, V行列)だけに適用するのが一般的でしたが、近年の知見ではすべての全結合層(All-linear)に適用することが、少ないランク数で高い性能を出すための推奨設定となっています。
3.LoRAがもたらす革新 ― 実用的な利点と応用
仕組みが分かったところで、「では実際の現場はどう変わったのか?」という問いに答えましょう。LoRAの普及は、単なる「軽量化」に留まらず、AI開発の運用形態そのものを変えました。
一つの「脳」、無数の「専門家」
LoRAが変えた最大のことは、「ベースモデル(巨大な脳)は共通のまま、特定の知識を持つ『追加の記憶(アダプタ)』だけを差し替えられる」という運用を可能にしたことです。
医療相談に答えるAI、法律文書を解析するAI、コードを補完するAI——これらをすべてフルファインチューニングで作ると、175Bモデルを何十コピーも抱えることになります。しかしLoRAなら、ベースモデルはサーバに1つ置いたまま、数MBのアダプタファイルを切り替えるだけで、AIの「専門性」を瞬時に変えられます。服は同じまま、ワッペンを貼り替えるようなイメージです。
この仕組みが最も爆発的に広まったのは、画像生成の世界でした。Stable Diffusionのような画像生成モデルに特定の画風やキャラクターを学習させた「LoRAファイル」は、元のモデル(数GB)に比べて数十MBと極めて軽量です。Civitaiというコミュニティサイトには、ユーザーが作成した数万ものLoRAアダプタが公開されており、誰でも自由にダウンロードして独自のスタイルで画像を生成できます。フルファインチューニングでは到底実現できなかった「AI文化の民主化」と言えるでしょう。
「吸収できる」からこそ運用が変わる
もう一つ、LoRAの巧みな点があります。学習後に元の重みへ「吸収(マージ)」できるため、推論時に余計な計算が一切発生しないことです。後付けのアダプタ層を積み重ねる他の手法とは異なり、フルファインチューニングと数学的に等価な推論速度を保ちます。「装備を着込んだら、もうそれは素の体と変わらない」ような状態です。
さらに、LoRAは事前学習で得た「元々の知識」を忘れにくい性質も持ちます。フルファインチューニングでは、新しいタスクを学ぶと古い知識を上書きしてしまう「破滅的忘却」が問題になりますが、LoRAはそのリスクが低いことが近年の研究で示されています。
そしてストレージへの影響は劇的です。GPT-3(175B)のモデル全体を保存するには1.2TBが必要ですが、LoRAアダプタならわずか35MBで済みます。医療用・法律用・コード用と3種類を持っても、合計100MB強。以前であればスーパーコンピュータ規模の管理が必要だったものが、USBメモリに収まる世界になりました。
4.LoRAの進化形 ― QLoRAとさらなる地平
LoRAは革命的でしたが、一つの壁がまだ残っていました。「低ランク行列を学習する」というアイデアがいくら効率的でも、学習中に元の重みを読み込むためのGPUメモリは依然として必要だったのです。65Bパラメータのモデルをファインチューニングしようとすると、LoRAを使っても数百GBのGPUメモリが要りました。「もっと庶民の手に届く形で」——このニーズに応えて2023年に登場したのがQLoRAです。
QLoRA:量子化とLoRAの掛け算
QLoRA(Dettmers et al., 2023)のアイデアはシンプルです。「どうせ読み込むだけの元の重みなら、もっと圧縮してしまおう」というものです。量子化(quantization)とは、モデルの重みをより少ないbit数で表現し直すことでメモリを節約する技術で、QLoRAはこれをLoRAと組み合わせます。
具体的には3つの技術を重ねています。まず元の重みを4-bit NF4という極小のデータ形式で保持します(通常の16bitの4分の1)。次に「量子化に使う定数自体も量子化する」Double Quantizationでメモリをさらに絞ります。そして学習中にメモリが急増したとき、CPU側のRAMへ一時退避して「メモリ不足エラー」を回避するPaged Optimizersが安全網として機能します。3つの技術が揃って初めて、家庭用に近いGPUで巨大モデルを扱えるようになるのです。
この結果は驚くべきものでした。かつては780GBものGPUメモリが必要だった65Bモデルの学習が、単一の48GB GPUで可能になったのです。QLoRAで作成された「Guanaco」(65B)はVicunaベンチマークでChatGPTの99.3%の性能を達成しています。「48GBのGPU1枚でChatGPTに迫る専門家モデルを作れる」——これがQLoRAが研究コミュニティに与えた衝撃でした。
LoRAをさらに磨く:AdaLoRAとLoRA+
QLoRAがメモリ問題を解決した後も、研究者の問いは続きます。「そもそも、全レイヤーに同じランクを割り当てるのは最適なのか?」
AdaLoRA(Zhang et al., 2023)はこの問いに答えました。Transformerの各レイヤーを調べると、タスクへの貢献度には大きな差があります。AdaLoRAは $\Delta W$ を特異値分解(SVD)形式で表現し、重要度の低い方向を自動的に刈り取ることで、同じパラメータ予算からより高い性能を引き出します。
一方、LoRA+(Hayou et al., 2024)が着目したのは学習率でした。理論的分析の結果、行列$B$の学習率を$A$の16倍に設定すると、追加コストゼロで精度が1〜2%、学習速度が最大2倍改善することが分かりました。「設定を少し変えるだけで」という発見ですが、その背後には厳密な数学的根拠があります。
まとめ:AI開発の「民主化」
LoRA(Low-Rank Adaptation)は、大規模モデルのカスタマイズにおける「壁」を打ち破りました。
- 圧倒的な効率:GPT-3(175B)への適用でパラメータ数を約37,000分の1に削減し、膨大な計算資源を不要にしました。
- フルファインチューニングに匹敵する性能:少ないパラメータでも、特定のタスクにおいてフルファインチューニングと同等、あるいはそれ以上の結果を出せることが証明されています。
- 運用の柔軟性:数MBのファイルを付け替えるだけで、一つのモデルが医療、法律、芸術など、あらゆる姿に変わります。
LoRAの登場により、AIを「使う」だけでなく、「自分の手で育てる」体験が研究機関から個人開発者へと開放されました。今や、高VRAMの個人向けGPUでも、比較的大きなモデルの調整に手が届くようになりました。この強力なツールを手に、ぜひ独自のモデル開発に一歩踏み出してみてください。
参考文献
- Hu, E. J. et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685
- Dettmers, T. et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314
- Zhang, Q. et al. (2023). AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. arXiv:2303.10512
- Hayou, S. et al. (2024). LoRA+: Efficient Low Rank Adaptation of Large Models. arXiv:2402.12354




