你知道什么是微调吗?大模型为什么要微调?以及大模型微调的原理是什么?

预训练(pre+train)+微调(fine+tuning),是目前主流的范式”

在学习大模型的过程中,怎么设计神经网络和怎么训练模型是一个重要又基础的操作。

但与之对应的微调也是一个非常重要的手段,这里就着重讲一下为什么要微调,其优点是什么以及微调的本质。

01

什么是微调?

学习一门技术不但要知其然,也要知其所以然。

想了解为什么要微调,首先要知道什么是微调?

我们常说的大模型,指的是具有大量参数的神经网络模型,具体的可以看之前的文章大模型的参数是什么。然后经过大量的训练数据训练出来的模型叫做大模型,也叫做预训练模型。

微调指的是微调大模型,是在预训练模型(已经训练好的大模型)基础之上,使用少量数据对大模型的全部或部分参数进行调整,以达到在某个领域更好的效果。

举例来说,刚设计好的一个神经网络,就类似于一个从来没上过学的学生,他什么玩意都不懂,只会根据自己的本能去处理问题;

而训练大模型就相当于让这个学生完成了九年制义务教育或者上了大学,也就是说它接受过系统的教育,天文地理,物理化学等等均有涉猎,这样的模型就叫做预训练模型。

而微调就是在这个基础上完成某个方向的强化,比如想让这个学生去参加奥数比赛,就要让他对数学进行强化学习。

这个就是微调。

微调来源于迁移学习,所谓的迁移学习就是在已经训练好的模型基础上进行适当的优化或者说强化,这样可以更加合理的利用各种资源。

02

为什么要微调?

前面说了什么是微调,这里讲一下为什么要微调?

之所以需要进行微调,主要有以下两方面原因:

  • 训练成本问题

  • 训练数据问题

之所以要进行微调,其实最主要的原因就是成本问题。openAI公司训练GPT模型,一次的成本大概在几百万到上千万美元;换算成人民币就是上千万到上亿的成本。

虽然很多公司使用的大模型不需要有GPT模型那么强大,也不需要上亿的训练成本,但从零开始训练一个大模型,少说也要几百万人民币,这对个人和绝大部分公司来说都是不可接受的。

还一个原因就是,训练数据的收集同样需要巨大的成本,而抛开成本来说,很多公司根本无法收集到足够的训练数据,而没有足够的训练数据,那么就很难训练出一个很好的模型。

这时,微调的作用就体现出来了。微调只需要在别人已经训练好的模型之上,使用少量的数据对模型部分或全部参数进行调整即可。

之所以说对预训练模型的全部或部分参数进行调整是因为,微调分为全量(参数)微调(Full Fine Tuning)部分(参数)微调——高效微调PEFT(Parameter-Efficient Fine Tuning),只不过很少有人会进行全量微调。

全量微调就相当于,你本来只是在一个普通的本科院校学习;然后突然有一天有个机会让你到一所985/211的学校去学习,学习的内容还是一样,不过人家教的会更好。

部分参数微调就是相当于,你进了你们学校的实验班或突击班,去强化学习部分课程。

所以什么情况下适合微调?

  • 无法接受训练的成本问题

  • 训练数据不足

  • 想使用别人已经训练好的开源模型(huggingface上有大量开源模型)

  • 数据安全问题,不能接受把数据上传到第三方大模型公司

这几种情况比较适合微调,如果不缺钱,又不缺数据,技术又过关;那么自己设计模型,自己训练是最好的方式。

当然,微调也不是万能的,只有在相似的条件下才可以进行微调;比如,一个识别猫狗的预训练模型,你要用人脸数据进行人脸识别微调,这就行不通了。毕竟,猫狗的数据特征和人脸还是有很大差别的。

02

怎么微调,微调的具体步骤?

前面说了,微调的目的是调整模型的参数,所以本质上和步骤上微调和训练没太大区别,都需要经过数据收集处理,数据加载,正向传播,反向传播优化的过程,然后给模型参数找到一个最优解。

只不过微调大部分情况下都是调整部分参数,而这种微调方式叫做——高效微调。也就是说用少量的数据,优化部分参数,以达到更好的效果。

既然是对模型参数的调整,那么具体是怎么操作的呢?

在神经网络的训练过程中,有数据处理,正向传播,反向传播和优化器,如果不了解神经网络训练过程的可以看神经网络的通用训练流程

而微调就发生在优化器上,训练的过程是优化器根据损失差通过反向传播的方式调整参数;而微调也是通过优化器去调整模型的参数。

基于pytorch框架的神经网络,其微调部分参数的原理就是通过冻结参数,把不需要调整的参数冻结,这样大模型在微调的过程中就只会优化可以被调整的参数。

而全量微调就是不冻结参数,所有参数都会被调整。

代码如下所示:

"""``基于pytorch框架的神经网络``"""``# 加载模型``model = AutoModelForCausalLM.from_pretrained(`    `model_id, torch_dtype="auto", device_map="auto"``)``   ``# 获取模型参数``for name, param in model.parameters():`    `# 判断哪些参数需要冻结 参数名中包含bias的参数被冻结 不会被修改`    `if "bias" not in name:`        `param.requires_grad = False``   ``# 优化器``   ``optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

那么,如何系统的去学习大模型LLM?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

篇幅有限,部分资料如下:

👉LLM大模型学习指南+路线汇总👈

💥大模型入门要点,扫盲必看!
在这里插入图片描述
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。

路线图很大就不一一展示了 (文末领取)
在这里插入图片描述

👉大模型入门实战训练👈

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

👉国内企业大模型落地应用案例👈

💥两本《中国大模型落地应用案例集》 收录了近两年151个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
在这里插入图片描述

👉GitHub海量高星开源项目👈

💥收集整理了海量的开源项目,地址、代码、文档等等全都下载共享给大家一起学习!
在这里插入图片描述

👉LLM大模型学习视频👈

💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
在这里插入图片描述

👉640份大模型行业报告(持续更新)👈

💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

👉获取方式:

这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
模型微调(Fine-tuning)通常是指对预训练大型通用模型(如BERT、GPT系列)进行适应性调整的过程,以便让模型更好地适用于特定任务或领域。以下是大模型微调的一般步骤: 1. **加载预训练模型**:首先从已有的大规模训练数据上预训练好的模型库中下载并加载模型。 2. **准备任务数据**:针对具体的任务收集或准备适合微调的数据集,比如情感分析的文本数据、问答系统的QA对等。 3. **分割数据**:将数据分为训练集、验证集和测试集,用于模型的训练和性能评估。 4. **标记化**:使用模型所期望的输入格式对数据进行处理,将其转换成模型可以理解的形式,例如把文本转换成词嵌入。 5. **微调**:在预训练模型的基础上,只更新部分或全部层的权重,开始在新的任务数据集上进行训练。这个过程通常使用较小的学习率,并通过反向传播来优化模型。 6. **验证与监控**:定期在验证集上评估模型性能,防止过拟合,如果性能不佳,可能需要调整学习率、增加训练时间或尝试其他改进策略。 7. **保存和部署**:当模型在验证集上的性能达到预期,就可以将它保存下来并在实际应用中部署。 举例来说,假如我们要微调一个预训练的GPT模型来进行诗歌生成,我们会加载GPT模型,然后使用包含大量诗词的数据集进行训练,让模型学会理解和生成诗歌的韵律和风格。最终,我们可以获得一个专长于诗歌创作的定制模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值