一文彻底搞懂大模型 - Fine-tuning三种微调方式
来源:互联网
时间:2026-08-26 14:23:52
随着生成式AI和大语言模型(比如GPT、LLaMA)的普及,微调(Fine-tuning)已成为让模型适配特定任务的核心手段。下面就来聊聊三种主流微调方式——Prompt-tuning、Prefix-tuning和LoRA,看看它们各自的原理、特点和适用场景。
(上图示意了微调在模型训练中的位置)
方式一:Prompt-tuning
什么是Prompt-tuning?
核心原理:
如何进行Prompt-tuning?
- ——模板中要包含任务描述、输入文本占位符、输出格式要求等。
设计提示模板
- ——包括输入文本、真实标签(监督学习)或预期输出格式(生成任务)。
准备数据集
- ——在模型输入层添加提示嵌入层,用数据集训练并微调这些嵌入,而不是整个模型参数。
微调提示嵌入
这样一来,需要更新的参数量极少,适合资源有限的场景。
方式二:Prefix-tuning
什么是Prefix-tuning?
核心原理:
如何进行Prefix-tuning?
- ——在Transformer输入层之前,初始化一个固定长度的前缀嵌入矩阵。
初始化前缀嵌入
- ——拼接后的新表示会作为各层的输入。
将前缀嵌入与输入序列拼接
- ——只更新前缀嵌入的参数,模型其余部分冻结,通过反向传播优化。
训练模型
相比Prompt-tuning,Prefix-tuning的“前缀”可以放在更深的层,对不同层施加不同影响,灵活性更高。
方式三:LoRA
什么是LoRA?
核心原理:
如何进行LoRA微调?
- ——在预训练模型中添加两个参数量很少的矩阵 A 和 B,它们的乘积用来近似全参数微调的增量。初始化时通常让 BA = 0(比如用高斯初始化),确保起点与全参数微调一致。
设置LoRA模块
- ——冻结原模型权重,只更新 A 和 B。通过优化算法(如Adam)最小化下游任务的损失函数。
训练LoRA模块
LoRA的一大好处是显存和计算开销极小,实际应用中非常流行。比如开源框架
LLaMA-Factory
LoRA参数详解
使用LoRA时,有几个关键参数决定了最终效果,下面逐一说明。
1. 秩(Rank)
- 参数名:
lora_rank - 描述:秩是LoRA中最重要的参数,决定了低秩矩阵的维度。简单任务(小数据集)可以用1或2,复杂任务可能需要4、8或更高。
2. 缩放系数(Alpha)
- 参数名:
lora_alpha - 描述:训练开始时对低秩矩阵的更新进行缩放,保证训练稳定。具体取值和秩的大小及任务复杂度有关。
3. Dropout系数
- 参数名:
lora_dropout - 描述:训练过程中随机丢弃低秩矩阵中元素的概率,用于防止过拟合。常用值在0到1之间,通常设为0.1或0.2。
总结一下,三种方法各有侧重:Prompt-tuning靠改输入提示,Prefix-tuning加可学习前缀,LoRA则通过低秩分解只更新极少量参数。实际场景中,LoRA因其高效性和易用性最受青睐,但具体选哪种还得看任务需求、硬件限制和调优目标。理解了它们背后的原理,调参时就能更有的放矢了。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名