※ このページは「MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning」の要約になります。
このページでわかること
- LoRAは低ランク更新によりモデルの学習能力が制限される
- MoRAは正方行列を用いた高ランク更新により、同じパラメータ数で性能を向上させる
- 特にメモリ集約型タスクにおいてMoRAがLoRAを上回る
対象読者
- LLM の効率的なファインチューニング方法に関心がある人
- パラメータ効率の良い手法を用いてAIモデルを実際にトレーニング・デプロイする必要がある人
LoRA の問題点
- 学習能力の制限:LoRAの低ランク更新は、新しい知識を効果的に学習し記憶する能力を制限し、特にメモリ集約型のタスク(例えば、継続的な Pre-Training)で性能が低下する
- フルランク更新との性能差:LoRAはフルランク更新に比べて、一部のタスクでの性能が劣る
- 非効率なパラメータ利用:低ランク更新は限られたランクでパラメータを更新するため、モデルの容量を最大限に活用できないことがある
MoRA
MoRA とは?
MoRAは、LLM のファインチューニングにおいて、低ランク行列を使用するLoRAの制約を克服するために提案された新しい手法です。MoRAは、正方行列を使用して高ランクのパラメータ更新を行い、同じ数のトレーニング可能なパラメータでより高い性能を実現します。
MoRA のメリット
- 高ランク更新による性能向上:MoRAは高ランク行列を使用することで、モデルが新しい知識を効果的に学習し、記憶する能力が向上する
- メモリ集約型タスクでの優位性:特に継続的なプレトレーニングや記憶が必要なタスクにおいて、LoRAよりも優れた性能を発揮
- パラメータ効率の維持:同じ数のトレーニング可能なパラメータを維持しつつ、性能を向上させるため、実用的で効率的なファインチューニングが可能
MoRA の手順
- 正方行列の導入:MoRAは、低ランク行列の代わりに正方行列を使用してパラメータ更新を行う
- 非パラメータ演算子の使用:入力次元を減少させ、出力次元を増加させる非パラメータ演算子を導入。これにより、正方行列を使用してもパラメータ数を増やさずに高ランク更新を実現する
- 行列のマージ:トレーニング後、正方行列を元のモデルのパラメータにマージすることで、追加の計算コストを発生させずにモデルをデプロイできる
MoRA の性能
MoRAは、以下のようなタスクで評価され、優れた性能を示しています:
- 指示チューニング:指示に基づいたモデルのチューニングタスクでLoRAと同等の性能を発揮
- 数学的推論:複雑な数学的推論タスクにおいて、LoRAと比較して優れた性能
- 継続的なプレトレーニング:生物医学や金融分野など、ドメイン固有の知識を強化するタスクにおいて、LoRAを上回る性能を発揮
- メモリタスク:新しい知識を効果的に記憶する能力がLoRAよりも優れており、メモリ集約型タスクにおいて顕著な改善
まとめ
以上がMoRAの要約でした。立ち位置としてはLoRAの亜種のような技術ですね。
性能は良くなるとのことですが、LoRAに比べてメモリ消費量が多くなるように感じており、完全な上位互換ではないと思っています。
LoRAは実際に使ってみると、Full-Paramter Fine-Tuning (FPFT) したときに比べ、性能が上がらなかったりするので、FPFT よりもメモリ消費量を抑えつつ、LoRA よりも性能は上という中間的な技術なのかと思っています。
使いどころがあれば使ってみたいですね。
おわり。