首页 > 教程攻略 > ai资讯 >微调Llama 3.1,用神器Unsloth

微调Llama 3.1,用神器Unsloth

来源:互联网 时间:2026-08-21 14:07:44

Meta开源Llama 3.1,某种程度上说,确实是件功德无量的事。闭源模型代表天花板,那是人类能力能达到的上限;而开源模型代表全民福利,是所有人都能接触到的基准线,背后是科技平权的价值观。这一次,开源Llama 3.1的性能追上了GPT-4o。你可以通过知识蒸馏,用最大的405B模型去打造更轻量的小模型;也可以通过微调,让8B的模型在特定任务和领域里发挥专长。

之前国内有人放话,说开源模型是智商税,会越来越落后。这种论调,要么是认知没跟上,要么就是别有用心——说句不好听的,跳梁小丑罢了。

不跑题,今天来聊微调。之前一直没碰这个领域,总觉得条件还没到。现在模型够强了,工具也成熟了,尝试之后发现,比预想中容易得多——上周在社群里发了消息,说要用Unsloth微调Llama 3.1,结果下午就成功了。整个流程都在Google Colab上完成,用的是免费的T4 GPU。数据集不大,训练花了11分半。生成q4、q5和q8三个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。