Tech Blog

「プロンプトチューニング」と「ファインチューニング」は何が違うのか

LLM Fine-tuning Prompt-Engineering RAG AI

はじめに:同じ言葉が、二つの別物を指していた

生成AIの世界に足を踏み入れて最初にぶつかったのが、この素朴な疑問でした。

「プロンプトチューニング」と「ファインチューニング」って、結局なにが違うんだ?

調べるほど混乱しました。理由はあとで腑に落ちたのですが、そもそも 「プロンプトチューニング」という言葉自体が、場面によって正反対のものを指していた のです。求人票に並ぶ「プロンプトチューニング」と、論文に出てくる “Prompt Tuning” は、モデルの重みを学習するかどうか という肝心な一点が逆。これに気づかないまま情報を集めると、頭の中でいつまでも線がつながりません。

この記事では、バラバラに見える用語を 「モデルの重みに触るか、触らないか」 という一本の軸の上に並べ直します。結論から言うと、覚えるべきはこの軸だけです。新しいバズワードが流れてきても、置き場所に迷わなくなります。


先に結論:違いの軸は「重みに触るか/触らないか」

LLM の正体は、何十億個もの数値(重み)の集まりです。この数値の値こそが、モデルの「賢さ・クセ・知識」の本体。だから手法の違いは、煎じ詰めると その数値をいじるか・いじらないか に集約されます。

重みに触る?含まれるもの
外から助ける✕ 触らないプロンプトエンジニアリング(口語の「プロンプトチューニング」)/ RAG
中身を作り変える⭕ 触るファインチューニング(フル/LoRA・QLoRA・ソフトプロンプト)

これだけです。あとは枝葉。一枚の図にすると、こうなります。

               LLM = 何十億個の「重み」(数値)
               賢さ・知識の実体はこの数値にある

              ┌────────────────┴────────────────┐
              ▼                                 ▼
       重みに触らない          重みに触る = ファインチューニング
      (外から助ける)                (中身を作り変える)
              │                                 │
        ┌─────┴─────┐               ┌───────────┴───────────┐
        ▼           ▼               ▼                       ▼
   プロンプト      RAG        フルファイン        PEFT(一部だけ学習)
エンジニアリング              チューニング   LoRA / QLoRA / ソフトプロンプト

たとえ話:優秀な新人をどう活かすか

抽象的なので、優秀な新人社員にたとえます。

  • 指示の出し方を工夫する → プロンプトエンジニアリング
  • 資料を渡してから答えさせる → RAG
  • 研修に送って、本人を成長させる → ファインチューニング

ポイントは、新人の頭の中(=重み)を作り変えるのはファインチューニングだけ だということ。プロンプトもRAGも、本人はそのままに、外から手を貸しているにすぎません。どちらが偉いという話ではなく、目的が違うのです。


用語の地雷:「プロンプトチューニング」の二つの意味

混乱の震源地なので、ここだけは表で固定しておきます。

言い方やること重みに触る?正体
プロンプトチューニング(口語)指示文・例示・出力の作り込みと改善プロンプトエンジニアリングと同じ
Prompt Tuning(学術)入力の先頭に付ける「学習可能なベクトル列」だけを訓練⭕(軽量な学習)ファインチューニングの一族(PEFT)

同じ「プロンプトチューニング」でも、現場の口語では“指示文の工夫”論文では“重みを学習する手法”。会話が噛み合わないと感じたとき、原因の多くはこのズレです。気づけば、もう振り回されません。


それぞれの中身(要点だけ)

① プロンプトエンジニアリング(重みは不変)

指示文・Few-shot(例示)を作り込み、出力を検証して直す——その繰り返し。速くて、安くて、捨てやすいのが最大の武器です。反面、毎回プロンプトで説明し続ける必要があり、「いつも同じ振る舞い」を安定して出すのは苦手です。

② RAG(重みは不変)

質問のたびに、外部の文書を検索して文脈として手渡すやり方。強みは知識の鮮度で、最新情報や手元の資料を、学習し直さずに反映できます。ただしモデル自体が賢くなるわけではなく、「何をどう拾うか」という検索の作り込みが品質を決めます。

③ ファインチューニング(重みを学習する)

「入力 → こうあってほしい出力」の例を大量に見せ、重みを少しずつ更新して、振る舞いそのものをモデルに焼き付けます。具体的には「予測(forward)→ どれだけ外したか(損失/loss)→ どの重みをどう動かすか(勾配/backprop)→ 少し更新(update)」をひたすら繰り返す——下の図のループです。

┌──────────────────────┐                ┌──────────────────┐
│ ①予測(forward)     │   予測 ───►    │ ②損失(loss)    │
│ 今の重みで答えを出す │                │ どれだけ外れたか │
└──────────────────────┘                └──────────────────┘
      ▲                                       │
      │ 更新(update)                        │ 勾配(gradient)
      │                                       ▼
┌──────────────────┐                    ┌──────────────────────────┐
│ ④更新(update)  │    ◄─ 重みを微調整 │ ③誤差逆伝播(backprop)  │
│ 重みを少し動かす │                    │ 各重みの動かし方(勾配) │
└──────────────────┘                    └──────────────────────────┘
     データ全体で繰り返す → 損失が下がる → 振る舞いが学習される
  • フルファインチューニング:全部の重みを更新する。表現力は高いが、とても重く、大きなGPUが要ります。
  • PEFT(軽量派):本体は凍結し、小さな追加部分だけを学習する。費用対効果が高く、いま個人で現実的なのはこちら。
    • LoRA / QLoRA:小さなアダプタ行列を足して学習する(QLoRA は本体を4bitに圧縮してさらに省メモリ)。
    • ソフトプロンプト(=学術の Prompt Tuning)/ Prefix・P-Tuning:入力先頭の学習可能ベクトルだけを訓練する。

強みは、決まった形式・口調・分類を、短い指示で安定して・安く出せること。専用の小型モデルを仕立てられます。代わりに、教師データとGPUが要り、世界が変われば学習し直しになります。


いちばん大事なのは「選び方」

道具の名前を覚えることより、課題に対してどれを選ぶかが実力です。

やりたいことまず選ぶなぜ
最新の事実・社内知識を答えさせたい/内容がよく変わるRAG学習せず即反映。鮮度に強い
とりあえず試したい/要件が固まっていないプロンプトエンジニアリング速い・安い・捨てやすい
決まった形式・分類・口調を安定して量産したいファインチューニング(まず LoRA/QLoRA)振る舞いを重みに焼き付ける
巨大モデルを丸ごと作り替えたいフルファインチューニングただし大GPU前提。多くは PEFT で足りる

実務の定石は 「①プロンプト → 足りなければ②RAG → それでも足りなければ③ファインチューニング」。いきなり③へ飛ぶのは、たいてい遠回りです。


補足:③は「コード」より「環境」でつまずく

最後に一つだけ、実体験から。③のファインチューニングで難しいのは、アルゴリズムよりも環境構築でした。手順は公式に載っていても、いざ自分のマシンで走らせると、ライブラリの世代の食い違い、文字コード、GPUの世代差といった足元の壁が次々に現れます。コードはコピーできても、「どこで詰まり、なぜそう直したか」という判断はコピーできません。価値は、いつもそこに残ります。

この“やってみた”側——Turing世代のGPU(RTX 2070)1台で、ローカルのままファインチューニングに挑んだ、つまずきの全記録——は、別記事にまとめています。

🔗 実践編: Turing世代のGPU「RTX 2070」1台で、ローカルQLoRAファインチューニングに挑む(進行中)


まとめ(一枚で)

  • 違いの軸はただ一つ。重みに触るか/触らないか
  • 触らない … プロンプトエンジニアリング(口語の「プロンプトチューニング」)/RAG。
  • 触る … ファインチューニング(フル/PEFT:LoRA・QLoRA・ソフトプロンプト)。
  • 「プロンプトチューニング」は 口語と学術で別物。会話が噛み合わない原因の筆頭。
  • そして——名前を覚えることより、「この課題ならどれを選ぶか」を判断できることが、いちばんの実力です。

参考(用語の出どころ)

  • ソフトプロンプト系の Prompt Tuning(Lester et al., 2021)/ Prefix Tuning / P-Tuning
  • QLoRA(4bit量子化 + LoRA, Dettmers et al., 2023)

用語集(この記事で使った言葉)

用語意味
プロンプトチューニング(口語/学術の2義)本記事の主題。口語では「プロンプトエンジニアリング」、学術では PEFT の “Prompt Tuning” を指す(中身は別物)
重み (weights)モデル内部の膨大な数値。賢さ・知識の実体
プロンプトエンジニアリング指示文・Few-shot(例示)を作り込み出力を整える(重みは変えない)
Few-shot(例示)プロンプトに正解例をいくつか入れて出力を誘導する手法
RAG質問時に関連文書を検索し、文脈として渡す(重みは変えない)
ファインチューニング例で重みを更新し、振る舞いをモデルに焼き付ける
フルファインチューニングすべての重みを更新する重い方式
PEFT本体を凍結し、一部だけ学習する軽量手法の総称
LoRA / QLoRA小さなアダプタ行列を足して学習する(QLoRA は本体を 4bit 量子化して省メモリ)
ソフトプロンプト(学術の Prompt Tuning)/ Prefix・P-Tuning入力の先頭に付ける学習可能ベクトルだけを訓練する PEFT の一系統
forward(予測)/ loss(損失)/ backprop(誤差逆伝播)/ update(更新)学習ループの4ステップ
勾配 (gradient)各重みをどちらへどれだけ動かせば損失が減るか、を表す量

気軽にメッセージください

ご感想・ご質問があればメッセージをお願いします。