diff options
| author | YurenHao0426 <Blackhao0426@gmail.com> | 2026-04-05 16:20:20 -0500 |
|---|---|---|
| committer | YurenHao0426 <Blackhao0426@gmail.com> | 2026-04-05 16:20:20 -0500 |
| commit | 6139a848c3b9d5d6c1322cf8acadf2baacee9e8a (patch) | |
| tree | dbfb02f4682d31881148c12246329049cd9f2d60 /baselines | |
| parent | ea4a8f837e81b5e5fab6086cb3014c711c5e58e9 (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.py | 30 |
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.""" |
