Tsinghua 大学が提案した Prefix Tuning の改良版。各 Transformer 層の入力に学習可能な連続トークンを挿入し、分類タスクでもフルファインチューニングに匹敵する性能を実現。特に中規模モデル(330M〜10B)での性能改善が顕著。
PC構成ビルダーで最適なパーツを選択
P-Tuning v2 は、Tsinghua 大学の Liu らが 2022 年に発表した論文「P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks」で提案された、Prefix Tuning をベースとした改良型 PEFT 手法である。P-Tuning v1 が主に embedding 層への介入に留まっていたのに対し、v2 は Prefix Tuning と同様に各 Transformer 層に学習可能な連続トークンを挿入しつつ、タスク固有の最適化を加えている。
P-Tuning v1(2021 年)は LSTM/MLP ベースのプロンプトエンコーダーを使い、入力 embedding 層のみに連続プロンプトを挿入する手法だった。GPT-3 の Few-shot で有効性を示したが、以下の課題があった:
| 改善点 | v1 | v2 |
|---|---|---|
| 介入層 | embedding 層のみ | 全 Transformer 層 |
| 対応タスク | 主に NLG | NLU + NLG 両方 |
| 最小有効モデルサイズ | 10B+ | 330M+ |
| 分類タスク性能 | フル FT の 80〜90% | フル FT の 95〜100% |
| 固定情報量 | 少ない | 層ごとに独立な情報量 |
P-Tuning v2 の核心は「Deep Prompt Tuning」である。各 Transformer 層の入力に独立した Prefix トークンを追加する。
| タスク | モデル | Full FT | P-Tuning v2 | 差分 |
|---|---|---|---|---|
| SuperGLUE | RoBERTa-Large (355M) | 84.7 | 84.3 | -0.4 |
| SQuAD 2.0 | DeBERTa-XL (900M) | 88.4 | 88.1 | -0.3 |
| NER (CoNLL) | BERT-Large (340M) | 92.4 | 91.8 | -0.6 |
| SRL | RoBERTa-Large (355M) | 86.2 | 85.9 | -0.3 |
| NER (OntoNotes) | GPT-2 Medium (355M) | 90.1 | 89.5 | -0.6 |
330M〜900M クラスのモデルでもフルファインチューニングとの差がわずか 0.3〜0.6 ポイントという画期的な結果。
Hugging Face PEFT ライブラリで PrefixTuningConfig として利用可能(P-Tuning v2 は実質的に Deep Prefix Tuning と同等のため)。
from peft import PrefixTuningConfig, get_peft_model, TaskType
config = PrefixTuningConfig(
task_type=TaskType.TOKEN_CLS, # NER 等のトークン分類
num_virtual_tokens=20,
prefix_projection=True, # reparameterization 有効化
)
model = get_peft_model(base_model, config)
3 手法は連続的な発展関係にあり、P-Tuning v2 が最も汎用的。
Q1: P-Tuning v2 はどの程度のモデルサイズから有効ですか? A: 330M(BERT-Large/RoBERTa-Large クラス)から有効。Prompt Tuning が 10B 以上を要求するのに対し、大幅に敷居が下がった。
Q2: P-Tuning v1 と v2 はどちらを使うべきですか? A: ほぼ全てのケースで v2 を推奨。v1 は embedding 層のみの介入で性能上限が低く、v2 の上位互換。v1 は歴史的な参照として理解する価値がある。
Q3: LoRA と P-Tuning v2 の使い分けは? A: 2026 年現在、実務では LoRA/QLoRA が主流。P-Tuning v2 はマルチタスク環境でのタスク切替効率が LoRA より高い点で優位。両者を併用する研究も進んでいる。