LoRA 論文解説:Low-Rank Adaptation とは?低ランクで足りる理由を原論文からわかりやすく
LoRA とは何か、原論文(Hu et al., 2021)を本文だけを根拠に読み直す。BAという式の意味、論文が実測した「増幅率21倍」、r=1で足りた理由、そして論文自身が残した未検証領域まで。
要点
- LoRAは事前学習済み重みW0を凍結し、低ランクの差分BAだけを学習する手法である。
- GPT-3 175Bでr=4、queryとvalueの射影行列に適用すると、チェックポイントは350GBから35MBに減る。
- デプロイ時にW=W0+BAとしてマージするため、推論時の追加レイテンシがゼロであることが構成上保証される。
- アダプタはバッチ1・系列長128で19.8msが23.9ms(+20.7%)と25.8ms(+30.3%)に悪化する。
- ΔWは事前学習で学習済みだが強調されていなかったタスク固有の方向を増幅しており、r=1でも足りる場合がある。
LoRA: Low-Rank Adaptation of Large Language Models
一次資料 — この記事の根拠
論文の発表 2021-06-17→この解説の公開 2026-08-035年2か月後
LoRA: Low-Rank Adaptation of Large Language ModelsEdward J. Hu, Yelong Shen, Phillip Wallis ほか · 2021-06-17 · v2arXiv:2106.09685論文ページ·PDF原文の要旨(Abstract)を読む
An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.
175Bのコピーを100個持てるか
大規模事前学習モデルを複数の下流タスクに合わせて使いたい。素直な方法はフルファインチューニングですが、その最大の欠点は「新しいモデルが元のモデルと同じ数のパラメータを持つ」ことです(§1)。GPT-2 や RoBERTa large では単なる不便で済んだこの性質が、1750億パラメータの GPT-3 では致命的なデプロイ課題になる、というのが出発点です。
論文が挙げる数字は具体的です。GPT-3 175B のフルファインチューニングでは学習中の VRAM 消費が 1.2TB。 で query と value の射影行列だけを適応した LoRA なら、保存すべきチェックポイントは 350GB から 35MB へ、およそ10000分の1に落ちます(§4.2)。脚注4はさらに率直で、デプロイ時には結局 350GB のベースモデルが要るが、100個の適応済みモデルを持つのに必要なのは であって ではない、と書いています。
比喩を使うなら、フルファインチューニングは「辞書を1冊まるごと書き直す」作業、LoRA は「原本を封印したまま差分だけを別紙に書く」作業です。ただしこの比喩は保管コストしか説明していません。なぜ差分がそんなに薄くて済むのかが論文の本題です。
直感: 適応とは、既にある方向を増幅すること
論文の仮説はこうです。先行研究(Li et al. 2018a、Aghajanyan et al. 2020)が「過剰パラメータ化されたモデルは実は低い内在次元の上に乗っている」と示したことを受け、適応時の重みの変化 もまた低い「内在ランク」を持つのではないか(§1)。
そして §7.3 で、その直感の中身を実測しています。GPT-3 の48層目の について、 の特異ベクトルが張る部分空間へ を射影したときのフロベニウスノルムを比べたのが表7です。 のとき 、 で、増幅率は約21倍。一方 自身の上位方向に射影すれば 21.67()なので、 は の上位特異方向を繰り返してはいない。ランダム行列での射影は 0.02 なので、無相関でもない。(特異ベクトル・射影・低ランク近似そのものについては 特異値分解と低ランク近似 で扱っています。)
論文の結論はこうです。 は「事前学習で既に学習されてはいるが強調されていなかった、タスク固有の方向を増幅している」(§7.3)。つまりファインチューニングは新しい能力をゼロから作る作業ではなく、イコライザーのつまみを数本だけ大きく持ち上げる作業に近い。だからつまみは少なくて足りる——これが「低ランクで足りる」の中身です。
既存手法の何が問題だったのか
LoRA 以前にも省パラメータ適応はありました。論文(§3)は2系統に整理します。アダプタ層を追加する方式と、入力層の活性化を最適化する方式(prefix/prompt 系)です。
アダプタは推論レイテンシを増やす。 アダプタ層は直列に挿入されるので追加計算を必ず通ることになり、層を刈るなどしても「その追加計算を迂回する直接的な方法はない」(§3)。表1は GPT-2 medium を NVIDIA Quadro RTX8000 で100回計測した順伝播1回の実測です。バッチ32・系列長512では +2.2%〜+3.0% と小さいのに、バッチ1・系列長128では 19.8ms が 23.9ms(+20.7%)/25.8ms(+30.3%)まで悪化する。オンライン推論のようにバッチが小さい状況では無視できない、というのが論文の指摘です(§3、付録B)。シャーディング時は AllReduce や Broadcast の同期が増えてさらに悪化します。
prefix 系は最適化が難しく、系列長を食う。 論文は prefix tuning について「最適化が難しく、性能が学習パラメータ数に対して単調に変化しない」と観察し、さらに根本的な問題として、適応のために系列長の一部を予約すると下流タスクが使える系列長がその分減ると指摘しています(§3)。
LoRAの核である「更新は低ランクで足りる」は、言葉より触ったほうが早いです。rank を動かして、誤差が崩れる場所を確かめてください。
固有値・SVD・内積まで含めた数学の土台はLoRAとRAGを支える線形代数にまとめてあります。
仕組み: を凍結し、 だけを学習する
事前学習済み重み に対し、その更新を低ランク分解で表現します(§4.1):
順伝播は式(3):
学習中 は凍結され勾配を受け取りません。設計上の要点は3つです。
- 初期化: はランダムなガウス分布、 はゼロ。よって学習開始時点で はゼロ、モデルは元のモデルと完全に一致します(§4.1)。
- スケーリング: を 倍する( は に対する定数)。論文は「Adam で最適化する場合、初期化を適切にスケールすれば の調整は学習率の調整とほぼ同じ」と述べ、最初に試した に を合わせてそれ以降チューニングしないと明言しています。 を変えたときの再調整を避けるための仕掛けです(§4.1)。
- マージ: デプロイ時は を明示的に計算して保存し、通常どおり推論する。タスク切替は を引いて別の を足すだけ。これにより推論時の追加レイテンシがゼロであることが構成上保証されます(§4.1)。アダプタ層に対する明確な差はここです。
適用先については、自己注意の4行列()と MLP の2行列のうち、論文は注意重みだけに限定し MLP は凍結しています。単純さとパラメータ効率のため、と理由を述べたうえで、MLP 層・LayerNorm・バイアスへの適応は今後の課題として明示的に残しています(§4.2)。この4行列がそれぞれ何をしている行列なのかは Attention機構を1から理解する を参照してください。
論文はこの形式がフルファインチューニングの一般化でもあると論じます。全重み行列に当ててバイアスも学習し、 を事前学習済み行列のランクまで上げれば表現力をおおよそ回復する。学習パラメータを増やすと LoRA は元モデルの学習に収束するのに対し、アダプタ系は MLP に、prefix 系は「長い入力を取れないモデル」に収束します(§4.1)。
実験が示したこと
評価は RoBERTa / DeBERTa(GLUE)、GPT-2(E2E NLG)、GPT-3 175B(WikiSQL、MNLI、SAMSum)で、すべて NVIDIA Tesla V100 上(§5)。ほとんどの実験で LoRA は と にのみ適用されています(§5.1)。
- GLUE(表2): RoBERTa base はフル FT 125.0M で平均 86.4、LoRA 0.3M で 87.2。RoBERTa large は 355.0M で 88.9、LoRA 0.8M で 89.0。DeBERTa XXL は 1500.0M で 91.1、LoRA 4.7M で 91.3。
- GPT-2 / E2E NLG(表3): GPT-2 M はフル FT 354.92M で BLEU 68.2、LoRA 0.35M で 70.4。GPT-2 L は 774.03M で 68.5、LoRA 0.77M で 70.4。
- GPT-3 175B(表4): フル FT は 175,255.8M パラメータで WikiSQL 73.8 / MNLI-m 89.5 / SAMSum 52.0-28.0-44.5。LoRA 4.7M で 73.4 / 91.7 / 53.8-29.8-45.9、LoRA 37.7M で 74.0 / 91.6。論文はシード由来の揺らぎを WikiSQL ±0.5%、MNLI-m ±0.1% と明記しています。
- どの行列に当てるか(§7.1、表5): 18M パラメータ(FP16 で約35MB)という同一予算で比べると、WikiSQL は 単独 70.4、 単独 73.0、()73.7。論文の結論は「ランク4でも の情報を捉えるには十分であり、1種類の行列に大きな を割くより複数種類に当てるほうが好ましい」。
- 最適な (§7.2、表6): なら で WikiSQL 73.4 / MNLI 91.3 と、(73.5 / 91.4)とほぼ変わらない。一方 単独では が 68.8 と落ちる。ランクを上げるより適用範囲を広げるほうが効くという §7.1 の結論と整合します。
- なぜ を上げても増えないのか(§7.2、図3): と で学習した を特異値分解して部分空間の重なりを測ると、上位特異ベクトルの方向は強く重なるが他は重ならない。正規化類似度 で共有される部分空間の次元は1で、これが でも通用する理由の説明になっている、と論文は書いています(96層中の48層目が対象)。
- 少データ域(付録F.3、表16): MNLI を100例に絞るとフル FT 60.2 に対し LoRA 63.8。PrefixEmbed は 37.6 で、ランダム(33.3)をわずかに上回る程度でした。
限界と未検証点
論文自身が認めているもの:
- バッチ内で異なるタスクを混ぜにくい。 を に吸収してレイテンシをゼロにした場合、1回の順伝播で異なるタスク用の を使う入力をまとめてバッチ処理するのは容易ではない。レイテンシが重要でなければマージせず動的に選ぶことも可能、と但し書きがあります(§4.2)。
- MLP・LayerNorm・バイアスへの適応は未検証。実験は自己注意の重みに限定されています(§4.2)。
- 小さい が万能とは主張していない。脚注6は思考実験として、下流タスクが事前学習と異なる言語であれば、モデル全体の再学習( 相当)が小さい の LoRA を上回るはずだ、と書いています。実験ではなく思考実験である点に注意が必要です。
- 適用行列の選択はヒューリスティック。結論部(§8)は「どの重み行列に LoRA を当てるかは主にヒューリスティックに依存している。より原理的な方法はないか」と自ら問い、ファインチューニングや LoRA の機構自体も「まだ全く明らかではない」と書いています。
- 部分空間解析のサンプルは限定的。図3・図4 の分析は96層中の48層目のもので、他層でも結論は成り立つと付録H.1 で述べられてはいるものの、根拠は限られた層の可視化です。
- の最適値はモデル・タスク依存。付録H.2 は GPT-2 Medium の E2E で検証損失が 、BLEU が でピークになったと報告しており、GPT-3 で が十分だった話をそのまま持ち込めないことを示しています。
※本記事執筆時点(2026年)の補足(原論文の主張ではなく筆者の注記): 本論文の実験対象は 2021年時点のモデル(RoBERTa / DeBERTa / GPT-2 / GPT-3 175B)です。その後 LoRA は量子化したベースモデルとの併用など多くの派生を生みましたが、本記事の数値はすべて本論文の報告値であり、後続研究の結果は含めていません。
実務Tips
以下は論文の記述に基づく筆者の運用解釈です。
- を上げる前に適用行列を増やす。 表5・表6が一貫して示すのはこの順序です。 に小さい を当てる構成が、 単独に大きい を当てるより良い。
- を大きくしても勝手には良くならない。 表6 では が とほぼ同じか、わずかに悪い組み合わせすらあります。
- を毎回チューニングしない。 論文の運用は「最初に試した に合わせて を決め、以後動かさない」(§4.1)。 は を振っても学習率を再調整せずに済ませるための仕掛けなので、両方同時に動かすと利点を捨てることになります。
- 学習率はフル FT と同じ値を使わない。 付録D.4 の GPT-3 設定では、フル FT が 5.00E-06 に対し LoRA は 2.00E-04 と2桁近く違います(AdamW、2エポック、バッチ128、weight decay 0.1)。
- アダプタとの比較はバッチサイズと系列長を明記して行う。 表1のとおり、レイテンシ差はバッチ32・系列長512ではほぼ無視でき、バッチ1・系列長128では30%級になります。「アダプタは遅い」は条件付きの主張です。
- 初期化を崩さない。 学習開始時にモデルが元モデルと一致する性質は、この初期化から来ています(§4.1)。
- prefix 系との併用は一律に効くわけではない。 付録E では LoRA+PrefixEmbed が WikiSQL で LoRA 単独と prefix-embedding tuning の両方を上回った一方、MultiNLI では LoRA 単独を超えず、LoRA+PrefixLayer はパラメータが増えても LoRA 単独よりわずかに悪いと報告されています。
まとめ
- LoRA は「凍結した に低ランク差分 を足す」だけの手法で、マージにより推論レイテンシが増えないことが構成上保証される(§4.1)。
- 低ランクで足りる根拠は2段構え。仮説としての「適応の内在ランクは低い」(§1)と、実測としての「 は に既にあるが強調されていない方向を約21倍に増幅している」(§7.3、表7)。
- 未検証領域も明確です。MLP 層への適用、バッチ内マルチタスク、適用行列選択の原理的な方法(§4.2、§8)。
原論文: Hu et al., "LoRA: Low-Rank Adaptation of Large Language Models" (arXiv:2106.09685, 2021 / v2)
コメント
コメントにはログインが必要です