summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYurenHao0426 <Blackhao0426@gmail.com>2026-04-05 17:41:30 -0500
committerYurenHao0426 <Blackhao0426@gmail.com>2026-04-05 17:41:30 -0500
commitab5fae5decb7d24aafd16d855885c1c99e51cf7f (patch)
treefe17a62d77c151f7cd5ba174f76dd766ac6bf1e1
parent6139a848c3b9d5d6c1322cf8acadf2baacee9e8a (diff)
Fix PromptTuning/PrefixTuning cleanup crash and tune learning rates
- peft_baseline.py: Fix cleanup() to handle PromptTuning/PrefixTuning which don't support unload(). Falls back to base_model access. - run_all_methods.py: Reduce lr from 0.3 to 0.01 for PromptTuning, 0.01 to 0.001 for PrefixTuning. Previous lr caused R-L=0.03 (broken). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-rw-r--r--baselines/peft_baseline.py11
-rw-r--r--scripts/run_all_methods.py10
2 files changed, 14 insertions, 7 deletions
diff --git a/baselines/peft_baseline.py b/baselines/peft_baseline.py
index 246385f..af1b71c 100644
--- a/baselines/peft_baseline.py
+++ b/baselines/peft_baseline.py
@@ -214,7 +214,14 @@ class PEFTBaseline:
def cleanup(self):
"""Remove adapter and restore wrapper.model to the original base model."""
- base_model = self.peft_model.unload()
- self.wrapper.model = base_model
+ try:
+ base_model = self.peft_model.unload()
+ self.wrapper.model = base_model
+ except (AttributeError, NotImplementedError):
+ # unload() not supported for PromptTuning/PrefixTuning
+ # Access base model directly
+ self.wrapper.model = self.peft_model.base_model
+ if hasattr(self.wrapper.model, 'model'):
+ self.wrapper.model = self.wrapper.model.model
del self.peft_model
torch.cuda.empty_cache()
diff --git a/scripts/run_all_methods.py b/scripts/run_all_methods.py
index 1502ff3..db31a56 100644
--- a/scripts/run_all_methods.py
+++ b/scripts/run_all_methods.py
@@ -100,11 +100,11 @@ class MethodRunner:
'lora': lambda *a: self._run_peft(*a, config=get_lora_config(rank=8), lr=1e-4, desc='LoRA r=8'),
'tiny_lora': lambda *a: self._run_peft(*a, config=get_tiny_lora_config(rank=1), lr=1e-4, desc='Tiny LoRA r=1'),
'vera': lambda *a: self._run_peft(*a, config=get_vera_config(rank=256), lr=1e-3, desc='VeRA r=256'),
- 'prompt_tuning_5': lambda *a: self._run_peft(*a, config=get_prompt_tuning_config(5), lr=3e-1, desc='PromptTuning L=5'),
- 'prompt_tuning_10': lambda *a: self._run_peft(*a, config=get_prompt_tuning_config(10), lr=3e-1, desc='PromptTuning L=10'),
- 'prompt_tuning_20': lambda *a: self._run_peft(*a, config=get_prompt_tuning_config(20), lr=3e-1, desc='PromptTuning L=20'),
- 'prefix_tuning_5': lambda *a: self._run_peft(*a, config=get_prefix_tuning_config(5), lr=1e-2, desc='PrefixTuning L=5'),
- 'prefix_tuning_10': lambda *a: self._run_peft(*a, config=get_prefix_tuning_config(10), lr=1e-2, desc='PrefixTuning L=10'),
+ 'prompt_tuning_5': lambda *a: self._run_peft(*a, config=get_prompt_tuning_config(5), lr=1e-2, desc='PromptTuning L=5'),
+ 'prompt_tuning_10': lambda *a: self._run_peft(*a, config=get_prompt_tuning_config(10), lr=1e-2, desc='PromptTuning L=10'),
+ 'prompt_tuning_20': lambda *a: self._run_peft(*a, config=get_prompt_tuning_config(20), lr=1e-2, desc='PromptTuning L=20'),
+ 'prefix_tuning_5': lambda *a: self._run_peft(*a, config=get_prefix_tuning_config(5), lr=1e-3, desc='PrefixTuning L=5'),
+ 'prefix_tuning_10': lambda *a: self._run_peft(*a, config=get_prefix_tuning_config(10), lr=1e-3, desc='PrefixTuning L=10'),
}
if method_name not in dispatch: