Re Reference AI

ファインチューニング vs LoRA

ファインチューニングは事前学習済みモデルを追加学習して特定タスクやドメインへ適応させる手法の総称、LoRAはその実現方法の1つで、元の重みを凍結したまま低ランク行列の差分だけを学習するパラメータ効率的手法(PEFT)。両者は対立する選択肢ではなく、「全パラメータを更新するフルファインチューニング」と「LoRAによる部分的な更新」の比較として捉えるのが実態に近い。

ファインチューニングLoRA

3行で違いを説明

Comparison Table

ItemファインチューニングLoRA
Purpose事前学習済みモデルを特定タスク・ドメインへ適応させる少ない学習パラメータとGPUメモリでファインチューニングを行う
Scope追加学習によるモデル適応の総称(フル更新・PEFTを含む)ファインチューニング手法の1つ(PEFTの代表例)
Originator特定の提案者はない(転移学習の一般的な手法)Microsoftの研究チーム
ReleaseLLM文脈では2018年前後(ULMFiT/BERT)から普及2021年(論文発表)
Open Source実装(Hugging Face Transformers等)はオープンソースのものが多い公式実装・Hugging Face PEFTがオープンソースで公開
Programming LanguagePython(PyTorch/Hugging Face Transformers等)が主流Python(Hugging Face PEFT等)が主流

Architecture

ファインチューニング

事前学習済みモデルの重みを、タスク・ドメイン固有のデータセットで追加学習して更新する。フルファインチューニングでは全パラメータが更新対象になる。

LoRA

元の重み行列を凍結したまま、各層に小さな低ランク行列のペア(A・B)を追加し、その差分のみを学習する。学習後は低ランク行列の積を元の重みに加算してマージでき、推論時の追加遅延は発生しない。

Feature Comparison

FeatureファインチューニングLoRA
更新するパラメータ全パラメータ(フルファインチューニングの場合)追加した低ランク行列のみ
必要なGPUメモリ大きい小さい
用途別アダプタの切り替え—○
推論時の追加遅延なしなし(重みへマージした場合)
量子化との組み合わせ(QLoRA)—○

Advantages

ファインチューニング

  • 全パラメータを更新するため、モデルの振る舞いを大きく変える適応にも対応できる
  • 特定ドメイン(医療・法律など)への特化や文体の統一に使える

LoRA

  • GPT-3(1750億パラメータ)の例では、学習パラメータ数を約1万分の1、GPUメモリ使用量を約3分の1に削減したと報告されている
  • 学習結果が小さなアダプタとして保存され、用途ごとに切り替えて使える
  • QLoRAと組み合わせれば、さらに少ないGPUメモリで大規模モデルを学習できる

Disadvantages

ファインチューニング

LoRA

Best Use Cases

ファインチューニング

十分な計算資源があり、モデルの振る舞いを大きく変える必要がある場合や、ベースモデルそのものを新しいドメイン向けに作り直したい場合。

LoRA

個人や小規模チームが限られたGPU資源でLLMを特定タスクへ適応させる場合や、1つのベースモデルに対して用途別のアダプタを複数運用したい場合。

Migration

フルファインチューニングからLoRAへ切り替える場合、学習データセットはそのまま流用できる。まずLoRAで要件を満たせるか検証し、性能が不足する場合にランクの引き上げや適用層の拡大、フルファインチューニングを検討する進め方が一般的。

FAQ

LoRAとファインチューニングは別物?

別物ではない。LoRAはファインチューニングを効率的に行うための手法の1つであり、比較の対象は「全パラメータを更新するフルファインチューニング」と「LoRAによる部分的な更新」になる。

LoRAで学習したモデルは推論が遅くなる?

学習した低ランク行列の積を元の重みに加算してマージすれば、推論時に追加の遅延は発生しない。マージせずにアダプタとして切り替えて使う運用も可能。

参考文献

関連する比較

RAG vs ファインチューニング

RAGは外部知識を検索してプロンプトに組み込むことでLLMの回答を根拠づける手法、ファインチューニングは追加データでモデル自体の重みを更新する手法。知識の最新化のしやすさと、モデル自体の挙動・文体の変更しやすさという異なる強みを持つ。

RAGファインチューニング