大模型微调方法汇总

微调方法

  • Freeze方法
  • P-tuning方法
    • prefix-tuning:仅在输入层添加添加一段可学习的前缀来引导模型生成特定类型的输出。
    • Prompt Tuning 指令微调:Prompt Tuning可以通过在输入中添加特定的提示来引导模型生成相关内容,这些提示可以是单词、短语或完整的句子,用来指示模型生成的内容的格式和结构。
    • P-tuning v1(不是Prompt Tuning的缩写)
    • P-tuning v2
    • self-instruct方式 微调是一种自动化生成任务相关提示以引导预训练模型适应特定下游任务的参数高效技术。
  • Lora方法
    • 重要相关参数
    • LoRA 的优势
  • Qlora方法
    • 相关参数
  • 微调经验
    • 模型选择
    • 模型大小选择
    • 数据处理
    • 微调方案
    • 英文模型需要做词表扩充吗?
    • 如何避免灾难遗忘
    • 大模型的幻觉问题
    • 微调后的输出有重复问题的原因和解决方法?

参考:https://blog.csdn.net/dzysunshine/article/details/131590701

他们之间的关系比较混乱:

Prompt Tuning 指令微调

Prefix-tuning

P-tuning --> P-tuning v1 --> P-tuning v2 

Prompt Tuning 是一种新兴的技术,旨在通过向模型的输入中添加一个或多个可学习的“提示”来指导模型进行特定任务的预测。虽然 Prompt Tuning 和 P-Tuning 在字面上有所区别,但在许多情况下,它们可以被视为同一种微调方法的不同称呼或实现。

而 P-Tuning(特别是 P-Tuning v1 和 P-Tuning v2)是 Prompt Tuning 的一种具体实现或变种。在这些方法中,研究者们尝试将 Prompt 从离散的文本标记转变为连续可学习的嵌入向量,并通过优化这些嵌入向量来改进模型在特定任务上的性能。

Prompt:

  • 离散prompt = hard prompt 是一个实际的文本字符串(自然语言,人工可读),通常由中文或英文词汇组成;
    • 离散的prompts中,提示语的变化对模型最终的性能特别敏感,加一个词、少一个词或者变动位置都会造成比较大的变化。成本比较高,并且效果不太好。
    • hard prompt等同于discrete prompt(离散的提示词)
  • 连续prompt = soft prompt 通常是在向量空间优化出来的提示,通过梯度搜索之类的方式进行优化。
    • Prefix Tuning属于Soft prompt。
    • soft prompt 等同于 continuous prompt(连续的提示词)。

prefix-tuning 它指的是在微调模型的过程中只优化加入的一小段可学习的向量(virtual tokens)作为Prefix,而不需要优化整个模型的参数(训练的时候只更新Prefix部分的参数,而PLM中的其他部分参数固定)。

如下图所示:Fine-tuning是会更新Transformer中所有的参数,而P-tuning只需要更新Prefix处的参数。


*P-tuning 微调方法是一种基于随机梯度下降(SGD)的方法,它通过动态地调整学习率,使其随着时间的推移逐渐降低,从而使得模型能够更好地收敛
P-Tuning v2的**原理是通过对已训练好的大型语言模型进行参数剪枝,得到一个更加小巧、效率更高的轻量级模型**。具体地,P-Tuning v2首先使用一种自适应的剪枝策略,对大型语言模型中的参数进行裁剪,去除其中不必要的冗余参数。然后,对于被剪枝的参数,P-Tuning v2使用了一种特殊的压缩方法,能够更加有效地压缩参数大小,并显著减少模型微调的总参数量。https://zhuanlan.zhihu.com/p/629327372*

以下是三种微调技术的简要介绍和原理说明:

1. **LoRA (Low-Rank Adaptation)**:
   - **原理**:LoRA 是基于矩阵分解的思想,将模型的参数分解为两个低秩矩阵的乘积。具体来说,它将模型的权重 \( W \) 表示为一个低秩矩阵 \( L =B*A\) 和一个剩余矩阵 \( W \) 的乘积,即 \( W ' = B*A + W \)。其中,\( L \) 是一个可训练的低秩矩阵,而 \( R \) 是原始的预训练权重矩阵。通过这种方式,LoRA 能够以较少的参数改变原始模型的权重,从而实现对模型的微调。


  
2. LoRA执行步骤是什么?LoRA的实现流程概况如下:

  • ①选择目标层:首先,在预训练神经网络模型中选择要应用LoRA的目标层。这些层通常是与特定任务相关的,如自注意力机制中的查询Q和键K矩
    • (因为Q和K矩阵在注意力得分的计算中起核心作用,V矩阵在注意力机制中负责存储输入信息,而Q和K矩阵负责确定哪些信息是重要的。有时候,保持V矩阵不变可以保留模型在预训练阶段学到的有用信息,同时通过调整Q和K矩阵来适应新任务。)
  • ②阵初始化映射矩阵和逆映射矩阵:为目标层创建两个较小的矩阵A和B
    • A是映射矩阵(一般用随机高斯分布初始化,当然实际代码实现时,比如微软的deepspeed chat在用到LoRA时,一开始通过0矩阵占位,然后调用搭配ReLU激活函数的kaiming均匀分布初始化,虽与LoRA原始定义所用的正态分布初始化不同,但此两种初始化方式都可以工作,更多介绍见下面deepspeed chat的代码 ),维度上是降维
    • B是逆映射矩阵(用0矩阵初始化,这样刚开始微调时W'=W),维度上是升维其中,矩阵的大小由LoRA的秩(rank)和alpha值确定
  • ③参数变换:将目标层的原始参数矩阵W通过映射矩阵A和逆映射矩阵B进行变换。计算公式为:W′=W+A∗B,这里W'是变换后的参数矩阵
  • ④微调模型:使用新的参数矩阵𝑊′替换目标层的原始参数矩阵,然后在特定任务的训练数据上对模型进行微调
  • 梯度更新:在微调过程中,计算损失函数关于映射矩阵A和逆映射矩阵B的梯度,并使用优化算法(如Adam、SGD等)对A和B进行更新(注意,在更新过程中,原始参数矩阵W保持不变,说白了,训练的时候固定原始PLM的参数,只训练降维矩阵A与升维矩阵B)
  • 重复更新:在训练的每个批次中,重复步骤3-5,直到达到预定的训练轮次(epoch)或满足收敛条件

总之,LoRA的详细步骤包括选择目标层、初始化映射矩阵和逆映射矩阵、进行参数变换和模型微调。在微调过程中,模型会通过更新映射矩阵U和逆映射矩阵V来学习特定任务的知识,从而提高模型在该任务上的性能
LLaMA的解读与其微调(含LLaMA 2):Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙_七月 类chatgpt微调实战-CSDN博客文章浏览阅读6.4w次,点赞135次,收藏574次。还开始研究一系列开源模型(包括各自对应的模型架构、训练方法、训练数据、本地私有化部署、硬件配置要求、微调等细节)​该项目部分一开始是作为此文《》的第4部分,但但随着研究深入 为避免该文篇幅又过长,将把『第4部分 开源项目』抽取出来 独立成本文。_七月 类chatgpt微调实战https://blog.csdn.net/v_JULY_v/article/details/129709105

2. **P-tuning v2**:
   - **原理**:P-tuning v2 是一种基于prompt的微调方法,它通过在模型的输入中添加一个可训练的prompt向量来调整模型的行为。在这种方法中,模型的权重在微调过程中保持不变,而是通过改变输入的prompt来适应新的任务。Prompt 通常是一个学习到的向量,它可以被看作是一个任务特定的偏置项,它引导模型朝着特定任务的方向进行预测。
   - 在使用P-tuning v2或类似的基于prompt的微调方法时,通常会根据问题的类型或内容为每个不同的问题设计不同的prompt向量。Prompt在这里作为一个条件或引导,帮助模型更好地理解和适应特定的任务。

3. **QLoRA**:
   - **原理**:QLoRA 是 LoRA 的一个变种,它结合了量化和低秩适应的概念。在QLoRA 中,模型的权重不仅通过低秩矩阵进行调整,而且还通过量化技术进一步减少参数的数量。**量化是一种减少模型精度要求的技术,它将权重的值从浮点数转换为更低位的表示,从而减少模型的存储和计算需求**。通过结合低秩适应和量化,QLoRA 能够在保持模型性能的同时,显著降低模型的参数量和计算成本。QLoRA的量化过程可能仅针对这些新增的、可训练的低秩矩阵参数,而不是原始的预训练模型参数。

        LoRA和QLoRA适合于需要在资源受限的设备上部署大型模型的情况,而P-tuning v2和Prompt Tuning则适合于快速适应新任务而不需要显著增加计算负担的情况。

这三种技术都是为了在保持模型性能的同时减少微调过程中的参数更新数量,从而减少计算资源的消耗。LoRA 通过低秩矩阵调整权重,P-tuning v2 通过改变输入prompt来引导模型,而QLoRA 结合了这两种技术并通过量化进一步压缩模型。每种技术都有其特定的应用场景,研究者可以根据任务的具体需求和资源限制来选择最合适的微调策略。

https://cloud.tencent.com/developer/article/2302701
人工智能大语言模型SFT 监督微调:、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法原创

todo  整理 LLM高效参数微调方法:从Prefix Tuning、Prompt Tuning、P-Tuning V1/V2到LoRA、QLoRA(含对模型量化的解释)_llm微调-CSDN博客

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值