論文解説 LoRA: Low-Rank Adaptation of Large Language Models — なぜ低ランクで足りるのか
LoRA原論文(Hu et al., 2021)を本文だけを根拠に読み直す。BAという式の意味、論文が実測した「増幅率21倍」、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を支える線形代数にまとめてあります。
コメント
コメントにはログインが必要です