在 LoraConfig
中,这些参数用于配置 LoRA(Low-Rank Adaptation),它是一种用于高效微调大语言模型(LLM)的技术,主要通过低秩矩阵分解来减少训练参数。下面是各个参数的含义:
1. inference_mode=False
- 含义:是否用于推理模式。
False
:表示模型用于训练(微调)。True
:表示模型仅用于推理,不进行梯度更新。
2. task_type=TaskType.CAUSAL_LM
- 含义:指定任务类型,这里是 因果语言模型(Causal Language Model, CLM),通常用于自回归文本生成,如 GPT 系列。
- 可选值:
TaskType.CAUSAL_LM
:因果语言模型(GPT 类)TaskType.SEQ_2_SEQ_LM
:序列到序列模型(T5、BART 类)TaskType.TOKEN_CLS
:用于 Token 级别的分类(如 NER)TaskType.SEQ_CLS
:用于句子级别分类(如情感分类)
3. target_modules=["q_proj", "k_proj", "v_proj"]
- 含义:指定 LoRA 作用的目标模块。
- 这里
["q_proj", "k_proj", "v_proj"]
表示对 查询(query)、键(key)、值(value)投影层 应用 LoRA,主要作用于 注意力机制(self-attention)。 - 其他可能的值:
["q_proj", "v_proj"]
:只作用在 Q、V 变换矩阵上。["dense"]
:对 Transformer 层的全连接层应用 LoRA。
4. r=peft_args.lora_rank
- 含义:LoRA 低秩矩阵的秩(Rank),控制可训练参数的数量。
- 较小的
r
:减少参数量,加快训练速度,但可能损失模型能力。 - 较大的
r
:保留更多信息,提高微调能力,但会增加计算量。 - 典型取值:如
r=8
或r=16
,较大模型可能取r=32
。
5. lora_alpha=peft_args.lora_alpha
- 含义:LoRA 层的缩放因子(scaling factor),用于调整 LoRA 变换矩阵的影响力。
- 影响计算方式:
[
W’ = W + \frac{\alpha}{r} (A B)
] - 其中:
W
是原始权重矩阵。A
和B
是低秩矩阵(r × d
和d × r
)。α
(LoRA Alpha)用来调整A B
对W
的影响力。
- 较大的
lora_alpha
:增加 LoRA 贡献,可能提高表达能力,但可能导致过拟合。 - 典型取值:如
lora_alpha=16
,常配合r=8
。
6. lora_dropout=peft_args.lora_dropout
- 含义:LoRA 层的 dropout 率,防止过拟合。
- 典型取值:
0.05
或0.1
,表示有 5% 或 10% 的概率随机丢弃 LoRA 变换矩阵的部分输出。
总结
这个 LoraConfig
配置的 LoRA 主要作用于 注意力机制的 Q、K、V 变换层,r
和 lora_alpha
决定 LoRA 影响力,lora_dropout
影响泛化能力。这样可以在 减少训练参数 的同时 保持模型性能,适用于高效微调大语言模型。