大模型微调的一些技术理解

最近整理了一些大模型微调的技术,自己为了做笔记,写了这一篇文章,希望能对你有用。  
  • 集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。

  • 多种精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。

  • 先进算法:GaLore、BAdam、Adam-mini、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调。

  • 实用技巧:FlashAttention-2、Unsloth、Liger Kernel、RoPE scaling、NEFTune 和 rsLoRA。

具体讲解

集成方法

1、预训练:

大模型预训练的类型主要包括自编码模型、自回归模型、和编码器-解码器模型。‌

  • ‌自编码模型‌:这类模型以BERT为代表,它是一种双向Transformer编码器,能够学习上下文相关的词向量表示,具有很强的泛化能力。BERT通过预训练任务(如掩码语言模型和下一句预测)来学习文本中的上下文关系,从而在各种自然语言处理任务中表现出色。GPT采用的是单向的Transformer,而BERT采用的是双向的Transformer,也就是不用进行Mask操作;预训练训练主要包含mlm和nsp任务;

  • ‌自回归模型‌:GPT是自回归模型的代表,它是一种基于Transformer的自回归语言模型,能够生成连贯的文本。GPT通过预测文本序列中的下一个词或句子,从而学习语言的生成模式。GPT模型已经发布了多个版本,如GPT-2~4等,这些版本在生成文本的能力上不断进步。GPT使用的Transformer结构就是将Encoder中的Self-Attention替换成了Masked Self-Attention,是一个单向的Transformer

  • ‌编码器-解码器模型‌:T5是一种基于Transformer的编码器-解码器模型,它使用encoder-decoder框架,可以用于各种NLP任务,如文本分类、命名实体识别、问答系统等。T5通过将所有NLP任务转化为文本到文本的转换任务,简化了模型的训练和应用过程。

2、指令监督微调(sft)

微调是一个将预训练模型在较小、特定数据集上进一步训练的过程,目的是精炼模型的能力,提高其在特定任务或领域上的性能。微调的目的是将通用模型转变为专用模型,弥合通用预训练模型与特定应用需求之间的差距,确保语言模型更贴近人类的期望。

有监督微调(Supervised Finetuning,SFT),也被称为指令微调(Instruction Tuning),是指在已训练好的语言模型基础上,利用有标注的特定任务数据对模型进行进一步的训练和调整。

有监督微调的作用主要有以下几个方面:

  1. 任务适应:预训练模型往往是在大规模无标注或自监督数据上训练的,虽然具备了一定的通用能力,但可能并不完全适应特定任务。通过有监督微调,模型可以学习到特定任务的数据分布和模式,从而提升在该任务上的性能。

  2. 提升性能:微调能够进一步调整模型的参数,以优化在特定任务上的性能。

  3. 减少数据需求:相对于从头开始训练模型,有监督微调可以在预训练模型的基础上进行,因此通常能够更快地收敛,减少训练时间和训练成本。

3、奖励模型训练

ChatGPT 使用了一种叫做 “奖励模型” 的技术来提高生成的文本的质量。奖励模型是一种额外的神经网络,它接收生成的文本并预测它的质量。在训练过程中,ChatGPT 会按照奖励模型的预测结果来调整生成文本的参数,以最大化奖励模型的预测值。这样就能让生成的文本更加符合人类语言的特征,提高质量。

奖励模型源于强化学习中的奖励函数,能对当前的状态刻画一个分数,来说明这个状态产生的价值有多少。在大语言模型微调中的奖励模型是对输入的问题和答案计算出一个分数。输入的答案与问题匹配度越高,则奖励模型输出的分数也越高。

奖励模型(RM 模型)将 SFT 模型最后一层的 softmax 去掉,即最后一层不用 softmax,改成一个线性层。RM 模型的输入是问题和答案,输出是一个标量即分数。

由于模型太大不够稳定,损失值很难收敛且小模型成本较低,因此,RM 模型采用参数量为 6B 的模型,而不使用 175B 的模型。奖励模型的损失函数采用 Pairwise Ranking Loss

奖励模型的损失函数为什么会比较答案的排序,而不是去对每一个答案的具体分数做一个回归?

每个人对问题的答案评分都不一样,无法使用一个统一的数值对每个答案进行打分。如果采用对答案具体得分回归的方式来训练模型,会造成很大的误差。但是,每个人对答案的好坏排序是基本一致的。通过排序的方式避免了人为的误差。

4、PPO 训练、DPO 训练、KTO 训练、ORPO 训练

DPO是一种相对较新的方法,它直接优化用户或专家的偏好,而非传统的累积奖励。PPO(Proximal Policy Optimization)和DPO(Distributed Proximal Policy Optimization)都是基于策略梯度的强化学习算法,它们通过优化策略函数来直接学习一个策略,该策略能够映射观察到的状态到动作的概率分布。DPO 的核心思想是跳过奖励模型训练,直接根据偏好数据调整最终的偏好对齐 LLM

使用DPO,训练更为简单稳定,大规模的reward模型训练数据可以直接应用于DPO,反过来,policy也能用于新样本的reward评估(比如使用rejection-sampling-finetuning)。

现有的将语言模型与人类反馈对齐的方法,例如 RLHF 和 DPO,需要偏好数据——对于给定的输入,输出对中一个输出比另一个输出更受青睐。然而,在现实世界中,大规模收集高质量的偏好数据既具有挑战性,又成本高昂。偏好数据通常会受到噪音、不一致和不及物性的影响,因为不同的人类评分者可能对哪种输出更好有不同的看法。KTO 是由 Ethayarajh 等人 (2024) 提出的一种替代方法,它可以使用更简单、更丰富的信号——只需知道给定的输出对于输入来说是可取的还是不可取的,而无需知道输出之间的相对偏好。

关键创新在于 KTO 只需要一个二元信号来表明输出是可取的还是不可取的,而不是完整的偏好对。这使得 KTO 比基于偏好的方法更具有数据效率,因为二元反馈信号更加丰富,收集起来也更便宜。KTO 在偏好数据稀缺或收集成本高昂但您可以访问大量有关模型输出质量的二元反馈的情况下特别有用。根据论文,它可以匹配甚至超过基于偏好的方法(如 DPO)的性能,尤其是在更大的模型规模下。然而,这需要在实践中进行大规模验证。当目标是直接优化人类效用而不仅仅是偏好可能性时,KTO 可能是更好的选择。但是,如果偏好数据质量非常高且噪音或不传递性很小,那么基于偏好的方法仍然可能是更好的选择。KTO 在处理极端数据不平衡以及在某些情况下避免监督微调的需要方面也具有理论优势。

ORPO 引入了一种新颖的偏好对齐算法,该算法将基于比值的惩罚与传统的因果语言建模绑定损失(例如交叉熵损失)结合起来。ORPO 的目标函数由两个部分组成:SFT 损失和相对比率损失 (LOR)。LOR 项最大化了产生受欢迎响应和不受欢迎响应的可能性之间的比值比,有效地惩罚了为被拒绝的响应分配高概率的模型。

多种精度

1、funetuning

Prefix-tuning

Prefix-tuning方法通过微调预训练模型的特定部分(称为“前缀”)以适应特定任务。这种方法只微调前缀,而不是整个模型,从而减少了计算成本和过拟合的风险。Prefix-tuning的性能通常优于传统的微调方法,但不及完整的模型微调。prefix的作用是引导模型提取x相关的信息,进而更好地生成y。例如,我们要做一个summarization的任务,那么经过微调后,prefix就能领悟到当前要做的是个“总结形式”的任务,然后引导模型去x中提炼关键信息;如果我们要做一个情感分类的任务,prefix就能引导模型去提炼出x中和情感相关的语义信息,以此类推。这样的解释可能不那么严谨,但大家可以大致体会一下prefix的作用。

P-tuning

P-tuning是一种改进的微调方法,通过引入一个参数化转换矩阵来调整预训练模型的权重。这个矩阵可以学习地改变预训练模型的权重分布,使其更好地适应特定任务。P-tuning在保持良好性能的同时,减少了微调过程中对初始模型的过度依赖。

Prompt-tuning

Prompt-tuning是一种新颖的微调方法,利用了近年来自然语言处理领域的prompting技术。该方法通过修改预训练模型的输入来适应特定任务,使其在输入阶段就考虑到任务的特定需求。Prompt-tuning可以显著提高模型的性能,同时减少了对初始模型的过度依赖和过拟合的风险。

2、lora

全参数微调太贵,Adapter Tuning存在训练和推理延迟,Prefix Tuning难训且会减少原始训练数据中的有效文字长度

在3.1中,我们介绍了LoRA的整体架构:在原始预训练矩阵的旁路上,用低秩矩阵A和B来近似替代增量更新 ΔW𝑊 。你可以在你想要的模型层上做这样的操作,比如Transformer中的 𝑊q𝑞,𝑊𝑘,𝑊𝑣,𝑊𝑜 、𝑊k𝑞,𝑊𝑘,𝑊𝑣,𝑊𝑜 、𝑊v𝑞,𝑊𝑘,𝑊𝑣,𝑊𝑜 、𝑊𝑞,𝑊𝑘,𝑊𝑣,𝑊𝑜 0、MLP层的权重、甚至是Embedding部分的权重。在LoRA原始论文中,只对Attention部分的参数做了低秩适配,但在实际操作中,我们可以灵活根据需要设置实验方案,找到最佳的适配方案

但是为什么LoRA又能从整体上降低显存使用呢,因为:

  • LoRA并不是作用在模型的每一层,例如论文里的LoRA只作用在attention部分

  • LoRA虽然会导致某一层的峰值显存高于全量微调,但计算完梯度后,这个中间结果就可以被清掉了,不会一致保存

  • 当待训练权重从d*d降为2*r*d时,需要保存的optimizer states也减少了(那可是fp32)。

什么是秩

对矩阵A来说,由于只要掌握其中的任意一行,其余行都可以由这一行线性推导而来,因此A的秩是1。
对矩阵B来说,由于只要掌握其中的任意两行,其余行都可以由这两行线性组合推导而来,因此B的秩是2。
对矩阵C来说,由于必须完全掌握三行,才能得到完整的C,因此C的秩是3。

秩表示的是矩阵的信息量。如果矩阵中的某一维,总可以通过其余维度线性推导而来,那么对模型来说,这一维的信息是冗余的,是重复表达的。对A和B的情况,我们称为秩亏(rank deficient),对C的情况,我们称为满秩(full rank)。更严谨的数学定义,大家可以参考《线性代数》(狗头)。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值