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。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。