※ このページは「DELTA-LORA: FINE-TUNING HIGH-RANK PARAMETERS WITH THE DELTA OF LOW-RANK MATRICES」の要約になります。
このページでわかること
- Delta-LoRAは、低ランク行列の積の差を用いて事前学習された重みを更新することで、モデルの性能を向上させる新しい微調整手法
- この方法は、追加のメモリオーバーヘッドなしで、より優れた表現学習が可能
- 実験結果は、さまざまなモデルとデータセットで一貫した性能向上を示した
対象読者
- 特に大規模言語モデル(LLM)の微調整に関心があり、効率的なパラメータ更新手法を探求している人
- 大規模なNLPタスクに取り組んでおり、モデルの性能を向上させつつメモリコストを抑えたいと考えている人
従来手法の問題点
-
大規模言語モデルの微調整の難しさ:大規模言語モデル(LLM)の全パラメータを微調整するには、多くのGPUメモリと計算リソースが必要であり、多くの企業や研究機関にとって実現が難しいという問題がある
-
既存の低ランク適応方法の制約:LoRAやその他の低ランク適応方法(例:AdaLoRA)は、一部のパラメータのみを更新するため、学習される表現が不十分であり、フルファインチューニングに比べて性能が劣るという制約がある
-
メモリオーバーヘッドの増加:フルファインチューニングでは、AdamWのようなオプティマイザが複数のパラメータコピーを保持するため、メモリのオーバーヘッドが大きくなり、リソースが限られた環境では対応が難しいという問題がある
Delta-LoRA
Delta-LoRA とは?
Delta-LoRAは、LLMの微調整を効率化するための新しい手法です。従来のLoRA(Low-Rank Adaptation)と異なり、
- 事前学習された重み行列($W$)と2つの低ランク適応行列($A$および$B$)を同時に更新し、増分更新$(A^{(t+1)}B^{(t+1)} - A^{(t)}B^{(t)})$を利用して事前学習された重み($W$)を精緻化する
- 従来のLoRAモジュールに統合されていたドロップアウト層はDelta-LoRAでは除外されている
この手法により、パラメータ効率を高めながらモデルの性能を向上させます。
Delta-LoRA のメリット
- メモリ効率の向上:Delta-LoRAは、事前学習された重みWを直接更新せずに、その差分(デルタ)を利用するため、追加のメモリオーバーヘッドを発生させない
- 性能の向上:より多くのパラメータを学習に含めることで、モデルの表現力が向上し、様々なタスクにおいて優れた性能を発揮する
- 勾配計算の簡略化:Wの勾配を計算して保存する必要がないため、メモリと計算資源の節約が可能
Delta-LoRA の手順
- 初期化:低ランク行列AをKaiming初期化し、Bをゼロ行列で初期化する。Wは事前学習された重みで初期化される
- ミニバッチのサンプリングと勾配計算:各ミニバッチごとに、Delta-LoRAモジュール内のAとBの勾配を計算する
- 低ランク行列の更新:AdamWオプティマイザを用いて、正規化された勾配を用いてAとBを更新する
- 事前学習された重みの更新:指定されたステップ数(K)を経過した後、AとBの積の差分(△AB)を用いてWを更新します。この更新は、学習率とアップデート比率(λ)に基づいて行われる
Delta-LoRA の性能
Delta-LoRAは、RoBERTa、GPT-2、BARTといった異なるモデルおよびGLUEベンチマークやE2E NLGチャレンジなどの様々なデータセットで評価され、既存の低ランク適応方法(LoRA、AdaLoRAなど)と比較して一貫して優れた性能を示しています。具体的には、以下のような結果が得られています:
- E2E NLGチャレンジ:BLEUスコア、NIST、METEOR、ROUGE-L、CIDErの全ての指標で最良の結果を達成
- WebNLGチャレンジ2017:BLEUスコア、METEOR、TERの全ての指標で最良の結果を達成
- GLUEベンチマーク:全8タスクで既存の方法よりも優れた性能を示す
まとめ
以上が Delta-LoRA の要約でした。増分更新という LoRA の中でもちょっと特殊なことをしていますね。$W$ も更新が入るので、結果として他の LoRA 手法よりも性能が改善するということだと理解しています。
問題点でもあげていますが、LoRA は Full-Parameter Fine-Tuning よりも更新するパラメータが少ない分性能が低い傾向にあるので、更新できるポイントが増えるとその分性能も上がるということだと思います。その分、過学習しそうですが。
このあたりは実際に使ってみないとわからないですね。あとは、LoRA に比べて $W$ 更新分の時間的なオーバーヘッドも気になりますね。
おわり。