PEFT配置文件LoraConfig中的target_modules参数详解

6 篇文章 0 订阅

官方解释🔗

  • target_modules ( Optional[Union[List[str], str]] ) — 要应用适配器的模块的名称。如果指定,则仅替换具有指定名称的模块。传递字符串时,将执行正则表达式匹配。传递字符串列表时,要么执行精确匹配,要么检查模块名称是否以任何传递的字符串结尾。如果指定为“全线性”,则选择所有线性/Conv1D 模块,不包括输出层。如果未指定,将根据模型架构选择模块。如果架构未知,则会引发错误 - 在这种情况下,您应该手动指定目标模块。

不同模型的target_modules设置

来自于peft/utils/constants.py 。如果你本地安装了peft安装包,则可以在以下位置看到C:\Users\chris\AppData\Local\Programs\Python\Python312\Lib\site-packages\peft\utils\constants.py

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"],
    "gpt_bigcode": ["c_attn"],
    "mpt": ["Wqkv"],
    "RefinedWebModel": ["query_key_value"],
    "RefinedWeb": ["query_key_value"],
    "falcon": ["query_key_value"],
    "btlm": ["c_proj", "c_attn"],
    "codegen": ["qkv_proj"],
    "mistral": ["q_proj", "v_proj"],
    "mixtral": ["q_proj", "v_proj"],
    "stablelm": ["q_proj", "v_proj"],
    "phi": ["q_proj", "v_proj", "fc1", "fc2"],
    "gemma": ["q_proj", "v_proj"],
    "qwen2": ["q_proj", "v_proj"],
}

可以看到TRANSFORMERS_MODELS_TO_VERA_TARGET_MODULES_MAPPING针对了部分预制的大语言模型,定义了默认的target_modules值。如果我们采用的是未在实现定义的大语言模型列表内,因此必须手动显示指定target_modules

而如何找到可以学习的参数呢,我们在加载模型后,直接打印可学习的参数名:

from transformers import AutoTokenizer,AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("Qwen2-0.5B-Instruct")

for name,param in model.named_parameters():
    print(name)
  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落难Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值