快速入门:一文详解LoRA如何实现大型语言模型(LLM)的微调技巧

为什么要进行微调?

在快速发展的人工智能领域中,以高效和有效的方式使用大型语言模型变得越来越重要。
预训练的大型语言模型通常被称为优秀的基础模型,原因在于它们在各种任务上表现出色,

而大模型微调是将其适应到特定的目标任务或领域中。尽管预训练的大型语言模型在各种任务上表现出色,但它们并不是为特定任务而设计的。通过微调,我们可以根据目标任务的需求对模型进行调整,使其在该任务上的性能得到进一步提升。
微调使我们能够将模型调整到目标领域和目标任务。然而,它在计算上可能非常昂贵-模型越大,更新其层的成本就越高。作为更新所有层的替代方法,已经开发了参数高效的方法,例如前缀调整和适配器。

现在,又出现了一种更流行的参数高效微调技术:
低秩适应(LoRA)。LoRA是什么?它是如何工作的?与其他流行的微调方法相比如何?让我们在本文中回答所有这些问题!

LoRA思路

低秩适应(Low-Rank Adaptation)是一种参数高效的微调技术,其核心思想是对大型模型的权重矩阵进行隐式的低秩转换。

什么是低秩转换呢?

整体的想法和概念与主成分分析(PCA)和奇异值分解(SVD)有关,我们通过一个较低维度的表示来近似表示一个高维矩阵或数据集。

换句话说,我们试图找到原始特征空间(或矩阵)中少数维度的(线性)组合,能够捕捉数据集中大部分的信息。
如下图所示:
在这里插入图片描述

提高权重更新效率

LoRA: Low-Rank Adaptation of Large Language Models 这篇论文提出了将权重变化 Δ W ΔW ΔW 分解为一个低秩表示的方法。(严格来说,LoRA 并不直接对矩阵进行分解,而是通过反向传播学习分解后的矩阵)。

在我们深入了解 LoRA 之前,先简要解释一下正常微调期间的训练过程。权重 Δ W ΔW ΔW 是如何变换的

假设 W W W表 示神经网络层中的权重矩阵。
使用常规的反向传播,我们可以得到权重更新 Δ W ΔW ΔW,
通常计算为损失的负梯度乘以学习率:
Δ W = α ( − ∇ L W ) \Delta W = \alpha ( -\nabla L_W) ΔW=α(−∇LW​)。

然后,当我们有了 Δ W ΔW ΔW之后,我们可以按照以下方式更新原始权重:
W ′ = W + Δ W W’ = W + ΔW W′=W+ΔW。

下图中展示了这个过程,为了方便理解LoRA的思想,我们将权重更新矩阵 Δ W \Delta W ΔW和原始 W W W保持分开展示,并按照以下方式计算输出:
h = ( W + Δ W ) x h = (W + \Delta W)x h=(W+ΔW)x
h = W x + Δ W x h = W x + \Delta W x h=Wx+ΔWx,
在这里插入图片描述
在这里插入图片描述
当我们训练神经网络中的全连接(即“稠密”)层时,如上图所示,权重矩阵通常具有完整秩(full rank)。完整秩是一个技术术语,意味着矩阵的行或列之间没有线性相关(即“冗余”)关系。相反,与完整秩相对应,低秩意味着矩阵具有冗余的行或列。详细理解如下图所示:

在深度学习中,权重矩阵通常具有完整秩,这意味着权重矩阵的行或列之间没有线性相关关系,也就是说,每个权重在模型中承担了不同的作用,没有冗余。这种情况下,权重矩阵能够充分表达模型的复杂性和丰富的特征表示能力。权重矩阵具有完整秩的好处是,模型可以通过学习到的权重进行准确的预测和分类。每个权重都对模型的输出产生影响,而且没有多余的冗余信息。
然而,在某些情况下,完整秩的权重矩阵可能会导致一些问题。例如,当训练数据量较少或数据噪声较多时,权重矩阵可能会过拟合,导致模型泛化能力下降。此外,权重矩阵中的大量参数可能会导致计算和存储的开销很大。
因此,在一些参数效率方面的研究中,人们开始关注如何利用低秩矩阵来表示权重矩阵。通过使用低秩矩阵,我们可以降低参数的数量,减少计算和存储的开销,并且仍然保留了大部分原始权重矩阵的关键信息。这样,我们可以在保持模型性能的同时,提高计算效率和模型的可解释性

因此,虽然预训练模型的权重在预训练任务中具有完整秩,但LoRA的作者指出,当预训练的大型语言模型适应新任务时,其固有维度很低,这是根据Aghajanyan等人的研究(2020)得出的。(换句话说:实际微调后的权重其实对比原始模型,能用到的权重其实很少)

低秩维度意味着数据可以通过较低维度的空间有效表示或近似,同时保留其大部分重要信息或结构。换句话说,这意味着我们可以将适应任务的新权重矩阵分解为较低维度(较小)的矩阵,而不会丢失太多重要信息。

例如,假设 Δ W ΔW ΔW是权重矩阵 W ∈ R A × B W \in \mathbb{R}^{A \times B} W∈RA×B的权重更新。然后,我们可以将权重更新矩阵分解为两个较小的矩阵: Δ W = W A W B ΔW=W_AW_B ΔW=WA​WB​,其中 W A R A × r W_A\mathbb{R}^{A \times r} WA​RA×r且 W B R r × B W_B\mathbb{R}^{r \times B} WB​Rr×B。
在这里,我们保持原始权重 W W W不变,只训练新的矩阵 W A W_A WA​和 W B W_B WB​。简言之,这就是LoRA方法的核心思想,如下图所示。
在这里插入图片描述

选择低的秩

上图中的 r r r是一个超参数,我们可以用它来指定适应过程中所使用的低秩矩阵的等级。较小的 r r r会导致简化的低秩矩阵,从而减少适应过程中需要学习的参数数量。这可以加快训练速度,可能减少计算需求。
然而,较小的 r r r会降低低秩矩阵捕捉特定任务信息的能力。这可能导致适应质量较低,模型在新任务上的表现可能不如较高的 r r r好。
总结起来,在LoRA中选择较小的 r r r存在模型复杂性、适应能力以及欠拟合或过拟合的风险之间的权衡。因此,重要的是尝试不同的 r r r值,以找到适合新任务所需性能的合适平衡点。

实现LoRA

LoRA的实现相对简单。我们可以将其视为LLM中全连接层的修改后的前向传播。伪代码如下所示:

input_dim = 768 # 例如,预训练模型的隐藏大小
output_dim = 768 # 例如,层的输出大小
rank = 8 # 低秩适应的等级'r'
W = ... # 来自预训练网络的权重,形状为 input_dim x output_dim
W_A = nn.Parameter(torch.empty(input_dim, rank)) # LoRA权重A
W_B = nn.Parameter(torch.empty(rank, output_dim)) # LoRA权重B初始化LoRA权重
nn.init.kaiming_uniform_(W_A, a=math.sqrt(5))
nn.init.zeros_(W_B)

def regular_forward_matmul(x, W):
	h = x @ W
	return h

def lora_forward_matmul(x, W, W_A, W_B):
	h = x @ W # 常规矩阵乘法
	h += x @ (W_A @ W_B) * alpha # 使用缩放的LoRA权重
	return h


在上述伪代码中,alpha是一个缩放因子,用于调整组合结果(原始模型输出加上低秩适应)的幅度。这样可以平衡预训练模型的知识和新任务特定的适应性——默认情况下,alpha通常设置为1。还要注意,

虽然 W A W_A WA​被初始化为小的随机权重,但 W B W_B WB​被初始化为0,以便在训练开始时 Δ W = W A W B = 0 ΔW=W_AW_B=0 ΔW=WA​WB​=0,这意味着我们从原始权重开始进行训练。

零基础如何学习大模型 AI

领取方式在文末

为什么要学习大模型?

学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。

大模型典型应用场景

AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备预测性维护,减少停机时间。

AI+零售:智能推荐系统和库存管理优化了用户体验和运营成本。AI可以分析用户行为,提供个性化商品推荐,同时优化库存,减少浪费。

AI+交通:自动驾驶和智能交通管理提升了交通安全和效率。AI技术可以实现车辆自动驾驶,并优化交通信号控制,减少拥堵。


这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。

学习资料领取

如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

在这里插入图片描述

部分资料展示

一、 AI大模型学习路线图

整个学习分为7个阶段
在这里插入图片描述

二、AI大模型实战案例

涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
在这里插入图片描述

三、视频和书籍PDF合集

从入门到进阶这里都有,跟着老师学习事半功倍。
在这里插入图片描述

在这里插入图片描述

四、LLM面试题

在这里插入图片描述

如果二维码失效,可以点击下方链接,一样的哦
【CSDN大礼包】最新AI大模型资源包,这里全都有!无偿分享!!!

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值