AI・機械学習
上級

P-Tuning v2(ピーチューニング ブイツー)

Tsinghua 大学が提案した Prefix Tuning の改良版。各 Transformer 層の入力に学習可能な連続トークンを挿入し、分類タスクでもフルファインチューニングに匹敵する性能を実現。特に中規模モデル(330M〜10B)での性能改善が顕著。

0 回閲覧
0 いいね

P-Tuning v2(ピーチューニング v2)とは

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 層に学習可能な連続トークンを挿入しつつ、タスク固有の最適化を加えている。

概要と v1 からの進化

P-Tuning v1 の課題

P-Tuning v1(2021 年)は LSTM/MLP ベースのプロンプトエンコーダーを使い、入力 embedding 層のみに連続プロンプトを挿入する手法だった。GPT-3 の Few-shot で有効性を示したが、以下の課題があった:

  • 小〜中規模モデルで性能が不安定:1B 未満のモデルではフルファインチューニングに大きく劣後
  • NLU タスクで弱い:生成タスク向きだが、分類・抽出タスクでの性能が不十分
  • embedding 層のみの介入:深い層での表現制御ができない

P-Tuning v2 の改善点

改善点v1v2
介入層embedding 層のみ全 Transformer 層
対応タスク主に NLGNLU + NLG 両方
最小有効モデルサイズ10B+330M+
分類タスク性能フル FT の 80〜90%フル FT の 95〜100%
固定情報量少ない層ごとに独立な情報量

技術的特徴

Deep Prompt Tuning

P-Tuning v2 の核心は「Deep Prompt Tuning」である。各 Transformer 層の入力に独立した Prefix トークンを追加する。

  • 浅い層の Prefix:構文的・表層的なタスク適応を担当
  • 深い層の Prefix:意味的・タスク固有の表現を制御
  • 層ごとの独立性:各層の Prefix は独立に学習され、異なる役割を獲得

タスク固有の最適化

  • 分類タスク:CLS トークンの代わりに Prefix の最終ベクトルを分類ヘッドに入力
  • Token Classification(NER、POS):各トークン位置の表現を直接利用
  • QA タスク:Start/End スパン予測に Prefix 情報を活用

ベンチマーク結果

タスクモデルFull FTP-Tuning v2差分
SuperGLUERoBERTa-Large (355M)84.784.3-0.4
SQuAD 2.0DeBERTa-XL (900M)88.488.1-0.3
NER (CoNLL)BERT-Large (340M)92.491.8-0.6
SRLRoBERTa-Large (355M)86.285.9-0.3
NER (OntoNotes)GPT-2 Medium (355M)90.189.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)

学習のコツ

  • Prefix 長:NLU タスクでは 20〜40、NLG では 40〜100 が推奨
  • 学習率:5e-3〜1e-2(通常のファインチューニングの 100〜1000 倍)
  • reparameterization:小規模モデルでは MLP 経由が安定。大規模モデルでは直接最適化でも可
  • Dropout:Prefix ベクトルに 0.1 の Dropout を適用すると汎化性能が向上

Prompt Tuning / Prefix Tuning / P-Tuning v2 の関係

  • Prompt Tuning:embedding 層のみ。最軽量だが小規模モデルで弱い
  • Prefix Tuning:全層 KV に Prefix。NLG に強いが NLU は未検証
  • P-Tuning v2:全層入力に Prefix + NLU タスク最適化。最もバランスが良い

3 手法は連続的な発展関係にあり、P-Tuning v2 が最も汎用的。

よくある質問(FAQ)

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 より高い点で優位。両者を併用する研究も進んでいる。

まとめ

  • P-Tuning v2 は全 Transformer 層への Deep Prompt 挿入で NLU/NLG 両方に対応
  • 330M クラスの中規模モデルでもフルファインチューニング同等の性能
  • Hugging Face PEFT で PrefixTuningConfig として簡単に利用可能
  • LoRA と並ぶ実用的な PEFT 手法として 2026 年も活用されている