在模型微调领域,全量微调和LoRA微调是我们经常听到的技术术语。
首先,我们需要了解什么是模型微调。模型微调本质上是因为有时我们发现模型在某个方面的性能不足。因此,我们希望通过一些训练方法来更新模型,使更新后的模型在某些方面具有更强的能力。本质上,这是对模型的一种修改。在这里,我们通过数据和基于训练的方法,将现有的模型改造为新模型。
微调的本质
那么模型的修改本质上是对模型参数的修改。因此,模型背后实际上是一堆参数。也就是说,原来的参数已经变成了新的参数。一个大型模型可能有十个亿的参数,或者一千个亿的参数,所以参数的数量是非常巨大的。这里的参数我们可以理解为许多数字的集合。而这些参数我们通常可以将其排列成几行几列的形式。
比如这是三行三列的参数,所以我们总共有九个数字。但实际的大模型本身可能有千亿的参数。这里为了讲解,我们用一个较小的例子。这些参数对应的是原始的大模型,即微调之前的模型。
微调之后,这个数字会有一些相应的改变。通过微调的方法训练好之后,这个数字就变成了这种形态。训练本质上就是把这个参数从原有的状态改造成另外一个状态。比如第一个参数这里的0.1被改造成0.2,这个过程也可以看作是0.1加上一个偏移量0.1,得到0.2。
全量微调
这个改变可以写成另一种形式,即对于原有参数,我们增加了一个改动的量。这样我们可以得到新的参数,因此可以说我们要学习的本质上是这个改动的量。得到它后,我们实际上可以加上原有的参数,从而得到新的模型。归根结底,我们如何学习这些参数,也就是如何获得这个改动的量。尽管这里只列出了九个参数,但实际上在学习时,大型模型通常包含可能几百亿甚至上千亿的参数。
学习这个参数有不同方式。第一种方法是通过学习方法得出每个参数。这称为全量微调。如果模型原本包含一百亿个参数,全量微调意味着我们需要找到一百亿个这样的数字,因此其复杂度非常高。
LoRA背景-信息有限性
有没有办法我们可以用更少的资源进行调整呢?这种方法也被称为高效的调整方法,英文称为PT。其中最常见的技术叫做LoRA。在介绍LoRA之前,我先向大家普及一下其核心背景。举个例子,如果我们给张三分配一个任务,让他写一篇文章,这篇文章可能包含两千字。
我们知道张三本身是比较啰嗦的人,所以在写文章时,通常会包含很多重复性内容,不够简洁。两千字虽然看起来很多,但实际上传达的内容有限。原本他可能只用一百字或两百字就能表达整个思想,但他却用了两千多字来写这篇文章。接下来,基于这个思想,我们可以怀疑学到的这些数字是否也有一些冗余信息?
虽然我们在这里学习可能有千亿的参数,但他传递的信息却极其有限。如果我们所承载的信息非常有限,那么实际上我们投入大量资源进行训练,可能涉及数百亿个参数,本质上是在浪费资源。从微调的本质角度来看,我们真正希望的是它所承载的信息相对有限。
实际上我们还是回归到微调的本质其实通过微调我们是希望把模型的部分能力把它放大,但是同时想保留我们大模型的其他的能力。这里改动的量也可以认为就是针对于我们想去提升的不同的能力,所以这里有一个很重要的点就是我们不希望把原来的模型改动太多。如果改动太多,就意味着许多模型原来具备的较强能力消失了,这也被称为模型能力的遗忘。因此,我们实际追求的结果是:尽管看似改动了许多变量,但它们的改动带来的价值相对有限。总的来说,在微调过程中,我们希望模型具备以下特性:在这一假设条件下,是否有更高效的方法来学习这些参数。
在详细介绍LoRA之前,我们先来了解一下。经过之前的分析,我们现在假设要学习的参数具有某种特征。接下来,我们简单看一下具有这种特征的数字有哪些规律。比如说,我们有这样一个参数,第一个参数总共包含九个参数。
但我们可以清楚地看到有价值的是其中一行是123。如果我们知道这一行,那么实际上没有必要学习第二行和第三行。对于第二个来说也是如此。这里的246实际上可以通过123得出。例如,每个数字乘以2就可以得到246。
因此,这些信息我们可以称之为冗余信息。对于这个3X3的参数矩阵来说,真正有价值可能是第一行和第三行。很明显,为了学习九个参数,我们没有必要单独学习每个参数。
LORA的优势及其应用前景
这就是LoRA的核心思想。那么,我们面临的问题是什么呢?我们需要学习的参数可能符合这种形式。
我们有没有一种方式可以更加高效的去进行学习。那这时候我们可以引入劳拉的概念。然后首先我们定义一个名词叫做矩阵。我们就简单的认为矩阵就是类似于长成这个样子。比如说包含几行几列在这里,我们把要学习的这个矩阵,把它假设设置为w而且我们知道w它本身是一个包含很多参数的矩阵,但是呢它具备这种性质,就是虽然参数很多,但实际上它所包含的信息量是比较有限的。
在这里我们需要借助于线性代数的一个简单性质。对于符合特定条件的矩阵,我们可以通过两个矩阵的乘积来近似表示它。例如,我们可以考虑一个100*100的矩阵,并利用线性代数的性质将其分解为两个矩阵的乘积。
那么这里它的大小分别会变成什么呢?是100乘以k,这是它的一个性质。所以这里的实际上是可变的一个参数。那么这里的k我可以选择,比如说1、2或者10,这些都可以。
这里的k与我们刚才提到的价值相关。如果我们认为这个矩阵的价值不大,即它所承载的信息不多,那我们可以用更小的k来代替。这里的k越大,意味着矩阵所承载的信息量越大。因为我们已经假设这个参数具有一定的特征,所以我们可以选择更小的k来逼近w。举个例子,如果k=3,那么A就包含了100*3,总共300个参数。而B则包含了三行一百列,总共300个参数。加在一起,总共有600个参数。
但这里的w可以看一下,它是100*100的,所以总共包含一万个参数。很明显,600是一万的6%。这意味着如果我们的目标是学习w,而w包含一万个参数,但我们把它写成A和B的乘积形式,那么学习它实际上等价于学习参数A和B。这里的A和B总共只有六百个参数。这大大减少了我们需要学习的参数数量。
因为它被近似成A乘以B两个新矩阵,它们加在一起只包含六百个参数。总的来说,我们只需学习六百个参数就能实现学习w的目标。如果k=1,那么A包含100个,B也包含100个参数,总共200个参数。这样我们就只需要学习原来2%的参数,大大减少了学习成本。这就是LoRA的核心思想。这里的k被称为秩(rank)。如果我们认为这个矩阵包含的信息量很小,可以选择较小的k;如果认为信息量较大,可以选择较大的k。k越小,所需学习的参数就越少。在LoRA微调中,通常不会选择太大的k,因为在大模型中,参数非常多,所以参数越多,k越小,节省的比例就越大。这样可以大幅减少显存空间和学习成本。
总结
最后我们做一个总结,首先全量微调就是针对于这些每个参数的学习,就是我要通过学习的方法,把这里的每个参数都要一个一个的要把它算出来。那相反,在LoRA的模式下,我们实际上要得出来的是这个矩阵,但是我们学习的方法是用于学习这两个矩阵来替代它。然后这两个矩阵所占用的参数的数量要比它要小很多,所以就会节省非常多的资源。
零基础如何学习大模型 AI
领取方式在文末
为什么要学习大模型?
学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程,可以掌握设计和实现基于大模型的应用系统所需的基本原理和技术,从而提升自己在数据处理、分析和决策制定方面的能力。此外,大模型技术在多个行业中的应用日益增加,掌握这一技术将有助于提高就业竞争力,并为未来的创新创业提供坚实的基础。
大模型典型应用场景
①AI+教育:智能教学助手和自动评分系统使个性化教育成为可能。通过AI分析学生的学习数据,提供量身定制的学习方案,提高学习效果。
②AI+医疗:智能诊断系统和个性化医疗方案让医疗服务更加精准高效。AI可以分析医学影像,辅助医生进行早期诊断,同时根据患者数据制定个性化治疗方案。
③AI+金融:智能投顾和风险管理系统帮助投资者做出更明智的决策,并实时监控金融市场,识别潜在风险。
④AI+制造:智能制造和自动化工厂提高了生产效率和质量。通过AI技术,工厂可以实现设备预测性维护,减少停机时间。
⑤AI+零售:智能推荐系统和库存管理优化了用户体验和运营成本。AI可以分析用户行为,提供个性化商品推荐,同时优化库存,减少浪费。
⑥AI+交通:自动驾驶和智能交通管理提升了交通安全和效率。AI技术可以实现车辆自动驾驶,并优化交通信号控制,减少拥堵。
…
这些案例表明,学习大模型课程不仅能够提升个人技能,还能为企业带来实际效益,推动行业创新发展。
学习资料领取
如果你对大模型感兴趣,可以看看我整合并且整理成了一份AI大模型资料包,需要的小伙伴文末免费领取哦,无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
部分资料展示
一、 AI大模型学习路线图
整个学习分为7个阶段
二、AI大模型实战案例
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
三、视频和书籍PDF合集
从入门到进阶这里都有,跟着老师学习事半功倍。
四、LLM面试题
如果二维码失效,可以点击下方链接,一样的哦
【CSDN大礼包】最新AI大模型资源包,这里全都有!无偿分享!!!
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~