Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c21afbe
multi adapter for training and inference
pacman100 Mar 28, 2023
af252b7
Update peft_model.py
pacman100 Mar 28, 2023
7d7c598
Update peft_model.py
pacman100 Mar 28, 2023
64cae2a
Update lora.py
pacman100 Mar 28, 2023
e9d45da
Update lora.py
pacman100 Mar 28, 2023
8ec7cb8
Update lora.py
pacman100 Mar 28, 2023
090d074
Update lora.py
pacman100 Mar 28, 2023
7c8ee58
Update peft_model.py
pacman100 Mar 28, 2023
002da1b
fix bugs
pacman100 Mar 28, 2023
6e0f124
Merge branch 'main' into smangrul/multi-lora-support
pacman100 Apr 4, 2023
bd80d61
fix 🐛
pacman100 Apr 4, 2023
96ca100
Update lora.py
pacman100 Apr 4, 2023
d4b64c8
fix 🐛
pacman100 Apr 4, 2023
18ccde8
fixing 🐛
pacman100 Apr 4, 2023
122f708
😅. Fix 🐛
pacman100 Apr 4, 2023
d4c2bc6
fix more 🐛
pacman100 Apr 4, 2023
41b2fd7
😅
pacman100 Apr 4, 2023
dbdb8f3
fix more 🐛
pacman100 Apr 4, 2023
6f1f26f
😅
pacman100 Apr 4, 2023
b9433a8
😅
pacman100 Apr 4, 2023
7513195
fix 🐛
pacman100 Apr 4, 2023
44f3e86
Update config.py
pacman100 Apr 4, 2023
405f68f
fix doc failure
pacman100 Apr 5, 2023
7888f69
Merge branch 'main' into smangrul/multi-lora-support
pacman100 Apr 5, 2023
d936aa9
fix tests
pacman100 Apr 5, 2023
37e1f9b
fix test
younesbelkada Apr 5, 2023
75808eb
Merge branch 'main' into smangrul/multi-lora-support
pacman100 Apr 6, 2023
7397160
making adalora compatible with multiple adapters
pacman100 Apr 6, 2023
1a6151b
Merge branch 'main' into smangrul/multi-lora-support
pacman100 Apr 6, 2023
74e2a3d
😅
pacman100 Apr 6, 2023
b728f5f
🐛 fixing
pacman100 Apr 6, 2023
dee2a96
Update adalora.py
pacman100 Apr 6, 2023
b6c7514
😅
pacman100 Apr 6, 2023
07a4b8a
fix 🐛
pacman100 Apr 6, 2023
3aaf482
fix
pacman100 Apr 6, 2023
a591b4b
final fix I guess
pacman100 Apr 6, 2023
3258b70
fix 🐛
pacman100 Apr 6, 2023
d5feb8b
fixing 🐛
pacman100 Apr 6, 2023
e8b0085
fixing adalora saving and loading
pacman100 Apr 6, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions docs/source/package_reference/tuners.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ For finetuning a model with LoRA.

[[autodoc]] tuners.lora.Linear

[[autodoc]] tuners.lora.MergedLinear

## P-tuning

[[autodoc]] tuners.p_tuning.PromptEncoderConfig
Expand Down
76 changes: 4 additions & 72 deletions src/peft/mapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,47 +39,6 @@
"ADALORA": AdaLoraConfig,
}

TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING = {
"t5": ["q", "v"],
"mt5": ["q", "v"],
"bart": ["q_proj", "v_proj"],
"gpt2": ["c_attn"],
"bloom": ["query_key_value"],
"blip-2": ["q", "v", "q_proj", "v_proj"],
"opt": ["q_proj", "v_proj"],
"gptj": ["q_proj", "v_proj"],
"gpt_neox": ["query_key_value"],
"gpt_neo": ["q_proj", "v_proj"],
"bert": ["query", "value"],
"roberta": ["query", "value"],
"xlm-roberta": ["query", "value"],
"electra": ["query", "value"],
"deberta-v2": ["query_proj", "value_proj"],
"deberta": ["in_proj"],
"layoutlm": ["query", "value"],
"llama": ["q_proj", "v_proj"],
"chatglm": ["query_key_value"],
}

TRANSFORMERS_MODELS_TO_ADALORA_TARGET_MODULES_MAPPING = {
"t5": ["q", "k", "v", "o", "wi", "wo"],
"mt5": ["q", "k", "v", "o", "wi_0", "wi_1", "wo"],
"bart": ["q_proj", "k_proj", "v_proj", "out_proj", "fc1", "fc2"],
# "gpt2": ["c_attn"],
# "bloom": ["query_key_value"],
"opt": ["q_proj", "k_proj", "v_proj", "out_proj", "fc1", "fc2"],
# "gptj": ["q_proj", "v_proj"],
# "gpt_neox": ["query_key_value"],
# "gpt_neo": ["q_proj", "v_proj"],
# "bert": ["query", "value"],
"roberta": ["query", "key", "value", "dense"],
# "xlm-roberta": ["query", "value"],
# "electra": ["query", "value"],
"deberta-v2": ["query_proj", "key_proj", "value_proj", "dense"],
# "deberta": ["in_proj"],
# "layoutlm": ["query", "value"],
}


def get_peft_config(config_dict):
"""
Expand Down Expand Up @@ -134,29 +93,6 @@ def _prepare_prompt_learning_config(peft_config, model_config):
return peft_config


def _prepare_lora_config(peft_config, model_config):
if peft_config.target_modules is None:
if model_config["model_type"] not in TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING:
raise ValueError("Please specify `target_modules` in `peft_config`")
peft_config.target_modules = TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING[model_config["model_type"]]
if len(peft_config.target_modules) == 1:
peft_config.fan_in_fan_out = True
peft_config.enable_lora = [True, False, True]
if peft_config.inference_mode:
peft_config.merge_weights = True
return peft_config


def _prepare_adalora_config(peft_config, model_config):
if peft_config.target_modules is None:
if model_config["model_type"] not in TRANSFORMERS_MODELS_TO_ADALORA_TARGET_MODULES_MAPPING:
raise ValueError("Please specify `target_modules` in `peft_config`")
peft_config.target_modules = TRANSFORMERS_MODELS_TO_ADALORA_TARGET_MODULES_MAPPING[model_config["model_type"]]
if peft_config.inference_mode:
peft_config.merge_weights = True
return peft_config


def get_peft_model(model, peft_config):
"""
Returns a Peft model object from a model and a config.
Expand All @@ -167,14 +103,10 @@ def get_peft_model(model, peft_config):
"""
model_config = model.config.to_dict()
peft_config.base_model_name_or_path = model.__dict__.get("name_or_path", None)

if peft_config.task_type not in MODEL_TYPE_TO_PEFT_MODEL_MAPPING.keys():
peft_config = _prepare_lora_config(peft_config, model_config)
if peft_config.task_type not in MODEL_TYPE_TO_PEFT_MODEL_MAPPING.keys() and not isinstance(
peft_config, PromptLearningConfig
):
return PeftModel(model, peft_config)
if isinstance(peft_config, AdaLoraConfig):
peft_config = _prepare_adalora_config(peft_config, model_config)
elif not isinstance(peft_config, PromptLearningConfig):
peft_config = _prepare_lora_config(peft_config, model_config)
else:
if isinstance(peft_config, PromptLearningConfig):
peft_config = _prepare_prompt_learning_config(peft_config, model_config)
return MODEL_TYPE_TO_PEFT_MODEL_MAPPING[peft_config.task_type](model, peft_config)
Loading