粉丝28获赞22


英伟达刚出的那个驱动就是那个更新的。最新的驱动啊,不是更新的大力水手四点五模型吗?我研究了一整天。我靠,前几天在开会,更新完之后我也没有去研究它,然后今天搞了一整天,终于找到最好的方法解决了,大家可以看我现在帧率, 四 k 三百帧哦,三百二看到吗?靶场?虽然是啊,但是有兄弟都知道,一般靶场跟实战的帧率差的不多,对吧?然后我以前四 k 就是 跑到二百四,跑到二百四,那怎么去用这个帧率用这个驱动呢?很简单,更新到 五九五九幺点七四,就这个最新的支持四点五的。然后呢,在他这里不要选 l 模型。选择什么?选择 m 模型, l 模型是 l 模型是适合非四 k 显示器的, m 模型是性能,然后是提高帧数的,四 k 显示器就选这个。呃, m, 然后就没什么问题,看到没有?五零八零五零八零显卡,其他的我还没有试。

想拥有一个自己的大模型,但不知道怎么下手,别慌,这个视频教你从电脑开机开始,带你一行行手敲代码,全程实操,微调出一个专属于你的大模型,新手小白也能轻松拿下。 好,那么在讲解整个项目之前的话,先简单给大家介绍一下,那么我们整个微调训练的这样一个算力平台啊, 因为我们本地的环境的话,那第一个因为它配置比较低啊,然后跑起来的话,这个时间的话会更长一些,因此的话,我们给大家去选择了一个免费的算力平台啊,也就是 model scope 啊,摩达社区, 那么在这个平台当中的话,他给每个人啊都有提供啊,对应的这样的一个算力啊,那他有一个额度的一个限制啊,然后他的这个配置的话,是一个显存是二十四 gb 的 啊,完全是够用的啊。 所以的话,我们在这个平台当中啊,那我们可以去完成我们整个模型训练的这样的一个过程啊,在本地啊去进行编辑和调试。 那接下来的话,我们来了解一下,就是关于我们整个项目的这样一个结构啊,那整个项目的话,我们一共有五个文件啊,那么在这五个文件当中,简单给大家介绍一下啊,首先第一个啊,是我们的一个 readme 啊,那这是我们的一个项目的一个介绍文件啊,这个根据大家的需求,那你可以写 也可以不写,因为它是一个做介绍用的。然后第二个就是 requirement, 那 么这是我们一个 python 的 这样一个依赖包的这样的一个列表, 是你在整个项目当中啊,他需要用到的一些第三方的一些工具包啊,一些模块,那我们会把它放到这样的一个文件当中去啊,然后还有一个就是 man 点 py 的 这样的一个文件啊,那么这个就是我们所有的这样一个微调训练的代码啊,那么一共的话是分为七步啊, 然后再接下来的两个啊,那么就是我们用来生成我们的一个微调训练的这样的一个数据集的啊,一个代码和我们的一个呃,生成的这样的一个文件啊, 好,那整个项目结构啊,咱们有了一个基本的了解之后啊,下面的话,我们先简单给大家介绍一下,就是关于我们这个依赖的一个安装啊, 那这个依赖的话啊,我们需要去安装的话,一共的话是五个模块啊,就包括这个啊, touch, 然后 transformer, 然后还有这个做数据集的,还有这个啊, data sets, 还有我们做这个呃, lala 微调的啊,然后最后面这个是我们来做这个模型量化的啊,用来去节省我们的一个显存 好,那么对于这样的一些模块的话啊,那么我们在 model scope 的 这个环境当中啊,那其实的话我们是不需要去安装的, 如果大家啊,你在本地啊,去尝试啊,或者说啊,你用了这个啊,其他的一些算力平台,那我们就可以自行的去安装啊,对应的这个模块,那么安装的方式啊,也非常的简单啊,如果我们可以去打开我们的这个命令,行啊,我们的 c m d, 那 比如说我们现在啊,我们先进到咱们的这个算力平台当中来啊,好,那么在这里啊,我的这个项目的这个路径啊,是在这个啊 deep, 然后 s f t 啊,这是我们的一个 整个的一个项目的一个文件夹好,然后在这个文件夹下面的话,我们可以去启动一个叫我们的这个命令行终端啊, 然后在这个终端当中啊,但如果说啊,你需要去安装啊,我们刚刚讲到这样的一些模块啊,那么直接通过这个 pip install, 然后杠 r 啊,指定你要安装的这样的一个列表啊,就是模块的一个列表,就是 requirements, 然后那么我们在这里面给大家再加了一个杠 i 的 一个参数,那么这个参数它的作用是用于换元, 也就是你在下载模块的时候,它的速度是非常慢的啊,所以说我们需要把它的下载地址切换到豆瓣的这个啊,原的这个地址来啊,那么这就是我们的一些基本的一些环境的一些配置啊,所以大家先打开我们的这个 model scope 的 这样一个算力平台, 然后啊自己去新建一个文件夹啊,然后叫 deepsafe, 杠 r e 啊,杠 sft, 那 么它里面有没有这样的一些文件啊?不重要啊,就它是一个空白的,就大家如果说你创建完这样的一个文件夹之后,它里面应该是一个空白的,好吧,那么这个是正常的, 那么这些文件啊,就是我们接下来在写项目的这个过程当中啊,我们会一步啊一步的去进行这样的一个创建啊。 好,那么现在的话,我们再回到 modscop 啊,我们的这个平台当中来啊,那我们首先第一集的文件夹啊,还是这个模型微调啊,那么我们之前的话是有 创建了这样一个 deepsafe r e 微调的这样的一个项目啊,那么现在的话,因为我们是从零开始啊,所以我们把整个的这样一个步骤啊,那么重新啊,给大家去复现一遍啊。那在接下来的话,我们首先的话来到这个 项目当中,我们先创建一个文件夹啊,那么这个文件夹的话,我们这个名字我们采用的话还是一样的啊,我们改一个二啊, 好,然后再进到这个项目的这个文件夹下面之后的话,那我们整体的一个操作啊,那么我们是在我们的这个代码当中啊,我们要有一个体现啊,所以在这里我们可以先去创建我们的这个代码当中啊,有两种方式可以给大家去选择啊,一种的话是我们这个,呃, 那一种的话就是我们这个 notebook 啊,我们这个可以单步去执行的啊。然后还有一个的话,就是我们这个啊,纯粹的这个拍摄文件啊,那么它一次性的话是执行所有的这个代码。那么接下来的话,我们就先通过这个 notebook 啊,我们先给大家去进行这样一个简单的一个尝试啊, 我们直接点击这个图标啊,然后我们就会进到这个 notebook 的 这个文件当中来啊,那首先的话,我们的开始啊,我们需要去做什么?这个代码应该怎么去写啊?那其实还是回到我们这个环境的这样一个准备啊,那么我们现在平台我们是 ok 了,那我们现在还缺少一个模型, 那模型的话是需要我们自己去进行下载的啊,我们这里面同样的也采用的是这个啊, modscop 的 它的这样一个选项啊, 然后他给我们也同样的去提供了这样的一些命令啊,比如说我们可以基于他的这样的一些命令啊,去下载啊,我们对应的这样的一些呃模块或者我们这个模型,那么对于这个代码的话,我们其实可以直接复制啊,复制之后我们来到我们的这个环境当中来啊,那么首先第一步啊,就是去下载依赖的 模型啊,好,然后这个模型的话,我们在这里的话,是啊一点五 b 的 啊,但他这个下载的这个路径的话,其实是固定的啊,所以我们可以先执行一下这个代码,因为我们本身的话,我们其实这个模型的话,我们已经下载过了啊, 所以说他直接就完成了,那么如果说大家没有下载过的话,他会有下载的一个过程啊,所以你把这一步先给他下载好。 那么下载好之后啊,我们怎么样去查看?那我们的这个模型它到底在哪一个位置啊?那么在这里的话,我们就可以通过我们的这个啊终端啊,那么在终端里面的话,我们其实就可以去进行这样一个查看啊,那么它的这个模型的话,默认是在这个 workspace 下面的话,我们找到 好,然后通过 l s 啊,我们去查看啊,然后在这个路径下面的话,呃,它会有一个隐藏的这样一个目录啊,呃,就是那个 catch 啊,那么这边我们通过 l s 杠 a 啊,我们就可以查看到,那么在这个 catch 这个目录当中,我们直接通过 cd 命令,然后进到这个 catch 的 这个目录当中来。 好,然后有一个 model scope 啊,我们进来之后啊,然后现在有一个 deep seek ai 了,然后我们通过 cd 啊,然后切换到这个 deep seek ai。 好,然后我们再去进行查看。好,那么这个就是这个我们要下载的这个模型啊,他就会有这样的一个路径啊,他就会下载到这样的一个位置啊,就方便我们大家去进行这样一个应用啊。 好,那么这个模型啊,在下载成功之后啊,那么接下来的话,我们就可以正式啊,进入到我们整个微调的这样一个流程啊,那么首先 第一步啊,那我们应该是要去做什么?第一步我们要做的事情很简单啊,也就是我们要去加载模型啊,并且我们要去测试啊,就他有没有问题。好,那么这个代码的话,我们就为了这个节省时间啊,我们就直接给他复制过来啊,对方都给他准备好了。 好,然后我们接下来给大家解释一下,那么这个代码的话,首先它是一个什么意思啊?那首先第一行代码就是通过 form 啊,我们去导入啊,从哪里导入呢?从这个 transformer 那 里面去导入了这个 autoticon, 然后还有这个第二个这个一个框架啊, 好,那么在这个导入之后啊,那么它到底啊,它是做什么样的一个应用啊?就它的这个作用是什么?那首先这个 tokenizer 它是用来加载啊,并且去识别我们这个对应模型的一个分词器啊,那这个我们后面是需要去用到的, 然后这个的话就是我们用来加载这个模型啊,用于我们的这个任务的一个生成。好,然后接下来的话,我们去写了一个 model name 啊,也就我们去指定了啊,我们已经 提前下载好的这样一个模型的路径啊,那如果大家啊,跟我一样也是用的 model scope 的 话,那么你的路径应该也是这样的一个路径啊,就这个不会变啊。 好,那如果说你是自己的平台的话,你就把这个路径啊换成你的这个模型所在的一个地址啊,就可以了。好,然后接下来 tokenizer, 那 么这行就是实际的这样一个加载的这样一个过程啊, 好,包括这一步啊。好,那么在这里的话,我们是用的一个 to 啊,然后这个库达,那这个是什么意思?哎,这个表示啊,把我们的这个模型啊加载到我们的这个 gpu 上面来啊,进行这样一个推理的一个加速啊,所以我们先 执行一下这个代码,然后我在这里就可以看到我们整个的一个设备的一个使用率啊,比如说我们这个显存啊,来看一下,现在还是还没有去用的啊。好,那么等到我们的这个模型啊,在加载成功之后啊,我们再看一下啊,好,这个地方还没有加载完啊, 好,来,现在啊,这个地方已经加载成功了。 ok, 来,我们可以看到这个变了没有?变了,现在是这个七七 g 啊,对吧? ok, 好, 让我们再接下来我们再继续啊,好,那么第一步啊,我们在完成之后的话,就是我们的第一步啊, ok, 加载模型啊,并且去测试啊,他有没有问题,那么我们可以看到结果啊,是没有问题的。 ok, 好, 那么模型在加载成功之后啊,接下来的话,我们去做我们的第二步啊,也就是要准备啊,我们的数据集, 那么这个数据集的话怎么来啊?其实很简单啊,那么如果说我们只是做一些简单的一些测试啊,你没有一些实际的一些应用的话,你可以通过大模型啊来帮你来进行生成,比如说你给他一个 相关的一个主题啊,然后由大模型去生成相关的这样的一些数据啊。好,那么在这里的话,因为我们是呃给大家去演示一下整个微调训练的这样的一个流程啊,所以的话,那么我们的这个数据同样的也是通过大模型啊来进行生成的, 所以接下来的话,我们这个地方会用到我们的这个代码的话,我直接给大家去复制一下啊,然后这个是我们的第二步啊, ok, 准备数据集好,那么这个数据集这个到底该怎么去用啊?其实说白了就是我们要首先你要有一个什么,你需要有这样的一个列表啊,就你这个样本里面它到底是什么?那我们可以看到它现在是一个空的啊,这里面现在是没有这个数据的, 那么这个数据啊,我们到底怎么样啊?来进行这样的一个获取啊?那么在这里的话,我们要用到这样的一个代码, ok, 呃,我们来到我们前面啊,给大家做的这个项目里面啊,啊,这个地方他会有一个拍摄的一个文件,然后给他看一下,好吧?然后在这个拍摄的文件里面的话,那我们可以看他这边是不是有这样的一个 show, 对 吧? ok, 好, 那么这个数据的话,其实我们就可以直接啊,你把它复制过来就可以了啊,当然如果说你觉得比较 浪费啊,你觉得这个地方有点占地方,那你就可以不复制啊,就你可以用这种代码的形式啊,然后去做一个啊 form 引入啊, ok, 但这边我为了方便大家去理解啊,所以说我们就可以直接把它拿过来算了啊,好,直接把它粘贴过来啊,好,粘贴过来之后啊,那么我们在干嘛?哎,我们是通过位置 open 啊,去打开了这样一个节省的一个文件啊,然后通过写入的方式, 把我们上面的这样一个列表啊,我们通过便利啊,然后把所有的数据啊写到这个节省的这个文件里面来啊,所以这边我们先来执行一下这一段代码, ok, 哎,有问题,没有问题,然后地方就有个节省文件,来,我们打开这个节省文件看一下,好,那么这个节省文件里面啊,就是符合我们的数据集的一个要求啊, ok, 一个是 prompt, 还有一个什么,还有一个是 complication, ok, 呃,就有两个啊,两个阶段。 好,那么这个数据集啊,我们在准备完成之后的话,那么接下来的话就是我们的第三步啊,来看一下。 ok, 好, 那么第三步的话,就是我们要对于这个数据集啊,我们要去做一个拆分啊,因为我们正常的这一个 训练啊,它都是有这个训练级和这个测试级的一个区分的,那么在这里的话,我们要针对于这五十条数据啊,因为一共的话它只有五十条数据啊,所以对于这五十条数据,那么我们的这个处理方案也很简单啊,首先啊,就是通过我们这个 data sets, 那么这个 data sync 的 话,它是一个专门啊,用来加载数据集的这样的一个模块啊,那么它里面有一个方法啊,叫 node data sync 啊,那么这个方法就是我们要去用的啊,所以我们把这个代码,我们先把它拿过来啊,好,拿过来之后啊,我们先简单的来看一下啊,好,然后在这里面,那么首先的话,我们是 通过什么,通过我们导入的这个 load 这张 set 啊,来进行导入,那么导入的话,第一个参数这个 jason 啊,它表示是我们这个文件的一个格式啊,然后这个 data files 啊,也就是我们这样一个数据集, ok, 它这段到底是怎么去进行这样一个导入的啊?所以这个段我们来写路径的话,稍微改一下啊, 好,然后 smily 的 啊,这地方是做了一个切割的啊,这个切割就是我们要有这样的一个呃,区分啊,好,让我们先把代码先执行一遍啊,然后这个地方报错了,就是没有找到我们的这样的一个 文件啊,我们看一下 data set ok 啊,没有 s ok 可以 了啊,好,那这个地方我们在执行完成之后的话,我们能够看到的就是,首先啊,那么我们公的数据啊,一共的话是五十条,然后我们用于这个训练的数据的话是四十五条啊,然后用于测试的数据的话是这个五条啊,就是,呃 啊,九比一的这样一个数据的这样一个区分啊,然后那训练数据啊,咱们这个就准备完成了。那这个地方,其实这个就是我们具体的这样一个切分啊,比如说这个代码,对吧?它只是按照这个九比一的这样一个格式啊,然后进行这样一个拆分, 然后这个 test 的 赛制啊,它表达就是测试级它的占比的话是百分之十啊,也就是零点一,当然这个你可以去调啊。 好,然后这个地方拆分完之后的话,那么我们能够得到,就是分别能够得到啊,两个不同的这样一个数据集啊,一个是训练的数据集,一个是测试的这样一个数据集,然后我们再把它的一个数量啊,通过 print 把它打印出来,可以看到这样一个效果。 好,然后再往下,那么就是我们的第四步啊,我们要编写这个 tokenizer 的 一个处理的一个工具啊,那这一步的话是什么意思呢?其实也比较简单啊,就是我们要知道啊,对于我们的模型训练来讲,它并不是说你直接按照原本的这样的一个格式啊,比如说,哎,我们按照这个 json 里面的这个数据, 对吧?它是一个字典,那你就把这个格式丢给我们的大模型,它就能够去训练吗?并不可以啊,所以我们需要对于这样的一个数据啊,我们要给他去做这样的一个预处理的这样一个阶段,那么这个预处理啊,到底是什么意思呢? 哎,其实啊,就是去定义一个方法啊,比如说叫 talk nader function 的 这样一个方法,然后啊它接收一个参数啊,这个参数,就是嘛,就是我们的这样一个啊,训练的这样一个数据集。 好,那么在拿到这样的一个训练的数据集之后啊,接下来我们的这行代码,它看上去那有很长啊,但是它的逻辑啊,其实是非常的清晰的,就是用了一个什么,其实就是用了一个啊,我们的列表推导啊。 ok, 首先我们是通过这样一个 deep 啊,我们从我们的这个训练的数据集当中啊,把这个 promenade 这个字段,还有这个 compilation 这样一个字段,哎,分别拿出来,然后我们去做这个负循环的一个便利, 那么他每遍历一次,他得到的数据啊,都是其中的这样一条数据啊,然后我们把这样的一条数据啊,组合成一个什么 组合成一个制服串。 ok, 组合成这个制服串,然后中间的话是用一个杠 n 啊来进行的这样一个区分啊,就是我们要把原本的两个字段啊,把它变成一个制服串啊,也就是我们的 test 啊,那么现在他就是一个列表。 好,然后再接下来的话,那么通过这个 tokenner 啊,我们要对于我们这个文本啊来进行这样一个编码。好,那这个编码到底是什么意思了?哎,我们就通过啊,我们实际的这样的一个效果啊,来给大家去进行这样一个展示啊, 好,来我们这个地方就有了,然后把这个 print 打印档给它打开啊,就是我们把经过这个转换之后的这个数据啊,我们给它直接打印出来。 好,那么我们可以看到啊,这个地方都已经处理完成了啊,然后这个地方代码有点问题啊,没有定义,那应该是变量名写错了,我们看一下 delete c 的 啊,我们上面的这个是没有问题的啊,对,你写错了,多了一个字母啊, 好,可以了啊,好,那么现在的话,就是我们把第一条的这个数据啊,已经打印出来了,好吧,我们就可以看到他对应的这样的一些内容啊,那么我们刚刚讲到了,就他会去对于我们的这个文本啊,来进行这样一个编码, 对吧?也就我们的这一个 tokens 啊,那么在这里面啊,它得到这个数据啊,它到底啊是什么样的?其实就会有这样的一个张量啊,就也会这样一个张量在里面啊, ok, 然后这个 labels 啊,那这个就是我们后面我们去给它添加进去的这样的一个内容,就这个流程,我们也可以把它理解成我们一个固定的,好吧?比如这个 labels, 那 么它是我们的一个标签, 对吧?那我们为什么要去设置这样一个标签呢?那么是用于啊,我们在训练的过程当中啊,我们要去计算我们的一个损失的啊,所以说你要把这个东西给它加进去啊,所以说我们的第四步啊, 好,那么第四步啊,就是你再给他这个啊, tooling layer 啊,处理完成之后啊,接下来的话,我们再去来做第五步啊,也就是量化 好,那么做量化的目的啊,其实就只有一个啊,就是用来去节省我们的一个内存啊,节省我们一个显存的一个占用啊, 所以在这里面,那么它包括像我们的四比特量化也好,巴比特量化也好啊,都可以啊,所以对于这个代码,那么首先啊,就是从 transform 里面,对吧?我们把这个类啊,你给它导进来啊,那这个就是我们用来去设置我们的这个量化参数的一个类, 然后接下来一个 classification 啊,然后 config, 那 么就是用来去设置啊,你到底是用哪一个量化?比如这个巴比特,那么就是启动啊,这个巴比特量化啊, 然后接下来啊,我们通过这个,这个就是我们之前前面讲的加载模型的嘛,好吧,那么这个地方就是用来重新啊,去加载我们的模型,并且去应用我们的这样一个量化的一个配置, 那前面那可能就直接用这个 model name 啊,去加载了一下,那现在我们把这个宽体对称啊,也加载进来,然后啊,那下面的这个什么这个凹凸啊,那么就是指定是吧?啊,就是分配啊,我们的这样一个可用的 gpu 设备啊, ok 啊, 好,然后把这个代码我们再拿过来啊,好,注四拿过来一下啊,第五步,好,拿到之后啊,我们来运行一遍啊,好,量化模型啊,加载完成没有问题啊, ok, 好, 那么这一步完成之后的话,那接下来我们开始去做我们这个 lala 的 一个微调的一个设置啊,那么这个 lala 微调的设置啊,那其实 相当于就是我们要去把整个的一些配置啊,你要给它搞清楚啊,对吧?它到底用到哪一些内容啊?比如它怎么去微调的,对吧?我们现在是要去做微调吗?那微调你是基于什么来做的?那我们是基于 lala 来实现的啊, 因为我们并没有去用到一些微调训练的框架,你比如说 anselos 也好啊,像这个 nma factory 也好,我们都没有用啊,那我们就用这个原声的那个 lala 啊,我们来进行这样一个微调, 那首先第一个啊,就从这个 pft 里面啊,去导入啊, lala 那 么相关的一些模块啊,那这个就是用来去获取加载我们的一个模型啊,然后还有这个配置 好,然后这个地方是干嘛呢?那这个地方其实是要去创建一个 lala 的 一个配置的一个对象, r 等于八啊,表示他的一个字啊,就是 lala 的 一个字,控制我们的一个数量啊,然后这个十六啊,表达的是我们的一个 缩放的一个因子啊,那么它影响的是我们 lala 权重的一个学习的一个速率啊,然后再接下来的一个零点零五啊,那么它表达的就是我们的那个防止啊,过礼盒我们会用到的一个参数啊,然后后面的话,这个就是我们的一个语言啊,就设置我们的一个英国语言的一个模型 好,然后通过这个啊 get 啊,然后 pft model 啊,来加载啊,就是把我们的这个原始的这个模型啊,这个 model 嘛,对吧? model, 前面我们去加载了一个模型嘛,那把这个模型啊,转换为啊支持这个 lala 微调的一个形式啊, 然后把这个老打他创建的一个配置的一个参数啊,我们也给他丢进来,那么丢进来之后啊,我们这个地方啊,就是怎么就可以去打印我们这个可以训练的一些参数啊,和他的一个比例啊, ok, 好, 来,现在我们把这个代码我们拿过来执行一遍啊, 好的,看一下啊,好,那么这个地方直接就结束了,那么他打印出来这个结果,来我们看一下啊,那么我们能够看到的这个比例是多少?百分之零点零六一三啊,非常小的一个比例了,因为一共就五十条数据啊, ok, 所以 他的占比啊,是非常低的啊。 好,然后这个设置啊,完成之后的话,那么接下来我们开始去准备啊,我们的这样的一个训练的这样的一个参数啊,就你整个的一个训练,对吧?那么它到底是怎么去训练的,对吧?参数啊?到底有哪一些啊?好,那么接下来我把整个参数 再详细的给大家来做一个讲解啊。好,那么首先的话还是一样的,从这个训练的一个参数啊,以及我们的这个训练器的这样一个类啊, 好,这两个类,那么首先我们对于这个参数的这个类啊,那么我们要给它做一些配置,那比如说第一个 output 点啊,那么这个就是我们用来输出啊,我们这个模型的一个目录啊,就训练之后的这个模型啊,输出到哪里? 然后接下来就是我们的这个 apos 啊,这个就是我们一个训练的一个轮次啊,现在我们是十轮,那你可以说五轮啊,二十轮啊,都可以啊。好,然后再接下来的话,这个 tape 啊,那这个是什么? 这个是每个设备啊,他训练的一个门,他最大的这样一个值啊,就这两个啊,好,那这个值的话啊,啊,上面的是值,然后下面的是 t 度啊,好吧,上面是我们的这个设置啊, 好,那这个就是可以根据我们这个设置,你的设备的性能越好,那你可以把它调大一点啊,比如调个八呀,十六啊,都可以,那如果说配置不行,那你可以把它调成二啊,也是可以的,好吧?然后下面这个就是这个,就是我们那个 t 度啊, 好,然后这个十,这个 f p 十六,就是我们的一个混合精度啊,就开启我们这个混合精度的一个训练啊,那么这个同样也是用来节省这个显存的。然后接下来就是我们的一些啊,比如 log in 啊,这个就是我们的日历啊,就是美食部啊,然后去保存一下我们的输出,我们的一个日历啊, 然后一百步的话,干嘛保存一次我们的这个模型,然后经过一定的一个步数啊,那么我们就要去进行这样一个评估,那到底多少步呢?每十步的话,我们去做做这样一个评估,然后这个是我们的学习率啊,然后还有一个逻辑的电压,之后我们的日记啊,它输出在哪里? 好,还有一个 running 啊,这个就是我们的一个实验的一个名字啊,主要是用的日记啊,来进行记录的好, 嗯,这部其实也没有什么,我们直接把它复制过来啊。 ok, 好, 我们先执行一遍啊,看有问题啊,没有问题,对吧?好,然后这样我就把整个的这个训练器啊,这个部分也讲到啊,那么训练器的话,那么在这里的话,同样的啊,他也不复杂,对吧?因为这个首先这个类, 那么是你从全是 form 里面导入的好,然后他的参数来看啊,首先 model, 那 model 就是 我们通过这个 lada 啊,他重新去加载过的这样一个模型。 然后 ar g s 呢?这个就是我们上面我们所创建的这样一个训练器的这样一个训练的一个参数。好,然后接下来这个什么,哎,训练的数据集,对吧? ok 啊,这是我们前面我们把它切分出来的,还有一个这个是我们的测试的一个数据集,都给他,对吧?所以这个就是我们定义啊这个训练器的这样的一个过程。 那么训练器啊,在定义完成之后,接下来你想要开始啊,去进行这样一个训练的话,其实也非常简单,就调用他这个去这样的一个方法,好吧,所以我们直接啊把这两个也拉过来。好,然后我们先开始跑啊,因为这个训练的话需要一定的一个时间啊。 ok, 好, 我们就可以看到啊,那么这个地方他会有这样的一个开始训练的这样一个过程啊,包括现在,那么这个日历有了没有?现在就开始输出我们这个日历了。 ok, 所以 这边需要一定的一个时间啊,那么接下来的话我们干嘛呢?我们把整个代码啊,把它整合到一起啊,我们来一起来新建一个什么?我们这边新建一个,呃,拍摄的一个文件啊,因为这个训练还没有结束啊, 再看一下,对吧? ok, 好, 他还在跑啊,然后我们就创建一个文件啊,这个是 tst 的, 我点错了啊, 然后我们选择这个拍神飞啊,这个拍神飞啊,拍神飞啊的话,名字现在无所谓啊, 好,对方已经训练完成了啊,然后我们可以看到,对吧?因为一共是这个轮次啊,然后从这个是他的一个落实,他的一个损失值,他是在不断的下降的。 ok, 好, 然后接下来的话,我们把整个的这样一个流程啊,我们再给他拉过来,我们试一下这个模型的这个下载啊,我们就不用了,我们从这地方开始啊,比如说第一步。 ok, 好, 第一步结束之后啊,第二步,其实第二步这个地方说实话其实不需要,因为这个现在我们已经有这样的一个节省文件了,对吧?所以你有了这个节省文件之后,你就不需要去制作这个数据线,你直接用就可以了,所以我们就直接把第二步跳过啊,来,我们直接去进行这样一个 数据集的这样一个拆分啊,数据集和训练集的一个拆分。好,然后接下来我们对于这个数据集啊,我们再来给它去做这个 tokenizer 它的这个分词的这样一个处理。 ok, 好, 然后处理完成之后的话,那么接下来我们再给它去做这个量化啊。 ok, 好, 量化做完之后的话,那么接下来我们再去做这个捞了啊,微调的一些设置啊,你要把它这个模型要加载进来啊,好,然后最后一步啊,就是我们的第七步啊,然后开始这个训练啊,然后把这个代码拿过来。好,可以了,这个就是我们的一个完整的一个代码,那么这个地方我们用一个问文件啊, ok, 可以 了啊,好,保存完成之后的话,那么接下来我们打开咱们的这个终端啊,好,然后在终端我们可以看到,那么它默认的这个根目录啊,就是这个 sft 二啊, 好,来,那整个的项目下面,我们现在是有这个 man 点 p y 的 这样一个文件的,那么首先我们通过的一个拍摄啊,然后执行这个 man 点 p y 的 文件啊,就我们把整个项目一次性来执行一遍啊。 ok, 好, 这边现在选存占用已经比较高了啊,这其实还是一个。什么,我们其实还是一个啊,这边 cpu 已经用完了,因为这个地方没有释放啊,所以的话我们这个地方我们把整个文件给它关掉, gpu 不 够的啊, memory 啊,对吧?内存显存好,我们让他全部去把整个流程再执行一遍啊,哎,这个地方还没有释放啊,所以我们要等待一下,把它内核给它重启一下,我现在看一下释放没有,还没有,可以啊,现在没有了, 对吧?现在只有五百兆了。 ok, 好, 然后这个地方的话,那么我们呃开始去运行之后就五百兆了, ok, 好, 然后这个地方的话,那么我们呃开始去运行之后模型的量化, ok, 巴拉巴拉开始训练啊,好,那我们在命令行,在终端啊,去执行的话,我们是看不到他那个图的啊,他只有这样的一个进度条啊,好,然后我们接下来我们看一下,就我们训练之后的这样一个结果,就这个啊,反托尼啊, 好,然后它里面看到啊去 pose, 好, 那么这个就是我们的这个通过 lala 啊,我们去微调啊,训练出来的这样一个模型啊。 ok, 好,那我们给大家去分享的内容的话,我们就讲到这里了啊,好吧,基本上啊,主要就是从这个环境的这样的一些配置啊,然后到模型的加载啊,数据的处理,然后到量化,然后一直到这个 lala v 条,那么一个这样的一个流程啊。所以大家如果说啊,觉得 有用啊,或者有需要啊,我们的这些课件和原代码的同学啊, ok, 那 么可以在评论区留言啊,那我会把所有的资料啊全部分享给大家。

我的 ai 已经能够自己指挥 ai 写代码训练模型了,你们还在纠结怎么学大模型?今天就告诉你们大佬绝对不会说的大模型速通路线, 赶紧码住,看看谁才是第一个吃螃蟹的人!首先我们要先知道大模型到底是什么,了解神经网络、 nlp 和 transform 等内容,然后学习 rag agent、 blank chain, 吃透这三大核心板块。接着学习怎么把大模型部署到本地,针对性学习模型训练与优化,搞清楚 ai 大 模型的应用场景。 最后一个阶段开始上手企业级的项目,这里我建议做一些可落地内容,到这里你就成功踏进大模型领域了。时间有限,完整的速通路线和各个阶段要用到的学习笔记以及素材资源,还有项目实战都打包好了,留学习,抱走!

爆改显存换上大容量颗粒已经不是稀罕事儿, rtx 五零八零十六 gb 如今也可以摇身变成三十二 gb 大 显存了。最近 外网传中国将推出三十二 gb 版的 rtx 五零八零显卡,消息其实源于国内的一个 up 主,是工作室自己磨改出来的特殊版本。根据 up 主在视频中透露,有技术团队通过改装将 rtx 五零八零的显存从官方的十六 gb gd d 二七提升到了三十二 gb, 其核心方法很可能是在 pcb 板两面都焊接显存颗粒,从而实现容量翻倍。这类改装卡主要瞄准本地 ai 预算市场,因为运行大模型时,显存容量往往比单纯算力更重要。改装后的五零八零能以远低于五零九零的成本处理相近规模的 ai 任务,但模改也有代价, 为了维持稳定性,显卡工号通常被调高,可能带来额外的发热和寿命折损。然而,对于急需这方面硬件的用户来说,更多关注的是这些魔改显卡能够为他们提供多少算力,因此其他方面并不是很在意。 值得一提的是,此前传闻中的 rtx 五零八零 super 也仅计划将显存从十六 gb 增加到二十四 gb, 原计划在 ces 二零二六上正式发布,但因为显存涨价已经大大推迟,甚至出不出都难说了。

你看了无数个 transform 的 视频,读了无数篇 transform 的 文章,但是呢,面试还是吞吞吐吐,还还和我说不清楚,今天我就用最通俗易懂的人话给你把 transform 讲清楚。好,现在我们正式开讲啊,本期视频呢分为四个部分,首先啊,我们会来聊一聊 transform 的 输入,那么这里呢,我们将解释 transform 输入文本到向量的本质含义。接下来我们来聊一聊 self attention, 这是自,也就是自注意力机制啊,那么这是 transform 的 灵魂,也是面试的高频考点啊。 然后呢,是 in code 的 结构,即就是编码结构,它是呢通过多层自注意力和前馈网络的堆叠,将 输入序列逐步提炼为富含上下文信息的生成表示。最后啊,就是我们的解码结构了哈,那么这是生成内容的关键,那么在编码信息基础上,引入引码自注意力,以此回归方式逐次生成目标序列。好,现在我们来讲穿梭目的输入哈,那么什么是穿梭目的输入呢? 假设我们现在有一个穿梭的模型啊,我们想要,想要,想要用这个模型来生成内容,想要模型来生成内容,我们现在有一个提示词,我们假设这个提示词就是我们最原始的输入,假设我们这个提示词呢,就叫我有一只猫啊,就是我们最原始的提示词。 那么我们把这个提示词呢,输给这个模型,模型不会立马就给我们产生内容啊,它需要经过一系列的处理,而且这个处理的过程是非常非常的长,那么第一步要做的事情呢,其实就是把这一句话进行分词哈, 这个分词怎么分呢?因为中文里面啊,这个这个词和词是连在一起的啊,它不像英文单词和单词是分开的,但中文里面是连在一起的啊,所以我们需要进行分词。那怎么分词呢?分词我们有有 很复杂的算法,通常呢我们使用现成的库来进行分词就可以了,比如说像结巴这种库就可以进行分词。加上啊,我们现在使用了结巴这个库,我们把我有一只猫这个这句话分成了四个词,就是四个 token, 那 分别是我有 知啊冒这四个 token, 这第一步完成了这个分词,分完词之后呢,我们需要把每一个词,每一个 token 转成一个向量,英文叫 in bing, 有 时候我们在一些文章里面看的叫 in bing 啊, in bing 呢,翻译成中文叫切入的意思啊,但是切入这个词还是不是很形象, 其实就是把一个词转成一个向量,可是一个向量,向量是个什么东西呢?向量将从数学的角度来讲,就是一个有方向的量啊,那么从这个列表里面放了很多的这种 数字啊,那么他为什么做这件事情呢?有两个作用,第一个作用其实就是把文本数字化变成数字了,因为计算机只能处理数字啊,这是第一个第一件事情。第二件事情呢,其实就是,呃,能够用来去计算啊,文本与文本之间的语义的相似度啊,为什么能算出来呢?因为 所谓的象呢,其实就是在一个高维的空间里面啊,给了这个词与一个坐标,有了坐标之后啊,就我们就可以计算点和点之间的距离了,我们通过这个点,点与点之间的距离啊,来去记来表示啊,与异的相似性, 那么我完成了这么一个词的切入之后啊,那么接下来我们做第二件事情,就是这个位置编码点,那么这个位置编码点是什么意思呢?它的英文叫 position 编码点啊,其实是其实是一个位置矩阵啊,我再补充一圈,上面这里面啊,每个词它 转成一个向量之后呢,它的维度都是一样的,那么在 transform 这个在 transform 哈,就是诞生的,诞生的那篇文章里面哈,就是它的这个词,向量的这个维度呢是五百一十二位,我们假设这里是五百一十二位哈,每一个 词语转成这个向量之后都是五百一十二位,那么这四个词语放在一起呢,其实就是一个矩阵,就相当于四哈五百一十二类。好,我们现在再来看这个未知向量,我们刚才说过,未知向量呢,是一个矩阵,这 矩阵是通过某种算法生成的,那么这就是这个位置生成的算法,那么这个矩阵它的大小啊,维度啊,跟上面我们这个矩阵是一样的,下面那个矩阵四个词语,那么就是四毫五百一十二列,是这样的一个矩阵,那么下面这个位置矩阵呢,是通过算法生成的,但是这个矩 阵的维度呢,跟它上面是一模一样的,也是四毫四毫五百一十二列,那我们给这个矩阵起个名字叫 p e 哈,那么这个算法大家看一下,有点这个独特啊, 看一下它有鸟号,对吧?一个叫 p position, 然后呢 i r 什么意思呢? position, 其实是啊啊,你可以把它看成是什么是行号啊? r 呢,你可以去看是类号,那么其实这个什么意思呢?它表达的是某一行,然后呢偶数类这个位置,那么它的这个这个这个数字是多少? 数字是这么来算出来的。三,然后呢 position 除以啊,这里是一万的 i r 除以第一次方哈,那么这个 position 呢?其实就是行号啊,然后呢这个 i r 呢?就是,这是类号啊,那么如果说是 r 是 年的话,然后呢这个 t 是 什么意思呢? t 就是 维度啊, t 维度, ok, 那 么现在我们看一下啊,假如说有一个位置,是吧?假如说第一个位置就这个位置,那算这个位置,他的这个算出来的数字是多少呢?因为这是第一行,对吧?那这,这是我们从现象里面来讲,这个这个这个 行话呢,是从零开始的,所以这里是零,零除以。什么零除以?这里零除以,然后呢?后面这里是一一万的 i r 除以第四方,那 r 是 多少呢? r 也是零,对吧?这是基数类哈,这是基数哦,这是因为从零开始的话,这属于偶数类啊, i r 其实也是零,对吧?其实整列而言,这个就都是零哈,都是零, 所以这个呢?其实这个位置是零,那么以此类推哈,那么后面我们可以用这个算法来算出来,算出这么一个矩阵的作用,其实是用来保存单词在序列中的相对位置哈, 使用这个位置 y 点保存的单词在序列中的位置,那么接下来我们怎么做呢?接下来我们就要把这个 y 点和我们的词 y 点相加,因为这两个 y 点啊,其实就是两个矩阵,它的维度是 一样的,所以我们可以进行相加哈,相加之后得到一个新的矩阵,我们给这个新的矩阵起个名字叫大 x, 还有这个大 x 和大 x 之后,接下来我们怎么办呢?啊?这个时候我们来到我们的 transform 的 架构图哈,那么架构图的这个整个流程呢,是比较复杂的, 那我们来看一下,就说我们现在已经到哪一步了哈,那么这个呢是我们的输入,这是我们最原始的输入啊,提示词,然后经过这个编辑之后,经过这个词编辑之后得到一个矩阵,那么这边呢是一个位置编码器,就是我们刚才的 position 呢,编辑,它是通过一个特殊的算法把它 生成出来的哈,那么现在呢,我们把位置编辑和词编辑相加,那么这个时候得到了一个新的这么一个输出,叫 w, 叫大 x, 那 么这个大 x 呢?会作为下一层的 这个输入,那么这个下一层是什么?下一层就是我们多头自注意力,那多头注意力大家看一下它的这个箭头,它是三个箭头,对吧?一二三三个啊,就很奇怪啊,我们这个 这里,这里的输出只有一个,但是你这个输入有三个啊,那怎么回事呢?怎么办呢?哎,这个时候啊,我们来看一下啊,怎么做到它有三个输入的哈,那么这三个输入的分别是 qq v 啊, qq v 呢是三个矩阵啊,这三个矩阵呢叫这个 q 是 query 的 简写, q 呢是 k, k 的 简写, o 也是 one 的 简写,这三个结论是怎么来的呢?这三个结论就是刚才那三个输入哈,它这么来的,就是我们的输入的。呃,这个大 x 乘以的三个矩阵,分别是 w、 q、 w、 k 和 w v 三个矩阵啊,这三个矩阵怎么来的呢?就是 w、 q、 w、 k、 w、 e 这三个矩阵怎么来的?它这个矩阵哈,就是我们在训练的过程之中呢,是要通过训练得到的,那么在第一轮训练的时候,我们并没有训练,第一轮训练的时候,训练刚开始,那么这个矩阵怎么来的呢?这个矩阵通过出手话得到,就随机出手话一个矩阵,这个矩阵通常是是一个方阵啊,这个 方正啊,就是它的这个行数和类数是一样的,那么这个它的维度是多大呢?维度啊,的维度跟它的维度是一样的,就竖 x 的 维度是一模一样的,假设它这里是五百一十二维,那么它的维度呢,也是五百一十二维,是一个方正,但这里面呢,其实降为了的可以是方正,通常都是方正,但这个是降维的, ok, 那 么相乘之后得到一个新的矩阵啊,因为它的这个 它是一个方正嘛,所以呢,这个可可以和它相乘啊,相乘之后呢,维度肯定跟它是一模一样的,就跟输入 x 维度是一模一样的哈,这个行和类都是一模一样的。 ok, 好, 那么现在我们这个得到三个,这个取证之后,就是 qq v 之后,接下来怎么做呢?接下来 我们就讲一下这个多多陀注意力啊,这个多陀就量子 head, 为什么叫多陀呢?这多陀其实我们可以理解成多个部分啊,它其实就是把我们三个输入,这 qq v 三个输入啊,它变成这个多个部分,假设这个这个多陀,这个陀是八个啊,那么其实就相当于把我们的 qq v 分 别变成八个小矩阵啊,当然八个小矩阵是包含在一个大的这么一个矩阵 里面的,有八个小矩阵哈, ok, 有 这八个小矩阵之后怎么办呢?哎,那么他们就要,他们就要计算这个他们之间的这个注意力的分数了哈,那么怎么计算呢?通过这么一个公式来进行计算,这公式呢,有点复杂哈,我们先来解释一下啊,就是 q 乘以 k 的 这个转制,然后再除以根号 d k, 然后作为输入啊, 以这个 solve the max, solve the max 是 一个集合函数啊,然后把这个结构再乘以 v 这个东西啊,我们举个例子来解释一下这个算法的这个含义哈,那么 qq 微哈,因为 q 和 k 是 三个,其实 q、 k 啊,其实分别的是是两个大矩阵啊,这两个大矩阵里面去包含八个小矩阵这样子的哈,所以它们消沉,其实小矩阵消沉哈,并不是 它啊,是小矩阵之间相乘。好,那么现在假设啊,这个这个矩阵就是我们这个 q 里面的一个小矩阵啊,小矩阵, ok, 那 么这个小矩阵呢?和这个 k 去相乘,因为 k 的 小矩阵的维度和它的维度是一模一样的,就根据信信代数的这个原则,你这个维度和它一模一样,是没有办法相乘的,对吧?因为相乘的话,必须它的这个内数等于它的行数才能相乘,对不对? 那维度跟它一模一样,那就没有办法相乘了,那么所以先大家先转至一下,转至一下之后呢,就是说它的这个行数跟它的内数就一模一样了, 这个时候就可以相乘了哈,那么现在我们看一下它转折之后的代表含义是什么?原先没有转折之前,其实一行就是表示一个 pick token 的 这个向量,对吧?那么转折完之后,其实以类表示一个 token 的 这个向量,是不是?所以啊,这里面这一行和这一行相乘得到的结果是什么呢?其相对于说这个 token 和这个 token 的 关系啊,关系 ok, 那 么成完之后呢,这也就得到这个样子,这个样子,那么这一行表示什么意思呢啊?就是说,哎,这是 什么? d token, 就是 这个 token, 对 吧?和这个 token 之间的关系,然后呢,这里表示的是这个 token 和这个 token 的 关系啊,就是表示这个 token 和其他四个 token 之间的关系是这个样子。 好,那么成文之后呢,因为它这里面它会防止它的这个累计过大啊,要除以这个根号 d k, 然后呢还需要经过这个 supermax 键激活,这个激活什么意思?激活就是为了确保这四个数啊,相加能够结果是为一是这个意思啊,因为它是又要来计算概率的。 那么有了这个之后呢?有这个之后啊,就是经过这个 solo max 之后,你发现它这个时候是个方正,对不对?方正之后,相当于说如果说有方正啊,那么就是相当于说是八个方正啊,八个方正你相合并的时候呢,其实它的这个维度就发生改变了,然后呢,我们需要给每 一个小方正啊,就乘以一个 v, 那 么这个时候我们其实给它降一下维,那么得到这样的一个样子哈,这个行不?发生改变,只是把它的类啊维度发生了改变,那么这个时候呢,再把这八个呢小矩阵第一个小矩阵合并,那么 是它的维度呢,就会跟原先那个 x 的 矩阵呢,是一模一样的哈,也就经过这一些处理之后啊,就是维度还是没有发生改变,只是说这个矩阵里面的内容发生改变了,有了这个东西之后呢,相当我们先到哪一步呢?那相当我们现在已经完成了这个 melody head attention 这 一这一步了哈,那么接下来我们看往上走是吧?上呢是这个东西 add and low moment 啊,什么意思呢?它其实这是 add, 其实是相加的意思哈,相加,那加哪个东西呢?就是 melody head attention, 它会有个输出吗?对,这一层会有个输出啊,那么这个输出的维度和 x 是 一样的,就这个这个输出的这个 x 啊,它会和原先这个输入啊,这是个 x 啊,我们假设它叫 x x x 一 啊,这个呢叫 x 零, 那么其实 x 零和这个 x 一 相加,那么因为维度是一样的,是可以向前相加的啊,加完之后呢,然后再做一个 loo, 哈,就规划处理啊,处理完之后呢,那么小呢,这里就结束了哈,那么这个时候呢,就会作为下一个 为下一层的这么个输入哈,下一层输入输入这个这一层做些什么事情呢?这 feedforward 叫勤快神经网络,那么勤快神经网络呢,其实就是一个普通的神经网络啊,神经网络,这里面层数呢,会比较多 啊,然后把这个输入呢?呃, normal 的 这个输出呢?作为他的这个输入啊,输入完之后进行处理完之后呢,然后这里面又有一个什么,他又有一个 add normal, 那 么这操作是一模一样的,也就是说继续把这里面呢,这这一部分,这个输出啊, 和这个 feedforward 输出进行相加,然后再做一个规划处理,那么这个时候呢,在这个编码层就结束了哈,这一部分呢,我们通常把它称之为这个 encode 编码层,但这里你发现这里面有一个什么 n x, 对 吧? n x 什么意思呢?也就是说我们把就这个编码层啊,我们要 要什么呢?要循环多次啊,什么意思呢?大家看一下啊,我们假设 x 这个 n x 是 六层,是六层,那么相当于什么呢?相当于刚才那个操作啊,就要做六遍,就是我们第一次 encode 之后呢,然后再进行 encode 啊,就相当于什么呢?相当于把这个 encode 的 输出啊,作为下一个 encode 的 输入啊,这样子的,就是再走一遍这个多头注意力再走的 前缀神经网络,这叫左右变,左右变之后呢,最终还会是得到一个输出啊,这输出的维度啊,还是跟 x 最开始的这个 x 的 维度是一模一样的,也就是说啊,我们经过这个这个很复杂的一系列的处理之后,维度其实没有发生改变啊,还是这个 x 的 维度啊, 说是五百一十二位还是五百一十二位,如果他的行行数是比是三十的话,还是三十行啊?五百一十二类啊,这个样子,这里面的信息哈,里面的这些数字会发生改变,有了这么一个东西之后呢,就是他就会进入什么呢?会进入我们的这个解码层了。好,现在我们来讲解这个解码结构啊,讲这个解码结构的话,我们 是通过这张图来进行讲解啊,左边呢是编码器,右边是解码器,那编码器呢?就是我们输入的这个文本啊,输入的这个提示词,然后呢经过多层的这个编码器之后啊,会给 会有一个输出,那么假设我们这个输出是 y 啊,那么这个输出 y 的 维度呢?和这个这个输入 x 的 维度是一模一样的哈,行列都是一模一样的。 ok, 好, 那么现在呢,这个 y 要给到我们的这个解码器,给到的呢,其实是我们解码器中的 multi head attention, 就是 这个自注意力层哈, 看一下这个自助一层,它其实和我们这边的自助好像有点区别啊,虽然说多少三个输入,但是你会发现它有两个输入是来自于我们的编码器,还有一个输入呢,是来自于编码器自身的,那么先来分析这个来自于这个这个输入哈,那么这个输入其实啊我们往下看,其实来自于这个地方,对吧?这是输入, 这个是输出哈,这个输出是什么意思呢?然后这个输出我们一分为二的来看一下,如果说我们是在训练阶段,那么这个输入呢,就是我们的目标语句,那么他其实在训练的语言其实就是这 就是成对的哈,左边是中文,右边是英文这样的成对的,那么左边呢,我们称之为语言语句,那么右边呢?成为目标语句哈,好,那么这个呢?这个 out put 呢,其实就是我们的这个目标语句,那么他要做的事情呢?其实跟这边是一样的啊,也需要进行这个切入,做这个词转成这个向量,然后再去加上我们的 这个 position in bend 就是 呃, in encode 就是 我们的位置位置编码位置,切入加上之后呢?然后还是嘛?然后做一个 masked head attention 啊?是做这个注意力分数的这个计算,但是你发现它加了一个 mask, 加了一个野马,那么会有一点点区别,这个区别是什么呢?啊?所以三个输入我就不解释呢,跟跟这边其实是一样的哈, 我来解释一下这 masked head 啊, attention 什么意思?就是它这个加的这个野马是什么意思?加野马其实相当于什么?相当它会把这个信息遮挡一部分啊,就 是通过一个矩阵啊,去把这个信息的这个一部分给遮挡,这个我们看一下怎么遮的呢?遮挡方式,我们看一下这个绿色这边的呢,其实不遮挡的,蓝色部分遮挡的,也就用他把这边的信息给遮挡住啊,为什么遮挡住呢?其实他就是不让这个大模型看到后面的这个词语哈, 来进行预测嘛,对不对?所以后面的东西呢,不让他看见,就是说其实他跟这边相比的话,也就加了一个什么,加了一个遮挡,遮挡完之后呢,那么 它这里面同样的也会做什么?也会做这个残差连接,然后再加归一化,那么这个操作方式呢?是一模一样的,我就不解释了。好, ok, 最终的结果呢?它这个输出的结果的维度哈,其实 是一样的哈,但是它是 x 啊,那么它的维度跟它的维度是一模一样的。好,然后它会作为什么呢?它会作为多助力,作为这个 media head attention 的。 什么这个 we 这一部分啊,前面就是 q k 啊,它就是 we 啊,然后最后我们来做什么呢?然后做残差连接啊,然后再做 归一化,然后在这里做做这个乾坤神经网络,然后再产生连接,再归一化。 ok, 那 么这个时候呢,最终有会有一个输出结果,对不对?那么输出结果呢?其实它的假设这个输出结果是 x 啊,它的维度呢,其实跟我们这边最开始啊,就是跟最开始这边输入的维度是一模一样的, 那假设啊,这个最开始输入的维度是这个,我们假设一下,最开始输入的维度呢,是比如说是三十啊,乘以这个五百一十二这样的一个维度。好,那么到这边来了,就是输出这个结果依然是三十乘以五百一十二, 是这样一个维度,是这么一个维度,就局限只是你们的信息会发生改变哈,但是维度还是一模一样的,那么这样的一个维度呢?在这里需要做一个现象的变换啊,变成什么样子呢?因为他现在哈是一个三十乘以五百一十二的维度,他这个时候呢,其实没有包含,就是没有,没有,没有什么,没有体现出这个 这个维度还不够啊,我们要做一个深围的操作,深围的操作呢,就是要改变他的这个类的这个宽度啊,要变成什么样子呢?就是要变成这么一个 样子哈,就是它的啊,毫呢?还是这个什么?毫?还是三十毫?那但是它这个类呢?它变成词汇表的大小,变成一个词汇表的大小表下是词汇表是什么呢?是一万啊,就变成三十乘以一万啊,这样的一个矩阵。变成这样一个矩阵,它变成这样一个矩阵之后呢?然后再经过 softmax 啊,进行什么进行计算啊?计算就是说每一个 token 啊,在 每一个词语上面的这种概率,那么他就会变成一个什么样子呢?就会变成这么一个样子,我现在就画一个什么,画一个矩阵出来,就矩阵出来,就相当于一个表格一样的哈,那么假设这里就是三十好了,对吧?一号二号三十号加三十号, ok, 他 这个那么第一啊,就是第一格代表什么意思呢?直接代表啊,就是 to token 在 某一个词上面的概率是多少?然后呢?第二个字代表什么?这个 token 在 第二个词上面的的概率是多少?然后我们怎么样呢?然后我们最后我们再去用,最后我们再去计算啊,哪概率最大?就用这种方式来预测下一个 token, 也就是我们经过 sumplus 之后啊,得到的其实是一个概率的这么一个矩阵, 通过这个概率矩阵呢,来得到下一个 token, 那 么这个呢,就是我们的这个,它产生下一个 token 的 这个原理,就这个样子哈,关于我们的这个 transform 的 架构呢,我们就讲到这里面。

呃,我想把我的五零九零卖掉了。嗯,下面是一些我具体的原因。先说一下我当时为什么买 五零九零这张显卡,其实是我想用最新的开源的模型,因为当时我看了一些呃 ai 的 评测,我觉得开源的模型其实效果也是非常不错的,所以我就想去运行,比如说像蔚的模型是蔚二点一。呃,阿里的开源的视频模型, 所以我当时非常好奇啊,也是一个纯 ai 的 小白。呃,但是如果说你现在还是个 ai 小 白,其实我也不建议你去买,就为了自己去玩这些开源模型去买一张显卡,我就是一个活生生的例子,因为那个时候我确实不懂,我都不知道。呃, 其实只有一张显卡是不够的,你还要去买内存,然后去了解了很多模型在本地运行的一些知识,其实花了非常多的时间。呃,也 跟了一个 b 站的博主学习了很久啊。当当,当然非常感谢他的这样的开源的精神来呃分享,无私的分享这些知识。呃,这里也顺便插一嘴,如果说, 呃,你为了学康费 u i 或者说为了学一些 a i g c 的 东西,去购买一些付费的课程,课程坚决不要去购买。嗯,我觉得没有任何意义,去买这些课程就纯粹的割韭菜,我觉得纯粹割韭菜。 哎。拉回说,回到我的五零九零为什么想卖?就是我发现玩开源的模型是肯定是不够的啊,我现在已经去走向了,去探索闭源模型,而且未来一定是走向闭源模型。我觉得, 呃,就比如说现在的 flux 的 呃二代的模型,它如果说量化版本也是能够在家用的这个显卡上面去跑的,但是我觉得意义不大,因为你五零九零, 它的算力说白了我觉得是远远不够的。你如果想要用 ai 去作为生产力的话,它跑一张图要花多长时间?如果说我在线上平台,我可以同时跑好几张图,可以多线并发,你的本地的五零九零可以吗?肯定是不可以的 啊,这里面就涉及到了一个时间成本,还有一个你的五零九零。而且我现在就为了随时随地能用这张显卡,其实我是把它 呃做了远程的,可以访问的,我在外面任何地方都是可以访问我的这张显卡来进行工作的,但是我觉得即便是这样,也是没有线上平台来的方便的。 呃,我现在其实是订阅了 loveart 的 会员啊,尽管他现在因为被抢了,然后 也有一些平台本身的呃网上的一些非议,但是我还是买了他们最高等级的会员,我觉得非常的方便。而且我觉得,嗯,当时我是六千多块钱买的吧,现在可能有一点点涨价,但我觉得非常值。 嗯,尤其是你试用了 comfui 之后再去用这样的模型啊,这样的 a 阵的平台去用的时候,你会觉得它帮你提升了很多很多的生产效率,相比于你用 comfui 来说,而且 comfui 它的学习成本其实蛮高的。 嗯,就是,其实我最近也听到一个说法,就是尤其是在 ai 时代, ai 不是 应该你去学 ai 怎么用,然后你再去用它, 而是你应该直接把它拿来用在用中学在用中去体会这个工具,因为这个东西现在进步的实在是太快了, 包括有一些博主。嗯,我觉得他就是在尝试嘛,用 ai 的 开源的这些模型看尝试能做出一个什么样的片子,我觉得这样的精神是很好的。但是如果说你从纯生产力或者说纯为公司创造价值来说的话,其实意义不大 啊。包括现在万最新的二点五的模型,二点六的模型都没有做开源。呃,就算他做了开源,我相信五零九零也是跑不起来的。呃,所以我觉得 最终的我思前想后,我最终的结论就是五零九零我已经想卖掉它了,因为我觉得它对于我来说没有太大的价值。呃,如果说你想折腾一些 开源的东西,或者说你就是想纯折腾,我就可以折腾折腾,但是对于现在的我来说,我觉得没有太大必要啊。当然我觉得未来的话,显卡还有个很大的应用场景是,比如说 nas 可以 接上显卡,我觉得这个东西还是挺有意义的,但是可能也用不上五零九零,可能一个更低端一点的游戏显卡就够了,因为他可以在 ai, 呃,他可以跑一些 ai 的 程序,帮你去做文件的分类啊,文件的标注,我觉得这个应用我是非常非常看好的,以及我看未来能不能有更多的纳斯能去做这件事情,包括我知道,呃,好像飞牛的纳斯 还是有一些挤空间的纳斯可以去完成这样的一个功能,我觉得这个功能是非常非常好的,但可能我也不需要五零九零这么强劲的一个算力, 所以我思前想后,最终的结论就是五零九零我想卖掉了。呃,包括这台整机我也想卖掉了我觉得。 嗯,放在家里闲置有是一种浪费,我想把它出给啊有缘人,如果你们需要的话,我觉得你们可以购置这台机器。所以我接下来也非常期待我自己能用 loveart 能创作出更多的东西。对。

帅哥是做什么用的了?跑 ai 大 模型用的是吧?来咱的老铁们啊,跑 ai 大 模型的看一下,咱们这个是我们临沂的白纱布的老铁啊,媳妇要的颜值,老公要的性能啊,一台主机都兼顾了, 直接上了这颗心脏是咱们十五代的 u 九二八五 k 原装的啊,就这个 u 上这一站的话,这台电脑的性能就提上来了,将显卡的话是咱们五零八零的升任,然后上到 lg 六百的一个水冷 华硕的 z 八九零 a y w pc 版都是白色,再加上咱这个内存是女武神啊!三十二级套条六千四一个 t 的 红旗 g m t t l c 颗粒风扇堆满加了漆,吧箱上的是咱们 v k 零三啊!来兄弟看一下,咱家走线干净利索, 妹妹你肯定是满意的是吧?来看一下这一台一万八十的白色海景,咱们是否喜欢,再次感谢咱临沂白纱布我们这位帅哥和美女的支持啊!下期咱们分享更好的电脑配置。

每天讲透一个 ai 知识点,今天是深度学习模型工作原理讲解,嘿,欢迎大家,今天咱们不卷代码了,换个玩法,我带大家去参观一个特别牛的高科技工厂。哎,这个工厂啊,他不造车,也不造手机,他专门从一堆堆的数据里练出真金白银般的洞察力 来形成单。在这了,咱们先去瞅瞅工厂的设计蓝图,也就是模型架构。然后呢,去新员工培训中心看看模型是怎么学习的。接着是成品包装车间和生产线优化部门。最后咱们删到最高处,来个三百六十度全景,把整个工厂尽收眼底,准备好了吗?出发好,咱们第一站你就来到了设计办公室, 你看,任何一个牛气的工厂,都离不开一张牛武器的蓝图对吧?那在深度学习这个世界里啊,这样蓝图他有个专有名词,就叫模型架构。说白了,他就是决定了整个工厂怎么盖,生产线怎么铺,从哪进料,从哪出货。 这一句话可以说是咱们这个 ai 工厂的座右铭了。你想想这个画面,这边海量的数据像原材料一样哗哗的被吞进去,然后呢,经过工厂里一堆黑科技设备的精密加工,最后那边吐出来的就是闪闪发光的成品, 也就是那些特别有价值的预测和洞察。你看这张图是不是一目了然?咱们这工厂的工作流啊,特别清晰,首先得有个卸货区,负责接收各种原材料,这就是输入。然后呢,中间是一连串高精尖的加工车间,各种神奇的操作都在这发生。最后成品出来了, 得有个发货区吧,那就是输出了。再往细了看,这条生产线主要就分成了三大块,第一块输入层,你可以把它想成是原料的,质检部门负责把送来的数据检查一下,做个预处理。然后最关键的部分来了隐藏层, 这可是整个工厂的心脏啊,所有核心的复杂的加工全都在这。哎,为啥叫深度学习?就是因为这个隐藏层啊,可以一层一层的往上叠,叠的老深了。最后呢,就是输出层,这就好比是总装车间负责把前面处理好的半成品组装成最终的结果。 哎,光有蓝图和生产线还不行啊,工厂里总得有干活的工人吧。走,咱们现在就去新兵训练营瞧瞧, 看看咱们模型的员工,也就是那些叫参数的小家伙们,是怎么从啥也不懂的菜鸟,一步步被调教成经验丰富的老司机的。哈哈,你看这个循环是不是觉得特别眼熟?这不就是咱们程序员的日常吗? 写代码跑一下出 bug 了,抓耳挠腮找原因,改代码再跑一次,简直就是无限循环。不过人家模型可比咱们牛多了,他能不吃不喝不睡觉,把这个过程重复各几百万次,关键是人家从来不发牢骚,也不会在注视里骂人。 所以说啊,这整个学习过程的精髓就是这么一个五步走的反馈循环。你看第一步,模型得知到目标是啥,对吧? 第二步,他自己先干一次活,然后把结果跟正确答案比对一下,看看差了多少。第三步也是最关键的,根据这个差距,系统会给他一个整改意见。第四步,模型就根据这个意见去调整自己内部成千上万个小旋钮和开关, 也就是我们说的参数。这个技术活行话叫反向传播。最后一步调完了,再来一次,看看这次是不是离目标更近了,就这么一直循环,直到他成为一个合格的老师傅。好嘞,经过一番魔鬼训练,咱们的工厂终于能稳定生产出高质量的产品了。 那接下来干嘛啊?当然是打包发货了,这个过程在咱们这行叫模型部署。哎,你可别小看这个打包,怎么打?用什么箱子打,这里面的门道可深着呢。这时候啊,咱们面前主要有两个选项,就像这张图画的,我们是开个小卡车,只把训练好的那帮熟练工和他会的技能拉走呢? 还是直接开各大卡车,把整个工厂的设计图纸、所有机器连带所有工人整个端走,这是个关键的选择。这其实就跟咱们搬家一个道理, 你是选择把宜家的家具全拆成零件,带上说明书到新家再吭哧吭哧装一遍,还是干脆整个柜子搬走?只保存参数,就相当于只带零件和说明书, 好处是文件小灵活,在哪都能装,但坏处是你得自己再搭一遍架子。而保存整个模型呢, 就相当于搬整个柜子,优点是开箱即用,省事。但缺点也很明显,文件大。而且万一新家的门不够高,或者环境变了,这柜子可能就水土不服, 直接用不了了。做咱们旅程的下一站,去一个特别重要的部门,生产优化部。你要知道,在 ai 这个世界里,算力、内存那可都是真金白银呢,烧起来可快了。所以咱们的目标也很明确,在保证产品质量一点都不下降的前提下,想尽一切办法让这个工厂变得更小,跑得更快,耗能更低。 目的就一个,花小钱办大事,用最少的资源干出最好的活。你看这张图,简直太形象了,就是把一个原来又大又笨重的齿轮,经过咱们精雕细琢,变成一个轻巧、强大又高效的精密零件,这个过程就叫优化。 咱们程序员为了实现这个目标,那可是有不少骚操作的。比如说有一种叫低精度存储,啥意思呢?就好比原来存一张照片,你用的是超高清的无损格式文件,好大个了。现在呢,我把它存成一个高品质的 jpg, 肉眼看没啥区别,但文件大小可能只有原来十分之的, 这就是用精度换空间。还有一种更狠的叫剪纸,顾名思义,就是把模型里那些不太重要、贡献不大的连接和参数咔嚓一下直接剪掉,就像给大树修剪枯枝败叶一样,让整个模型变得更清爽、更高效。好了,到现在为止呢,工厂的几个核心部门咱们都逛完了,现在是时候站到最高的观景台, 从一个上帝视角来俯瞰一下我们这座宏伟的 ai 工厂,看看他是如何作为一个整体完美的协同工作的。你看,这就是一个 ai 模型的完整生命周期, 一切都始于那个作为地基的架构蓝图,然后我们用反馈循环这个引擎来驱动他的学习和成长。 当他学成之后,我们需要对他进行管理和封装,以便部署到实际应用中。在他运行的时候,我们还得有透视的工具来洞察他的内部状态,最后追求卓越永无止境。我们需要不断的进行优化,让他的效率越来越高,环环相扣,缺一不可。 而且我得强调一下, ai 工厂这个比喻可不只是为了方便理解,随便说说的,它是真实存在的。你看,用上像 not you run 这样的神仙工具,你真的可以给训练好的模型拍一张 x 光片,把它的五脏六腑看得一清二楚。你可以亲眼追踪一个数据,看它是怎么从入口进去,留过一个又一个叫 com two d 的 加工车间, 被里面的参数工人们一番操作,最后变成成品从出口出来的,酷不酷?好了,咱们这次 ai 工厂的深度浏览到这里就差不多要结束了。从一张设计蓝图到一个训练有素、不断优化的自动化工厂,我们一起见证了一个 ai 模型从零到一的全过程。而 现在这些 ai 工厂的规模和能力每天都在以我们几乎无法想象的速度在进化。这又给我们留下了一个特别令人兴奋的问题,未来的他们又将会为我们这个世界制造出怎样不可思议的奇迹呢?好了,今天就聊到这,感谢收看!