LoRA(Low-Rank Adaptation)は、モデル全体を学習し直さずに、ファインチューニングをするための手法です。全員を一から採用し直す代わりに、既存のチームへ少人数の専門担当を加えて、特定の業務に対応させる。元のモデルのパラメータには手を付けず、小さな追加部品だけを学習させることで、費用を抑えながら用途に寄せます。
| 通常のファインチューニング | LoRA | |
|---|---|---|
| 学習させる範囲 | モデル全体のパラメータを更新する | 元のパラメータは固定し、小さな行列を追加して学習する |
| 学習の負担 | 必要なメモリと時間が大きくなりやすい | 大幅に抑えられる |
| できあがるもの | 元のモデルとは別の重みを持つモデル | 元のモデルに付け替えられる部品(アダプタ) |
付け替えられる部品になるので、用途ごとに調整したものを複数用意して使い分けられます。元のモデルが持つ汎用的な力を保ったまま、特定の仕事や、社内向けの文体や出力形式に寄せたいときに向いています。GPU の資源が限られていても始めやすいのも利点です。
安く始められるぶん見落としやすいこと
LoRA が下げてくれるのは、学習の費用です。学習データの質を吟味することや、評価の設計が不要になるわけではありません。むしろ気軽に始められるぶん、品質の見極めを省きやすくなります。
学習データの質が低ければ、LoRA でも癖は悪くなります。どこまでパラメータを絞るか(ランク)の設定も、品質に影響します。何をもって改善とするかの評価指標を先に決めておかないと、どれくらいよくなったのかを判断できません。
また、LoRA で変えられる振る舞いの幅には限りがあります。大きく振る舞いを変えたい場合は、通常のファインチューニングが必要になることもあります。