2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

微调Llama 3.1,用神器Unsloth

发布日期:2024-08-03 11:29:04 浏览次数: 3014
作者:newtype 超级个体

微信搜一搜,关注“newtype 超级个体”



Meta开源Llama 3.1是一件功德无量的事。

因为最好的闭源模型代表着天花板,那是人类可以达到的能力上限。而最好的开源代表着全民福利,那是所有人都可以接触到的基准,是科技平权价值观的展现。

这一次,开源的Llama 3.1在性能上达到GPT-4o水平。我们可以通过知识蒸馏,用最大最强的405B模型去打造小模型;也可以通过微调,让8B的模型去适应特定的任务和领域。

之前国内有些人说,开源模型是智商税,开源模型会越来越落后。这种人,不是蠢就是坏,跳梁小丑罢了。

OK不跑题,咱们今天来聊一下微调。之前一直没碰这个领域是因为,我感觉条件还没到。现在模型够强了,工具也成熟了。我试了一下,比预想中的容易多了——你看,上周我在newtype社群里发了消息,说要用Unsloth微调Llama 3.1,结果下午就成功了。

整个过程我都是在Google Colab上跑的,用的是免费的T4 GPU。数据集不大,训练花了11分半。生成q4、q5和q8三个GGUF文件比较慢,我等了应该有半个多小时。最后,这些GGUF文件都自动上传到我的Hugging Face账号上。

之所以会这么快速和顺利,主要是因为我用的是Unsloth框架。这个框架真的是微调加速神器。用了它之后,显存占用更少,训练时间也显著缩短。我强烈建议大家试试。

为了方便像我这样的新手使用,Unsloth提供了模型和代码。我就是在他们给的基础上做了一点修改。

虽然整个过程需要自己动手的地方不多,但微调相关的知识还是得理解的,因为里边的门道很深。我先用大白话分享一些我认为比较关键的点,然后再带大家过一遍代码,不然看得一头雾水也没用。

第一,什么叫微调?

厂商把大模型训练出来,就好比大学生顺利毕业,具备一定的通用技能。但是要入职、要上岗,还得接受公司的培训。这种公司培训就是微调,让大模型这个新人快速掌握一些特定的技能。

第二,lora和qlora是什么?

如果把大模型比作一本百科全书的话,我们做微调,并不是要把书重新写一遍,而是在一些页面上贴上便签纸,上边写上一些额外的信息就可以了。LoRa就是这样的便签纸。而QLoRa更进一步,它这个便签纸可以在更小的纸片上写更多字。

第三,数据集是什么?

前边说了,大模型要接受“上岗培训”。那么,数据集就是培训教材。你可以用自己的数据做成数据集的格式,也可以用公开的。其中,在公开数据集方面,为了让大模型能更好理解人类指令,并且做出恰当回应,斯坦福大学的研究人员创建了Alpaca数据集。有了它,我们就能用相对较少的资源训练出高质量的指令跟随型AI助手。

第四,SFTTrainer是什么?

对我们使用者来说,SFTTrainer就是训练工具。它简化了微调过程,而且提供很多设置和优化选项,特别好用。对大模型来说,SFTTrainer就好比培训班的老师。它接收大模型这些学生,拿到数据集作为教材,然后开始教大模型如何更好地去执行特定的任务。

第五,过度拟合是什么?

我们都遇到过,那些读书读过头的人,考试很厉害,但是遇到教材里没教的问题就不会了。同样,大模型也存在这种可能性,只会应对见过的情况,而失去了举一反三的能力。这种“死读书”的结果,就叫过度拟合。

所以,根据这五个知识点,我们就能得出,大模型微调有两个关键:

第一,教材的质量。数据集不行,那再怎么训练也不行。

第二,教学的质量。怎么用有限的资源把大模型教得恰到好处,这里边涉及到很多参数的设置,就很有门道了。

接下来,我给大家看看我上周第一次微调用的代码。不要有畏难情绪,这个就是一个熟悉的过程。多经历几次之后,再看这些代码就很亲切了。它其实很简单,待会儿看完你就知道,最核心的设置就是“教学设置”和“教材设置”。

在最开始,肯定是把需要的Package都安装和加载。

接着,加载Unsloth已经预处理好的模型。主流的模型都有,包括Mistral、Gemma等等。我的目标是Llama 3.1,所以在模型名称这边就填Llama 3.1。Unsloth的Hugging Face主页有更多模型,包括qwen之类的,大家可以去看一眼。

这个设置当中,有一个参数叫max seq length。它的意思是,模型一次可以处理的最大token的数量。不同模型有不同的默认值,从512、1024、2048,甚至更多。可以简单理解为,大模型阅读教材的话,一次能看多少个字的内容。

这一步完成之后,紧接着是参数配置。其中,target modules指的是,我们打算具体修改模型的哪个部分。把大模型比做一个机器人的话,这个机器人已经会一些基本运动了。这时候,我们要教它跳舞,那就针对它腿部的动作模块做修改,而不需要改动整个机器人。这个设置好了,就能让整个微调过程更有针对性,也更加高效。

另外,还有两个重要的参数:

lora alpha这个值设得越大,lora的影响越显著。也就是说,咱们可以通过这个设定来对模型原始性能和新技能做平衡。

lora dropout指的是,在训练过程中,会随机关闭一定比例的神经元。这就好比是,你在练习钢琴的过程中,有的时候会闭着眼睛弹。这样就强迫你自由发挥,避免“死读书”或者说过度拟合的结果出现。

模型都配置完了,接下来要配置数据集了。我的目标是强化Llama 3.1的Python能力,所以给它配的教材是python code instructions。这个数据集的内容格式包括三列:

Instruction就是下达的指令,Input是具体的输入,而Output就是模型应当给出的理想结果。

按照这个格式,我们反复去教育大模型,让它知道,遇到这样的指令、这样的输入,应该给出什么样的反馈。就跟我们以前做练习题是一个道理。

到了训练环节,这里有个max steps需要我们考虑。这就好比,你在健身房做卧推,一组做12个,做到这个数量就停下来。但是,这个数值必须设得恰到好处。因为,如果设得太高,可能会导致过度拟合或者浪费计算资源;设得太低,可能大模型还没学完你就不让它继续了。

你看,上边这些设置,除了数据集这个教材的导入之外,都跟教学质量紧密相关。教学生很有门道,不是随便找个老师就可以的。同样道理,教大模型也很有门道,需要根据不同的需求、不同的模型、不同的数据集做针对性的配置。

再往下的训练过程就没什么好操作的了,咱们看着就好。根据这个数据集还有我的设置,本次训练花了将近12分钟,只使用了68%的显存——Unsloth确实有点东西啊。

最后,模型训练完了,咱们得导出。两个简单的方法:

只导出adapter。这个adapter不是模型,你可以理解为就是一个技能模块。
或者,导出GGUF文件,并且上传到自己的Hugging Face页面。这边需要填写Hugging Face的token,可以在网站的后台生成一个。

我这边选择了q4、q5和q8,所以比较花时间。等全部搞定之后,来到自己的页面,就能看到GGUF文件了。大家平时在Hugging Face下载的文件都是这么来的。

以上就是整个微调的过程。大家如果机子性能好,可以在本地跑。如果只是想试一试,可以用免费的Google Colab。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅