LoRA (Low-Rank Adaptation)
LoRA
ろおら
Definition
LoRA is a parameter-efficient adaptation method that learns only small low-rank matrices instead of updating all model weights. It enables fine-tuning with much less compute and memory.
7Bパラメータのモデルをフルでファインチューニングするには数十GBのGPUメモリが必要で、個人や小規模チームには手が届かない技術でした。この壁を劇的に低くしたのがLoRAです。LoRA(Low-Rank Adaptation)とは、モデルの元のパラメータを固定したまま、小さな追加行列(アダプター)のみを学習させることで効率的にファインチューニングを行う手法です。
低ランク行列という着想
LoRAの核心は、ファインチューニングで変化するパラメータの差分は低ランクの行列で十分に近似できるという発見にあります。元のモデルの重み行列がd×dのサイズだとすると、LoRAはd×rとr×dの2つの小さな行列を追加します。rは「ランク」と呼ばれるハイパーパラメータで、通常8〜64程度に設定します。ランクが大きいほど表現力は増しますが、メモリ使用量も増えます。実務ではr=16前後から試して効果を見るのが定石です。学習パラメータ数は元の1%未満で済みます。
アダプター切り替えの柔軟性
LoRAの実用上の大きな利点は、学習済みアダプターが数十MB程度の小さなファイルとして保存できる点です。1つのベースモデルを共有しながら、用途ごとに異なるアダプターを切り替える運用が可能になります。たとえば同じLlamaモデルに対して、カスタマーサポート用・翻訳用・コード生成用のアダプターを用意し、リクエストに応じて瞬時に切り替えるといった運用ができます。
QLoRAでさらに省メモリ化
LoRAをさらに進化させたQLoRAは、ベースモデルを4ビットに量子化した状態でLoRAアダプターを学習させる手法です。これにより、70Bクラスの大規模モデルでも単一GPUでファインチューニングが可能になりました。フルファインチューニングでは7Bモデルに約56GBのGPUメモリが必要ですが、QLoRAなら消費者向けGPU(RTX 4090の24GB)でも十分対応できます。
ツールとエコシステム
LoRA/QLoRAの実装は、エコシステムの充実により非常に手軽になっています。Hugging FaceのPEFTライブラリはLoRA適用を数行のコードで実現でき、Unslothは学習速度を最大2倍に高速化するツールとして人気です。Axolotlやtrlといったライブラリも広く使われており、オープンソースLLMのカスタマイズが誰でもできる環境が整っています。トランスフォーマーベースのモデルであれば、ほぼすべてにLoRAを適用できます。