※ このページは「LORA: Low-Rank Adaptation of Large Language Models」の要約になります。
このページでわかること
- 巨大な事前学習済みモデルを効率的に適応させるために、重みを固定し低ランク行列を注入するLoRA(Low-Rank Adaptation)手法を提案
- LoRAは学習パラメータを大幅に削減し、GPUメモリの使用量を減らしつつ、モデル品質を維持または向上させる
- 実験により、GPT-3やRoBERTaなどでの優れたパフォーマンスが確認された
対象読者
- 大規模な言語モデルの効率的な適応手法に関心があり、新しいアプローチや技術を理解し、研究や開発に活用したいと考えるエンジニアや研究者
ファインチューニングの問題点
-
大規模モデルの完全なファインチューニングの非効率性:GPT-3のような巨大な事前学習済み言語モデルを特定のタスクに完全にファインチューニングする際の計算リソースおよびメモリのコストが非常に高い
-
適応手法のトレードオフ:現存する適応手法は、多くの場合、推論時の遅延を引き起こすか、利用可能なシーケンス長を減少させることで、モデルの品質と効率の間にトレードオフを生じる
-
効率的な適応方法の欠如:巨大な言語モデルを効率的に適応させつつ、モデル品質を維持または向上させる方法が不足している
LoRA
LoRA とは?
LoRA(Low-Rank Adaptation)は、巨大な事前学習済みモデルの全てのパラメータを再学習することなく、特定のタスクに適応させるための効率的な手法です。LoRAは事前学習済みのモデルの重みを固定し、トランスフォーマーアーキテクチャの各層に低ランク行列(ランク分解行列)を注入して、学習可能なパラメータの数を大幅に減らします。
LoRA のメリット
-
計算リソースの節約:
- 学習パラメータの数を10,000倍減らし、GPUメモリの必要量を3倍減らすことができる
-
モデル品質の維持・向上:
- LoRAは、GPT-3やRoBERTaなどのモデルで完全なファインチューニングと同等またはそれ以上のパフォーマンスを示している
-
追加の推論遅延なし:
- LoRAはアダプターと異なり、追加の推論遅延を発生させない
-
タスク間の迅速な切り替え:
- 共有モデルを凍結し、タスクごとに小さなLoRAモジュールを入れ替えるだけで済むため、運用効率が向上する
LoRA の手順
-
事前学習済みモデルの重みを固定:
- 事前学習済みの重み行列 (W) を凍結し、これを更新しないようにする
-
低ランク行列の注入:
- 各層の重み行列の更新を低ランク行列 (A) と (B) の積 (BA) で表現する
- (B) は (d \times r) 行列、(A) は (r \times k) 行列で、(r) は低ランクの次元
-
トレーニング:
- 学習中は、凍結された重み行列 (W) に対して低ランク行列 (A) と (B) のみを学習する
- 学習可能なパラメータは (A) と (B) のみであり、元のモデルの重みは変更されない
-
適応と推論:
- 推論時には、学習された低ランク行列 (A) と (B) を元の重み行列に加算することで、新しい重み行列 (W + BA) を得る
- これにより、推論遅延を増加させることなく、モデルを適応させることができる
LoRA の性能
-
パフォーマンス:
- 実験により、LoRAはRoBERTa、DeBERTa、GPT-2、GPT-3などのモデルで、完全なファインチューニングと同等またはそれ以上のパフォーマンスを示した
-
ベンチマーク:
- GLUEベンチマークでは、LoRAはRoBERTaやDeBERTaで優れたパフォーマンスを発揮
- GPT-3では、WikiSQLやMultiNLI、SAMSumなどのタスクで完全なファインチューニングと同等以上の結果を示した
-
効率性:
- 学習パラメータを大幅に削減し、GPUメモリの使用量を大幅に減らすことで、計算リソースの効率性を向上させた
まとめ
以上が LoRA の要約でした。LoRA は現在では有名な手法ですが、具体的に何をやっているかを知らない方は簡単にでも知っておくとよさそうですね。
おわり。