跳到主要内容 大语言模型四种主流微调技术解析 | 极客日志
Python AI 算法
大语言模型四种主流微调技术解析 大语言模型的四种主流微调技术:SFT 监督微调、LoRA、P-tuning v2 以及 Freeze。SFT 通过复制源模型参数并微调输出层,适合数据充足场景但成本高。LoRA 通过低秩分解矩阵注入,仅训练少量参数,显著降低显存消耗且无推理延迟。P-tuning v2 改进了 P-tuning v1,通过多层 prefix 和多任务学习解决序列标注任务问题。Freeze 方法则通过冻结大部分参数仅微调高层全连接层,平衡效率与性能。文章最后提供了四种技术的对比表格及选型建议,帮助读者根据资源与任务需求选择合适的微调方案。
BigDataPan 发布于 2025/2/7 更新于 2026/4/20 1 浏览随着大语言模型(LLM)的快速发展,如何高效地对预训练模型进行微调以适应特定下游任务成为了研究热点。本文将详细介绍四种主流的微调技术:监督微调(SFT)、LoRA、P-tuning v2 以及 Freeze。
1. SFT 监督微调
1.1 基本概念 SFT(Supervised Fine-Tuning),即监督微调,是指在源数据集上预训练一个神经网络模型(源模型)。随后创建一个新的神经网络模型(目标模型),该模型复制了源模型除输出层外的所有设计及其参数。这些参数包含了源数据集上学习到的知识,同样适用于目标数据集。
源模型的输出层与源数据集的标签紧密相关,因此在目标模型中不予采用。微调时,为目标模型添加一个输出大小为目标数据集类别个数的输出层,并随机初始化该层的模型参数。在目标数据集上训练目标模型时,将从头训练到输出层,其余层的参数都基于源模型的参数进行微调得到。
1.2 监督微调的步骤
预训练 :首先在一个大规模的数据集上训练一个深度学习模型,例如使用自监督学习或者无监督学习算法进行预训练;
微调 :使用目标任务的训练集对预训练模型进行微调。通常,只有预训练模型中的一部分层被微调,例如只微调模型的最后几层或者某些中间层。在微调过程中,通过反向传播算法对模型进行优化,使得模型在目标任务上表现更好;
评估 :使用目标任务的测试集对微调后的模型进行评估,得到模型在目标任务上的性能指标。
1.3 特点与局限 监督式微调能够利用预训练模型的参数和结构,避免从头开始训练模型,从而加速模型的训练过程,并且能够提高模型在目标任务上的表现。它在计算机视觉、自然语言处理等领域中得到了广泛应用。
数据依赖 :需要大量的标注数据用于目标任务的微调,如果标注数据不足,可能会导致微调后的模型表现不佳。
模型选择敏感 :由于预训练模型的参数和结构对微调后的模型性能有很大影响,因此选择合适的预训练模型非常重要。
计算成本高 :对于参数量巨大的大语言模型(如 GPT-3 达到 1750 亿参数),传统的监督微调方法不再适用,因为全量微调需要消耗巨大的显存和算力资源。
1.4 常见案例 在计算机视觉中,低层的网络主要学习图像的边缘或色斑,中层的网络主要学习物体的局部和纹理,高层的网络识别抽象的语义。因此,可以把一个神经网络分成两块:
低层的网络进行特征抽取,将原始信息变成容易被后面任务使用的特征;
输出层的网络进行具体任务的预测。输出层因为涉及到具体任务没办法在不同任务中复用,但是低层的网络是具有通用性的,可以应用到其他任务上。
BERT 模型是 Google AI 研究院提出的一种预训练模型,通过预训练 + 微调的方式于多个 NLP 下游任务达到当时最先进水平,如实体识别、文本匹配、阅读理解等。与上述思路一样,BERT 模型微调时,将预训练好的模型参数复制到微调模型,而输出层参数随机初始化。
2. LoRA 微调方法
2.1 基本概念 LoRA(Low-Rank Adaptation of Large Language Models),直译为大语言模型的低阶自适应 。LoRA 的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅微调的成本显著下降,还能获得和全模型参数参与微调类似的效果。
随着大语言模型的发展,模型的参数量越来越大,微调所有模型参数变得不可行。LoRA 微调方法由微软提出,通过只微调新增参数的方式,大大减少了下游任务的可训练参数数量。
2.2 基本原理 神经网络的每一层都包含矩阵的乘法。这些层中的权重矩阵通常具有满秩。当适应特定任务时,预训练语言模型具有低的'内在维度',将它们随机投影到更小的子空间时,它们仍然可以有效地学习。
在大语言模型微调的过程中,LoRA 冻结了预先训练好的模型权重,并将可训练的秩的分解矩阵注入到 Transformer 体系结构的每一层。例如,对于预训练的权重矩阵 $W_0$,可以让其更新受到用低秩分解表示后者的约束:
$$ W = W_0 + \Delta W = W_0 + BA $$
$W_0 \in \mathbb{R}^{d \times k}$
$B \in \mathbb{R}^{d \times r}$
$A \in \mathbb{R}^{r \times k}$
$$ h = W_0 x + \Delta W x = W_0 x + B A x $$
在模型微调时,$W_0$ 被冻结,不接受梯度更新,只微调参数 $A$ 和 $B$。与所有参数参与模型微调相比,此时该步骤模型微调的参数量由 $d \times k$ 变成 $d \times r + r \times k$,而 $r \ll \min(d, k)$,因此微调参数量大量减少了。
对 Transformer 的每一层结构都采用 LoRA 微调的方式,最终可以使得模型微调参数量大大减少。当部署到生产环境中时,只需要计算和存储 $W = W_0 + BA$,并像往常一样执行推理。与其它方法相比,没有额外的延迟,因为不需要附加更多的层。
在 Transformer 体系结构中,自注意力机制模块中有四个权重矩阵 ($W_q, W_k, W_v, W_o$),MLP 模块中有两个权重矩阵。LoRA 在下游任务微调时,只调整自注意力机制模块的权重,并冻结 MLP 模块。所以对于大型 Transformer,使用 LoRA 可减少高达 2/3 的显存(VRAM)使用量。比如在 GPT-3 175B 上,使用 LoRA 可以将训练期间的 VRAM 消耗从 1.2TB 减少到 350GB。
2.3 主要优势
参数共享 :预训练模型参数可以被共享,用于为不同的任务构建许多小的 LoRA 模块。冻结共享模型,并通过替换矩阵 A 和 B 可以有效地切换任务,从而显著降低存储需求和多个任务切换的成本。
硬件门槛降低 :当使用自适应优化器时,由于不需要计算梯度以及保存太多模型参数,LoRA 使得微调效果更好,并将微调的硬件门槛降低了 3 倍。
零推理延迟 :低秩分解采用线性设计的方式使得在部署时能够将可训练的参数矩阵与冻结的参数矩阵合并,与完全微调的方法相比,不引入推理延迟。
兼容性 :LoRA 与其它多种微调方法不冲突,可以与其它微调方法相结合,比如下节实训将要介绍的前缀调优方法等。
3. P-tuning v2 微调方法
3.1 相关技术背景 传统的微调方法需要微调整个预训练语言模型,对于大语言模型的微调需要大量的资源和时间,急需更加高效的微调方法。理解 P-tuning v2 微调方法,首先需要了解 prefix-tuning 微调方法和 P-tuning v1 微调方法。
3.1.1 Prefix-tuning 微调方法 Prefix-tuning 微调方法在模型中加入 prefix,即连续的特定任务向量,微调时只优化这一小段参数。对于条件生成任务,输入是文本 $x$,输出是序列 $y$。在自回归语言模型前添加 prefix 后,$z=[PREFIX;x;y]$ 或者 $z=[PREFIX;x;PREFIX;y]$。Prefix-tuning 通过初始化可训练矩阵 $P_\theta$ 来存储 prefix 参数。训练对象与 Fine-tuning 相同,但语言模型的参数 $\phi$ 固定,仅 prefix 参数 $\theta$ 是可训练的参数。
3.1.2 P-tuning v1 微调方法 P-tuning v1 微调方法是将 Prompt 加入到微调过程中,只对 Prompt 部分的参数进行训练,而语言模型的参数固定不变。P-tuning v1 设计一个自动的生成连续 prompt 的方法来提升模型的微调效果。在面对下游任务微调时,通过优化 $h$ 的参数来进行模型微调。
3.1.3 存在不足 P-tuning v1 微调方法缺少普遍性。实验表明,当模型规模超过 100 亿个参数时,P-tuning v1 可以与全参数微调方法相媲美,但对于那些较小的模型,P-tuning v1 方法和全参数微调方法的表现有很大差异,效果很差。同时,P-tuning v1 缺少跨任务的通用性,在序列标注任务中的有效性没有得到验证。此外,当模型层数很深时,微调时模型的稳定性难以保证。
3.2 P-tuning v2 的原理 P-tuning v2 微调方法是 P-tuning v1 微调方法的改进版,同时借鉴了 prefix-tuning 微调的方法。与 P-tuning v1 微调方法相比,P-tuning v2 微调方法采用了 prefix-tuning 的做法,在输入前面的每一层都加入可微调的参数。在 prefix 部分,每一层的 transformer 的 embedding 输入都需要被微调,而 P-tuning v1 只在第一层进行微调。同时,对于 prefix 部分,每一层 transformer 的输入不是从上一层输出,而是随机初始化的 embedding 作为输入。
移除 Reparamerization 加速训练方式;
采用多任务学习优化:基于多任务数据集的 Prompt 进行预训练,然后再适配的下游任务;
舍弃词汇 Mapping 的 Verbalizer 的使用,重新利用 [CLS] 和字符标签,跟传统微调方法一样利用 cls 或者 token 的输出做自然语言理解,以增强通用性,可以适配到序列标注任务。
3.3 优点 P-tuning v2 微调方法解决了 P-tuning v1 方法的缺陷,是一种参数高效的大语言模型微调方法。
性能媲美全参数微调 :P-tuning v2 微调方法仅精调 0.1% 参数量(固定 LM 参数),在各个参数规模语言模型上,均取得和 Fine-tuning 相比肩的性能,解决了 P-tuning v1 在参数量不够多的模型中微调效果很差的问题。
扩展性强 :将 Prompt tuning 技术首次拓展至序列标注等复杂的 NLU 任务上,而 P-tuning v1 在此任务上无法运作。
4. Freeze 监督微调方法
4.1 概念 Freeze 方法,即参数冻结,对原始模型部分参数进行冻结操作,仅训练部分参数,以达到在单卡或不进行 TP 或 PP 操作,就可以对大模型进行训练。在语言模型微调中,Freeze 微调方法仅微调 Transformer 后几层的全连接层参数,而冻结其它所有参数。
4.2 原理 Freeze 微调方法为什么只微调 Transformer 后几层的全连接层参数呢?下面对其原因进行展开讲述。
Transformer 模型主要由自注意力层和全连接层(FF 层)构成。对于 Transformer 的每一层结构,自注意力层的参数量为 $4 \cdot d^2$,即 $W_Q, W_K, W_V, W_O \in \mathbb{R}^{d \times d}$;FF 层的参数量为 $8 \cdot d^2$,即 $W_1 \in \mathbb{R}^{d \times 4d}, W_2 \in \mathbb{R}^{d \times 4d}$。因此 FF 层占据了模型的 $2/3$ 的参数,具有重要的研究价值。
Transformer 的 FF 层可以视为一个 key-value memory,其中每一层的 key 用于捕获输入序列的特征,value 可以基于 key 捕获的特征,给出下一个 token 的词表分布。Transformer 每一层的 FF 层是由多个 key-value 组合而成,然后结合残差连接对每层结果细化,最终产生模型的预测结果。
此外,实验表明,Transformer 的浅层倾向于提取出浅层特征,深层倾向于提取语义特征。层数越深提取的语义特征所占的比例越重。对于各类不同的 NLP 任务,浅层特征往往是具有'共性',而主要区别在于各自深层次的语义特征。因此,通过仅微调 Transformer 后几层的全连接层参数,在保证参数高效微调的前提下,可以最大程度的发挥大语言模型的微调作用。
4.3 优势
大量减少了大语言模型的微调参数,是一种参数高效的微调方法;
由于只需微调高层特征,加快了模型的收敛,节约了微调的时间;
最大程度地保留了大语言模型预训练所学习到的语言的'共性',可解释性较强。
5. 四种微调技术对比与选型指南 在实际应用中,选择合适的微调策略至关重要。以下是四种技术的详细对比:
特性 SFT (全量) LoRA P-tuning v2 Freeze 可训练参数量 100% 约 1% - 5% 约 0.1% 约 10% - 20% 显存占用 极高 低 极低 中等 训练速度 慢 快 极快 较快 推理延迟 无额外延迟 无额外延迟 无额外延迟 无额外延迟 适用场景 数据充足,追求极致性能 资源受限,多任务切换 序列标注,NLU 任务 快速适配,保留通用性 实现难度 高 中 中 低
5.1 选型建议
资源充足且追求最佳效果 :如果拥有足够的 GPU 资源且数据量较大,全量 SFT 仍然是基准线,但在大模型时代已逐渐被 PEFT 替代。
显存受限或需频繁切换任务 :LoRA 是目前最流行的选择,它允许用户在不增加推理成本的情况下,为不同任务加载不同的适配器(Adapter)。
序列标注与自然语言理解 :P-tuning v2 在处理复杂的 NLU 任务(如命名实体识别)时表现优于 P-tuning v1,且参数量极少。
快速原型验证 :Freeze 方法适合快速验证某个领域知识是否有效,因为它保留了大部分预训练能力,仅调整高层特征。
6. 总结 大语言模型的微调技术正在不断演进。从传统的 SFT 到参数高效微调(PEFT)如 LoRA、P-tuning v2 和 Freeze,开发者可以根据具体的业务需求、数据规模和硬件资源做出最优选择。掌握这些技术的核心原理与适用场景,是构建高质量垂直领域大模型应用的关键基础。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online