LoRA(Low-Rank Adaptationの略)は、事前学習済みのニューラルネットワークを新しいタスクに適応させるファインチューニング手法であり、元の重みを凍結し、低ランク行列の形で少数の学習可能なパラメータを注入する。追加される行列は、変更対象の完全な重み行列と比較して極めて小さいため、LoRAは数十億パラメータ規模のモデルを、全パラメータのごく一部(1%未満)だけを学習・保存しながら適応させることができ、消費者向けハードウェアでのファインチューニングを実現可能にする。
歴史
LoRAは、2021年6月にMicrosoftのEdward Hu氏らによる論文で発表された。彼らは、事前学習済みモデルを新しいタスクに特化させるために必要な重み更新が低い「本質的ランク」を持つ傾向があること、つまり、はるかに小さな2つの行列の積でよく近似できることを観察した。LoRAは、完全な重み行列を直接更新する代わりに、凍結された元の重みに積が加算される2つの低ランク行列を学習し、推論時にはその更新を元に統合して追加の遅延を発生させない。この手法は当初、GPT-3などの大規模言語モデルで実証され、2023年の拡張版であるQLoRAは、凍結されたベースモデルの4ビット量子化と組み合わせることで、非常に大規模なモデルのファインチューニングに必要なメモリを劇的に削減した。
方法
形式的には、事前学習済みの重み行列に対して、LoRAは更新を低ランクのダウンプロジェクション行列とアッププロジェクション行列の積として表現し、スケーリング係数で調整し、通常は学習開始時にアダプタが何も寄与しないように初期化する。最適化されるのはこれら2つの小さな行列のみであり、元の重みは固定されたままであるため、ベースモデルの広範な能力が破壊的忘却から保護される。複数のLoRAアダプタは、異なるタスクやスタイルのために独立に学習でき、推論時に同じベースモデルに差し替えたり、組み合わせたりすることができ、基盤となるネットワークを再学習する必要はない。
応用
大規模言語モデルの展開において、LoRAはタスク特化型またはドメイン特化型のアシスタントを低コストで構築する標準的な手法であり、Llamaなどのモデルを中心としたオープンなファインチューニングエコシステムの多くを支えている。Stable Diffusionのリリース後、画像生成コミュニティでも同様に中心的な役割を果たすようになり、ユーザーは200メガバイト未満の小さなLoRAファイルを学習して、ベースモデルに特定のキャラクター、アートスタイル、または主題を少数のサンプル画像から教え込み、コミュニティのモデルハブで共有し、複数を同時に強度を調整して組み合わせることができる。このボトムアップ型のカスタマイズ文化は、オープンなプロンプトとベースチェックポイントの上に軽量なLoRAファイルを重ねる形で構築されており、初期のMidjourneyのような閉鎖的で適応不可能なシステムと比較して、Stable Diffusionのコミュニティ成長の重要な推進力となった。
制限
LoRAの低ランク仮定は、モデルの表現に大幅な変更を必要とするタスクでは完全なファインチューニングに劣る可能性があり、ランク、適応する重み行列のサブセット、スケーリング係数の選択には無視できない調整が必要となる。既存の表現を変更するだけで、大規模な新しい知識を追加するわけではないため、LoRAは一般的に、モデルに大量の新しい事実内容を教えることよりも、スタイル、形式、行動の適応に適しており、そのギャップはしばしば検索拡張生成や完全な事前学習の継続によって埋められる。