LoRA是一种新的预训练微调框架,它可以在保持预训练模型性能的同时,显著减少微调所需的计算资源。在使用LoRA进行微调时,需要为每个大模型配置一个modules_mapping
,以指定哪些模块需要微调。本文将介绍各个大模型使用的modules_mapping
配置。
以下是各个大模型使用的modules_mapping
配置:
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"],
}
在这个配置中,每个大模型都被映射到了一个由字符串组成的列表,这个列表指定了需要微调的模块。例如,对于BERT模型,需要微调的模块是query
和value
。对于GPT-2模型,需要微调的模块是c_attn
。对于LayoutLM模型,需要微调的模块是query
和value
。这些模块的具体含义可以参考相应的论文。
总的来说,这个modules_mapping
配置是LoRA框架的关键之一,它可以帮助用户快速、准确地指定需要微调的模块,从而加速微调过程。