コンテンツにスキップ

【比較】ファインチューニング・LoRA・プロンプトチューニングの違い

概要

LLM を自社タスクに適応させる「学習による調整」には、いくつものやり方があります。本記事が比べるのは、フルファインチューニング(full fine-tuning)・LoRA・プロンプトチューニング(prompt tuning) の 3 つで、いずれも「モデルをタスクに合わせる」点は同じですが、何を学習し、何を保存し、推論時にどう配るかがまるで違います。フルファインチューニングはモデルの全重みを更新し、タスクごとにモデル丸ごとのコピーを作ります。LoRA は元の重みを凍結したまま小さな低ランク行列だけを学習し、プロンプトチューニングはモデルを凍結したまま入力側の「ソフトプロンプト(学習可能な埋め込み)」だけを学習します。

この記事は「RAGとファインチューニングの違い」とは比較軸が別です。あちらは「知識をモデルの外(検索=RAG)に置くか、重みに焼き込む(ファインチューニング)か」という RAG 対 ファインチューニング の軸。本記事は ファインチューニングという行為の中身 を、全重み更新(フル)/低ランクアダプタ(LoRA)/ソフトプロンプトのみ(プロンプトチューニング)という 3 通りの実装で比べます。LoRA とプロンプトチューニングは、ベースを凍結し少数パラメータだけを学習する PEFT(Parameter-Efficient Fine-Tuning:パラメータ効率の良いファインチューニング) に属します。

例えるなら:完成済みの楽器をどう調整するか

  • フルファインチューニング … 楽器そのものを職人が全体的に作り直す。狙いどおりに鳴るが、用途ごとに楽器一式を新調するのでコストと保管場所が大きい。
  • LoRA … 本体は触らず、着脱式の小さなアタッチメントを足して音色を変える。アタッチメントだけ保管・差し替えでき、最後に本体へ統合(マージ)もできる。
  • プロンプトチューニング … 楽器も奏法も変えず、毎回頭に付ける「短い前奏フレーズ」だけを最適化して曲調を誘導する。覚えさせるのはその前奏(数個の“仮想トークン”)だけ。

詳細比較

比較軸 フルファインチューニング LoRA プロンプトチューニング
学習対象 モデルの全重みを更新 注入した低ランク行列のみ(ベース凍結) 入力に足すソフトプロンプト埋め込みのみ(ベース凍結)
分類 従来型フルチューニング PEFT(アダプタ系) PEFT(ソフトプロンプト系)
学習パラメータ量 100%(全パラメータ) ごく少数(LoRA 原論文:GPT-3 175B で約 1/10000) 最小(プロンプト分の埋め込みだけ)
成果物の保存 タスクごとにモデル丸ごとのコピー 小さなアダプタ重みのみ(差し替え可) 小さなプロンプトパラメータのみ
推論時の配り方 タスク別の重い別モデルをロード ベース+アダプタ。LoRA はマージで追加遅延なしにできる 凍結ベースを共有し、プロンプトだけ差し替え
表現力(適応の幅) 最も広い(全パラメータが動く) 広い(多くのタスクでフル相当の品質) スケール依存(大モデルでフルに近づく)
主なコスト 計算・GPUメモリ・保存が最大 学習・保存コストを大幅削減 最も軽量だが小モデルでは差が出やすい
原典・定義 古典的な転移学習の追加学習 Hu ら, 2021(低ランク分解行列を各層に注入) Lester ら, 2021(ソフトプロンプトのみ学習)

LoRA 原論文は GPT-3 175B で「学習パラメータを約 1 万分の 1、GPU メモリ要件を約 3 分の 1」に削減でき、フルファインチューニング同等以上の品質で「追加の推論遅延なし」と報告。プロンプトチューニング原論文は「モデルが大きくなるほどフルチューニングとの差が縮まる」と報告。

よくある誤解

  • 誤解1:「LoRA は元のモデルの重みを書き換えている」 — 書き換えません。LoRA 原論文(Hu ら, 2021)は「事前学習済みの重みを凍結し、各 Transformer 層に学習可能な低ランク分解行列を注入する」と定義しています。学習されるのは追加した小さな行列だけで、ベース重みは不変。だからアダプタを差し替えるだけで複数タスクに使い回せ、必要なら最後に元の重みへマージして「追加の推論遅延なし」にもできます。
  • 誤解2:「プロンプトチューニングは、いわゆるプロンプトエンジニアリング(指示文の工夫)の言い換え」 — 別物です。人手で言葉を練る離散的な指示文(ハードプロンプト)に対し、プロンプトチューニングは勾配で最適化される連続値の埋め込み(ソフトプロンプト)を学習します。Hugging Face PEFT も「ソフトプロンプトは入力埋め込みに連結される学習可能テンソルで、人間には読めない“仮想トークン”」と説明しています。指示文を書く作業ではなく、れっきとした学習手法です。
  • 誤解3:「PEFT(LoRA・プロンプトチューニング)はフルファインチューニングの劣化版で、品質は必ず落ちる」 — 一概に劣りません。Hugging Face PEFT は「ごく少数の追加パラメータだけを学習し、フルファインチューニング相当の性能を出しつつ計算・保存コストを大幅に下げる」と説明。LoRA 原論文も多くのベンチでフル同等以上、プロンプトチューニング原論文も「モデル規模が billions を超えるとフルチューニングに匹敵」と報告しています(小モデルでは差が出やすい点は誤解5参照)。
  • 誤解4:「プロンプトチューニング=プレフィックスチューニングと同じもの」 — 近縁ですが同一ではありません。Hugging Face PEFT によれば、プロンプトチューニングはソフトプロンプトを入力埋め込みだけに足すのに対し、プレフィックスチューニングは全層にプレフィックスを挿入します。どちらもベース凍結のソフトプロンプト系 PEFT ですが、挿入箇所と挙動が異なります。
  • 誤解5:「プロンプトチューニングはいつでもフルファインチューニングに匹敵する」 — 規模依存です。Lester ら(2021)の主眼はまさに “the power of scale” で、モデルが大きくなるほどフルチューニングとの差が縮まり匹敵する一方、小規模モデルでは差が残りやすいと報告しています。「常に互角」ではありません。

実務での選び分け

  • GPU・保存が潤沢で、最大の適応幅が要る/基盤モデルを深く作り替えたい → フルファインチューニング。タスクごとにモデル丸ごとを持つコストを許容できる場合。
  • 限られた GPU で多数タスクを回す/アダプタを差し替えて運用したい → LoRA。学習・保存コストを大きく削減でき、マージすれば推論遅延も増やさない。多くのタスクでフル相当品質。
  • 極限まで軽く、1 つの凍結ベースを複数タスクで共有したい → プロンプトチューニング。保存はプロンプトのみ。ただし小モデルでは品質差が出やすいので大きめのベースで。
  • 「RAG にすべきか学習すべきか」で迷っている → それは本記事の軸ではなく RAGとファインチューニングの違い の軸。まず「外部知識(RAG)か振る舞い(学習)か」を切り分け、学習が必要と決まってから本記事の 3 方式(フル/LoRA/プロンプトチューニング)を選ぶ。
  • 切り分け → 「品質が頭打ち=適応幅不足ならフルや LoRA を検討」「保存・配布が重い=PEFT 化」「小モデルでプロンプトチューニングが弱い=規模を上げるか LoRA へ」。

ひとことまとめ

フルファインチューニングは「全重みを更新(最も自由だが最も重い・タスクごとに丸ごとコピー)」、LoRA は「ベースを凍結し低ランクアダプタだけ学習(軽量・差し替え可・マージで追加遅延なし)」、プロンプトチューニングは「ベースを凍結しソフトプロンプトだけ学習(最小・規模が大きいほどフルに匹敵)」。LoRA とプロンプトチューニングは PEFT。「RAG か学習か」は別軸(RAGとファインチューニングの違い)で、本記事は学習方式そのものの 3 択です。

出典・参考

  • Hu, Shen, Wallis, Allen-Zhu, Li, Wang, Wang, Chen「LoRA: Low-Rank Adaptation of Large Language Models」(2021)(事前学習済み重みを凍結し各 Transformer 層へ学習可能な低ランク分解行列を注入。GPT-3 175B で学習パラメータ約 1/10000・GPU メモリ約 1/3、フル同等以上で追加の推論遅延なし): https://arxiv.org/abs/2106.09685
  • Lester, Al-Rfou, Constant「The Power of Scale for Parameter-Efficient Prompt Tuning」(2021, EMNLP)(凍結モデルに対しソフトプロンプト=連続値の学習可能埋め込みのみを学習。規模が大きいほどフルチューニングに匹敵): https://arxiv.org/abs/2104.08691
  • Hugging Face PEFT「Index」(PEFT=全パラメータを学習せず少数の追加パラメータのみを学習し、フルファインチューニング相当の性能で計算・保存コストを大幅削減。LoRA・ソフトプロンプト系を提供): https://huggingface.co/docs/peft/en/index
  • Hugging Face PEFT「Soft prompts」(ハードプロンプト=離散の手書き指示文、ソフトプロンプト=入力埋め込みに連結する学習可能テンソル。プロンプトチューニングは入力埋め込みのみ、プレフィックスチューニングは全層に挿入): https://huggingface.co/docs/peft/en/conceptual_guides/prompting