一、引言
这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。
🤗 Transformers 提供了数以千计的预训练模型,支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用。
🤗 Transformers 提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。同时,每个定义的 Python 模块均完全独立,方便修改和快速研究实验。
🤗 Transformers 支持三个最热门的深度学习库: Jax, PyTorch 以及 TensorFlow — 并与之无缝整合。你可以直接使用一个框架训练你的模型然后用另一个加载和推理。
本文重点介绍LoraConfig配置参数
二、LoraConfig配置参数
2.1 概述
LoraConfig是Hugging Face transformers库中用于配置LoRA(Low-Rank Adaptation)的类。LoRA是一种用于微调大型语言模型的轻量级方法,它通过添加低秩矩阵到预训练模型的权重上来实现适应性调整,从而在不显著增加模型大小的情况下提升特定任务的性能。这种方法特别适合于资源有限的环境,因为它减少了存储和计算的需求。
2.2 LoraConfig参数说明
LoraConfig允许用户设置以下关键参数来定制LoRA训练。
r: 低秩矩阵的秩,即添加的矩阵的第二维度,控制了LoRA的参数量。
alpha: 权重因子,用于在训练后将LoRA适应的权重与原始权重相结合时的缩放。
lora_dropout: LoRA层中的dropout率,用于正则化。
target_modules: 指定模型中的哪些模块(层)将应用LoRA适应。这允许用户集中资源在对任务最相关的部分进行微调。
bias: 是否在偏置项上应用LoRA,通常设置为'none'或'all'。
task_type: 指定任务类型,如'CAUSAL_LM',以确保LoRA适应正确应用到模型的相应部分。
2.3 代码示例
这是一段LoraConfig配置Qwen2的代码,指定模型中的"q_proj"、"v_proj"等层应用LoRA,了解具体有哪些层,可以通过print(model)查看。
config = LoraConfig( r=64, lora_alpha=16, target_modules=["q_proj", "v_proj", "v_proj", "o_proj", "gate_proj", "up_proj","down_proj"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM", ) model = get_peft_model(model, config) print_trainable_parameters(model)
三、总结
本文简要介绍LoraConfig的配置参数情况,具体的机遇peft对大模型进行微调后面单独开一页详细讲解。