本期讲一个特别牛的 lora 训练模型,千问隐秘指 i to l, 你 只需要上传六张相同风格的照片,然后呢,只需要运行一分钟,就能训练出对应的 lora 模型了。 将这个 lora 加载到千问隐秘指纹身图工作流,输入对应的提示词。比如我写的是一只小猫,点击运行,你就可以得到一张相同风格的猫猫照片了, 是不是特别的神奇?之前训练一个 lara, 动不动就要半个小时,现在呢,你只需要上传几张同样风格的样图, 然后呢,只需要训练一分钟,就可以得到对应的 lara 了。这个模型设计的初衷是,你只需要上传一张图片,就可以输出对应的 lara 模型。目前作者开源了四个模型,后面三个模型效果一般,我们就不进行测试了。 现在呢,只有 style 这个模型是非常非常效果好的。 renny hauber 呢,在第一时间就开发了对应的 comfy ui 节点,用来运行这个千万引妹纸 i 二 l。 至于如何安装这个节点,作者已经说的非常详细了,我就不进行赘述了, 大家按照教程一步一步来就可以了。同时呢,我也在 runninghub 上面搭载好了工作流,如果你的电脑没有四零九零显卡,或者说你也去懒得搭这个工作流,那么我建议你跟着我打开 runninghub, 搜索电磁波 studio, 点击工作流,点击运行工作流,你就可以跟着我学起来了。进入到 comfui 工作流页面,我们先看一下上传风格参考图这个区域。 呃,在这里呢,你只需要上传六张同样风格的照片,比如我上传的是六张抽象师量图的呃,一些效果图之后呢, 统一的经过 image bunch 节点进行汇总,输入给 runninghub image 千万 i2l lora generation 这个节点进行训练。 现在呢,我们只需要等待一分钟,你就可以把这个 lara 训练好了。你看,训练好的 lara 已经输出到对应的文件夹里了。 右边是千万引妹纸纹身图工作流。我在这里呢,直接把刚才生成好的 lara 呢连接到了 lara 模型加载节点,其他的呢,都不用动, 就是标准的纹身图工作流。你需要改动的地方呢,只有两处啊,第一呢,是修改生成图片的尺寸,在 empty latent 的 隐位置节点这里输入图片的宽和高。 第二呢,是在 text in code 的 节点输入提示词,比如我输入的是 a cat, 也就是一只猫。 当然,你也可以直接输入中文提示词啊,因为千万以妹纸是支持中文提示词的。这个时候呢,你点击一下运行,整个运行过程呢,只需要等待一分钟出头的样子就可以完成。从训练一个 lara 到生成一张图的全过程,是不是特别的夸张? 所以呢,看到这里,你还等什么,赶紧跟着我练起来吧。最后呢,我想说, a i g c 大 墨镜在快速的进化。很多同学都有这么一个体 会啊,那就是昨天我刚学的大模型,我还没学热乎呢,今天呢,就被另外一个新的大模型给淘汰掉了。然后你就会有这么一个想法,我昨天学的这个模型是不是白学了?我想说的是,没有白学,因为这很正常, a i g c 大 模型在快速的进化 啊,你学的每一个模型都是为了下一个模型在做准备,在打基础。呃,我在这里呢,说一个非常非常简单的学习康复 ui 的 方法,就是不断的学习模型啊,只要你学够一百个模型,你就是康复 ui 高手了 啊。如果本期视频对你有所帮助,请关注点赞收藏,三点走一波,这里是电磁波 studio, 我 们下期视频见。
粉丝1.1万获赞8.1万


同样一个 ai, 为什么有的人用着像神器,有的人用起来呢?却像人工智障?答案不是模型不行,而是你还没有学会怎么让它听话。很多人以为用好 ai 就是 不断去更换更贵的模型, 但是你有没有发现,有的时候呢,你可能换了一个模型,写出来的东西还是那个味儿,因为通用的模型它是通才,它懂所有的领域,但是并不是在所有的领域都是非常精通的。 你想让他变成你的医疗问答专家,专属代码助手,光靠聊天是远远不够的。这个时候呢,你就需要用到微调。什么是微调呢?就是给一个已经什么都会的大模型做一个定向加训。 举个例子,哎,你现在有一个大学生,各科都不错,但是你非要让他去考医学执照,那他肯定是蒙的,那有什么办法呢?送他去医学院,去专门学上个三年,这就是微调。 lora 就是 这三年里最高效的速成方案。传统的微调呢,是让大模型把所有的知识从头学一遍,哎,几万亿个参数全部改一遍,烧钱烧时间。 lora 的 做法呢,是说不动大模型已有的知识,只是在大模型大脑里再贴几张便利贴告诉他。哎,遇到医学的问题,用这套的规则来回答。 lora 的 核心逻辑就是一句话,大模型的原始权重,我们称之为 w, 我 一点都不动,就在旁边额外加一个小小的模块 the w。 w 呢,是模型脑子里几百亿的参数,代表了它对语言、逻辑、世界观的一些全部的理解。这东西太珍贵了,一旦动呢,模型可能会把基础能力都给忘了,这就叫做灾难性遗忘。而 daw 呢,是一组极小的额外参数,只有原始模型的万分之一。 你可以把 w 理解成你全部的知识能力,而 daw 呢,就是在全部的基础之上,再额外外挂一部分,基于某一个特定领域的一个专门的一个知识能力。 那 derw 参数这么少,能学到东西吗?能。因为 laura 用一个数学技巧叫做低质分解,把一个大的矩阵拆分成两个小的矩阵相乘,效果几乎是一样的,参数量呢,却从几百万降到了几千。这就是为什么你花几十块钱,用一张普通的显卡跑一两个小时,也能训练出一个可用的 laura 模型。 而且还有两个非常巨大的好处。第一呢, w 被完整的保留,通用的能力为零损失,你让他写一个 python 脚本,他照样能写,原本的能力一滴都没有少,只是多了一条新路。第二呢, third w 可以 叠加,哎,你今天练出一个法律文书的 lora, 哎,明天练一个医疗问答的 lora, 它们之间是互不干扰的,即插即用的。 到这呢,你可能会问,那 lora 和 prompt 到底是什么关系呢?它俩本质上是一件事,就是让大梦性来听话,只不过一个是写在运行规则里。 prom 就 像你现场给模型下指令,你说,哎,你现在是一个医生,请用专业的术语来回答他,照做,但可能下次对话又忘了,哎,你得再说一遍。而且它的效果可能在有的时候并不是特别的好,所以 prom 呢,一般是和变化快,不需要长期记忆的一些任务。 而 lora 呢,是把你是一个医生,直接写进模型的肌肉记忆里,它改变的是模型本身的一个能力,无论你怎么问,它永远是用医生的方式来回答,你不需要每次重复,它也不会跑偏。 那 prompt 和 laura 一 般用的场景是哪些呢?用 prompt 呢?它一般是倾向于对于任务简单,频率低,然后比如说智能客服 fq。 呃,用户问退货流程是什么,用 prompt 写好规则就 ok 了。那偶尔的翻译一段文字,写一个文案,用 prompt 也是可以的。 什么场景下会用 lora 呢?是你需要风格统一,专业高,一致性。比如说做一个代码生成助手,专门写 python 的 后端,用 drop 呢?可能每次生成的代码风格都略有差异,但是你训练一个 lora, 来学习你们团队的代码规范,每次生成的代码都是向同一个人写的,直接可以用了。 所以 ai 时代真正的差距不是你用哪一个模型,而是你会不会调教它什么时候用 prompt, 什么时候用 lora。 简单来说就是一句话,针对于简单的,一次性的需求,用 prompt, 针对于长期的,并且针对于某一特定领域的一些专业的岗位。用 lora, 我是 产品自镜,关注我后续会不断分享 ai 相关的知识和干货。

这里是老二训练系列教程,这个视频主要介绍 context 的 老二的训练的方法。我们以提取花纹为例,这是我刚才测试的这个 context 的 提取花纹 v 一, 那训练完成以后,这是一个 context 的 基础的工作流, 中间加了一个 lara, 就是 我刚才训练的提取花纹 v 一, 这个是五千步的,下面是没有加 lara 的, 种子和提子词都是一样的。我们在这里上传一张图片,点击一下这个运行好,这就是最后的一个运行效果,上面的这个是加了 lara 的, 可以看到它提取的效果非常的好。下面是没有加 lara 的, 它隐约也有提取的这个效果,但是效果非常的差。我们再换一张图片,这是一个花裙子, 点击一下运行,这个是最后的提取的效果,这个上面是提取出来的效果,这个是有 lara 的, 下面这个是没有 lara 的,是完全提取不出来。那我们现在就训练一个这种 context 的 提取花纹的这个 lara, 那 要训练这样的一个 lara, 只需要简单的两步,第一步就是准备训练素材和打标。第二步训练,那这个素材需要两组,第一组就是这个控制组,我们可以点进去,这控制组就是原图,比方说这样的一个衣服,这个控制组是零零零一点 gpg, 还有一组是目标组,目标组就是提取后的效果,比方说这个零零零一点 g b g。 刚才的提取出来的效果,在目标组里面就显示的是这样的一个效果,就准备这样两组训练素材,那么现在从零开始, 在数据集这里点击这个新建数据集,这里先新建一个控制组,提取花纹控制组素材,点击添加,再点击这个数据集,点击添加素材,我们把这个控制组的所有的素材都添加进来,那这个控制组不需要打标, 我们再回到这个数据集,这里再点击这个新建数据集,这里叫提取花纹目标组,点击添加,点击这个数据集,点击添加素材,把刚才的这个目标组给添加进来。假如说你已经有打好标的文件了, 那这里会自动识别,那这里如果没有打好标,然后在这里点击统一打标,打标的内容就是这个工作流里面的这个提示词,把它复制过来,点击确定, 可以看到这样的所有的素材都打好标了,然后进到这个模型训练,点击新建训练任务, 在这里写上,比方说叫 context 提取花纹 v 二,这里选择 flex 一 context, 然后默认就是每十轮输出一次绕二模型,每五百步输出一次绕二模型,默认是训练两百轮。然后在这里选择刚才新建的这个数据集, 有一个目标组,目标组就是刚才训练的这个提取花纹的目标组,这个是提取花纹的控制组,这里也可以填写这个分辨率, 这个分辨率越高,占用的显存也就越高,那他训练的精度也就越高,比方说这里写五幺二,五幺二也可以保持他的默认,一零二四都是可以的。 然后在这里写上这个彩样的提子词,假如说你在过程当中需要查看他的彩样的效果,在这里就可以起用彩样,如果说你不想起用彩样,在这里关闭就可以了, 然后我们这里起用彩样,这里写上这个提子词,也就是这个提子词,然后这里还需要一张图片,比方说我们这样把这个图片的路径复制过来, 然后反斜线再输入这个图片的完整的名字,就是一个完整的图片的路径。那在这里还有一个显存优化的设置,假如说你的显存比较低的话, 你这里可以开启低显存模式,把这个分块调大一些,假如你的显存比较高,配置比较高,你可以把它给关闭,或者是打开,开一个比较小的块就可以了。然后点击这个检查训练参数,检查没有问题,点击保存, 然后进入到这个模型训练,点击开始训练就可以了,它这里会自动完成所有素材的初步化,并会自动开启训练,只需要等着它开始训练就可以了。 那训练过程当中可以查看它的过程的采样, loss 的 曲线以及模型的输出。假设我们刚才训练的这个 v 一, 点击这个 loss, 点击查看 l s 曲线,那这个就是完整的 l s 曲线,然后还可以点击这个模型输出,点击这个打开,这就打开了这个模型输出的目录,然后在这里 就能看到所有的输出的 l s 模型,然后把这个 l s 模型复制到这个 comui 的 models l s 里面 就可以了。就像这样 ctrl 提取花纹 v 一 五千步的,然后就用这个 ctrl 的 基础的工作流去测试就可以了,效果就是刚才演示的那种效果。那还有一点,假如说你训练完成以后,发现效果不是太好,步数太少了, 然后在这里也支持训练,就是在你已有的 l r 的 基础上继续训练,你只需要把这个地方打开, 比方说你要基于刚才的五千步继续训练,那么你只需要在这里复制一下这个路径,然后反斜线在这里复制一下它的完整的名字,复制过来, 这个就是完整的 lara 的 模型的路径,点击保存,然后在这里再开始训练的时候,它就会在这个五千步的基础上继续训练。这样的话你就不需要从头训练了, 因为我们每一次训练都可能需要耗时好几个小时甚至一天的时间,这样的话你基于现有的 lara 进行训练能节省很多的时间。好,这就是使用 lara 训练大师来训练一个 context 的 lara 的 方法。

普通人如何训练自己的 ai 模型呢?可以参考以下步骤,第一步,第一问题和目标,明确你想要模型解决的具体问题或任务,例如图像分析、自然语言处理、预测分析等,并确定相应的性能指标和评估方法。第二部,收集和准备数据 包含数据收集、数据清洗、数据标注、数据预处理。第三步,选择合适的模型价格。根据问题的类型和数据特点,选择适合的模型价格。第四步,设置内训参数,决定模型的超参数,比如学习率、 迭代次数、批量大小、正则化参数等。第五步,训练模型包含将数据分为训练级、验证级和测试级。 使用训练及进行训练。将预处理后的数据输入模型,通过优化算法不断的更新模型的参数,以便获得最小的损失函数。监控训练过程,观察训练过程中的指标变化,如损失值的下降趋势、验证级的、验证级上的性能表现等。 六、评估和优化模型包含使用验证及评估模型性能,进行模型调优,使用测试题进行最终的评估。第七步,部署和应用模型 需要注意的是,模型训练是一个专业且复杂的过程,尤其是对对于大模型的深度训练和学习。关注我,训练属于自己的 ai。

面试官问 laura 是 什么,十个程序员,八个达成微调就没了。 laura 不是 微调,是给模型贴便利,贴 权量。微调要更新所有参数七十亿参数的模型,每个权重都得重新训练。 laura 的 做法是冻结原始权重,不动额外插入两个小矩阵 a 和 b, 只训练这两个矩阵。 原始权重四千零九十六乘四千零九十六,一千六百万个参数。 laura 插入的两个矩阵是四千零九十六乘八和八乘四千零九十六,加起来才六万五千个参数,缩减了两百五十倍。 推理时把 a 乘 b 的 结果加回原始权重,没有任何额外开销。为什么两个小矩阵能顶一千六百万个参数?因为大模型权重矩阵的本质是低质的。 你可以理解为一本一千页的书,真正有用的核心知识其实只有三十页,剩下的都是重复和扩展。 lara 就是 找到了那三十页,只改这三十页的内容就够用了。 关键参数叫质用,而表示就是那个八。二等于八,意味着你假设权重矩阵的变化可以用八个维度来表达, 常用值是八十六,六十四,越大,补丁越强,但训练成本也越高。还有一个参数 alpha, 控制补丁的影响力通常设成 r 的 两倍。 看对比数据,全量微调七十亿参数模型需要四张 a, 一 百八十 gb, 训练一轮三到五天,成本上万。 laura 微调同样的模型,一张三千零九十二十四 gb 就 能跑,训练两到四小时搞定,成本几乎为零。酷洛瑞更狠,先把模型量化到斯比特,再加 laura 七十一参数,模型单张三千零九十跑,微调显存占用布到十 gb, 效果呢?在大多数下游任务上, lora 只比全量微调低一到两个百分点,库洛瑞再多掉一个百分点,花百分之一的成本换百分之九十七的效果,这笔账谁都会算。 我自己的踩坑经历,之前给一个客服模型做领域适配,全量微调要四张 a 一 百,我没有,就用 lora 微调,一开始 r c 了一百二十八,觉得越大越好,结果过你和严重模型连通用对话都不会了。 后来降到 r 等于十六,配合 alpha 等于三十二,效果一下就稳了。教训就是 r 不是 越大越好,十六是大多数场景的甜点,别一上来就六十四甚至一百二十八。收藏清单来了,通用对话微调 r 的 等于八, alpha 等于十六, alpha 等于三十二。显存紧张,用 kolra 斯比特量化加 laura, 单卡就能跑。 推理部署时, laura 可以 合并回原始权重,零额外开销,也可以保持分离做多 laura, 切换同一个基础模型,挂不同 laura 服务不同业务。口诀通用用八,专业用十六显存,仅上扣洛 r a 两个微调方案对比, laura 适合快速迭代,训练快,成本低,但复杂任务可能欠你和全量微调适合极致性能,效果天花板高,但动不动就要多卡多天训练。 二零二六年主流做法是先跑 laura, 看效果不够再上全量,不要一上来就全量微调。有人说 laura 就是 穷人版微调效果肯定不如全量, 但你看 meta 和微软的论文,在很多任务上, laura 跟全量微调持平,甚至更好。你觉得是工具不行,还是你没调好参数,评论区告诉我你站哪边?

假如你从二六年六月决定学习大模型多久才能学会?答案是,三个月足够让成为一个真正能干活的 ai 工程师。说句实话,只要你精力跟得上,不是三分钟热度,请疯狂按这条高效学习路线冲。第一阶段,不要想着一步到位,先把提示词写顺了,搞懂 transformer 核心架构,熟练调通 api 就 算过关。第二阶段,认真吃透 r a g 老总数据清洗,怎么专项量?数据库咋用。最后一步,真正动手做一个 a 阵,把 react 模式弄明白,让 ai 自己会调工具,再四十多个 a 阵一块配合,完成复杂任务。这套走下来,搭个聊天机器人,或者给公司整一个 ai 方案,基本没啥大问题。 我把这个流程整理成了一份详细的学习计划和视频教程。不管你是想转行做技术,还是只想让工作更轻松留下想学拿走 以前想给几十亿参数的大模型做全量微调,那是大厂和顶级实验室才玩得起的算力游戏,动不动就需要几排几柜的顶配显卡连轴转,普通开发者根本摸不到门槛。但是自从有了 laura 技术,他硬生生把微调的显存需求 直接砍掉了百分之九十以上,零成本训练出一个专属的行业大模型。今天我们就把 laura 技术彻底拆解明白。我把视频内容分为了四个部分。首先,我们会花个几分钟理清一个底层逻辑,微调的本质到底在干嘛。基调定准了,你就会知道传统的做法有多吃亏。为什么我们非得用 laura 不 可? 那我们就直接进入第一部分,来看看微调的本质,其实啊,大模型不管外面吹的有多深,它说白了底层就是一堆密密麻麻的数字,也就是我们说的权重参数。你看这个公式, w 一 撇等于 w 加上 date w, 原来的模型参数是 w, 我 们要教给它新技能,就是给它加上了一个变化量,就 这个 data w, 最后得到一组新的参数 w 一 撇 a 微调本质上就是在找这个 data w 就 这么简单。但是呢,问题来了,我们看右边这个图,以前我们做的是传统的全量微调,就是要把这几十亿、几百亿的参数全都给它重新算一遍。这就像什么呢? 假设你手里有一套几百万字的百科全书,现在你想往里面加上一点关于最新的网络这个词的解释。全量微调的做法就是拿起红笔,把整套书从第一页 b 一个字开始全部重新抄一遍。你看这个图里面红笔改的密密麻麻的,这种做法不仅费卡烧钱,而且模型还特别容易把以前学过的常识给忘了,也 就是我们说的灾难性遗忘。对我们平时在公司跑业务来说,动不动就去搞全量微调,那算力成本肯定是吃不消的,那怎么破局呢?既然整本重抄太笨了,大家就想出了 lower 这个办法。我们来对比一下这两个架构图,左边这个是常规微调,你看左边这个 w 模块 跟原来的模型一样大,更新起来特别笨重。而 lora 他 特别聪明,他直接把原来那一个巨大的预训练权重 w 给冻结住了,不让他动。然后呢,在旁边开了一条旁之路,在这条路上,他放了两个小一点的矩阵,叫做 a 和 b, 我 们在训练的时候只更新这两个小矩阵,最后把它们相成的结果, 当时那个变化量 data w 加回到原来的流程里面,效果有多夸张呢?我们来看这个饼图,绿色的这一大片,百分之九十五甚至更多的原始参数 都不用算了,我们只需要管这个蓝色这一小撮可能只有百分之几甚至千分之几的参数。你看这一下子,几张普通的显卡也能跑得动大模型微调了,对吧?那说到这里,其实很多朋友第一次接触 lora 的 时候,心里都会有一个大大的问号, 凭什么?凭什么?原来要更新几十亿个数字才能够学好的东西,现在你搞两个小矩阵就能够搞定了。模型真的能学会吗?那就涉及到了 laura 背后最核心的一个洞察,学术上叫低质。我们来看这两张图你就懂了。你看左边这个厨师,其实基础的大模型,他已经是一个上知天文下知地理的文学家了。现在我们微调, 比如让他去写你们公司的特定文案,就好比让这个博学家去学做川菜,他需要从头开始去学,什么是辣味,什么 火,什么是食物吗?完全不需要,他脑子里已经有庞大的常识了,他只需要稍微记一下花椒怎么用这种特定规则就行了。这就是为什么那个变化量 delta w 里面真正需要塞进去的新知识,其实没那么多。我们再看右边这个例子,这也特别形象,你看张三写了 一篇两千字的水文,其中真正有信息量的就一句话,今天天气不错,我们去野餐吧。大模型的参数也是一样的,虽然它可能会有几百亿个数字,看着挺吓人的,但其实数字跟数字之间有很强的关联性,大量的信息都是涌于的。所以你看, lora 其实就是抓住了大模型的这个本质,既然你本身信息就高度融合,不 需要那么多参数来表达,那我就用极少的参数去精准捕捉你那点核心的增量信息。这就解释了为什么 lora 能用这么小的代价做到那么大的模型。我们理清了大方向,现在进入第二部分, lora 的 数学原理和实现机制。大家看到数学原理这四个个先不要紧张啊, 我们其实就是要搞明白一件事情,刚才说的那两个小矩阵,它在底层到底是怎么运转的?首先呢,我们需要破除一个名词障碍,叫做低智 low rank, 听着特别学术,对吧?但其实也特别好懂。大家看这里有个例子,左边是有一个三乘三的矩阵,一共是九个数字,对吧?但是如果你稍微观察一下它的规律,第二行二四六其实就是第一行一二三乘以二, 第三行呢,就是第一行乘以三,对吧?意味着什么呢?就意味着这九个数字里真正有用的核心信息,其实只有第一行的那个一二三,剩下的全都是个固定套路,是不容的。所以啊,不 管一个矩阵看着有多么庞大,只要它的数据存在高度的关联性,它的有效信息维度其实是很低的,我们完全可以把那个核心的基底给抽出来,用很少的数据去还原它,这就是低质的本质。在一堆废话里面去找重点,顺着这个找重点的思路,我们就来到了 laura 最核心的操作 矩阵分解。既然我们上一章说了模型需要学的新知识,也就是这个黄色的 data w 信息量其实不大,是一个低质矩阵。我们直接把这个大矩阵 给它深深地劈开,劈成两个小矩阵相乘,也就是右边这个矩阵 a 和矩阵 b。 大家注意看啊,矩阵 a 呢?它是一个高瘦的柱子,矩阵 b 像一个矮胖的长条,对吧?它们俩相乘的时候,中间那个共同的维度, 也就是 a 的 宽度和 b 的 高度,而其实就是我们刚才说的那个有效信息维度。在学术上,我们管它叫 rank, 也就是志,那说到这个 rank 志, 我们在实际跑代码的时候,这个 r 设置成多少最合适呢?我这里有一条法则是说 r 应该远远小于模型的原始维度。还有刚开始接触微调的时候,可能会有个误区,觉得这个 r 设的越大,模型学到的东西就越多,效果就越好。但是你看左下角,这是原论文里面的测试数据,非常有意思。 r 从一一增加到了四的时候,各项语言的指标确实在变好,对吧?但是当你把它加到 r 十六,甚至加到一零二四的时候,你会发现效果并没有什么明显的提升,甚至呢还会掉一点点,这说明什么?这说明你要交给模型的那个新技能,它的信息量其实就那么一点大,就好比你非要开一辆大卡车, 就是很大的 r 去装,其实车厢里全是空的,所以我们平时训练 r 设置个四八十六往往就足够打了,那把 r 设小之后能省多少事呢?我们来算一笔直观的账,这也是我觉得洛尔最牛的地方。假设我们要更新一个 一零二四乘以五幺二的权重矩阵,如果是传统的微调,你要老老实实去算这五十二万多个参数。现在我们用 lower 假设,我们把刚才说的 r 设置成了三十二矩阵 a 就 变成了一零二四乘以三十二,那矩阵 b 呢,就是三十二乘以五幺二。我们只需要管这两个小矩阵,把它们的参数量加起来只有不到五万个参数 从五十二万多降到了四万九,那参数量只剩下原来的百分之九了。如果遇到更大的几百一参数的模型,这个比例甚至能降到千分之几。对 做工程落地的人来说,那就意味着你原本可能需要八张 a 百才能跑起来的训练,现在是一张消费级的四零九零就能轻松搞定了,这是实打实的本增效。最后这部分还有一个非常精妙的工程实现细节大家一定要知道,就是它的初使化。大家想一个问题啊, 刚开始微调的第一步模型,其实什么新东西都没有学进去,对吧?我们肯定希望这个时候新加进去的 a 和 b, 不要去瞎干扰原来模型的输出。所以呢, lower 的 作者非常聪明,你看他在最开始的时候把右边这个矩阵 b 用随机数出式化,但是呢,他把中间这个矩阵 a 啊, 全都设置为零了,也就是全零出式化。这有什么用呢?任何数乘零都是等于零对吧?这就意味着在训练的第一步, a 乘 b 的 结果就是等于零,对吧?也就是零,那模型刚一上来,表现跟没加 load 的 之前是一模一样的,然后随着训练的一步步推进, a 里的数字慢慢不是零了,新知识才一点一点加进去,这就保证了训练初期的极度稳定, 不容易崩。另外大家注意看底下这个公式,这里多了一个字母叫 alpha。 我 们在设置参数的时候也一定会遇到它,它其实就是一个缩放因子,你可以把它想象成一个音量的旋钮,算出变化量之后, 我们乘上一个阿尔法,除以 r 的 这个系数,用来控制新学到的知识对原模型的影响到底有多大。有个行业里面的经验值啊,我们通常会把这个阿尔法设置成 r 的 两倍,具体的我们在后面参数设置的部分还会再详细说。我们把罗尔最底层的数学逻辑盘清楚了。那么说到这里, 你可能会觉得把参数量降到百分之几,这已经很极限了吧,一台电脑就能跑了,还要什么自行车啊。其实不然,大模型这个圈子整 非常夸张的,既然能降,那能不能再降一点?这就引出了我们的第三部分, qlora 和其他的一些境界的新玩法。我们先来看目前大家用的最多,基本上可以说是平民玩家标配的 qlora, 这里面这个 q 呢,就是 quantization 量化。原本我们大模型里面的数字都是非常精确的小数,比如说十六位甚至三十二位的浮点数,非常占用显存,那 qlora 是 怎么做的呢?他直接大刀阔斧把这些精确的小数压缩成了四倍的粗略整数, 一压,好家伙,模型的体积直接缩水了好几倍,单卡二十四 g 的 显存也能够跑七十亿甚至更大的模型了。但是注意,我们用来微调的这两个小矩阵 a 和 b, 它们是不做这种极端压缩的,它们还是保持高精度的计算。这就相当于 大部队虽然因为后勤不够降级了,但是我们派出去学习新知识的特种部队,用的依然是顶配的装备。这样一来,既省了卡,又保证了微调的效果, 可以说是性价比拉满。那除了这个 q lora, 因为罗尔实在是太火了,这几年学术界还卷出了好多升级版,我给大家简单的介绍几个。比如第一个 lora, 他 觉得原来 lara 更新参数的时候有一点手脚不协调,所以呢,他在算法上做了一个解,偶啊,权重的方向和大小分开来学,这样模型学起复杂任务来,表达能力就会强很多。 看中间这个 laura 加,哎,这个思路我觉得特别有意思,刚才我们不是说矩阵 a 上来全是零,矩阵 b 是 一堆随机数吗?它的起点根本不一样,凭什么训练的时候要让他们用同一个速度去更新呢?所以 laura 加呢,就给这个 a 和 b 设置了不同的学习队,相当于是因材施教。结果发现,嘿,不仅训练变快了, 最后模型变聪明的效果还更好了。然后呢,还有 r、 s、 l、 o, 它其实解决了一个很多人微调的时候都会碰到的痛点。刚才我们说过,普通类的质设置个八或者是十六就差不多了。有时候你遇到特别复杂的任务,你硬硬把 r 开到一百二十八,二百五十六,满心欢喜地以为模型能学到更多东西,结果一跑 绕死曲线直接崩了,训练很不稳定。那么 r x l r 就是 对内部的缩放比例做了一个数据上的优化,用了它之后啊,你哪怕这个 rank 开得很高,模型也能稳稳当当地继续学, 不会轻易崩溃。这对于那些需要给模型疯狂灌输大量新知识的场景,比如说要学一门,嗯,全新的冷门语言是非常有用的。当然了,对于大部分刚上手的人来说,也不用死记硬背。这些变体你只要知道,不管外面的花样怎么变,它们底层的灵魂都是我们刚才拆解过的低质分解。如果你平时做项目的话, 你只要知道武器库里面还有这些进阶的装备,哪怕哪一天,原版的 low low 满足不了你了,你懂得,来回翻这几张牌就完全足够了。好, 前面铺垫了这么多理论和遍体,可能很多朋友已经迫不及待去跑代码了。最后一部分,我们来盘点一下在真实写训练脚本调餐的时候,那些最容易踩坑,最容易让人抓狂的地方。大家如果用开源的工具微调过,就一定会面对配置文件里这三个参数, 我们一个一个来看。首先第一个也是最核心的 r rank, 这个参数我们在前面反复的提过,它决定了模体能容纳多少新知识。我再强调一遍,真的没必要去迷信大力出奇迹,一般日常的任务设置个八十六,最多三十二,绝对够用了。诺太大不仅训练慢, 还特别容易过你河。第二个, laura alpha, 还记得我们前面打的比方吗?它就是一个音量旋钮,是用来控制新知识对圆模型的影响权重。绝大多数情况下,你直接把这个 alpha 设置成跟 r 一 样大, 或者是 r 的 两倍,是很安全的。比如说你 r 是 十六, r 法就给十六或者是三十二。除非呢?你去用我们刚才讲的 laura 加这一类特殊的变体,那就得老老实实按它们论文里的配方来。第三个, target modules, 也就是你要把 laura 挂在哪些层上。很多框架默认非常保守,只给你加在注意力的 q pro 和 v pro 上,这种做法最成,显存跑起来最快。但是你看,如果你的显卡资源稍微富裕一点,或者是你想追求极致的微调效果,那强烈建议你把括号里面这些 k pro, o pro, 甚至后面的前馈层全给它覆盖上。代价肯定是显存占用变高,但模型理解复杂指令的能力会有一个质的飞跃。 ok, ok。 最后,我们来过一遍这几个很容易被忽略的弊坑小贴士,这可都是我们用算力和时间砸出来的弊坑小贴士。这可我们来过一遍这几个很容易被忽略的开关。如 你手里的数据集特别小,比如说你只弄了几百条问答,那你把 dropout 给个零点零五或者是零点一,防止模型过你核。但如果你的数据量很庞大,几万条几 十万条,那就直接设为零,不需要开,让模型敞开了学。第二条, i r c 就是 偏置,听我的,通常情况下呢,直接保持默认的 low 就 可以了,千万别手痒去微调它,弄了反而容易出一些莫名其妙的收敛问题。第三个呢,是数据类型,这个很重要,如果你显卡支持我们, 一定你一定要选 b f 十六,千万别去选那个 f p 十六。为什么呢?因为大模型在训练的时候经常会蹦出一些极端大的数字, f p 十六的表示范围比较窄,特别容易易出,你可能跑着跑着突然涝死爆掉了,白跑几天,而 b f 十六就稳健的多。如果你结合了我们刚才说的 q l o, 钢架会自动帮你把底座压成四 beat, 但在运算这一步 的,一定还要说用 b f 十六最后一条呢。这是一个报显存的急救顺序,你看,假设你一跑,代码啊报错了, o m 显存不够,你该怎么砍配置呢?千万别一上来就去砍这个,那太伤模型效果了。你的第一步 应该是立刻换上 q lora, 这招最立竿见影,如果还报呢?第二步,再去把 r 值稍微调小一点点,实在不行了,再到最后一步,你再考虑去减少覆写的层数,如果按照这个优先级来,能在你现有的破显卡上保住最大的模型战斗力。好,那关于 lora 微调原理的拆解我们就讲到这里。

嗨,大家好,欢迎来到这期的深度解析,今天咱们聊点极其硬核但又绝对接地气的话题,普通人到底怎么才能拥有属于自己的专属大模型? 你看现在啊,不管是谁都在谈论那些千亿参数的超级大模型,感觉特别遥远,高不可攀对吧?但今天我们要彻底打破这种壁垒,看看怎么把这种所谓科技巨头独享的力量真正交到咱们普通开发者和中小企业的手里。 这也是咱们今天最核心的一个灵魂拷问。买不起几百张极其昂贵的显卡,咱们普通人难道就真的只能眼巴巴看着,绝对不可能在自己的电脑上微调大模型了吗? 说实话,一直以来,在开发者和私有化人工智能之间,横着一堵让人非常绝望的算力高强。大家都知道大模型能力强悍,但一想到动辄成百上千张高端显卡的天价成本,估计绝大多数人都直接劝退了。所以,首先我们要看的正是告别天价算力全参数微调的沉重代价。 好的,让我们深入探讨一下这背后的巨大红沟。传统的全参数微调,他真的就像字面意思一样,要求你把模型里百分之百的参数全给更新一遍。 举个例子,假设你要微调一个七零币,也就是七百亿参数的模型,你猜怎么着?你得准备四到八张极其昂贵顶级的 a 一 零零级显卡,还得没日没夜的跑上好几天,这简直就是烧钱游戏对吧? 但别急,现在破局的曙光来了,参数高效微调,也就是 p e f t, 它只更新不到百分之一的参数,单张 g p u 就 能跑起来,成本瞬间实现了断崖式下跌。那么这到底是怎么做到的呢? 接下来咱们进入这个重点,什么是高效微调?以及 lora 的 魔法?面对高昂算力的痛点,业界抛出了一根极其关键的橄榄枝。这非常巧妙地引出了我们要聊的主角 lora, 全称叫低智自适应。 他的思路简直绝了,他完全不去动那个庞大复杂的基座模型,而是直接把他所有的权重死死冻结起来。 你可以把原本的千亿参数大模型想象成一个被彻底冻结的超级大脑,不管怎么微调,大脑原有结构一概不动,只是在里面悄悄加一点小型的可训练的矩阵。你可以这么理解,这就好比给这个超级大脑外接了一个非常小巧的 u 盘。 顺着这个思路,咱们来看看大圆模型的这个 u 盘旁路矩阵具体是怎么工作的。咱们拉近点看这个 u 盘在实际训练里发挥作用的过程,其实一共就四步, 第一步,把圆模型那成百上千亿的参数原地冻结。第二步,在旁边开辟一条低至矩阵组成的旁路,也就是我们的 u 盘。 然后第三步,当你拿自己的私有数据,比如公司的专业文档去训练时,实际上机器只在拼命训练这个极小极小的 u 盘里的参数。最后,当模型真正开始工作推理时,输入的信息会同时穿过冻结的大脑和你新训练的 u 盘,然后把结果一加 你看,既保留了原有的常识底座,又完美吸收了你未给他的独家秘籍。当然,这背后真正有意思的是他的数学逻辑。如果不加这个 u 盘,更新原矩阵所需的计算量是 m 乘以 n, 极其恐怖。 但 lora 耍了个聪明的花招,他把这条旁路拆成了两个低质矩阵相乘,一个 m 乘 r, 一个 r 乘 n。 这里的灵魂就在于这个质,也就是字母 r。 这个 r 可以 设的很小,小到什么程度呢?默认值常常只有三十二。通过这种降维分解的巧妙操作,他在底层硬生生把计算时的显存压力给砍掉了一大截。这一砍幅度令人震撼,最高能削减百分之九十九的可训练参数。 也就是说,用了 laura, 你 的训练负担直接暴跌了百分之九十到百分之九十九。但等一下,最离谱的是,哪怕你跳过了百分之九十九的参数,不去管它,训练出来的模型能力竟然依然能达到全参数微调质量的百分之八十五,甚至百分之九十五! 用芝麻粒大小的代价,换来几乎不打折扣的强悍性能,这就是高效微调最迷人的地方。那么,继续往下看,这一切还能怎么进一步突破? q l o i 的 极限压缩与消费级硬件的极限突破?如果说 l r a 是 给你省了一大笔经费,那 q l o i 简直就是直接把大模型搬到了你的书桌上。 qora 顾名思义,就是在 laura 的 基础上加入了量化技术。他下狠手把基础模型原本十六位的精度生生给压缩到了四位或者八位。但在实际运算时呢,他又极聪明地恢复到十六位来保证算得转。 这就意味着什么呢?这意味着,哪怕你手里只有一张打游戏用的只有二十四 gb 显存的普通消费级显卡,比如三零九零或四零九零,你现在竟然也能把一个七百亿参数的顶尖大模型塞进去,而且还能微调它。 所以这就引出了我们今天的一个核心结论,全民私有化微调时代的到来,将力量交还给开发者。到了这里,算力垄断的高墙可以说是轰然倒塌了。就像我们参考的资料中有一句非常振奋人心的话,这里的重点是 q r o i, 使得在单张二十四 g b 显存的消费级 gpu 上,微调七零 b 模型成为可能。 这是一种访问权力的民主化,直接推动了开源模型的大爆发。却是如此,正是有了这种跑在普通电脑上的平民化技术,现在不管是中小企业的 it 团队,还是实验室里的学生,只要你想,你就能去搞个优秀的开源模型,插上属于你的数据 u 盘,轻松搞定各行各业的专属领域专家。咱们今天的解析也差不多到尾声了, 其实从一开始那个高不可攀的算力门槛,一路聊到像外界 u 盘一样精妙的 lora, 再到用家用显卡就能跑通的 q lora, ai 技术的指挥棒现在已经实实在在的低到了我们每个人的手里。 那么留给屏幕前你的问题来了,当门槛已经彻底消失,任何人都可以在自己的电脑上随心所欲的训练专属 ai 时,你打算用你的 u 盘去装在怎样一个新世界呢?去动手试试吧!非常感谢大家收看这一期的深度解析,我们下期。

我训练这个本地的大模型,终于快训练好了,看到没有,现在已经跑到七百九十九了,等跑到一千就训练好了。 原来这个训练过程是非常曲折的,我在本地第一次安上之后啊,他跑了一会就停了,跳出来了,没有发出来任何的错误通知 啊,没有提示,我就不知道到底是哪里出了问题,怀疑显卡显存不够,怀疑内存不够,最终看了看, 好像是内存不够,因为内存都超过三十二 g 了,但是我开的有虚拟内存,开了有七十多 g 啊,好像虚拟内存也被占满了,因为硬盘的容量,呃,就是被用完了, 我没有办法,我就在阿里云买了一个云的 gpu 服务器,用 l 二十这种, 他可以按小时计费,一个小时就收将近十五。昨天晚上我上传东西,又安装环境,安装了半点,我的充的一百块钱就花的剩了二三十了, 我才弄好了一半,我一看这个情况不行啊,我要弄好之后要花几百块钱,我不想弄了,我再尝试一下。在本地,我感觉本地优化一下,精简一下,应该可以跑通。于是今天上午我就在本地有反复的研究, 最终把这个训练工具给他阉割了一下。原本这个训练工具,他是边训练边生成一个 测试程序,就是生成一个测试视频,这个测试视频是用来验证你这个模型训练的可以不可以的。现在我做这个,把训练的时候同时生成测试视频这个模块给它阉割了, 我只训练好。训练好之后,我把训练好的模型放到我的 lara 目录里,我生视频的时候再验证,我不用在他训练的时候边训练边验证,这样我的资源占用就没有那么多了。现在才可以跑了, 我估计跑完之后就可以用了。等到跑到一千的时候,我把训练文件拷贝到 com 斐的 lara 目录,把这个节点加载进去, 我找一个提示词写进去,看生成的是不是我训练的数据。等一会吧,看能不能成功。

大家好,这一期我们要做一个非常有性价比的事情,我们用混元 v 六一点五完整跑通了一套 lol 模型的训练流程,只用了十六 g 显存,大概三个小时就完成了一万步的模型训练,最后可以说效果非常不错, 那这期视频我们会带你一步一步走完整个流程。首先我们会先给大家看一轮训练完成后的实际效果演示,看看这个 logo 模型在画面一致性、风格保持、人物稳定性上的真实表现,用结果说话。接着我们会详细拆解数据集准备原则,怎么 选图,怎么让模型学到指定的内容,怎么进行标签标注。然后我们会讲清楚配置文件该怎么修改,哪些参数最关键,哪些参数可以无脑跟随。 最后我们会手把手带你完成整套训练过程。如果你也想训练自己的 lua 模型,又担心门槛高或者显存不够,那么这期视频一定会帮你少踩很多坑。想要深入学习康复 u i 的 小伙伴,欢迎加入小黄瓜的知识星球,星球汇聚了两小时入门,十二小时进阶工作流竹节点拆解等高质量课程, 后续持续更新 lara 训练康复 ui 云端教程等实战内容,每节课后有客户作业答疑群和每月直播辅导进阶学员可参与 ui note 攻坚计划,实现技能变现,内容丰富。感兴趣的小伙伴可在视频剪辑区联系小助理获取优惠加入。话不多说,我们直接开始本节的内容。哈喽,大家好, 今天这节课我们主要来学习一下混元一点五视频生成模型,他的一个裸眼模型训练,那当前大家看到的这个页面就是我自己训练出来的裸眼模型跑出来的结果,其实词写的比较复杂,写的是一个角色正在车里面开车,然后这里用到的就是我自己训练的关于混元一点五的裸眼模型, 可以看一下最终的效果,这是最终生成的视频哈,可以看到他的风格化还是比较突出的这种水墨画的风格,然后以及这个角色呢也是我个人做的自己这种风格的转会哈,那我们先看一下数据集, 数据集当中我准备了大概二十多张图片,他的训练速度非常的快啊,大概三四个小时我们就完成了一万步的训练,最终就输出了一个 l 模型,然后选择了最后输出的这个,然后跑了。当前这个视频我们可以先看一下数据集的内容,里面的角色是统一的, 都是戴着眼镜的这种水墨画的风格,并且他的风格呢也是统一的。那么图片当中这个角色可以看到除了他的形象之外,还有风格的一致,除此之外他的一些动作,包括穿着以及他的背景都是有所区别的。那这个主要就是我们数据集准备了,稍后我们会给大家讲一下, 所以说通过这二十多张图片的观看啊,以及观察,我们可以发现,就是在训练这个 low 模型之前,我已经知道了,那这个 low 模型训练完之后,我要让它生成的就是这个相同的角色,然后相同的水墨画的风格, 然后生成这个角色各种各样的一个场景,是动态的一个场景,因为我们训练的是混元一点五视频的 logo 模型,对吧?那么我们最终看一下效果哈,然后跑出来了几个案例,这个是当前我们可以直接看到的,然后这里是我刚才跑出来的大概五个效果,这个画面呢,写的就是这个角色正在电脑面前处理一些问题, 可以看到这个角色的形象,包括我们整个画面的风格都是没有问题的。然后再来看一下,这个写的是正在喝咖啡, 那么角色依然是一致的,而且是动态效果,而且是拥有动态效果的。这个写的就是在过圣诞节,然后穿着圣诞的服装。 其实我们在训练一些 lower 模型的时候,如果大家训练的是一个角色的 lower 模型,不管你训练的是纹身图,或者说纹身视频, 或者说编辑模型,然后你都会发现,当我们训练完一个 logo 模型,让他学会了某个角色的特征之后,如果你用这个 logo 模型去生成一张图片,里面包含多个角色的时候,那么这些角色大概率都是长的一样的。这是现在 logo 模型可能面临的一些问题, 比如我们这里说这个人正在过圣诞节,然后呢他的旁边会有一个其他的人,然后这两个人他们长的都是一样的,就是我们训练的这个角色。然后我们再来看一个场景,这里写的就是这个人正在过春节, 可以看到这是最终的效果啊,而且有血,这个人呢就拿着红包。那么从这一些效果可以看到哈,就是我们拉尔模型训练的结果,他是相对来说比较不错的,他首先呢能根据我们的静态图片,你看一下数据集哈, 他首先能根据我们的静态图片去学到应该学到的特征,比如说保持角色的一致,然后包括保持我们画面风格的一致,然后学到了这两点之后呢,我们能够把它放化到各种各样的场景当中, 比如说这个人正在开车,或者说坐在电脑面前,以及他穿着这些圣诞节的服装,那么这些内容在我们的数据集里面都是没有的,而且能够让这个角色动起来,但是在我们的图片里面,他是没有这种动态的效果的, 所以说呢,也就是火源一点五视频生成模型的能力,再加上我们 lara 模型训练出来的两个主要特征给它合并到了一起,然后给我们最终生成了一些可用的视频,就是这样的效果。所以大家在准备自己数据集的时候,一定要在训练 lara 之前,就非常明确地知道 自己想让 lara 模型学到的特征是什么,比如说是角色一致呢?还是说风格一致呢?这些都是可以的,那么这个呢,就是我们刚才大概看到的一些效果演示哈。然后我们训练用到的工具呢,就是 diffusion pipe, 这个工具在 github 上面,我们直接搜索 diffusion pipe 就 可以找到。 当前呢在 ai tokyo 里面还不支持混元 v 六一点五视频的训练,所以说我们需要安装这个 diffusion pipe。 那 么在正式开始训练之前,我们需要进行以下的过程哈, diffusion pipe 它需要用到 deep speed 的 这个环境包,所以说我们必须要在 windows 里面安装一个 linux 子系统,也就是五版图的子系统, 那么这个安装过程我们就不用多讲了,大家可以在网上稍微搜索一下就能够找到。当我们安装完乌班图的子系统之后,就是到达这样的一个界面里面哈,然后在乌班图子系统里面,我们需要把整个项目进行一个下载,也就是 git clone, 下载完之后呢,把它的子项目也进行一个下载, 下载完之后需要在乌班图里面安装我们的 mini kata, 也就是虚拟环境。那么当前可以看到我打开的乌班图里面,在前面都会有一个 diffusion type, 就是 安装完 mini kata 之后,我们需要去创建一个用来进行 lua 模型训练的环境, 然后创建环境完之后,然后就去安装相应的环境包,比如说 torch torch vision 这些,然后以及需要跟英伟达显卡配合的 n v c c 的 一个驱动, 然后后续呢我们安装该环境,也就是该项目 diffusion pipe 需要用到的一些环境包就可以了,通过 p i p install 杠 r requirements, 也就是从上到下一步一步的进行操作即可进行安装。那么这里我们也不重复多讲了, 大家可以看一下之前关于万象视频模型训练的 diffusion pipe 安装教程,包括我们的无版图子系统的安装教程,那么这些内容呢,都是比较简单的按步进行操作, 然后保证自己的网络没问题,能够成功的下载安装环境包即可。那当我们处理完这些内容之后,我们需要后续要进行的就是一些重点内容了, 比如说我们数据集的准备,以及我们配置文件的配置,包括我们模型往哪里放,以及我们的数据集往哪里放。那么接下来的内容呢,我们就重点讲一下以下的几个过程哈。那么当大家在自己的电脑里面装完 diffionpap, 装完无斑图的子系统之后, 在你的此电脑当中左下角会出现一个 linux 的 标志,那么它代表的就是乌班图子系统对应的文件系统,我们点击就可以打开,然后在这里呢就可以像 windows 一 样进行一个操作,比如说在乌班图当中,我们双击打开,这就是我创建的这个乌班图子系统。 然后呢在 home 这个文件夹里面,我放置好了相应的一个模型,然后包括我们训练所需要用到的一些环境等等一系列的内容。那么我们首先看一下在 flower 当中是我训练出来的模型的结果,我们看一下最后一个,这就是我们最终训练出来的这个 logo 模型哈,然后我删除掉了一部分不使用的 logo 模型。 然后我们可以看一下啊,大概在一千八百四十三步的时候,我们是在五点二十五完成的,然后在九千步的时候是在七点二十五完成的, 所以说大概两个小时我们就完成了接近八千步的 low 二模型训练。所以说当我们使用的数据集是图片的时候, 那视频模型的 low 二模型训练还是非常快的哈,速度很快,我们大概两三个小时就能拿到结果。然后呢另外一个文件夹 models 就是 我存放混元模型的位置,大家可以跟我一样放在这里,或者说你放到其他位置都是可以的。然后可以看一下我们需要准备的模型,跟我们在 comfui 里面需要用到的模型是完全一样的。 克利普模型一共就两个,一个是千问二点五 v l 文本编码模型,还有一个是 b i t 五的文本编码模型,然后 diffution model 呢,我基于的是混元一点五七二零 p text to video 的 模型,那这里呢,大家可以自己选择,比如说你选择一个四八零 p 的 也是可以的。然后目前也就是 diffution pop 官方支持了混元一点五的 text to image 和 text to video 两种训练模式,所以说我们现在还只能训练纹身视频的 low 二模型。 再往前一个文件夹,看到 v a e 模型,就是我们会员 video 对 应的 v a e 模型,所以说它跟我们在 comu i 里面用到的一样,大家可以直接把它复制粘贴过来,然后这个 s s x 四零九零这个文件夹就是 diffusion pipe 对 应的一个训练环境。然后呢还有我们这里对应的数据集,这个数据集就是我用到的图片的数据集。 那么接下来呢,我们来讲一下数据集里面标签标注的一个重点,比如说我们打开第一张图片,然后呢我们再打开第一个图片对应的标签,这个跟我们进行图片的数据集准备是一致的。如果说大家之前看过 low 二模型训练的教程的话,那么这些内容可能是有印象的, 我们这里再重复一遍。首先刚才我们已经从宏观的层面看了我二十六张图片,他大概的一个内容,那么我们从中间可以总结出他们相同的一些特征啊,比如说相同的一些规律,这些图片当中相同的规律有什么呢?首先他是同一个人物,其次呢他都是水彩画的这种风格,对吧? 那么不同的地方就很多了,比如说人物的背景啊、服装啊等等一系列的内容。那么这些呢,我们可以把它做个区分哈,也就是相同的把它标在一起,那么不同的把它标在一起,这是关于我们在图片当中的一些内容。 那么其次呢,我们来看一下文本当中的一些内容,如果说我们想让模型把相同的这些特征给它学到同一个词里面,我们就需要在所有的标签当中给上同一个词。 比如说文本这里我写了 s s x, 他 穿着一个黄色的上衣,然后呢在这里赛车,也就背景有一些赛车等等一系列的内容。那么这里呢,我们没有写水墨画的风格, 所以说在当前的提示词当中,我们统一的内容就是 s s x 这个作为我们的出发词,那除此之外,这些背景我们就详细的给它描述出来,也就是这些不同的内容给它描述出来。所以说在这样的第一组数据当中,也就是文本和图片当中,我们可以有以下的一个对应关系, 也就是相同的内容对应上了相同的一个词,不同的内容,我们用不同的词给他进行了一个描述,这是我们第一组数据集里面的内容,那么后续的数据集我们也都这样去进行一个准备,所以说在整个内容当中,或者说在整个标签的标注当中,我们的核心点就是想让 同一个人,然后以及相同的水彩画的风格这两个特征给他学到 s x 这个词里面。那么当模型把这两个特征学到了这个词里面之后呢? 我们在进行视频生成的时候,你就可以只用这一个词去表达我们画面当中的角色以及它的一个风格特征,除此之外其他的词就不会对我们画面当中的角色以及它的风格产生过多的影响。比如说我们可以看一下生成的时候我们用的内容,这里我们做对比会比较明确。 比如说在这里生成的时候,我们整个提示词当中没有出现跟风格相关的内容,那么我们可以再来看一下,放大来看一下提示词,这里有一个 s s x, 然后说他正在车里面,然后这里呢还有一个 s s s, 然后这里还有一个 s s s, 所以 说这个词就是我们的出发词, 通过写上这个词之后,我们就可以让画面当中的角色以及他的风格去保持一致了,那么这个就证明我们的 logo 模型训练他是没有问题的,他是把我们想要的特征学到了词里面的, 那么我们可以看一下更加直观的一个提示词的书写方式啊,或者说更加直观的一些表达。比如说这里有一些之前我用简单提示词生成的内容,我们可以先看一下这个效果啊,我写的是他正在跑步, 可以看到这个角色以及他的风格是没问题的,他正在跑步,那么这里背景之所以有一些弧呢,是因为在生成的时候啊,这里的数据 给了一些问题哈,也就 c f g 值,我们应该给高一点哈,所以说这个画面当中可以看到角色的运动是呃没有太大问题的,而且它确实在跑步,而且它的风格以及角色的一致都是没问题的。那么我们可以看一下提示词, 提示词写的很简单,就是 s s x is running in the road, 而且正在路上跑步,我们没有写这个角色戴着眼镜,我们也没有写这个角色戴着项链, 我们也没有写这个整个画面的风格,它是一种水彩画的风格,但是呢,它却给我们生成了我们想要的内容,说明我们训练完的这个 logo 模型,它确实根据风格,然后以及角色的形象把它学到了这个词里面。 那除此之外还有一些其他的,我们可以大概还是先看一下效果,然后再来看它最终的一个提示词,这里写的就是它正在唱歌哈,然后我们来看一下它的提示词,提示词依然很简单,这个角色正在唱歌,所以说通过我们 去生成,然后就发现了模型确实是学习到了我们想要的东西,并且把它学到了我们指定的词里面了。那后续我们去调用这些能力的时候, 就不需要再在后面写很多的。整个画面是水彩画风格呀,以及这个角色戴着眼镜啊,同时他还戴着项链啊,然后他是什么样的发型啊等等一系列的。这个我们不需要写了,他已经学到了这个词里面了, 那么我们再来看我们的数据集,刚才根据我们的第一组讲了数据集标注的一个原则,那么我们再来看第二组,那么这里依然是水彩画的这种风格,同时是统一的一个角色,戴着眼镜,同时带着项链, 然后看一下提示词的标注,提示词的标注依然还是相同的,我们再在这里给它写上,那么在图像的领域还是两个,一个是相同点,一个是不同点, 那他们的相同点是相同的,就是同一个人物,然后同一种风格,那么不同点呢?还是啊,比如说人物的着装啊,背景啊,表情啊,动作啊等等一系列的内容, 而且这些内容呢是我们不希望被他学到的。如果说我们生成的角色,他只能穿一套衣服,那可能就不符合我们的要求了,我们只需要他是同一个角色即可,他最好是能换不同的衣服,能换不同的动作,能换不同的表情,能在各种各样的场景之下,对吧?所以说那这些内容呢,我们就不能把它在数据集里面表现的相同, 那么相同点还是跟我们的第一组数据集一样,同一个人以及同一个风格。然后我们看提示词,提示词写的 s, s, x 正穿着一个白色的衣服,怎么怎么样,正在操场里面都没有写它的风格,对吧? 那这个时候我们可以再对应一下相同点,我们依然需要模型,把它学到这个词里面,那么不同的点,我们就通过了提示词把它写了出来, 对吧?那这里要注意哈,图片当中的相同点,我们只有这相同的一个,也就是同样的人物啊,同样的一个风格。那么再来看下一组数据集,这里还是依然写上我们的图片,他依然是同一个人物,同一个风格, 那么他的不同点呢?依然是不同的着装,然后不同的背景,不同的动作等等等一系列的。那么在出发词里面呢,我们可以看到还是 s s x, 他 正在做饭,然后呢穿着什么什么样的衣服, 那么依然是在相同点里面,我们都给到了这个词,不同点里面呢,我们通过详细的文本进行了一个描述,所以说我们后续整个二十多张图片,你可以写的不复杂,没有问题。提示词可以写的很简单,但是标签呢,一定要把重点突出出来,那也就是所有的标签当中,我们都有一个词叫做 s s, 那么它对应于我们图片领域,也就是视觉领域,都是相同的两个特征,一个是同一人,一个是同一风格,就这样,那这样的话,模型它就能够根据我们的图片的内容去把它学到 s s x 这个词里面。 那除此之外其他的内容呢?比如说我们图片当中,他穿着不同的衣服呀,以及他处在不同的背景啊,他有不同的动作呀,还是我们不同的镜头啊,以及图片是不同的分辨率啊,以及角色有不同的表情啊,等等一系列所有的内容,只要保证他不同就可以了,这样的话模型就不会因为出现额外的特征而把它学到这个词里面,那就是这样的一个原则。 所以基于上述的内容,我们准备了二十六张图片,以及二十六张图片对应的二十六个标签,那这个呢,就可以作为我们的数据集去完成使用了。 如果说你想让最终生成的视频当中人物的动态特征更多一点,那我们就可以在数据集当中再加入一些视频也是可以的。我们的数据集呢, 它是可以只有图片,或者说只有视频,或者说是图加视频都是可以的,那么他们的标签标注原则也基本上是一致的,就是把相同的特征用一个词来表达,那么不同的特征我们就通过提示词给它写出来 就可以了,那这个呢,就是我们数据集准备的原则好吧,那么当我们准备完数据集之后,大家还是把它放到对应的一个目录里面就可以了,你可以把它放在当前位置,也可以放在其他位置,都没有关系的哈,但是我建议呢,你就放在 linux, 也就是无版图子系统对应的文件夹系统里面。 然后接下来我们看一下配置文件,也就是怎么样去让训练的过程能够找到我们的模型,以及找到我们的数据集以及最终输出的 log 模型,能够输出到我们指定的文件夹。首先呢,我们打开自己 diffusion pipe 对 应的位置哈,然后在 diffusion pipe 当中会有一个文件夹叫做 example, 在 example 里面我们可以放置自己的两个配置文件,然后下面这个是我们训练的配置文件,然后上面这个是我们对应的数据级的配置文件,那么训练的文件在运行的时候,它会左引到数据级的文件,也就它会连接到数据级的文件,然后再根据数据级的文件去连接到我们对应的数据级哈, 那同时呢,训练文件它会在里面给我们指代最终你输出的 l 模型位置在哪里,这是两个配置文件它的一个核心, 那么我们首先就先看一下会员 video 点 t o m l, 也就是训练的配置文件,我们双击打开哈,在这个配置文件里面,我们可以不用太复杂的去进行一个设置,那么里面有很多的内容,只要你的数据局准备的没问题,那么参数按照默认的设置,他就可以拿到不错的一个结果啊。 我们从最上面开始看,首先有一个 output d r r, 这个指的就是我们输出的 lo 二模型所在的位置在哪里?我们可以看一下我自己的本地哈, 我把它配置的就是在 home 文件夹里面的 flower 文件夹,你看可以看一下在乌班图对应的 home 文件夹里面的 flower 文件夹,那这个呢,就是我们最终训练的 logo 模型它输出的位置,那大家在这里可以自己进行一个设置,或者按默认按照我这里进行一个设置哈,那这个 flower 文件夹呢,你是需要事先在这里进行一个创建的, 然后呢,这里会有一个 data set, 也就是我们的数据集所在的位置,那数据集所在的位置,我们不是直接给出这个数据集文件所在的位置哈,它给的是数据集对应的配置文件所在的位置,也就是我们刚才看到的两个配置文件其中的另外一个, 也就是 data set 混元 v 一 点五,这个点 to m l, 也就是这个文件夹,那它所出的位置是在 home 当中, s s x 四零九零啊,这个可能根据大家自己的 五版图的命名不同会有区别,大家可以自己进行设置哈,不用完全一样。然后呢,这里是 diffusion map, 然后是 example, 然后里面是 data set 混元 v 一 点五,点 t o m l, 也就是这个文件, 那它俩呢,是一一对应的。然后呢,这里会有一个 epoch 哈, epoch 指的是我们训练的总轮次,这里大家一般给到一千就可以了,因为你可以让它一直在训练,训练完的过程中呢,它会不断的给你输出中间的 l 模型。最后可以测试哈,你觉得哪个效果好,你就用哪个就可以了,所以这个值你可以把它设置的很大,因为你可以把它挂一晚上嘛,对吧? 所以说这个值呢,建议大家可以给的大一点,然后挂一晚上。挂一晚上之后呢,第二天你就选择一些你自己想要的 logo 模型,然后去测试,测试完之后哪个效果比较好,你就保留哪个就可以了, 所以这个值呢,你可以给的很大哈,没有问题。然后下面有一个 micro batch size per gpu, 这个我们按照一就可以了哈,然后这个指的是多 gpu 的 运行,我们这里都给到一就可以了哈,不要给多了。 然后这个 accumulation step 指的就是积累多少次去调整一次我们 low 模型的参数,那这个呢,我们也是给到一,也就是让它每一次运行的时候都把参数进行一个调整,或者说看一次数据仪就调整一下参数这样的过程, 那这些值呢,我们按照默认即可,大家不要去修改它哈,然后这有个 gradient clip, 这里我们还是给到一哈,也不用去管它这些值呢,只要你数据集准备的没问题,最终的 low 模型大概率没问题,所以说这些值我们不要把它改的特别离谱,好吧,就默认就可以了。然后这个 warmstep 我 们也给到两百就可以了,就按照默认来, 因为这些呢,说实话就是只要你的数据集没有太大的问题,它对最终的质量按照默认的参数不会影响特别大 好吧,除非说你这些值给的很高很高,或者说已经到了特别离谱的一种程度了,那最终训练出来的 logo 模型可能都不能生成正常的视频哈, 所以说呢,这些按照默认即可。然后这些内容呢,也是按照默认去进行一个设置哈,也就是这里的值我们不需要去改它,然后这里是评估的过程哈,我们不需要去改它哈,然后这里呢是保存的方式哈,最上面可以看到我们设置的 epos 是 一千, 然后我们给的 save every n epoch 指给的是五,也就是它每训练五个 epoch, 也就轮次,它每训练五个轮次就会保存一个中间模型,那么可以看一下我这里输出的在 home flower 当中,我们刚才讲过了,对吧? 然后这里呢,它三百七保存了一次,三百七十五,三百八,三百八十五,三百九,所以说它每五轮都会给我们保存一个 l r 模型在这中间, 那最终训练完之后呢,大家就可以选择其中的一个去进行测试,那它可能在三百七保存就是效果比较好,在三百九呢就不好了,那你就可以用三百七这个,所以说这些呢,也是大家在训练完之后去测试,然后哪个效果好你就保存哪个,然后这里有个 checkpoint 保存的,那这里是时间,每三十分钟它保存一个,也就是下面这个 global, 这个它是按照时间去进行一个保存的,这里我们也不用多讲了,好吧,然后这个 activision 也就激活,也就 checkpoint 大 模型参数的激活,这里我们就给出就可以了,好吧,按照默认参数来,不要去改它, 然后这些呢都按照默认参数来哈。这个 cashback size 指的是缓存一个,然后去训练一个,缓存一个,训练一个,这个我们也不用去管了,就按照默认来,为了大家在尽可能低的显存里面去进行一个训练,这些值我们就不用给它很高, 好吧?然后这些值呢,我们也按照默认来,好吧,就需要我们改的这些参数,大家只要重点记住就可以了。然后在下面这个 model 这个位置需要我们重点去关注一下,因为它是需要去加载我们模型的。 我们先回到刚才给大家讲的模型放置的位置,我放的是 home 里面有一个 models 文件夹,这里 clip 指的就是 clip 模型,然后 diffusion model 模型以及 v 一 模型一共就三个文件夹,那么三个文件夹里面我们就需要把模型在配置文件里面按照路径给出, 比如说这个 type 指的是你当前训练的这个 l 模型是基于哪个底模去做的?然后我们就选火源 v 六 e 五就可以了,就按照这个值,这个一点不能改哈,如果错了的话,它就匹配不上了。 然后 diffusion model 指的是我们的底膜,底膜的话我可以看到当前的位置是在 home models, 然后 diffusion models 这里有个浑源 video, 对 吧?这是我们对应的模型, 那我们就把这整个路径给它写在这里,从 home 开始 home models, diffusion models, 这里 diffusion models, 然后是浑源 video 一 五这个七二零 p 模型,把它写在这里就可以了。然后 v a e 模型呢?也就是我们这里的 model v a e 当前这个模型所在的位置, 那么也是在 home models v e 混元一点五,对吧?然后接下来是 text encoder, 也就是我们的文本编码模型,那它是在 models, 然后 clip 当中,然后可以看到里面有两个,所以说在这里呢,我们给两个,然后这个 type 我 们按照默认就可,就是混元 video 一 点五的,然后剩下的这个 detype 包括 diffusion model type, 我 们不要去改,它就按照默认就可以。 然后这个 time step 呢,也按照默认,好吧,不要去改,然后 shift, 我 们也按照默认,不要去改,它就给到三就可以了。然后接下来这些我们也不用去改哈,这里指的是 loar 模型,也就是你训练的是什么是 loar 模型,然后它的 rank 呢?是四十八,这个值越大,你的 loar 就 越大,越小你的 loar 就 越小。一般情况下, 只要你的数据集准备的没问题,它的标签标注的够清晰,那么模型学习的过程就不会特复杂,所以说这个 rank 值给到四十八是完全足够的 好吧,不要再去改它了。然后这个 dropout 我 们就给零点零点五,这指的是在它训练的过程中会让多少参数进行一个失效,会降低我们模型过拟核的问题 啊。所以这个值我们也按照默认就可,不要给太多,也不要给太少,就按照零点零五给就可以了。然后 d type 指的默认类型我们还是给 b f 十六就行了,不要去改它哈。然后剩下这些我们也不用改了。 operator 指的是我们的优化器里面去怎样调整我们的学习率啊, 以及调整我们的学习过程,模型的学习方向,这些内容我们不要去改它啊。所以说在整个配置文件当中,需要大家修改的位置就是你的输出 loo 模型是输出到哪里,然后你的 data set, 也就是你的数据集它的配置文件在哪里,然后以及你每多少步保存一个 loo 模型,这个你可以改一下。 然后还有就是你的模型放置的位置,那就是这些。除此之外其他的内容我推荐大家不要改,那么这些配置文件呢?我也会在视频的剪辑区的网盘里面给大家提供哈。然后我们再来看下面一个配置文件, 叫做 data site 混元 v 一 点五,也就是这个我们的数据集的配置文件。打开数据集的配置文件之后,我们可以看到首先有个 resolution, 我 们给到七二零就可以了,这个大家也不需要改,也就是你的数据集在进入模型训练之前,它会进行一些 尺寸的设置,那这个纸你就给到七二零就可以了,不要去改它哈。然后这个分筒我们也给它处,不要去改它,然后这个命和 max 我 们也不要改, 好吧,那这里面有个 bucket, 也就是还是桶的数量,给到七,也不用去改它哈。这里有个重点,就是这个 pad 指的就是你的数据集的路径,这里是需要改的,你要根据你数据集所在的位置去进行修改。比如说我的数据集是在 home 文件夹里面的 s s x data set 就放在这个位置,然后这个 number repeats 就 我们就给到一就可以了。它指的是你每张图片训练多少次算一个轮次。比如说我们这里给的是一,那么我们一共二十六张图片,那所以说二十六乘以一就是二十六,就等于一轮了。如果说你这个是二,那它就是二十六乘以二, 所以说就是五十二才算一轮了,就是这样的一个过程,所以这个值呢?你还是给到一就可以了,不要去改它哈。然后这个 resolution 以及 frame bucket 我 们不用去改,所以说在整个数据级的配置文件,我们只需要给出数据级所在的路径就可以了, 也就是这个 pad 给出就可以了。那这个时候我们完成了模型的放置,完成了模型的加载,完成了数据集的配置,完成了数据集的加载, 我们就直接可以开始训练了。训练是这样的一个过程哈,首先我们打开无版图,在无版图里面可以看到,如果你刚打开它所处的这个环境是 base, 也就是基础的一个环境,我们需要先用康大的命令去激活我们对应的训练脚本所用到的一个环境, 我们这里就激活 conda active diffusion pipe, 那 这个呢,就是训练环境叫做 diffusion pipe, 按回车可以看到激活完之后这一行我们叫做命令行哈,命令行的前面就变成了 diffusion pipe, 也就是说我们当前所处的环境就是训练的环境。然后呢 我们可以进入到 diffusion pipe 这个项目对应所在的文件夹,然后用 cd 命令可以打开 diffusion pipe 这个文件夹,按回车就可以了进来,然后 l s 我 们可以看一下在当前位置,那当前这个位置其实我们可以在这里看到哈,就是在 home s s s 四零九零。然后 diffusion pipe 也就是在这个位置里面, 然后就可以通过训练命令去启动训练了,然后我们可以到 diffusion type 的 tab 地址往下拉,可以看到它的启动训练命令长什么样子。是这样的,这是它的体重训练命令哈,我们可以把它复制, 复制完之后在这里粘贴上,然后前面的这些我们都不需要改,然后这里会有一个 example, 指的是从哪个配置文件开始我们的训练, 还记得我们刚才的配置文件叫什么名字吗?可以看到它最后指代的路径是在 examples 当中,然后有一个混元 video 点 t o m l, 可以 看到混元 video 点 t o m l, 跟我们的当前这个名称是完全对应的, 所以说这个命令呢,我们就可以直接运行,然后完回车,那这个时候可以看到它就已经呃在进行我们的训练前的准备了,可以看到已经在开始了,然后我们可以看一下自己的 显存还有内存,他应该是在逐步上升,也就是模型加载开启训练的过程。好的,可以看到现在已经将模型往显存加载了,可以看到这里就已经开始训练了, 非常的快哈,他一步差不多只用零点九秒,也就是不到一秒的时间就可以完成我们一步的学习,那么这里就已经开始在不断的进行训练了, 那么在训练的过程中呢,它就会给我们创建对应的一个文件夹,在输出的位置,比如说这里的 flowers 当中就给我们输出了一个一二二九零八,这个是今天我刚在训练的这个文件,可以看到在四点四十三才刚创建的,然后这里呢它就开始把配置文件输出到这个位置,然后不断地进行模型的学习了, 然后可以看到这里我们的显存占用呢是十五点二 g, 所以 说大家低于十六 g 的 lo 二模型训练, 然后这里呢是内存的一个占用,大概到了八十七个 g。 那 接下来呢,我们就是等待了,等个大概两三个小时就可以完成 lo 二模型的训练, 然后输出之后,大家就可以直接在 comui 里面通过这样的一个工作流完成我们 lo 二模型的加载,去输出最终的一个视频,就可以在提示词里面去进行一个实验了。 好吧,那这样的一个工作流,包括我们用到的模型工作流以及配置文件,我都会在视频剪辑区的网盘里面给大家提供,大家可以到时候自己按照视频的教程去完成对应的一个放置,然后去进行一个数据级的准备,然后去训练一个属于你个人的 lua 模型。 那么今天关于混元 video 一 点五的 lua 模型训练,我们就先讲到这里,如果说对 diffusion 系统的安装,然后包括 linux 系统的安装还是 不太熟练的同学可以回看我们前面讲过的万象的视频拉尔模型训练的教程,在里面非常详细的去讲解了我们整个部署的过程。那今天呢,我们就先讲到这里,感谢大家。

大模型微调怎么理解它?就像是你已经有了一个很聪明的通用模型,现在想让它更适合某一个具体任务,比如更会写客服话术,更懂公司业务,更像某个固定风格,或者更擅长某类问答。那微调的完整流程到底是怎样的?我是小哲,点赞收藏加关注,我们马上开始很多内容查看橱窗! 第一步,先明确微调目标。这一步非常关键,因为不是所有问题都适合微调。如果你的问题是模型不知道某些知识,比如公司制度、产品文档、最新资料,那很多时候应该先考虑 rag。 但如果你的问题是模型输出风格不稳定,回答格式经常不对,某类任务总是做不好,或者你希望他按照固定模板、固定语气、固定思路输出,这时候微调才更有价值。所以微调前先问一句,我到底是想让模型知道更多,还是想让模型表现的更像我想要的样子? 第二步,准备训练数据微调最核心的不是算法,而是数据。常见的数据格式其实很简单,就是一组一组的输入和理想输出。比如用户问一个问题,你给出一个标准答案,或者用户给一段需求,你给出一段符合要求的回复。模型就是通过这些样本学习你希望它如何回答。 这里最重要的不是数据越多越好,而是数据质量要高。一百条非常标准、非常清晰的数据,往往比一万条混乱数据更有用。数据里面要尽量避免答案前后风格不统一,格式一会这样,一会那样,错误答案混进去,低质量水文混进去,因为模型会照着学,你喂进去什么,他就学成什么。 第三步,清洗和格式化数据。很多人微调效果差,不是模型不行,而是数据太脏。比如同一个任务,有的答案很短,有的答案很长,有的用口语,有的用书面语,有的带解释,有的只给结果,这些都会让模型学习到混乱的模式。 所以在训练前,需要把数据整理成统一格式,比如统一成用户指令是什么,上下文是什么,标准回答是什么。如果是对话模型,还要整理成多轮对话格式。这一步的目标是让模型清楚的知道在什么输入下应该输出什么样的内容。 第四步,选择微调方式。常见有两类,一种是全量微调,也就是改动模型的大量参数,这种效果可能更强,但成本很高,对显卡数据量和训练经验要求都比较高。另一种是参数高效微调,比如 laura, 它不是直接大规模改模型本质,而是在旁边加一些小参数,让模型学会新的行为。 lora 的 好处是成本低,训练快,部署也更灵活。所以在大多数业务场景里,尤其是个人开发者和中小团队,通常会优先考虑 lora 这类方式。 第五步,开始训练。训练过程本质上就是把准备好的样本一条条喂给模型,让模型先自己生成答案,再和标准答案对比,然后不断调整参数。 这里会涉及一些训练参数,比如学习率、 p 词大小、训练轮数。但初学者先记住一个原则就够了,不要一上来就训练太久,训练太少,模型学不会,训练太多模型可能过拟核,所谓过拟核,就是模型把训练数据背下来了,但遇到新问题就不会举一反三了。 第六步,评估效果。微调完不是直接上线,而是要测试测试级,最好不要和训练数据重复。你要拿一些模型没见过的问题去问他,看他有没有真的学会。 主要看几个方面回答,格式是不是稳定,风格是不是符合预期,错误率有没有下降,有没有出现胡说八道,有没有牺牲原本的通用能力。很多时候,第一次微调效果不会特别完美,这是正常的。微调是一个迭代过程。 第七步,根据结果继续迭代。如果模型还是不稳定,可能要补充更多高质量样本。如果模型达的太死板,可能是数据太单一。如果模型开始胡说,可能是数据里有错误,或者训练过头了。如果模型格式经常错,可能要增加更多格式视力。 所以微调不是一次性工程,而是一个循环,定目标,做数据训练评估,再改数据,再训练,最后模型才会越来越接近你想要的效果。 所以总结一下微调的流程其实就是七步,先明确目标,再准备数据,然后清洗格式化,选择微调方式,开始训练,评估效果,最后不断迭代。 真正决定微调效果的,不是你用了多高级的模型,而是你的目标是否清晰,数据是否足够干净。一句话总结,微调不是给模型灌知识,而是教模型按你的方式做事。这也是为什么在很多业务场景里,微调和 r a、 g 不是 互相替代,而是经常一起使用。