summaryrefslogtreecommitdiff
path: root/baselines
diff options
context:
space:
mode:
authorYurenHao0426 <Blackhao0426@gmail.com>2026-04-05 16:20:20 -0500
committerYurenHao0426 <Blackhao0426@gmail.com>2026-04-05 16:20:20 -0500
commit6139a848c3b9d5d6c1322cf8acadf2baacee9e8a (patch)
treedbfb02f4682d31881148c12246329049cd9f2d60 /baselines
parentea4a8f837e81b5e5fab6086cb3014c711c5e58e9 (diff)
Add Prompt Tuning and Prefix Tuning baselines
- peft_baseline.py: Add PromptTuningConfig (L=5,10,20) and PrefixTuningConfig (L=5,10) - run_all_methods.py: Add 5 new methods to dispatch (prompt_tuning_5/10/20, prefix_tuning_5/10) with per-method directory output structure Prompt Tuning: params = L * H (e.g. 10*1536 = 15360 params = 30KB) Prefix Tuning: params = L * num_layers * 2 * H (much larger) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'baselines')
-rw-r--r--baselines/peft_baseline.py30
1 files changed, 28 insertions, 2 deletions
diff --git a/baselines/peft_baseline.py b/baselines/peft_baseline.py
index 442ba60..246385f 100644
--- a/baselines/peft_baseline.py
+++ b/baselines/peft_baseline.py
@@ -1,4 +1,4 @@
-"""PEFT baselines: LoRA, Tiny LoRA, and VeRA.
+"""PEFT baselines: LoRA, Tiny LoRA, VeRA, Prompt Tuning, Prefix Tuning.
Per-user adaptation on K support examples, then standard generation.
Uses a class-based API to avoid repeated model wrapping/unwrapping.
@@ -11,7 +11,10 @@ Usage:
"""
import torch
-from peft import LoraConfig, VeraConfig, get_peft_model, TaskType
+from peft import (
+ LoraConfig, VeraConfig, PromptTuningConfig, PrefixTuningConfig,
+ get_peft_model, TaskType, PromptTuningInit,
+)
TARGET_MODULES = ["q_proj", "v_proj"]
@@ -43,6 +46,21 @@ def _make_vera_config(rank, target_modules=None):
)
+def _make_prompt_tuning_config(num_virtual_tokens):
+ return PromptTuningConfig(
+ task_type=TaskType.CAUSAL_LM,
+ num_virtual_tokens=num_virtual_tokens,
+ prompt_tuning_init=PromptTuningInit.RANDOM,
+ )
+
+
+def _make_prefix_tuning_config(num_virtual_tokens):
+ return PrefixTuningConfig(
+ task_type=TaskType.CAUSAL_LM,
+ num_virtual_tokens=num_virtual_tokens,
+ )
+
+
def get_lora_config(rank=8):
return _make_lora_config(rank=rank)
@@ -55,6 +73,14 @@ def get_vera_config(rank=256):
return _make_vera_config(rank=rank)
+def get_prompt_tuning_config(num_tokens=10):
+ return _make_prompt_tuning_config(num_virtual_tokens=num_tokens)
+
+
+def get_prefix_tuning_config(num_tokens=10):
+ return _make_prefix_tuning_config(num_virtual_tokens=num_tokens)
+
+
class PEFTBaseline:
"""Manages a PEFT-wrapped model for repeated per-user adaptation."""