粉丝1.3万获赞8.9万

呃,今天呢,我们跟大家介绍一个模型量化呃的一个算法叫 a w q 啊,它是属于呃大模型压缩和加速的这样的一个优化算法啊, 我们一起来看看一篇。呃,这个这个算法是麻省理工他们研究的啊,而且他也以他的,他他们也把整个一个算法变成了一个这样 他有一个项目叫 alt a w q 这样一个项目。那么我们今天的话就先了解一下他这个算法,他这个算法到底是怎么回事啊?能够做到什么程度啊?对我们来讲,好,我们来看看。那么为什么会有这个 模型的量化呢?我讲的通俗一点,因为呃大模型呢,它非常消耗这个 g p u 里面的内存啊,我们一般呢,我们都是跑在单精度跟十六啊,这种 f p f 十六的半精度的 f p 十六的这个半精度这个上面, 但是有些时候我们是还可以跑在这个 r n t 八八位整形八 bit 的这样的一个量化的这样一个操作上面,八个 bit 量化的话呢,它也有很多好处啊,它至少可以让我们的内存效率呃减少一半啊。那么 麻式理工呢,他们就说啊,这个够了吗?因为我们现在的模型越来越大啊,像拉玛六十五 b 的这种模型越来越大啊,我们用 a 一百可能还不够啊,那么怎么办啊?那么我们可以再小那个 化变成不行,那么我们把它变成 r n t 四 r n t 三,看看行不行啊,对吧?就是要需要使用更低的这个 bit 啊,然后把这个权重进行量化,然后去减少它的整个一个计算量和 g p u 的内用 内容的使用率啊,他等于是这样,那么他们也做了一个实验啊,他这个实验里面这张图就讲了一下,如果是 a 一百呃拉玛六十五 b 的这个模型啊, 如果他跑在呃 bench size 是一的这样情况啊,他的这个算力和是远远够的啊,如果他跑在一百二十八的这个 bench size 的话呢,他的算力还是够的,那么他的算力还在增加,但是你可以看到他这个就已经上不去了啊,他的主要的问题还是在内存,内存强,就是他这个内存上面 内存的消耗,上面内存的这呃吞吐量上面他还是有巨大的这个 get 跟他的这个算力其实是没有太大的问题啊,那么他跑不上去,主要还是要减少内存的这个消耗,那如果把 内存消耗能够减少的话,它能够进一步的去带动它的整个一个呃大模型的整个一个吞吐量啊,它这个是一个基础问题啊,那么他们呢就研究了啊,如果我把 f p 十六就单精度的啊, f p 十六,然后转成 r n t 三,就三 bet 的这样的一个量化的这样的一个东西啊,这个里面也讲了啊,它只是把它整形的话 啊,一零三啊,对吧?你可以看得到啊,它这个操作叫 r t n r t n 的这样一个操作啊,操作完了之后呢,它确实它可以大幅降低内存的这样的一个使用量啊,而且它用 r n t 之后,它其实是可以把那个就是这个,它所谓的就 那个叫矩阵啊,就是 group 啊,它可以把那个 group size, 它可以把它变成一百二十八个呃,集集中在一起啊,进行批处理啊,那这样的话呢,它在这个单位的整个一个呃内存里面,它可以存更多的这个数据,呃,计算量,呃可以显著降低内存的使用量,也可以显著的降低, 去进一步减少这个内存的这样的一个瓶颈啊。啊,他这样做啊,是有带来非常大的好处,但是他的坏处是什么呢?他的这个精度降低了,他的精度降低了啊,是显著的降低啊,他就是你这个大模型原来是非常 聪明的啊,但是经过你的量化之后呢,他就变成了一个傻子啊,他觉得是这样啊,所以这个方式啊,虽然 gpu 的使用量 降低了,但是他的精度是不够啊,所以这样光这样操作是不够的,那么他们就想了一个办法啊,他想了一个什么办法呢?他们发现啊, 我,我在量化的这个过程当中,我可能把某些列啊,某些权重上面的列它进行 f p 十六啊,它就是保留百分之零点零一的这样的一些权重啊,有些重要的权重啊,它还是适用 f p 十六的这种方式,他这样就会变成一个混合精度啊,大部分都是用了这样一个整形,只有一部分,很少的一部分用了 f p 十六,哎,这样他就会发现,哎,他这个精度啊,还是能够保持的非常好哎,他不但 它的内存稍微增加了一点点,但是它的这个整个一个模型啊,它的精度它还是保持的非常好啊,它的稍微损失了一点精度,但是它 大幅下降这个 gpu 内存的使用量啊,他有这样一个好处啊,那么这个就是他们目前的叫混合精度的这样一个操作啊,光有这个混合精度的,我们要去看他到底把哪一列 啊,哪个权重作为一个混合进度呢?这个是比较重要的啊,他们试了很多方法啊,一种方法呢是我不管三七二十一,我看哪个权重啊,啊,比较重要,我就固定的有一列,把它变成这个,他这个发现呢,就固定的这个权重的这个量化啊,他的 他对改进还是非常小啊,他的,呃性能还是不好,还有一种呢,随机,随机也不行,他们呢就发明了一种方法,通过一个叫 active 啊,去计算你这个 像量当中一个最重要的这样的一个权重,让他保留下来啊,那么这样他就会得到最大的一个改进啊,所以他这个方案叫做 active activation 啊,啊,他就会变成 这样的 a 就是这么来的 activation 啊,激活感知的这个权重进行量化哎,他这个名字就是这么来的,这个就是 awq 啊,他的算法的名字就是这么来的啊,好 操作啊,但他这样操作,他想,哎,能不能进一步,再进一步再降低啊,他的这个损失啊,那么他呢就会发现,哎,我可以在权重上面重要的这个上面,我先成一个,一个 scaling, 就是成成一个系数,成成一个扩大的一个系数大于一的这样一个系数,去减少他的这个量化的这样一个错误啊,他在后面的操作里面呢,再做一个 除法,那么一乘一除,他等于是说这个精度啊,没有任何变化啊,这个数值没有任何变化,但是他能够很好的去进一步去降低他这个权重的这个错误率,那么他们也测了如果一点、五倍、两倍、四倍,到底哪一个好呢?哎,他等于是这样,那么他目前看下的四点 两倍这个数据是比较好的,一定是固定值,一定是最优的吗?他们又去研究了一些算法啊,他就做了一些函数啊,他就想方设法啊,尽可能的啊,不要用一到一些混合的精度啊,他尽可能不要用到一些混合的精度,他尽可能把它整形化,但通过一个系数啊,把它给 全部整形化,那这样他所消耗的这样的一个算力呃是最少的呃,包括他所需要的这个内存也是最少的。他通过这种啊,把它成一个系数,把它整形化啊,进一步去除一个系数,去降低他的整个一个损失,通过这种来做的啊,那么他发现 如果去乘一个系数的话,那么这个系数是到底是多大呢?那么他们又发明了一个算法叫 fast grade search 啊,他通过这种方法啊,去找到这样的一个系数啊,这个系数去乘以这个权重,或者后后面去除以这个权重,他 是最优的啊,他找到了这样的一个方案,他得是这样,他的损失率啊,可以进一步的降低啊,变成十三点幺八啊,比原来成一个固定系数会更好啊,他是,所以他就会变成 叫 activation, 呃, where, 呃, weight, 呃,这个权重的这样一个量化啊,他就会变成激活的这样的一个, 呃,感激的一个权重量化啊,他这个名字就是这么来的。他这个里面也有一个算法啊,好,这个是他的这个基础的原理啊,好,那么他按照他这个原理呢,他就把这个 算法给算给做出来了,那么他也做了一些呃,对比啊,叫呃, g p g q, 他是用拉玛 two 的这样的一个模型和拉玛一和拉玛二的这样一个模型,分别做这样的一个对比啊。呃,他用不同的算法,用 i bit 三位和 bit 四位,呃呃, group 是幺二八,呃,这样一个参数,这个呢是 f p 十六, 是半径度啊,是比较准的啊,你可以看到啊,他的这个数值越低是越越好,他的这个损失率啊,他的这个错误率,他的也是这样,你可以看到这个还是比较好的啊,像这个啊,如果是 rnt h 四的话,你可以看到他跟五点六零跟五点四七,差别已经不是太大了, 差别已经不是太大,特别是在大模型上面,七十 b 的这种模型上面,它的差别已经很小啊,所以到它的内存的使用量,如果我们用 r n t 四的话, 你可以看到啊,他需要的内存就会非常少啊。回头我给大家展示一张图,这张图里面会重点会去讲啊,如果我们用七十币的这种辣妈的这种大模型,哎,其实是可以跑在一张 gpu 卡里面的,同时它的性能也是非常好 啊,推力加速的效果也是不错啊,所以这个是他的这个算法的 a w q 的这个价值啊。好,那么他最后呢啊,他又给了一张图啊,呃, g p t q 的话,也是一种 变化的算法,这个他的这个算法到 a w q 啊,他也是一种算法,他跟对比了其他的这个算法之后呢,他会发现就是他的这个算法啊,他的这个损失率会更低,会更好,大家也是这样啊,他主要是讲的是这个啊。好,那么这篇的呢,论文就会跟大家就介绍到这,我们看看这个项目 项目这个情况啊,这个项目的话呢,它原版的这个项目是在这叫 l l n a w q 啊,那么这个是老量啊,这个项目啊,那么现在的话呢,它这个项目呃,又在新的一个项目上面进一步去发展啊,这个项目叫叫 alter a w q, 他们做这个架构可以做的更好一些啊,所以他叫 alt a w q 啊,那么他跟 f p 十六对比啊,他这个上面也讲了一下,如果用四倍的话,他会比 f p 十六要少用三倍的这个 内存啊,就是这样啊,非常有价值,而且他的效率还会得到翻倍,叫速度会翻,推力的速度会加倍,同时他的内存的消耗会只有原来 三分之一啊,这个是他这个项目的价值。好,我们来看看他目前支持的模型啊,拉玛 two, 拉玛一啊, mister 二、米库纳,像这种啊,中国有一个叫,呃,这个叫飞鹰啊,飞鹰一模型和飞鹰二模型哎,特别我比较看重的是中文中英文的这个飞鹰二,他有一个三十四 d 的这个模型,他也是可以支持 a w q 的讲话啊,这个非常有价值啊,我们可以看一下啊,如果他经过量化了之后啊,他的内存呃就会非常少啊,他七 b 的话,你看他经过 rnt 亮化之后啊,它只需要四个 gb 啊,就够了啊。如呃,它是可以跑在那个,如果是 啊,这个是七 b 的模型,他在测这个是七 b 的这个模型,拉麻特的,这这这个也是七 b 的模型,我们看一个模型大一点啊,啊,看一个三十四 b 的模型啊,三十四 b 的模型呢?他这边讲了,如果二零四八的他跑在一块 gtu 卡上就可以, 只要二十 g b 的这个就够了啊,他也是跑在这个量化上面, a w q 四倍的量化,只要二十四 g b 就够了啊,他的如果你要呃这个 contex 更大一点的话,比 co 的要更长一点的,那你可以用两块 g p u 啊,用那个 三零九零啊,四四四零九零的两块 gpu, 那你就可以跑这样一个三十四 b 的这样一个大模型啊,原来的话是不可想象啊,你这么大的一个模型啊,怎么可能用两块 cpu 就可以跑出来了,同时它的性能也不是很差,但可以用这个大模型用作一些推理商。好吧,好,下次这个项目我就跟大家就介绍到这,下次有机会的话我再给大家演示一下怎么用 啊, o two a w q 进行量化啊,然后怎么进行推理啊,怎么省内存,怎么样加速这个推理的过程,好吧,好啊,今天这个啊,这个文章啊,就跟大家就介绍到这。

欢迎来到第七章,今天我们来学习如何保存和加载模型。在本章中,我们将探讨如何持久化模型的状态,包括保存、加载和运行模型预测。 我们首先介绍如何保存和加载模型的权重。 py torch 模型的参数存储在一个叫做 state 下划线 dict 的 内部状态字典中。 这里我们使用 vgg 十六预训练模型,并将其权重保存到文件中。接下来我们看看如何加载这些权重。首先,我们需要实力化相同的模型,然后使用 load 下划线, state 下划线 dick 方法加载参数。 这里我们加载上一步保存的权重,并将模型设置为评估模式。请注意,在推理之前务必调用 model evel 方法,这将确保关闭 drop out 和批归一化层,避免不一致的推理结果。 我们也可以保存和加载带有结构的模型,这时就需要保存整个 model 对 象。 使用 torch safe 方法直接保存整个模型。然后我们可以使用 torch load 方法加载整个模型。 如下所示,我们加载整个模型,包括其结构。这种方法在叙列化模型时使用 python pico 模块,因此在加载模型时依赖于实际的类定义可用。 最后,建议您参考以下教程,以更深入地了解 py torch 中的保存和加载技术。 本章我们学习了如何保存和加载 py torch 模型,关键要点如下。

如何快速学习 pay torch? 这里我强烈推荐这套教程,每个章节大概三十分钟到两小时,只需要每天投入一小时,你就能在八周内掌握 pay torch。 这份笔记是为在读研究生在学习 pay torch 期间整理的,完全是从初学者角度出发, 通俗易懂,包含了学习过程中的各个难点。所有的代码都可以在 payterm 中进行测试,建议通过 get 克隆到本地运行 pdf 级,完整的代码和数据级我也都打包好了。

piotch 科普,你刷到的 ai 大 模型图像生成语音识别背后大概率都用到了 piotch。 它到底是什么? 为什么成了 ai 开发者的首选?首先明确, piotch 是 二零一六年由 facebook 县密塔人工智能研究院推出的开源机器学习框架,核心作用是帮开发者搭建训练和部署 ai 模型。 它的第一个核心优势是医用性,采用动态计算图,写代码时能实时调试,就像搭积木一样直观,新手也能快速上手,这也是它对比贪思 flow 最突出的特点。第二个优势是生态丰富,全球超百分之八十的 ai 研究者和开发者在用 python, 不管是训练大模型做计算机视觉,还是自然语言处理,都有现成的工具库和案例。第三个优势是兼容性强,完美适配抠打, 能充分利用 gpu 算力加速模型训练,还支持端侧部署,手机服务器上都能跑。现在不管是高校科研企业落地,还是 stable diffusion、 拉玛等热门 ai 项目, 几乎都基于 padouch 开发,它已经成了 ai 领域的通用语言。简单说, padouch 就是 ai 开发者的工具箱,能让复杂的模型训练和部署变得简单,也是入门 ai 必须掌握的核心工具。

我们今天来看的是代码相关的实现,所以我想今天呢能够把 python 的 基本使用和大家来说一说,另外就是深度学习,我们最终用代码去完整的完成一个模型的训练过程当中代码结构是怎样的啊?这里边有哪些重要的部分? 其实深度学习这一块儿,如果大家已经把本身深度学习的学习过程弄清楚了, 代码不过就是这个学习过程用让计算机去来完成的一个跟计算机交流的一个工具,所以它完全都是复现,都是用来完成我们想让计算机所做的那些事情的一个表达的方式,语言吗? 所以呢,如果大家把深度学习的学习过程本身是弄清楚的了,你知道啊,在这里面你要有数据的处理,要有模型的构建,要有训练的过程,以及呢,如果需要的话,你还可以有些验证部分的话,那么不过就是把你想要做的这些事情用编程,用程序语言 给它体现出来。我们一般呢,大家可能以 python 为主,在这里如果是深度学习的框架的话,呃,我这里是以 python 为主啊,大家现在目前使用 python 应当也是最多的,所以今天呢,我就想和大家一起来看一看,这个深度学习的代码都是怎样的结构。 和我们之前如果有些同学做过开发的话,你会发现和那些,呃,去做一些网站啊,或者是我们去做一些小程序啊,一些 app 啊, 来对比看,咱们这个深度学习的代码结构是极其固定的,这样的,这样的话对于我们很多刚刚开始入门的同学呢,也是相对比较友好的啊,所以大家可以一起来看看啊,其实完整的深度学习代码这里就那么几个部分, 不过呢,在每一个具体的任务里边啊,比如说都要数据的处理,那不同的任务咱们数据处理的过程可能会有差别, 那每一个任务里面呢,都得构建自己的模型,那么当然,不同的任务里面,咱们构建的模型会有区别,但整体的结构都要有啊这么几个部分,所以就是想从这个角度和大家一起来做一些分享啊,我现在就来带大家一起看一看 petouch 的 一些基本的应用。 那刚才说到了,他是一个框架啊,任何一个框架大家在使用的时候呢,都首先先弄清楚这个框架,他自己的数据类型。 刚才我提到的有 numpad, 很多同学可能也之前熟悉 numpad, numpad 啊,如果你要用,你要先清楚 numpad 的 数据类型,我们现在说的是 petouch, 所以呢,咱得先知道 petouch 里边它的数据自己在这里是什么类型,那 petouch 是 什么数据类型呢?就是 tensor 类型 tony, 大家知道吧,其实最对应的就是张亮对不对啊?那人家 python 这里边就叫这个数据类型,它就叫做了 tony。 好, 所以呢,我们要用 python 里边的各个接口去做各种事情,完成各种运算的时候, 他接收的啊,他能够认的是人家的 python 类型,所以你要用这个框架的前提是你要先准备好你的数据是 python 类型,这是需要大家知道的第一件事。 那其实呢,整个的深度学习,它不过就是一个矩阵运算的事,我们把数据丢给模型进行第一步,第二步,第三步,一步一步的运算,在这个过程当中一直传递的数据都是矩阵, 所以在这儿的话不过就是一个矩阵运算, tensor 就是 一个能够来完成它。是也是也是,对于矩阵的各种形状啊,都能有一些捕获和处理方式的这么一种数据类型。 好了,那么我们现在呢,首先在我这里我把 python 给它 import 进来,我打开的是 jupiter notebook, 目前呢用的是 python, 我 这三点一二吧,好像是啊。首先我知道它是 python 里边这个环境里的一个框架,所以我得把它先通过 import 的 语句给它加载进来,加载进来我这个文件就能够调 python 这里边的东西了, 所以在这儿呢,我们 import touch 啊,把我的 pad touch 给它加载进来。当然 import touch 能够成功的前提是我们是我当前的环境里边已经安装了 pad touch, 所以 怎么安装呢?大家可以通过 pip pip install 直接联网就可以去安装比较新的版本了。好,这我当然已经安装好了啊,所以我在这儿直接 import touch 就 可以加载到我当前的文件去使用 pad touch 里边的各个接口了。 ok, 同学们, 好了,大家可能会发现老师你说的这一行我明白在干嘛了,那下面是吧,怎么 top 点 n n 呢? top, 它这个里边也包含很多个具体的模块啊,这个 n n 模块我专门给它加载进来,就叫做了 n n。 还有这个优化器的部分啊,我也给它加载进来,叫做了 o p t padouch 里边的这个 functional 里边包含了有很多我们可以直接来用的常用的一些函数,我也给它直接起了个名叫做 f, 所以 它们其实都是 padouch 里边的啊,一个个的东西。好,我把它们呢先加载进来, 让它加载进来,那这样的话,我的文件后面的语句就可以调这些东西了,就可以直接 touch 点什么去用 n, n 点什么去用 o、 p, t, 点什么去用 f 点什么?直接去用了 啊,加载进来,我们先来就用 padouch 啊, padouch 点 random 啊,这说明我调用的是 padouch 框架里边的函数, 它生成的这个 w 呢,自然就是一个 tensor 类型。人,你用 python 生成的,那肯定是 python 的 tensor 类型啊,对不对?好,我们要时刻弄清楚咱们现在的数据类型啊, 所以在这儿呢,我用了 python 里边的 random, 那 它是来干嘛的呢?就是用随机数来填充的指定形状啊,五乘八的这样一个形状,用随机数来填充的一个二维的数组。好,我把它记作 w, 下面也一样,我还去生成了一个一维的啊,拥有了八个数字的这样的一个 pencil 类型。 b, 还有一行五列的啊,这样的一个二维的数据是 x, 下面呢,还有一个是 y。 好, 我就用 padouch 里边的接口去生成了四个张量类型。如果大家有一点基础的话,你可以知道,我应该拿它要往后做预算,那我现在先把这四个需要往后做预算的类,这个 对象我先给他创建了出来。来,同学们,如果我现在已经摆出来 w、 b、 x、 y 了,我又告诉你,我打算用它们来做运算,所以你猜我要做什么运算呢?很简单的一个限性的转换过程,对不对?所以我不过用 x 去和 w 相乘, 然后再和 b 相加,就这样去做一个计算,得到了一个输出的结果。好,我用我现在的这个输出的结果呢, 和 y 和我这里定义的这个大 y 去做比对,所以这个大 y 呢,就算做是我现在准备的数据的 label 了啊,这个 x 呢,就算做是我模型现在要输入的数据了。我的模型里面呢,用到了两个参数,分别是 w 和 b, 我 的模型就是一个很简单的限性模型, 说清楚了吗?所以在这儿呢,我用前面的 x 和 w 相乘,这里是矩阵乘法啊,再加上 b, 做完这个运算之后呢,我又经过了一个 re 函数,这个函数在这里就当做我们这一步的激活函数了, 所以呢,就得到了一个结果 y 啊,所以这就是一个全连接的运算,这一个是一个全连接的运算,我把这个全连接的运算没有直接调 n n 点 linear 接口,而是我自己把里边所用到的参数和输入的数据都给它定义了出来,然后我自己就这么完成了一步运算, x 的 形状一乘五, w 形状五乘八,所以得到了什么样的结果呢?它就是一个 矩阵的乘法的过程。来,这就是一步运算啊,而我在这里呢,通过 touch 点 random 啊,去生成了这样的几个 tensor 类型,去做了这样的运算。同学们看啊, 之所以我在这儿能用这个 at 符号来完成刚才那样的一个矩阵的乘法,是因为我现在都是 tensor 类型。同学们,这个 tensor 类型它是可以有用 at 符号去完成矩阵乘法的,就是点击啊, 这样的一个运算方式的,它是能够这么去实现的。如果不是 tensor 类型,比如说我们现在是 python 的 列表类型,那你直接用它也是用不了的,所以一定要时刻清楚我们现在是什么数据类型,它对应了你能够进行什么样的运算操作啊? 小 y 是 预测值,大 y 是 真实值,特别棒啊,奥特曼是这样的,好,我其实就在这手写这么一个啊,简单的计算步骤,继续咱们一点点走。这里呢,我们生成了四个 tensor 类型,一个是我用来当做模型输入数据的 x, 一个呢是用来当做我模型里边计算所使用的参数的 w 和 b 啊,这个大的 y 呢,就对应的是我现在数据的 label 了,出来啊,虽然没有什么意义,这不就是看一下运算过程吗? 所以呢,我在这里就有了这样的一步运算, w 和 x 相乘, x 乘以 w 加 b, 它们这是一个限性转换的结果,我再让它经过一个激活函数,你看这不就是一个全连接的运算吗? 好了,我把它的输出这一步全连接的输出记作了小 y, 大 y 是 我们的 label, 所以 下一步呢,我有模型的输出,小 y 就 可以往后去进行损失的运算,把小 y 和大 y 模型的输出和本身的 label 作为我损失函数的两个参数的输入,去进行交叉商的运算,得到这一步的损失, ok 吗? 前向传播过程,包括了数据从模型的输入到输出好模型的输出,继续往后去进行一个损失的运算, 这就是我们这几行代码,把它运行一下,这个是交叉商损失函数,这个是 python 里边它自己集成的它内置的一个交叉商损失函数,我在这里直接去调用了人家写好的那个交叉商损失函数, 所以我把现在我模型的输出和本身的 label 输进去,它返回的就是这个损失函数的值了,也就是损失值。 现在啊,我自己定义出来的那个简单的模型,我自己定义出来的一个简单的数据 x 就 已经完成了前向传播,并且我调用了 python 里边的这个交叉上损失函数,帮我来完成了损失的运算。 如果你有一些积极学习的知识基础的话,你会知道啊,我的目的在训练这里最终是得到参数的更新。那参数的更新的步骤啊,第一步, 把数据丢进来进行前向传播,得到模型的输出。第二步,把模型的输出和 label 进行比对,得到损失。第三步就是有损失,我们反着去进行啥呢?好的, backward 字面意义反向传播对不对?反向传播好, 所以我在这啊,把反向传播这行代码就执行过了,如果大家有一些基础的话,来告诉我此时这里发生了什么,也就是这一行执行过之后具体对应的事情是什么呢? 反求导还有其他的答案吗?计算梯度好的求偏导好,特别棒啊,在这呢,虽然他调用的是 backward 这个函数,这个函数我们翻译过来自然就是反向传播,但请同学们弄清楚此时真正发生的事情是什么? 他这一个函数执行过之后,是能够将所有参数的梯度值在这里求得,怎么求得的呢?就从损失从后往前,通过练式法则,这是数学问题,我们在这里不展开啊,通过咱们的这个数学方面的练式法则的运算,从损失由后 到前,一步一步地去找到所有参数的梯度值, ok 吗?所以你要弄清楚啊,这一行执行过之后,它所对应实质上的事情是找到了 计算出来的当前所有参数的梯度值。好,这一点没有问题。来回复我,零,这很重要啊,大家经常在代码里面都会看到这一行,但这一行到底发生了什么呢?如果你跟着我听的话,一会啊,你可以再去翻一翻你之前读起来比较费劲的代码,看看是不是能有帮助啊。好的, 这是 backward, 我 们找到了所有参数的 t 度,所以在这儿我也执行过了啊,我这些参数能求 t 度吗?其实有一点小细节,就是刚才有同学问到的, 大家会关注到我,我都是用的 pad touch, 点 touch, 点 run run 去生成的这四个 pencil 类型,但为什么 x 和 b 这里我加了这个参数的设置呢?让它为 true, 默认情况下,它取值是为 false 的, 因为它是一会儿我模型里边要求梯度的参数,而 x 和 也就是 x 吧,在这里也会去把它放到我的运算步骤里边去,但它并不是我要求梯度的那些参数, 所以它就不用加上这个属性,或者它的这个属性, x 的 这个属性就可以取默认值 false 了。但如果你的模型这个位置的啊,这个对象,它是作为要更新的参数使用, 那么这个对象的 request grade 属性一定是要为 true 的 好,这一点非常重要啊, 如果大家有一些迁移学习的经验的话,那我要把别人的模型拿过来,一部分参数冻结,不训练一部分参数,用我现在的数据去进行这些参数的调整的话,就是将这些参数的这些属性给它由 false 定义为 true, 我 说清楚了吗?所以它就对应了这个参数是否能够之后求得梯度,从而也就对应了这个参数是否将会进行学习和训练。我说清楚了吗? 所以它很重要啊,请大家关注它,所以在这里呢,如果我们我也跟大家试一下啊,来,同学们,如果我把这个去掉了,好,我重新声明一下,来跑一下,再看 backward。 之后啊,我们来看 w 点 red 有 东西吗? 没有啊,但是如果我在这里呢,我给大家我们加一个吧,我们是要来看 b 啊,因为 b 的 这个属性设置为处的好,我们来看 b 的 格的,也就是它的梯度值,你会发现就已经计算出来了, 所以这个属性极其重要,它就确定了你现在模型当中的哪些参数是可以在训练过程当中会更新的,不会被更新的, ok, 所以 他很重要。好了,这个就说到这好,那么我们在这里呢,就把一个简单的过程带大家看了,你可以体会到一个参数的梯度的求得的过程了,如果你想完整的去看他的更新过程的话,不过就是在下面再加一个什么呢? 让 w 啊, w 没有,我们来 b 吧,好,让 b 去,等于 b 减去,我手动定义一个学习率啊,零点零零零一吧, 然后去乘以这个 grade, 这不就是对于我们的参数 b 进行了更新吗?这不就是一个梯度下降的算法吗? 所以到这儿咱们的模型的一次参数更新就完成了。 现在我们已经知道了拍 touch 里边的基本的数据类型是 tensor 啊,然后呢它可以做这样的一些基本的使用,那我们在我们完整的一个模型构建出来之后,它里面所有的参数在更新的过程当中也都是这样的过程,这个数据类型咱们就说到这啊,下面我们来看训练过程, 其实刚才我们已经看到了训练过程,训练过程我们总结一下就是四步,第一步把数据丢给你的模型进行前向传播,得到模型的输出。 第二步就是有输出计算损失。第三步呢,就是有损失去找到所有参数的梯度,也就是 lost 点 backward 的 这一步。第四步啊,找到了所有的梯度值以后就可以去更新参数了,而这四步我们可以循环起来,那就是你参数更新的那些轮次了。 这里呢,我想带大家去看的就是我们今天的第二个部分啊,训练过程。首先呢咱们要弄清楚的是,咱们现在不管是大模型还是小的模型啊,不管你复杂问题还是简单问题,不管你是视觉还是 nlp, 我 们对于训练这件事,大家知道训练的本质是什么吗?你先弄清楚 训练的本质是在干嘛?训练这个事情的本质就是在优化我们模型当中的那些参数的,注意这些参数呢, 其实参数就是跟超参数去分开就好了,这些参数就是参数,不是超参数,我说清楚了吗?所以训练的本质训练的这个过程就对应了一个参数的调优,参数的优化过程。所以我们训练的目的自然就是去完成参数的 更新,找到最合理的参数值了,那么这个参数值咱是没有可能一步到位的,所以训练这件事呢,通常就是我们每一次啊训练,他是一个轮回, 一个一,这一轮里边的包含了四个步骤,最终的目的是让让你的参数进行一次更新,然后呢把这个轮给他打包起来,这四步循环起来,让参数一步一步一步一步的去往合理的方向去进行更新,这就是咱们的训练。 好了,我想跟大家来看的是代码啊,所以呢,现在我们看到的是啊,不管咱们用什么模型,解决什么问题,你是哪一个领域,只要你用的是深度学习,是深度学习,咱们这块的参数的优化,也就是训练所使用的优化算法就是梯度下降,当然 有些是梯度下降的变种,但本质都是梯度下降,而最多用到的就是小批量梯度下降, 所以我们现在的这个代码就对应了一个小批量的梯度下降过程。所以不管他是,他是跨越了具体的模型的设计,具体的数据 来看的,所有大家那里的深度学习的小批量梯度下降的代码,其实都是这个啊,都是这么几行, 所以这么一说,咱们学代码就有信心了,是不是很简单的就这么固定的几行。其实我在带学生去学习的过程当中,我们有一些实验就是做超三数的对比,所以大家做过这些对比实验,你就会有感觉啊,什么样的问题?我的批量大概大批量大小大,大概是怎样去合适?然后呢?我们的这个 学习率啊,包括我们优化器选择什么呀?对吧?这些大家就都有一些感觉了,要靠实验去了解它们。每次还有一个 bit, 我 的代码里边就是对的小批量梯度下降,就是用的一个 bit 来完成训练的,来看看是怎么回事啊? 我看一下,没错啊,就是来同学们看啊,这里首先大家要弄清楚的,我这里呢是对应了咱们的小批量梯度下降, 所有你要用的小批量梯度下降,咱们代码都是这样来写的,大家会发现这里面有两个负循环,我一行一行啊,跟大家来说它里面在做了什么? 首先咱们得弄清什么是小批量梯度下降,大家知道什么是小批量梯度下降吗?我给大家举个例子,我们来看啊,还举我们简比较熟悉的 m n i s t, 大家知道我们的 m n i s t 这个训练样本里边有六万个样本,我这六万个样本我是一个一个让模型去学习,就是每一个模,每一个数据我都丢给模型,让模型去对应一次参数的更新呢? 还是六万个一起丢给它呢?还是我给它划分成一组一组的丢给模型,让模型一组对应一次参数的更新呢?这就对应了几种 训练的这个学的方式啊,那我们所说的小批量梯度下降,就是把你现在训练级当中所有的样本,先按你指定的大小给他划分成一个一个的组,这就叫一个一个的批量,比如说我的批量大小是六十四, 那么我就让这六万啊,六十四个为一组,六十四个为一组,就这样给他划分成若干组,听明白我的意思吗?每一次我都拿这其中的一组数据,六十四个数据一起 丢给模型,模型呢,将这六十四个数据丢进来了以后,一起去进行传前向传播,得到现在六十四个数据的输出,然后再根据这六十四个数据的输出得到当前的损失,然后再根据这个综合的损失去对应到当前所有参数的梯度,对应到参数的一次更新,我说清楚了吗? 这就是小批量梯度下降,每一个批量就会对应一次参数的更新,好的,没有问题,对不对?小批量梯度下降,你弄清楚了,这个代码呢?不过就是完成这件事嘛,就完成咱们刚才所说的小批量梯度下降这个事情的。所以你看啊, 我们在这里的这个放循环就是拿到的每一个批次,这是我们的六万个样本,在这里呢,已经给他六十四个一组,六十四个一组切分好了,把它呢作为每每一组都是包含有六十四个样本的一个可迭代对象 啊,可这个迭代的这样的一个数据,一个类型,然后呢,我们就开始每一次每一次放循环,就从这六万个样本里边去找到其中的六十四个。那拿这一个批量的数据过来,我们去先进行前向传播,得到现在模型的输出, 看到了吗?然后呢得到了模型的输出,我们再拿模型的输出和当前这一个批量的 label 一 起丢给我们的损失函数, 这是我们这一个批量样本所对应的 label, 一 起丢给损失函数,得到现在的损失,再有损失值呢?去反着找到所有参数的梯度值。在找到梯度值之后呢,我们去通过梯度下降算法更新所有的参数值, 说清楚了吗?这就是咱们所说的在一次训练完整的过程里面的核心四步。好的, 那么大家如果把这里的一二三四四步弄清楚了,你要弄清,记住啊,它就是最核心的步骤了。然后呢,大家可能会看到下面这个在干嘛,哈哈哈, 你看还是刚才那个优化器,他不是能在这去将所有的参数根据梯度值更新吗?那下面这个是在干嘛呢?是将所有参数的梯度值清零。 为什么呢?因为我们现在这一批数据这个 batch 进来已经对应到一次参数的更新了,而此时的这个批度值就没用了啊,因为下一次我们将继续再找下一个批量的样本进来,在刚才更新过参数的模型这里 继续去做前向传播的运算,得到第二个批量的输出,然后再对应找到第二个批量相应的损失,再找到第二个批量这里的 这个所对应所有参数的 t 度值。注意,在第二次找所有参数的 t 度值的时候,如果前一次的参数 t 度没有清零,在 patch 这里它会默认累加的, 所以你要加上这一步啊,就在你的 t 度值用过之后,将每一个参数的 t 度值清零了,这就是这一行的作用,它不核心,但一定得有。 好了,这个代码只是给大家个结构,在这里我还跑不起来啊,因为我的优化器也没有定义,我的模型也没有定义,但这个结构我给你摆在这了。 这里边我们已经说了里边的放循环是怎么回事了,就是将你现在训练级的六万个样本,按照你指定的批量大小,一个批量一个批量的去给他便利获取过来,每个批量都对应到一次参数的更新,所以里边这个放循环执行过了,就等于咱们这六万个样本扫完一遍,我说清楚了吗? 好了,那么我们的六万个样本只看一遍吗?当然不是,我们可能会给它看若干遍,那看一遍就叫做一个 epoch 啊,看几遍呢?就由外边这个负循环去定义了。这就是为什么这里有两个负循环,以及每个负循环,以及里边的负循环的每一行都做了什么。 好,大家看看这个代码现在清楚了吗?看看哪里还有问题。好,这就是训练过程里边的代码啊,大家可以弄清楚之后再去看。你那都一样啊,你不过就是你的模型可能具体的不一样,那数据反正都处理完了,在这里边代码都是这个啊,你就把它直接搬过去, 百分之九十五都能用,直接用好,这是训练过程咱们的代码啊,那么下面呢,就 再来看看模型的搭建了啊, petouch 呢,是可以让我们根据自己的想法去搭建我们的深度学习模型的,当然如果你本身是有想法啊,或者呢,你也可以在 petouch, 它也有很多的接口,我们可以直接去调用一些预训练的模型,比如说, 比如说像 resident, 像 vgg, 对 吧?包括 n n 点儿 transformer 也是有的, n n 点儿 encoder 也是有的,所以这些都已经集成进来了,咱们可以直接用, 直接用可以,但如果你有自己搭建模型的需求,你也可以在这里自己搭,或者你有一些模型结构的变动,你也可以在这里根据你的知识啊去构,去改变模型的结构。所以在这呢,我们就来看一下我们要自己搭模型, 怎么搭这个里边呢?是看到了代码,在代码我们去动手写之前,一定脑子里面已经先构建出来你要用的模型结构了,而你要用的模型结构到底要长成什么样子呢? 取决于你对于深度学习各个底层模块的认识,这就是咱们学深度学习一个大的比重在学什么。所以在这呢我们不去讲具体的里边的一个个的模块是什么,咱们就来看。比如说我现在啊要来搭一个全连接神经网络,好,我搭出来这个模型是我想要的那个结构, 这个结构什么样我脑子里已经清楚了,就让他拥有两个全连接层吧,就让他来处理手写数字识别这件事吧。那么我每一次给模型丢进来的就是一个二十八行二十八列的灰度图像,也就是拥有了二十八乘以二十八、七百八十四个数字, 也就是说我每个样本都是拥有了都是一个七百八十四维的一个向量啊,长为七百八十四。好了,这是我现在输入数据的情况,我就根据它来构建一个全连接神经网络,输入层呢,自然就是七百八十四个神经元, 中间的话,我给他来一个隐藏层啊,这个隐藏层的神经元的数量是一百二十八个,最后我就让他直接输出了,因为这里是一个十分类任务,所以我的输出层就是拥有十个神经元,我说清楚了吗?这就是我根据我的知识经验,对于现在处理的任务,我就可以自己这么去大模型了,哈哈,别头大啊,大家学了一些知识的话,也都可以 这样,你自己去搭嘛,对吧?你只要能让他从头输出出去,你觉得合理,你可以试试看结果如何嘛。所以如果就是这样的输入层是拥有七百八十四个神经元, 输出层拥有十个神经元,中间一个隐藏层拥有一百二十八个神经元,我说清楚了,好,这是我现在啊,自己根据我的理解,我自己搭了一个结构,我就把它呢用代码实现出来, 好看这里,那么我现在模型呐里边拥有了这样的两个层,第一个层的参数矩阵呢就是七八四幺二八, 第二个层的参数矩阵呢就是幺二八十啊,我有一个隐藏层,自然对应的就是两个参数矩阵,对不对?好了,那么这两个全连接层我们就放到这,这个呢就是我模型当中拥有的那些模块,我先呢在初识化函数方法里面给它声明出来, 那么在 forward 这里呢,我就可以把它的前向传播过程给它去定义出来了。所以现在我这两个全连接层怎么搭起来的呢?我把数据 丢进来之后,先去把它放到第一个层,也就是这里,也就是七八四幺二八的这个参数矩阵所对应的全连接层。好了,数据在这个全连接层里面去完成一个向量的运算, w x 加 b, 把结果拿过来,继续往下放到 re 激活函数里边去。好,把激活函数转换过之后的结果拿过来,再放到第二个层里边去,第二个全链结层,那么在这里呢,就得到了十个数字的这样的一个向量的输出了。 好了,这就是我自己定义的一个模型,这个模型根据我的结构,把里边的两个层在抽象函数范围里面我们都声明出来, 把我现在想的一个从输入到输出的运算步骤也给它写了出来,那么这是最基本的啊,两个方法,我们这个类呢就声明出来了,那么这个模型咱就可以呢去把用这个类实立成模型对象,咱就可以去用了。 好,然后大家可以看到下面我又搭了一个,那这个里边呢,我用到了这些模块,也依旧把它们都在初识化函数方法里面声明出来, 那么这些模块是怎么啊?一个一个搭起来的呢?数据进来先经过哪个模块,再经过哪个模块一步一步运算得到输出的呢?就是前向传播的过程,前向传播的过程呢,咱们就在这个函数里面给它定义出来了。 x 进来先经过这个卷积,再经过这个 batch null, 再经过这个 ray loop 好 结果,再经过最大值化,就这样一步一步的 从输入让它去运算得到输出啊,这个数据从输入到输出的运算过程,运算步骤就在 forward 里边定义出来了。 好,这就又是一个模型,所以我们都可以根据自己的知识去定义你的模型。建立模型也是根据经验吗?有, 比如说我到底是用全连接还是用卷机呢?你得知道全连接和卷机的运算的特点,以及它们相应在使用过程当中的优和劣。你就知道啊,我这个任务我用卷机会合适一些啊,还是我用全连接会合适一些了,对不对? 听不懂,没关系,你知道我们的模型是可以根据自己的理解去定义的,这就是我们在定义自己的模型了啊,我们都会将自己的模型定义为一个类,这个类里面就可以知道我们之后的模型要包含哪些层,以及每个层之间是怎么传递数据的,就可以了,照猫画我用它都可以啊, 好,模型就这么自己定义出来了啊,我在这呢,一会会给大家用一个图像数据来跑一跑,试一试。所以呢,我这个模型就是对应了我那个图像数据去设计的, 因为我的图像数据呢,我知道我的图像的大小,所以我知道丢给模型的数据的形状是怎样的,是四十八乘以四十八的三通道的彩色图像。好,我就根据我输入图像的尺寸去构建了这样的一些卷积和尺画层, 以及到最后的全连接啊,因为我要解决的是七分类任务。好了,这是我模型当中用到的模块,一些卷积全连接,最大尺化, 还有 batch nom, 这是我给它搭了起来,现在我把我这个类呢给它执行一下,我的类就有了,一会我就用它去实立出来这样的一个模型对象去用,我们继续往下啊, 所以呢,你会发现啊,虽然有可能大家这个结构看不懂啊,咱们还没有学,你通过这个前向传播的过程这个代码,你会发现这个一个再再怎么样的复杂的模型,他不过呢就是一堆函数的嵌套, 你的数据就像我这里一样啊,我们的数据进来就是先给他经过一个函数,这个函数的结果再经过一个函数,这个函数的结果再经过一个函数,你可以就把它理解成拥有了三个层的一个模型,第一个层处理完的结果丢给第二个层,第二个层处理完的结果丢给第三个层, 最后这个层的结果就是模型最后的输出,看清楚了吗?这就是深度学习。所以我经常说深度学习的模型再复杂不过,都是一个搭积木的过程,你把这些积木块,也就是我们这一个个的函数,也就是咱们模型的一个一个的模块啊, 你先用哪些你先想好啊,你给他摆到这,然后呢,你再根据你的理解,把他们拼起来,让他们一步一步让这个数据进来,由输入一步一步去计算得到输出,这就是深度学习。 深度学习啊,本质上呢,就是借助你有已有的数据,在你搭的模型这里,用你给他准备好的那些数据去训练模型里面的参数啊,去优化模型里面的参数,这就是咱们的深度学习的学习过程。 那么用你给他准备好的数据,把你这个模型结构里面所有的参数都调整到你想要的这样的一个情况了,想达达达标了,达了你的标了,那么咱们这个模型就能够去解决一些未知数据的问题了。 所以在这呢,只要咱们这里有学习俩字,就得有经验,数据就得有让你的模型去训练,去学习使用的这样的这样的一些数据。所以我在这里跟大家说一下数据的处理啊。 大家呢,要在各个领域,各个应用场景里面去用深度学习,所以大家的数据会不一样,但不管你是什么数据,你是图像,你是文本,你是表格数据啊,还是等等,它背后对应的一定都是一些数字。好了,同学们把这些数字给他加载进来之后, 加载进来之后,在 patch 这儿,你丢给我们之后那两个负循环去作为参数的调整使用的时候,我说清楚了吗?好,我们的数据最后呢是要放到咱们这个训练过程里边这儿去用的, 这儿啊这儿去用的。所以呢,不管咱是什么样的数据,什么场景,什么领域啊,我们处理数据的步骤都是一样的两步,第一步把你的数据进来转成 这个 python 里边的 data set 类型,在这个过程当中,你的数据有可能需要去构建你的数据的那个 data set 类啊,或者呢,你有一些是 python 里边的数据,咱们就可以直接拿来用啊。这个具体我们不再展开 步骤上面都首先要有现在 datacenter 它自己承认的那个数据级类型, datacenter 类型 好,然后再由 datacenter 类型去生成啊,得到这个 datacenter 数据加载器, 这个 data loader 就是 可以把你现在拿进来放进来的那些数据集去按照你指定的批量划分成一个个的批次之后呢,放到咱们那个放循环里边,自动地去帮我们一个批量一个批量的获取数据了。 而且你将整个所有的样本啊,一个一 pop 给它进行完,所有的样本都看过之后,它还能够自动去打乱啊,你每一次它就给我们自己去啊,加载当前的需要用的那一个批量 的数据了,所以我给它叫做小批量加数据加载器,那是我自己叫的这么一个名字啊,比较直观它的目的,那它的作用就是能够放到咱们那个放循环里边,帮我们一个批量一个批量的去获取数据的。 所以不管咱们是什么类型的数据,咱在处理的过程当中,在丢给模型之前都要有这样的两步,第一步得到相应的 data cache, 第二步呢去得到你放到放循环里边的 data cache。 没听懂 data cache 是 吧? 我举个例子啊,咱们来看我现在我一会不是想把我刚才实历出来的那个,就是我定义出来那个模型,那个卷积的模型结构啊,我给他呢去实历出来一个模型对象,然后呢去用一个图像的数据去做一个分类任务的训练嘛,所以在这呢,你看啊,我要处理图像数据, 我的数据是图像,那么我在这里我把图像加载进来的时候嘛,所以我要用 python, 我 得转成 tensor 类型。 然后呢我的是图像啊,图像的数据咱们拿进来的时候,一般都会去做一个归一化,因为图像这里每一个像素点的取值是零到二百五十五比较大,咱给它压缩到一个小的范围,所以在这呢我有一步归一化的设置,所以类型的转换和归一化这两步我打了个包,叫做了 transform。 在 哪用呢?在这用, 在这用,放到了这来,也就是说我从我指定的路径把我这些图像读进来的转换好了。 我用的是一个叫做 image folder 的 函数方法,这也是拍 touch 里边的函数方法在这儿。这不是啊,这是 touch, 微软啊 touch 里边的一个方法,这个方法呢,就可以帮我去加载图像数据, 因为我的图像数据里边分为有七个类别,每一个类别的图像我都对应放到了一个文件夹里边,现在大家看到的这个路径就指到了我那个七个类别的文件夹。 所以对于我现在这样的图像啊,这种整理的方式,我用这个接口直接他就能帮我把图像都读进来,读进来的同时完成类型和归一化的转换。然后呢,并且每一个文件夹里面的图像他都对应有一个类别标签, 我说清楚了吗?所以现在我这里就通过它得到了 data set, 这就是一个 data set 的 类型,我的图像通过 image folder 可以 得到。那么如果大家是其他的数据呢?我们也可以去这样写啊, 在这简单写一下啊,你定义一个你的类,比如说我叫 d 吧,让它基于 data set, 也就是说我们可以自己去定义我们的一个 data set 类啊,这个把你的数据做相关的处理,这里展开的东西就会比较多了, 我们今天直播的时间可能没有办法说那么细啊,但大家要明白,在这里有两步就可以了,然后如果还有什么具体问题的话,下面也可以私信咱们再具体沟通。 所以数据的处理啊,不管咱是什么数据,咱是哪个领域里面的数据,你进来你就记住你得完成这两步,第一步得到当前的 data set, 第二步去得到一会儿放到负循环里边的 data loader 就 可以了啊, 好的好,然后,然后这些数据就处理好了呀,我,我把它跑一下啊,把我现在的数,这个没有啊,这个我就去掉啊,我看一下位置出问题了吗?找不到哦,我看一下我现在路径啊,我这个文件在开播之前有位置的变化, file mode, 我 给他改一下,他是这个问题是说找不到啊,按照我的路径找不到图像,所以我把刚才的路径给他改一下。 ok 了,到我的路径当中啊,读了图像进来,我给大家也正好看一下。在这看到吗? 这七个文件夹,每一个文件夹里边就放了这个类别的若干图像,到这来吧,你看到了对不对? 这个是哪个?这是 android 类别的啊,哈哈,就是这样的图像啊,我随便打开了一个,这是我的文件的情况啊,我的文件是这样的结构啊,所以呢,在这我就可以这样去用了。 这个数据的处理咱就到这啊,得到了 data load, 就 算是我们数据处理完了也就万事大吉了。在数据处理这好,然后呢,我就把我们现在这个事情给它跑起来吧,先来检查一下我设备当中的情况,哈哈。 然后呢,把我刚才所构建搭的那个模型我给他实立出来啊,就叫做 model 了,刚才咱们那个是类,用这个类实立出来我当前的模型对象,模型对象,然后我要用到的优化器用这个,然后呢去给我当前这个模型的这些参数啊去进行优化,然后我的学习率目前设置的是零点零零一啊, 好了,优化器也定义出来了,来吧,咱们就跑一跑,试一试。我的模型也有了,我的数据也已经准备好了,那我现在呢就用小批量批度下降,咱们去跑一跑啊,看看我的这个参数的更新过程比较顺利,跑起来了。 我们今天呢就想带大家来看看这个代码的东西啊,让大家呢能够自己去做实验的时候,对于代码上面清晰一些。今天呢我们就用了一个图像的例子来把整个代码跑了一遍啊。

你是不是也有这感觉,想让 pto 搞深度学习,结果代码水平拉垮到不行?不要慌,这不是你一个人的问题,绝大多数跨学科的人都踩过这个坑。说白了, 深度学习他不是靠天赋,是靠路径,路径对了一周就能入门,路径错了半年都白忙。今天我就给你整一条最硬核、最实在,没半句废话的学习路线,四个阶段你照做就行。第一阶段,先别着急写代码,得先搞清明白了深度学习到底是干什么的。 很多新手一上来就开始写模型,结果他看不懂,调不通、跑不动。为什么呢?因为你连深度学习的底层流程都没有摸透。这阶段你就干一件事情,搞懂为什么,可是什么?推荐你看深度学习入门, 基于 pto 的 理论与实践,这本书听我的,只要你看完前面两章,就可以把神经系统前向传播、反向传播、损失海律这些概率弄得明明白白。这一阶段核心不是写代码,是构建体系化的知识,脑袋里清楚了,后面学的 pto 纸才不会闷。第二阶段, 上手 pdf, 跟着做,照着敲就行。有了第一阶段的基础,就可以正式学 pdf 了。推荐小土堆的 pdf 教程,简单清新不拖沓。这阶段就三个目标, 搞懂张亮是啥,怎么操作,能写个最小可运行的神经网络模型,能跑通训练循环前向算损失,反向更新参数。不要追求花里胡哨的东西, 最后都得落到这套流程上。第三个阶段,提升对模型的理解,开始能够看懂别人写的代码。前两阶段搞定,你也就只能把流程跑通,但真正到项目里,你会发现 模型多到你怀疑人生。所以第三阶段就是要扩展视野,理解各种经典网络到底是怎么来的。推荐唐雨迪的 pinterest 深度学习实践,他能让你真正明白 a n r n n transformer 是 否被设计出来的,解决啥问题的。做到这一步,你就会突然发现,哎,以前看不懂的开源项目,到现在都可以读懂七层了。第四阶段, 动手做项目,用自己领域的问题来练手。前三阶段搞定后,你其实就已经具备了落地能力了,这时候就不要一直啃教材了,找一两个和自己专业相关的小项目直接上手。为什么呢?因为深度学习学到最后都一个样, 就看你能不能解决真正的问题。跑同一个项目比看十本书都值钱。最后说一个重点,别再自己瞎摸索了,学深度学习最怕的不是难, 是没有路线图,瞎学半年一点成果都没有。我整理了个二零二五年最新的深度学习入门思维导图,包含了四个阶段,学啥、怎么学、用啥书,看啥教程,需要的直接来拿。

短短一百一十八页,就直接把 python 搭建一个深度学习模型的流程给讲清楚了。和其他教程不同,他详细告诉你模型搭建的每一步要怎么写,为什么要这么写?对于刚入门的小白来说,再也友好不过了。 我可以肯定的说,看完这份教程,完全可以轻松分析出项目或者论文当中出现的错误。这份教程包含了这些内容,可以说是一份绝对优质的深度学习入门教程。如果你正好需要这份教程的话,可以看这里,无偿自取。

欢迎来到薇姐的深夜开源局,我是你们的薇姐,深夜还在敲键盘,别总对着满屏的 bug 叹气了,今晚咱们不掉包,不写那些无聊的 k、 r d, 姐姐带你玩点刺激的手把手教你从零开始捏出一个大语言模型, 每天对着人家的接口疯狂 post, 看着返回的 jason 发呆,是不是觉得自己就像个无情的 api 调用机器?大模型对你来说就像个黑盒, 里面到底怎么转的,全靠猜。这种把命运交到别人手里的感觉可真不怎么性感,是时候夺回控制权了。想要真正的掌控感,解药在这。 今晚我们翻牌的这个 rio, 教你用最纯粹的 python, 一 行行代码,拼凑出一个五脏俱全的 gpt。 别拿没显卡当借口,这套小而美的方案,就算是你手头那台风扇狂转的老旧笔记本也能轻松跑起来。 凡事咱们得一步步来,不管多厉害的模型,也得先弄懂人类的语言 项目。第二章直接教你手写 bpe 分 词器,把杂乱无章的文本切分成干干净净的 token, 就 像一场完美的约会。前得先做好铺垫,当了 data 写的足够丝滑,后面训练起来才不会卡脖子。整个大模型最迷人的地方在哪? 当然是 action 机制啊!这套代码带你亲手把多头注意力机制撕开,揉碎了看,别去调那些现成的工装裤,自己老老实实写一遍矩阵乘法,感受一下 q、 k、 v 交织在一起的暴力美学懂了他的心思,他才能为你所用。 核心零件都打磨好了,接下来就是拼装机甲的时刻,把我们刚才写的 attention 和乾坤网络无缝嵌套做成 transformer 块, 再一层一层的堆叠起来,看着一个完全由你自己亲手构建的 gpt 模型在屏幕上初具雏形,这种成就感绝对比你深夜修完高 ubug 还要爽翻倍。 骨架有了,但现在它只是个没有灵魂的躯壳。第五章,我们把它扔进无标签数据的海洋里。 next token prediction 听起来挺唬人, 其实就是让他在海量文字的梦境里不断去猜下一个词。看着老司曲线一点点降下来,就像看着自己养的崽慢慢开了窍,迷人的很。刚从梦境里醒来的模型可是野性难驯,嘴里没个把门的,这时候就需要我们给他上点规矩了。 第六章和第七章的指令微调就是教他怎么懂规矩、识大体,怎么乖乖听你的话办事。经过这番调教,他才能变成只属于你的贴心又听话的专属 ai。 以为基础款就结束了?别急,这仓库的副路里还藏着不少好货,想用炸机做微调,捞尔的原码直接端给你,想让推理速度飞起来,教你手撕 k v cash, 甚至连亏本用的猫 a 混合专家架构都给你扒的干干净净,这简直就是给你们这群即刻准备的专属玩具箱!今晚的干货有点多,慢慢消化, 把这个 ripper clone 下去,周末就别出去瞎晃了,在家好好体会手搓大模型的浪漫吧。感谢收听今晚的薇姐的深夜开园局,记得点赞收藏加关注,薇姐爱你不迷路,咱们下一个 ripper 见!

个人开源项目 tiny l l m 帮助你清晰简单地理解 l l m 流程,从零手写,实现一个迷你大小的基础大语言模型。每一段代码配有详细的注示与解读。以低维度为切入点理解模型输入输出过程中的矩阵变换, 不依赖哈根 face transformers, 纯 python 手写 transformers 架构,清晰的代码注视和低维矩阵变换式理,帮你扫清理论与实践障碍。项目介绍,保持工程规范。 使用 gigon 将项目下载到本地,使用编辑器打开项目配置文件模型相关基本参数数据模块包含数据及构建和分次器。 清晰易懂的理解分词器原理模型文件从单头注意力到多头注意力, 每一层的输入输出,其矩阵结构含义都清晰明了,并附带参数量计算。 g p t 简易模型实现深入浅出理解 g p t 原理与数据变换逻辑,附带 q a 辅助记忆。加深理解 训练模块,自己动手训练自己的模型理解训练是如何进行的? 我们来执行训练,看一下效果,观察训练步骤。推理模块 串联起数据加载模型加载参数整体流程,熟悉在推理过程中的形状变换, 验证模型推理效果,看下视力效果。根据输入的关键词,模型输出了从数据中学习到的相关信息。 nice!

哈喽,各位小伙伴们大家好啊,今天这期视频呢,想讲一下我没有算法基础,如何去学习大冒险的算法,然后我自己去制定了一条学习路线,我是怎么制定的这条学习路线,以及我制定这个学习路线背后的思想和策略是什么?这是第一部分想讲的内容。 第二部分呢,是按照这个策略,我第一步第一步要做的是入门拍踏整个深度学习,我的策略是把所有的一些参考的视频以及整个教纲要学哪些东西放在一个 skill 中,让 ai 当老师使用这个 skill 来帮助完成整个 入门拍叉取的一个入门,我目前已经完成了这一步,所以我会第二部分会介绍一下这个 skill 的 使用,当然 skill 的 获取呢,很多人一直问,就是我会放在笔记的这里面,大家自己去下载就好了。这份笔记还是啊我的个人主页置顶 的链接购买就可以。 ok, 那 我们就进入第一部分内容,就是算法学习路线的一个制定。 ok, 讲解这个大模型算法的学习路线之前,我想先去讲一些这个思想。我的思想一直来说都是你入行大模型最开始去学应用,那学应用了以后,比如说像我去年十二月份的时候就已经面试 能够拿到很多应用的 offer 了,那我现在也比较有信心,我觉得应用这块能够拿到 offer 没问题。然后第二部分是再去学算法,就是属于进阶路线,但是并不是所有人都能够或者都是有更多时间去学进阶路线,因为你学到前面这个阶段,你完全就能够拿到 offer 去入行了,对吧?如果你有更多的时间像我这样一样,那学算法的一个好处呢?就是第一个,你得 竞争力会更强。现在这个大模型的行业更多的是一些交叉的,即使你是做应用,或者他也会问你些算法的东西,即使你说算法,他也会问你些 a 正东西。其实他面试冲就冲和来讲,他是趋向于 这个各个方向交叉,所以你所以你学了算法,对你本身找应用的岗位来说是有加成的,或者竞争更加有竞争力的。第二个呢,是学了算法,你会有更多的选择, 你可以去投算法岗,你可以去投很多的算法和应用,交叉这些岗位,你的选择会更大。第三个呢是其实你和算法沾边的,你的竞争力,你的薪资也会上一个台阶,想算法一定是比 应用的工资和上限更高的,所以这是为什么要学习算法?所以你可以先学前面一个路线,然后先入行。如果你真的想学,你可以入行了以后再学算法,这不是一蹴而就的,因为真的并不是所有人都像我一样有这么多的时间来去学习。我如果把这一套算法学完了,我觉得 回想我整个学习路线,我大概学了有快一年的时间,我就一起学,但真的不是所有人。那找工作能学一年的好吗?我想先先讲清楚这件事。好,那如果啊,再提一点,如果你是学应用的话,那只学应用, 你的目标是先只学第一阶段的话,那其实对于算法这一块的准备,其实我在笔记中都提到了,就是你大概因为他也会问你算法的东西吧,你大概去学一下微调推移加速,笔记里面 整洁整理的都有的大概的一个概念,然后面试官问你会不会微调的时候学做没做过,你告诉他我做过,然后怎么做?他大概大概率会问你两个问题,你是如何做推移加速的和 你是如何做微调的,我这里都有总结,然后你把这个整套想清楚,你甚至是可以用一些远端的不写代码的平台把这一整个一套讲清楚, 他大概率不会问你一些特别深入的一些梳理公式和计算,或者让你手写 attention 这样的,所以你想清楚自信的告他,你会, 然后我这里其实总结了你怎么样去做数据准备,然后一些超参数怎么选择,然后这些科学的实验的方法让他讲清楚。大概率对于很多的应用岗来说就够了,你就不用再去去真的去像我们这样去去写一些。 呃,算法相关的,强化学习,深入学,强化学习这个微调相关的知识,这个是你只学第一阶段对于算法的一个准备的策略好吗?这个句我讲清楚了,那好,接下来就是如果你真的像我一样想要去进入到算法这个行业,那 恭喜你,就是特别好的一件事情,就是我这里,因为我目前在学吧,我会把我所有的一个路线会记录在这里,所以我是希望大家能够完全附用的,那就相当于我学过的路线大家能够照着抄。那我自己去 思考这件事的时候,我第一天其实做的是一个学习路线的一个计划,那你可以看一下我的思路,包括其实我推荐了一些视频,这些视频就是大概讲了大模型算法的一个学习路线,哪些是一些重点,但是其实从面试非常功利的角度,你从面试的 j d 应该你能够知道大概率他会问你最重要两件事情,就是你是怎么做微调的,你是怎么做这个强化学习的这两件事情,这两个算法的本质你能够弄清楚,能够做一个项目,我觉得就已经可以去面试了,其实这个是我们最终级的目标,我们不看这些也能够知道一些目标。 好吧,你可以去看一些对应的我的一些思路和参考的视频。在我看完了以后呢,其实我自己就定了四个阶段,其实四个学习阶段相对来说我这一套的学习阶段还是说比较功利的。 怎么讲比较功利?就是我没有是说真真正正的准备看哪个视频,或者看哪个书籍,然后去看,去把它整整个深度学习过一遍,而是一切 的目标就是面向着我最后要做一个小项目,这个小项目是在一个垂直的领域,比如说我去提升某个模型的知识,或者我在某个资源受限的场景下,比如 cpu 下,呃,去对模型训练,让它更加 能够高效,符合资源受限的一些场景,我用到强化学习,我用到这个微调,并且我是,我不是像之前推荐他一阶段学算法那样,我就是 整一个大概的步骤,而是这个过程中我是学了他的数理,数理数理知识,却有一些小小的一些复杂的算法,一些附线,我要自己写一遍,然后理解里面的原理,甚至这些数学的公式的推导,因为我相信你面试算法岗, 你多多少少要去了解算法的细节嘛,这就是终极的目标,那有了这个终极目标,我们就可以包装项目面试了,所以 一切就是面向了第四步。那如果面向了第四步,我在想这件事情完成,第四步怎么样子能够完成呢?我就是往前倒推,倒推需要哪些知识,所以就倒推了这几步。第一步呢就是深度学习和 python 的 一个框架的学习,因为 因为这个就是你后面写算法的, python 是 工具深度学习,就比如说最基本的前向传播,反向传播,怎么样去更新这种梯度,这是基础,包括 cnn 这些是基础,你必须掌握的。 然后我一开始是想直接看一个项目,但是我后面发现不行,你们基础不够,你没有办法上来就看项目。所以你第一部分学基础,就是我们今天后面会讲的我怎么学,因为我这块大概已经学完了。第二部分呢就是后训练,因为我们的 目标就是去做强化学习和和这个 sft 或者是说微调,那 这里面的最的理论知识,也就是后训练的相关的东西,我们需要去学习一下梳理的知识和公式。 第三部分就是开源项目的学习,因为有了这些理论知识,但真真正正的到底怎么做,我们要去参考人家的,你让我自己直直接去写一个小项目,我做不出来的。但是我如果看那些开源项目或者论文,我去理解了一下别人怎么做的,我拿个别人的 我,我能够付现,我能够跑,我把别人的弄懂,我就能够说这是我自己做的,或者说说我就能够做一个小项,我们小项目又不是要去创新,而是做对一个复杂的算法,把它弄清楚, 实现它的效果,然后用到我们的自己项目中,对吧?所以第三部分我是想做一些开源项目的调研,最后就是做项目,然后最后就是包装和迭代,所以整个一套其实是非常功利,或者说 是完全面向面试的。那第一步呢?我已经学完了,我刚才所说就是我学的这一部分的所有东西都能够 让大家去方便的去跟着我的路线一起去学习来。接下来我们就讲了第一部分,我的一个学习方法,就是按照我把所有的精华都放在了一个 skill 中,让 skill, 让 ai 使用这个 skill 当老师带我去入门。好,接下来第二部分我们就讲 第二部分,我们就讲我是如何使用 skill 进行拍基础和深度学习入门的。好, 嗯,首先我们说对于拍基础或者说深度学习这一个入门,我是使用 skill 来去完成的。如果你之前关注了我,就是你可以看我之前使用 skill 真的 做了很多事儿, 那 skill 如何使用 skill 是 什么?其实我之前的视频包括笔记里都有讲,我这里就不说了,如果你不了解,你去看一下好吗?那我们这里是写了一个 python teach 的 一个 skill, 整体而言就是我设计了一些大纲,以及我把那些 video 历史的放在里面,然后让 ai 当老师, 结合这些大纲把所有的概念去给你讲清楚,那整体大纲的设计啊,就是这里面所有的内容都是重点,我们可以看一下它大概是怎么样的。它是先学一些基础,就是从张亮自动求导是什么这些概念性的东西,然后包括 一步步的,包括你怎么使用 n m 模斗去搭建神经网络,然后怎么样子去使用数据加载这些东西到 传统的一些网络,比如说 cnn 啊, rnn 的 基础的知识,然后最后到现代的一些大模型,比如说 attention、 transform 这样的一套架构, 包括最后的是预训练和微调,整体而言所有东西都是非常非常重要的,然后按照这个路线把它串起来。中间其实我设计了四次考试,就大概你每 上三到四节课,然后会有个小考,然后每一个课完了也会有五道题的测试,最终上完有一个期末考试,就是我希希望考加我的希望考试,就是或者是问题就真真正正是检验你 有没有学好的一个手段,所以加了一些测试,这是我设计的一个大纲。嗯,整体而言,我看我们来看一下,这个是我刚去学完的,我就刚学完最后的一个期末考试,所以我来给大家去讲总结,按照这个 这个这个记录来给大家去看一下我,我说为什么 skill 或者说 ai, 他 其实当老师或者他的文案,其实我觉得已经远超于或者是 超过了很多书籍和文章。我看一下这这块是我刚考完试,那其实考试完了以后,他给我了一个评分,其实我的评分并不高,原因是 里面的很多代码题我是直接放弃的,这里面所有的课程里面会涉及到些代码,但是我并没有自己去写,而是倾向于把它看懂。他真真正正在考,我写代码的时候,我可能就 达不到他的要求,所以评分会低一些,这没关系,如果后面对代码这个手写有些要求,我们再回来再学习。总而言之,我就先把这个过了。然后第一个好处,你其实可以看到他确实是 可以根据你自己的情况给出一些判断,就是我自己考试完了下来,他告诉了我哪里掌握的好,哪里掌握不好,这个确实是根据我的情况去做一些针对性的啊改进。 我觉得 ai 现在是真的是很聪明,他扮演老师这个角色是非常称职的。然后我来给大家去看一下我觉得他的一些好处吧。就首先呢, 首先他是会举例,就是你哪一个例子不,哪一个概念不懂,他是可以给你去举具体的例子,甚至是做一些形象的一些比喻的。所以他是比如说哪个 case 不 懂,他就能够把这个 case 输入什么,输出什么给你讲清楚,而且基本上都不会有问题。现在的大模型是非常聪明的,所以这个是书籍,书籍是死的不能具备的一点。然后第二点呢,我想说的就是 你其实看到它会画一些流程图,比如说这个题,它是从用户输入 hello 到生成 gpt, 它到底做什么?它其实会画一个完整的流程图,大概做了什么。然后涉及到最关键的点,如果你不清楚,你还可以问它,它可以 对对你去进行一些讲解,所以它的表现形式包括一些公式,比如说这是最经典的 attention to k v 的 一些机制,包括它会这个数学公式的表达。我觉得现在的大模型包括这我用的是口拍了的嘛,它表现的已经非常好了。 然后我想说的就还有一点啊, q k v 其实我之前多多少少在学应用的时候我就了解过 q k v, 但是我其实看了挺多遍,书上其实有点枯燥,但是其实 在大模型给我讲 q k v 的 时,很多时候我觉得他讲的确实比较好,他讲的确实是比较生动的,他会去举例子,包括我还记得一个 啊,我的笔记中也也有,就是讲大模型的参数 top p、 top k 的 时候,我看了一些视频,然后在这个这个整套的档案里面也涉及到这个环节。他给我讲的时候,我觉得 ai 给我讲的真的是更明白,所以这就是一种对比。我就发现其实有的时候 ai 或者大多数时候 ai 讲的甚至是比我之前看的一些资料要更好。所以我就说 ai 这个从这个知识的角度上,你去问 ai, 我 觉得就是一个非常高效的一个知识,而且你可以随时和他互动。这第二点想讲的就是他其实表现形式这种,不管是公式还是流程图他都有讲。我再给大家去看一下这样子一个例子啊,就是在讲损失函数的时候,再往上翻, 它其实是,呃,它其实是有画一个图。在第六个问题,它其实是画有画一个图, 呃,它其实是你看它这里讲损失函数,它有画一个图,这个这个也是我调教它去做的,我集成了一个数学画图的一个公式,所以它对于它有一些函数,比如说激活函数的时候, 他会给你去画图,然后他会给你去跑一些代码,然后让你看一些代码的运行的一些输出,这些都是你去看一些书籍, 本身不会有一些事情。所以到目前为止我都是想强调的是,我觉得 ai 在 讲课这一块是非常高效的,而且是非常讲的非常清楚的,他可以去运行代码,他可以去画图,他可以去举例子。而且还有一点想说,就是 你其实可以去尝试我,我这里用的是靠索尼四点六,你可以去换成 gpt 五点四,或者你同一个问题啊,没有特别清楚的时候,你可以给他进行多轮对话,你也可以去换不同的模型,因为我真的发现其实不同的模型它本质上来说就是 不一样的风格。对,它其实你可能 close onit 没有给你讲清楚,但是 gpt 五点四给你讲清楚,它真的是风格不一样。 gpt 五点四好像它是特别详细,它会有特别多的文字, 而 close onit 它的文字会少一些,好像表现力会更加强一些,总之你都可以去试一下,你可以使用不同的模型去做,进行多人的对话,去做这些学习方法。然后还有就是说我觉得 ai 有 一点 不好的事,就是他确实是没有办法用视频去讲解,如果真的是某一个概念,你真的没有办法了解的特别清楚,或者还是没有讲明白,你可以去 进行一些关键字的搜索,比如说啊,这个 inco 的 onlin 架构,你直接去搜索,在 b 站上或者优酷去搜一些关键字或者串。说嘛,有一些博主他精心讲的,用动画的小白的形式去讲解 啊,表现力可能会更强。这是我讲到的在 ai 这块去弱比较弱,弱相对来说比较弱的一点。那所以整体的学习,我认为你就可以去 按照他这整条路线啊,跟他去对话,让他去举例子,按照他这是一套很好的一个路线,如果中间有你不明白的点,然后你再去进行一些视频的搜索,甚至是没有必要的,因为我觉得你问他就行了,他其实讲的比文字 更好,说你没有,可我我在,我理解你没有必要去搜一些知识的讲解,但是有些视频的讲解你可以去搜,当然我这里其实也加了一些微丢盖的, 就是我自己加了一些啊,常见的一些视频加在这里面。所以其实在 ai 讲的时候,他也会给你去推荐一些对应的我视频,但他自己推荐的是不好的,所以是 我自己去预设了一些对应的一个视频。当然我更希望你能够自己去搜索,因为方法非常简单,就是 youtube 和这个 b 站去搜一些关键字,你就能够找到对应的视频去进行补充的学习。 对,那这一套其实触发起来也非常简单,我已经把我的学习进度清空了,我们再来直观的感受一下它到底是如何运行的啊。首先 skill 怎么用?再讲一下,我相信大部分之前看我的看我视频同学已经知道了,但是, 嗯,防止不知道,就是看你就是还是讲一下,就是你看一下这个 skill 点 m d, 这个是 python teacher, 我 到时候会在笔记中给到大家他怎么用,就是你看一下他的 description, description 就是 告诉你了他什么时候会触发, 好,那他就是告诉你去说用户说这些词,这的时候会触发,那我就这样吧,其实你不是严格的关键字的匹配,就你只要表达类似的意思,聪明的人都会识别,所以我就 输入拍特教学,他就会开始按照我们的学习进度来去进行跟我们讲解。他最开始会比较慢了, 因为他会进行一些素材的准备,然后去查一些进度表,我们稍等他一下, ok, 他 说我们的 pro bus 是 零,因为我已经清空了进度。然后他就会带我们从第一课开始学习,我带大家看一下整个学习的路线,其实也就是我自己设置的,他大概有几个环节 啊,总体而言,他在总体而言的环节就是他先会去讲一些前置的知识,先会问你, 呃,对应的前置知识你了不了解,如果不了解他就会给你讲概念,然后讲完了前置的知识,他就会讲今天这一课的主题,今天这一课的主题注意的最硬的知识是什么?然后接下来他就会写代码,用通过代码的角度来给你去进行讲解, 你的代码是怎么运行的,输入输出什么?讲代码?第四个呢,就是进行一个测试,测试就是有大概每一个小节有五个问题,然后每几个小节都会有一个, 有一个考试,大概通过测试的形式去进行巩固,然后最后啊测试完了会进行一个总结,去进行一个打卡,大概是这样子,模仿的一个教学的一个形式。 好,我们再稍微等他一下。 好,所以他已经准备完了。第一步呢,他就是一个张亮的一个入门的一个学习,他会告诉你的本节的目标,然后有一些前置的知识,然后前置知识,如果你说, 嗯,你要告诉他你不知道哪个东西,我们就说让他讲一下这个吧, 然后他就会去对这个概念去进行讲解。 他这里有搜我们的 video 历史,你不知道你有没有看到这个思路,因为他会去从 video 历史里去找有没有类似一些视频,然后他会告诉你,好, 他在讲张亮,然后他会给你画一些结构,画一些图片和一些表现的形式。其实我我真的觉得你看他这一的输出,现在 ai 的 表现力啊,这个排版啊,都 都太强了,就这种这种完全是感觉自己写要写很久,这种这种基础的知识,他的表现力就非常非常强。好,我们输入继续。 通常来说你学习的过程中其实是会针对于一个问题去仔细的阅读,然后有不有疑问跟他进行沟通,让他进行深入的讲解,让他举例子。是这样的一个过程,我们只是展示这各个环节好吗? 好,因为我告诉他只用讲一个概念,所以讲完这个概念他就开始去进行了 正式课程的一个学习,就是讲解什么样的什么是张亮,然后继续。 好,最后就是一个代码环节,因为因为这一节可能是只是讲解张亮的这个概念,这是一个核心目标,然后他会去创建一个代码,然后进行运行,运行以后他会给你讲代码。 通常来说,其实现在 ai 对 于这种基本的东西,它写代码的能力也是非常的强,所以你看它马上就写了一个,写了一个代码,你可以看一下 它这样子一个代码,对,然后它会分成例子一,例子二,然后它会给你讲每一个例子 大概是干什么,你自己也可以去跑一下这样的一个代码。好,我直接告诉他,我直接告诉他代码我已经看完了,进入测试环节, 然后最后进入到最后一个环节,他会有五个题来去进行,对你进行一个考察, 好就有五个选择题,然后他会给你一些提示,如果你你,你如果答错了,随便编一个, 如果答错了,他会给你这些进行一些提示,最后会给你进行讲解,那这个就是整个 skill 使用 skill, 对, 你看他给你提示,使用整个 skill 去完成的一条路线,我是快速的展示,但是其实在大家学习的过程中, 每每一个小节,他可能会给你很多概念,你理解,可能要一些时间,包括去看一些视频去去讲解,其实是没有这么快的,就我有的时候一个小节可能要学两到三个小时,所以这个是整体一个路线,我相信你就按照他的路线和他在带领把这整个路线串起来,那毫无疑问 学完了本节,使用这个 skill, 学完了本节你就可以去入门的如何如何写网络的好吗?那这个就是本期 视频的一个全部内容啊,对应的 sku 我 会分享在这个笔记中,呃,笔记的这个环节中,大家自己去下载就好。好了,那希望本期的视频对大家有所帮助,谢谢大家,拜拜。

二 d 到三 d 姿态孤寂的关键桥梁 depth pose 传统模型仅能输出二 d 像素坐标遮挡鲁棒性差,无法获取人体的三维空间结构。 随着 r g b d 相机成本降低,深度数据获取变得便利数据极,同时也完善 采用双流特征提取架构, r g b。 分 枝和深度分枝权重共享,跨模态注意力融合深层三 d 热力图各层计算公式可收藏后对照代码查看。 模型在这档鲁棒性上得到提升,跨视角泛化性能增强,但深度数据依赖需要 r g b 地相机支持 使用 p t s 进行模型训练。瑞斯纳的五十为主干网络定义深度分枝和 r g b。 分 枝 特征融合解码上裁样输出热力图创建模型定义优化器已在二二交互工业自检领域得到应用。后续眼镜讲解更新中,感谢点赞关注!

一天学一个变态的人工智能知识第一百四十六期,这节课要讲的是 dakker 加 petortech 环境搭建全流程,从零到一保姆级,教学时长六十三分钟,看不完,先收藏关注我,后续接着看。 这节课给大家讲一个非常实用的工具叫 docker, 可能大家会问啊,就是咱们这个系列来说啊,哎,不是讲深度学习,讲模型的吗?跟这个 docker 有 什么关系啊?哎, docker 它不是做一些运维,做一些外部开发,他们那些人去用的吗? 那我给大家说一件事,我们来看一看啊,这个问题该怎么解决?也是同学们问我最多一件事啊,就是我自己啊,在给大家演示代码过程当中,哎,演示都没什么问题,然后呢,同学就说,哎呀,老师你自己做没什么问题,我一把你这个代码下来,我说我在我记忆当中一跑,那就出错了, 大家问的最多就这个问题,那我们来想一想,为什么呀?代码变了吗?可以说代码没变吧,我不可能说把代码归改错了给你们吧,所以说第一点,代码不变,那什么变了, 我们的一个环境是不同的吧,那可能,哎,我说我用个 python 三点六,那可能你是个 python 别的版本,然后呢?我这个 python 我是 一点三,你是一点四,然后其他东西咱版本都不一样,正是由于啊,我们各自的环境不同,所以导致了,哎,这个代码经常出现问题吧。 那我再给大家说一件事,那比如说你部署这个模型的时候,我们部署模型,我在课程当中给大家演示在本机做的操作,那实际你在做的过程当中,你是不是要部署到一个服务器当中,或者说部署到云当中啊?那你在做的时候是不得保证一点,我们当前本机你调试,一般大家都这么做啊,比如这里 我们是不是自己开发,自己调试,我们在本机去做,然后到时候放到服务器当中,那大家得保证有一点必须一致的,我们这个本机的一个环境和服务器的环境得是完全一模一样吧。那这里就有这样一件事了, 那你说现在啊,我这个服务器来说,我可能不光要部署到一台服务器,我可能好多台服务器,或者说以后我要做一个通用的,然后给别人也去用,这个公司那个都去用。 那你说是不是每一个服务器我都需要搭一遍环境?哎,这个 python, 这个 python, 这个 python, 这一堆东西啊,我从头到尾搭一遍搭一个服务器,我估计大家还有耐心,搭个十个八个的,简直人都崩溃了是不是?并且其中还可能存在一些问题, 大家想没想,有没有什么好招啊?哎,之前有同学问我啊,就是老师,你能不能把你这个环境打包给我啊? 我自己我都懒得去下载,懒得去配置了,我到时候但凡去用的时候,我直接拿你这个环境来去用不就得了吗?好,这个就说到点上了,也就是说刀客他的一个本质了,我们来看一下他的一个图标啊, 图标其实挺有意思的,你看他像个什么?像个鲸鱼似的,是不是鲸鱼上面驮着一堆盒子,你就把驮着一堆盒子当做驮着一堆福气得了?像这样一件事啊,就是我们现在啊,在我们自己环境当中,或者说在我们福气当中啊,我做好一份环境, 然后呢我打个包,打个包啊,就好比说我可以接下来来进行通用了,那这里你看这有这么多盒子,就相当于我把我的镜像给他 丢过去,这样当中丢过去之后,我就有好多个克隆出来的一个环境了,他们的环境跟我是一模一样的,相当于啊,在各种服务器当中,我就都可以做一个通用了吧。 所以说啊, doc 有 这样一个好处,一次性我们搭建完环形之后,以后啊,咱们就也不用搭了,直接就是下载下来,直接用就完事了。对于关于这个 doc 啊,我可以,我就是我一直觉得这个东西啊,跟那个 github 其实来说啊,是一模一样的。我觉着 github 这个东西大家是不是比较熟悉啊? 比如说在这个 github 当中啊,我们是不是可以随便搜一个,比如说搜这个 bot, 我们是不是可以自己哎去下载这个开源的项目,然后呢?这个呃, dk, 他 相信这样一件事, dk 当中啊,也是跟这个 get 号模式差不多的,你可以把做好的项目然后传上去,然后到时候用的时候再下下来。只不过说 dk 当中我们传的是什么? 我们传的是一个一个大包吧,或者说我们传的是我们整个的一个大环境,这个大环境当中既包括了呃,我所需要的所有依赖,像是 python 啊, python 当中还需要还还包括了你的一些配置文件, 以及呢,你要有代码,你可以一口气全打成个大包吧。所以我觉着 dakar 跟这个 github 其实蛮类似的,只不过说在这个 dakar 当中,不光把你这个项目传进去了,也把咱们整个的环境通通传上去了。那接下来你说你在用的过程当中,直接 在这个 half 当中下下来环境,然后我们去直接做一些事就完事了。所以说啊,关于这个 dork, 我 觉得大家也不用揪,就是去看他的一些细节了,也不用看他的一些底层实现了,只需要把这个工具给他用起来就得了。 所以说啊,在接下来讲解过程当中啊,我也不会给大家拿 ppt 讲这个 docker 底层怎么实现的,这个容器,这个镜像,这个仓库,怎么怎么地的这些知识点啊,我觉着没有什么太大用啊,只需要大家通所去理解这个 docker 就 足够了。接下来我就就会给大家去演示啊,怎么样用这个 docker 完成咱们环境的一个制作,并且呢,把我们呃,就是比如说一些部署代码吧,放到这个导入当中,放到我们界面当中直接去跑是不也可以啊?好,接下来给大家做这样一个演示, 在演示过程当中呢,我会给大家边说咱们这个操作,然后咱就边介绍这个刀客细节了,而我也不给,我也不给大家做 ppt, 单独讲这个东西了。关于底层,我觉着没必要去学啊,用到什么查什么就完事了,无非就是一个工具而已啊,只是一个工具。 然后呢,我跟大家说一下,就是先说第一件事啊,怎么装这个刀客装过程当中啊,呃,我估计大家也就两个版本吧,要不是 windows, 要是要不就是 linux 啊,就两个版本,我建议大家是在 linux 当中去装啊, uber tour 或者 samsung s 当中装要比 windows 简单的多,并且使用起来也比 windows 简单,我觉得 windows 装这个东西反而比较麻烦。我跟大家说一下怎么去装。首先我就给大家先先拿这个 windows 举例子了,然后呢,那个 linux 就是 one two 啊,三 to s, 那 就更简单了,我一会一起跟大家去说。 好,首先第一步,呃,这块我打开一个文档啊,然后我就边在这个文档当中给大家去说,然后边来记吧,省着到时候同学嘛,就是把这些网址到时候你自己找,挺麻烦的,我跟大家一个去说,首先第一步啊,我们要打开一个安装网址, 这块我来记一下,就是第一步,咱们去呃,安装这个刀刻安装 安装导客。然后第一步啊,需要大家就是进入到这个网址当中,这个网址当中啊,就是会给你先介绍一下,然后怎么去装,以及有哪些个环境和依赖。如果说是 windows, 呃,他这个官方建议啊,就是他有一个 客户端,就是一个 app 直接去装,到时候大家我建议你们去先点,这个就是一个客户端的程序啊,但是我这个机器我没有去装啊,因为我用之前那个版本用的比较习惯了。这个我我我刚才下载下看了一下, 用法其实来说没有什么区别,就所有命令都一样的,只不过说啊,就是安装上有点不同,他是一个桌面版本,然后我给大家演示的是一个命令行的版本啊,其实我觉着也没有什么太大区别,到时候大家装哪都行。 好,这第一步你就是啊直接去装一个他的一个 app, 就是 一个程序点 es e, 下一步,下一步安装就完事了,这个没什么,没什么难的。然后大家装的过程当中啊,就是看一下哎,人家的一些要求啊,你的一个本机,你的虚拟化开没开,如果没开情况下,咱把虚拟化的一个服务给他开起来, 因为这个 docker 本身来说啊,它就跟那个虚拟机技术我觉得差不多啊,所以说你把虚拟化那些东西,哎,咱们基本的都开开在它这个文档当中啊,它有详细的一个介绍,这些我就不跟大家一个去说了。然后如果说大家想跟我装这个一样的,我是装这个东西啊,就是,呃,它叫 这个 docker two box, 我 给大家搜一下,就是这个 docker dock 二 box, 哎,我装的是这个,这个相当于是 windows 它的一个通用版本啊,然后上面那个桌面版,这个桌面版它有些限制,因为我我录这个课程,我肯定是让所有同学都能装起来, 这里它有要求,就是你 windows 啊,如果说是一个家庭版的,那不好意思,我估计可能很多同学啊都是个家庭版的,那不好意思,那这个桌面版你装不了,你只能装咱们当前这个 two box, 但是呢,这个 two box 它没有什么限制,所以大家直接装这个 也行,我觉着,呃,没什么区别,都是一模一样的,然后到时候大家自己进入他的官网当中,然后就下载一下,下一步,下一步安装啊,就完事了。这是第一步啊,先把我们的一个 docker to box 给下载下来,在文档当中啊,下载下来之后它是一个压缩程序,然后就下一步,下一步,下一步安装, 这个一点难度都没有,就跟你装一个小游戏似的,一点难度没有啊。然后装完之后给大家看一下,装完之后啊,在这里, 呃,在我们的桌面当中会出现有这么两个东西,我们可能用到第一个就是装完之后有一个这个 docker quick start 就是, 呃,我们就是启动啊,这个 docker 它的一个就是一个快捷方式吧,或者说你用命令行启动也行啊,用它的启动也行,这个随便。然后这一块就是,呃你去管理你的一些, 呃,就是管管理你当前的一个服务,还有一个运行的一些,运行的一个虚拟机的时候,然后可能用到这个 boss 这个东西,哎,基本上我们用不到,主要就是这个蓝色的这个小鲸鱼, 然后安装完之后我们双击一下这个蓝色小鲸鱼,刚才我把这个东西都卸载了,我给大家演示一下,然后,然后正好重装一遍,重按之后我们双击一下, 双击完之后啊,他这块,呃会给你进行一个初步化啊,就在这里,哎,他会先去做一些基本配置,这个大家都不用去做啊,然后自己等就行,然后给大家说一说啊,就是可能会遇到一个问题,你用这个 two box, 我 就建议大家用这个 two box 吧,因为你配置那个桌面版, 我觉着这个东西虽然说,呃,官网说说他这个东西用挺好用的,但是我觉着,嗯,下起来,反正用起来,设置起来一些配置文件,还不如这个图。 boss。 我 觉得他直接一点啊,我是不太喜欢用他这 app, 直接用命令行操作,我觉着挺方便的。 然后接下来,接下来就是他在这块会进行一个配置,然后呢在配置过程当中啊,呃,我给大家说几个可能出现的问题。第一个问题就是,呃,给大家看一下, 在我们的一个 c 盘当中,然后进入到这个用户,用户里边你的用户名,然后这里它有个点 dork 啊,这里有个点 dork, 然后进去,然后点 dork 当中有个 machine, 我 们点这个 machine, 点完之后,然后这块有一个, 哦哦,不对,我,我把这个,我把它这个路径给稍微改一改了。然后如果说到时候大家你们用当前,哎,就是 c 盘路径也行,或者说你把它的一个呃就是你的镜像吧,然后因为我们到时候会铺下来很多很多镜像,到时候如果说你 c 盘觉着占的空间太多,你也可以放到其他盘。 但是当然这个东西我觉得 windows 当当中啊,呃,你不用去做这个复杂操作了,因为实际当中啊,咱不可能拿 windows 做一些实际开发环境的。我只是说啊,这个,呃咱们同学可能数的文字比较多的,然后我拿这个 windows 给大家举例子,最好啊咱们还是呃基于服务器来去做。 然后这个东西,这个东西啊就是一个,呃什么什么点 dolphin, 然后点这个 iso 文件,这个文件啊就是只,就是你启动的时候可能会遇到一个问题,你看这块它会跟你说啊,当前啊,这个东西它是不是一个最新版?如果说啊,你当前的,呃 就是就是在这启动过程当中经常会卡住啊,经常卡,之前我给同学讲的时候经常会卡住,他们自己配的时候,然后如果说这边卡住了,我建议大家这么去做,你把这个 http, 哎,什么 api, 点 github, 什么什么东西,哎,这个是什么 list, 还有个什么网址是吧?好,把这个网址复制到浏览器当中, 我们自己手动的下载,因为在这个黑窗尔当中啊,他下载速度非常非常慢,巨慢的一个东西啊,所以说在这里我们自己,哎做一个下载的操作啊,自己你把这个东西下载到,哎,就是下载好,下好之后,然后放到我们当前这个位置, 当前这个位置我给大家,哎截个图吧。就是哦,这块这样,我先上个 qq, 然后把这个截图软件也开一下,顺便给大家说一下咱当前啊整体的流程,都给大家从头到尾记一遍。好,这是我们第一步啊,就是安装一下咱们的一个 dk, 然后呢,安装完之后 啊,就是启动,启动也很简单啊,就是启动一下这个哥们啊,把他直接截个图得了,把他截图拿过来,好,启动一下这个哥们,截完之后,他会自动开始配置, 然后配置过程当中,如果说我写括号吧,我估计大家都会遇到这个问题,就是呃,他,他会给你,他会跟你说啊,就是当前,呃,你这个爱点爱搜文件,不是一个最新版的,如果,呃,遇到下载问题, 手动下载啊,咱们一定手动下载,因为之前有同学跟我说啊,就是我在线下时候给同学演示这个东西,同学跟我说就是下载下一天没下完啊,都有,都有可能这个现象, 所以说在这里啊,就是呃,你手动下载,手动下载过程当中这一块他有一个链接,是吧?好,把这个链接,哎,就是我也截个图吧,就这个链接,你自己拿这个迅雷下还是拿什么下?给他下完就完事了。然后放到指定位置, 放到我们的一个指定位置,呃,这个指定位置我看放哪啊?在我们的一个这里边, 好,就是我当下这个路径,这个路径啊,就是,呃,你的一个 c 盘当中啊,我们自己去看一下你的一个用户名,然后点 dork machine, 然后它的一个开始当中,这是咱们需要给它放到对应的一个位置啊,放到我们对应的一个位置, 然后这里啊,其实,呃,大家可以看一下我这个,我这个其实啊,他不是在这个 c 盘去读的,因为我这个 c 盘空间和我这个 c 盘空间实在是太宝贵了,没那么多。我 给他放到其他地方,我给他放到这个 d 盘当中,这盘当中啊,这盘当中啊,就是一个 machine, 然后一个 default 当中,然后他这个点按搜,到时候大家你们自己看吧,因为他在这个面板当中,他会说啊,把当前哎下载这个东西放到什么位置,那既然他也说了,你就手动下载,手动下载完之后 自己放到这个位置当中就完事了,然后下面都是自动化去执行的,你都不用去管,直直到出现什么,直到出现这个小鲸鱼,就是出现这个东西啊,就算是钻石,咱们当前啊把这个刀口给它装完了,哎,就是安装成功后, 安装成功后啊,我们可以看到这个小鲸鱼,哎,就这个刀克,咱相当于把这件事就做完了,这个只是第一种做法,就是,呃,你安装这个刀克,然后我们用那个 to box 的 方法,然后去安装,或者说你用那个桌面版也行。我刚才试了一下 这个桌面版,嗯,反正也挺简单的,这就是这个桌面版下载完之后,然后你就双击桌面那个图标,然后他会在这个就是这个位置啊,出现小鲸鱼,然后他会自动的去帮你打开这个服务,基本上, 呃,你什么都不做了,相当于更自动化的一个程序啊。呃,但是我用的不太习惯,我还是喜欢用这个 to box, 这个到时候大家自己选吧啊,你是用什么版本这都无所谓,只要装的过程当中我估计,呃,反正但凡啊一一提这个配置一些东西,百分之九十情况下,百分之八十同学啊,可能都会遇到问题,遇到问题也没关系, 咱们遇到问题现问现查都行。因为我,呃我配置这个 windows 啊,也就是讲课当中去 用啊,其实一般也不在文档当中去用,我也遇到很多问题,遇到问题啊,咱就现用现查吧。百度当中啊,这个文档来说,我觉着是比较全的啊,这里我给大家放一个参考,我觉得这个写的还是比较不错的。刚才我看了一下,给大家放一个参考, 就是人家啊,人家的一个安装路径, windows 当中好,这个是一个参考。好了,这个就是啊,这个安装一下我们这个刀口,然后呢?除了 windows 啊,我觉着其他的地方都好装啊。你那个无论是微软兔还是三百 s 我 都装过啊,就 apd 盖特一下就把这个东西直接装起来了, 然后啊,在这个 linux 当中啊,大家就是自己来去简单配置还行啊,我觉得这个对于玩 linux 同学来说已经是比较轻松了,直接找一个教程,咱们照着做就完事了。然后我跟大家接着说一下,就是我就拿这个 windows 给大家演示啊,那接下来就是去配置一下啊,咱们当前这个 dk, 然后需要配置的东西啊,呃,比较多啊,为大家一个来说,首先第一步就是我们去啊,先检查一下咱们这个 dk 能不能用这一点,你就是,呃,你打开,打开一个命令行,或者一个 powershell, 这都行啊,咱们就拿这个 cmd 给大家举例子了, 在这个 cmd 当中啊,刚才我们是不是把这个 dk 哎给装起来了?好了,然后我们看一下这个 dk 它的一个版本, 只要这里啊能打印出来当前的,哎,我的这些东西相当于啊,咱们整个的一个 dok 哎,就已经安装好了,然后到时候大家你可以再打一个,就是这个,呃, dok 音符一下,在这个 dok 音符当中啊,他会给你,呃,就是在这里显示出来一些所有配置文件的一些信息。 然后这一块我给大家说是这样一件事,就是,呃,在这个 dok 当中啊,还有个东西叫做 dok 号儿,这个东西 get 号儿,这个东西啊,之前大家都比较熟悉吧, 那什么叫做一个 doctor harp 呢?是这样,我给大家先来举例子,比如说啊,现在,呃,我们想去配置一个环境,那配置这个环境当中啊,我给大家说需要什么, 我一个来说,比如说我就说我最常配的,比如说我现在,哎,我需要一个 oberto 系统,然后呢?在这个 oberto 当中我需要一个,呃,这个 padouch, 然后呢?我还需要那个 anaconda 这一套东西,然后我还需要呃一些其他的,比如说像什么 open cv 啊,还是一些 turn flower, 还有各种各种包,点点点,就简单随便说几个吧。好,我说我需要这些东西, 那这些东西你在去配的时候,咱讲道理,是不是得先去给它装起来,哎,你这个 bot 是 不是要下载下来?你这个 petouch, 或者说这个 anaconda 这些东西是不是我们都得去下呀?到哪去下这个东西啊?好了,在下的地方就是叫做这个 hack, 比如在这里我给大家搜一搜, 呃,在这块我给大家记一记吧。就是,呃,二,在这个二当中, 二当中咱们写一下,就是,呃实践下载东西的地方啊,咱就说的直白一点,然后呢?默认啊,默认情况下,默认情况下就是咱当前的,哎,这个汉堡当中,这里边就是你想下什么都能下,我给大家搜一搜,比如这里,哎,你去想下这个 padouch 吧, 是不有?你看这里 padouch, 然后这块他有一个,呃,这默认是 cpu 版本,然后你找下面,下面还有扩大的,是不是还有一个 gpu 版本啊?是不都有啊? 就跟那个 github 上,哎,你看感觉这个东西是不是挺像的呀?这个就是啊,这块还有那个它有下载次数,还有 stars, 咱们一般下东西啊,你就找那个 stars 数相对来说比较高的就完事了。基本上第一个,哎,都是一个官方的,都是咱们会用上的。 那这里有什么问题呢?在这个表格当中啊,如果说你去下非常非常慢,我给大家在这写默认情况下,呃,好是挺好,就是会非常慢。慢到什么程度呢?就是比如说啊, 你下这个就下一个 open c b 这个东西吧。啊?几百兆的东西,呃,几百兆?几十兆,记不清了,得需要多长时间?大概个一两天吧。啊?几十兆,一两天,这东西你说你能忍吗?根本忍不了吧。好了,咱写一下,根本忍不了这个事, 根本忍不了,那所以说我们怎么办啊?这一块要求大家就是去配置一下啊,国内的源,这里国内源来说啊,呃,我觉着也没什么可选了,就是所有人都在用的就是这个阿里源吧,咱直接的配置这个阿里啊,就是阿里云镜像吧。阿里云 镜像我给大家演示一下这个阿里云镜像该怎么样进行配置。呃,这里需要大家做的第一件事就是你得自己啊,先去注册一个阿里云的一个开发者账号,就这块,这不阿里云吗?我给大家,呃,把这个复制过来吧。 在这块,呃配闸元镜像到这块他这个链接这里去。呃,自己注册一下,注册也比较简单,反正你拿支付宝或者拿淘宝一扫码啊,就这个东西,支付宝淘宝一扫码就完事了,直接登进来,登下来之后呢,然后我们进入到这里边,这个我给大家复制一下,这个是呃镜像配置的, 在这里我们要完成一个镜像配置。这个镜像配置当中啊,就是你自己注册完账号,然后注册完之后,然后呃到咱们当前的这个就是就相当于到我当前的一个镜像当中,然后给大家看一下这里边我们都有哪些个功能,哎,需要我们自己去做的给大家看一看。 哎呀,这个过期了,过期了,行,过期了,我就正好正好我扫个码登一下,给大家演示一下怎么登啊?就是到时候大家到时候大家自己登也一样,就是支付宝或者是淘宝,淘宝你一这个扫码直接登上就完事了,也不用注册,然后相当于都是注册好的,然后最后啊, 你去呃给他邮箱验证一下应该就完事了,这我都忽略了,不管了。好,这块我也顺便给大家登录一下。 呃,下次再说吧,我也懒得绑了。好,这里啊,就是,呃,咱们当前啊,它叫做一个呃容器镜像服务在这里边。哎,这些,呃,这些功能我一会一一给大家介绍吧。就是怎么样去上传这个镜像,然后打包镜像,然后我们下载,这咱最后说,然后看最后一个,这里还有这个东西,我给大家截个图, 呃,画一个圈吧。这块有一个镜像加速器啊,这个是需要大家我们自己去整的, 就这样配置。这是注册完,注册完之后,然后你自己扫码登还是怎么登?无所谓啊,这里面我们要打开就是当前你的一个加速器,你看这块点进去啊,加速器当中有一个加速器地址,这个非常重要,只需要大家把这个地址复制下就行了,我给大家再截个图,就是地址你复制下来 在这里,呃,看一下这块地址,我们复制下来,然后比如这块吧,我先复制到我这个。 好,这块我先复制过来,好,把我地址复制过来了。然后复制过来之后呢,需要大家做这样一件事,呃,把咱们当前啊这样一个命令来去执行一下,然后下面我会把这个,呃命令,可以把这个直接往上吧。 啊,这是我写一下。呃,加速器,到时候大家自己用的时候就是不要用我这个地址啊,这个地址到时候你上传不了,你就上传到其他地方了。我们自己啊,用自己的那个就是下载好的你的一个加速器,然后做一个配置就行了。 其实配置很简单啊,就是你把这个加速器地址然后复制到我们下面给大家打印好的这个代码当中,就是我先鼠标闪的一个位置,然后加上去就完事了,非常简单,就相当于一个复制的一个操作啊,这个速度去掉吧。这个这这个是 linux 的, 然后面执行一下。呃,在这里。 哦,这个不能没得。好了,在这个 quick start 当中。哎,就是当前啊,我们这个 to boss 当中不有 quick start 吗?或者说你指定个你在这里打开一个 partial, 或者是呃用那个 get bash, 然后去做也行,这块我复制一下。呃,把这个东西我直接复制过来。 好,这是啊复制过来,然后我把这个加速器地址也复制一下。哦,我看一下粘在哪啊?粘在这个位置,就是这里有一个等号。好,我们粘一下,粘完之后呢,然后我们打一下回车,这就完事了。呃,我看一下他出现一个小问题, 哦,这,这块忘了一件事,我忘做第一件事,第一件事就是,呃,你先得去把我的一个默认配置文件啊这块写个一,写个二吧,这是我第一步, 然后这是咱们这个第二步,然后这是一个第三步,然后这是一个第四步啊,按顺序刚才我没生成,然后没生成情况下是没法改的。好,第一步我们去。呃,生成一下。好,第一步咱们的一个编辑这块已经生成完了,生成完之后呢,然后接来我说这块我去改一下,重新的再复制一下, 然后加速器地址我也给它复制过来,这里是加速器地址,好,复制过来回车一下。哎,这就完事了。然后呢,这样还没完,就是你得去再重启一下这个 dk 重启过程当中啊,第一步你先去,呃,这个退出一下,因为你看这块啊,就是他是什么?他是一个 dark 里边,是吧?好了,我们说这里我说我先去退一下,好,这就退出来了。退出来之后呢,然后你去重启一下,这一块我们有一个重启的服务。哎,这里给大家指定好了,到时候大家直接这个一二三四你就复制粘贴就得了。 在这里我说我重启一下,重启啊,可能得花个呃,一分钟吧,或者是或者是两分钟时间重启还是比较慢的。这块咱就等它重启完之后,相当于啊,我们就把这个圆给它配置完了啊,等它重启完之后,我给大家看一看 啊,这块得稍微等一等,因为啊就是后续啊,咱所有操作都是基于这个阿里园来去做的。大家可能会问一个问题啊,就是,哎,是不是说啊,人家那个官方那个号吧,然后里边的资源比较多啊,然后阿里这个园里边就一点啊,其实不是啊,咱这个阿里园和官方这个号吧,园是怎么样? 基本上等价的,这个官方号吧当中有什么?这个阿里园当中这也有什么,他俩相当于是一个同步的啊,这个感觉,只不过说我们的阿里园速度会比较快, 它不是它的一个就是一小部分,而是人有的,就是人有的,但大家要用的爱媛当中咱都能用到这样一件事,所以大家不要纠结啊,要不要用官方的,还是用这个阿里的,一模一样啊,用起来所有人都是用这个国内媛,没有人去用那个实际这个 docker hub 这个东西的。 好,这里咱们已经重启完了。好,然后接下来重启完之后,我们接下来这样给大家演示一下,看一看配不配完。呃,在这个微信号当中啊,我们去打一下这个音频信息当中啊,大家注意一下,就是只要我给大家说一下吧,这块,呃,去呃执行, 执行一下这个 dk, 然后音符一下,执行完之后啊,如果说在你的这个环境当中啊,给大家复制一下。 呃,这里边如果他出现了这个东西,哎,画笔呢啊,如果说他出现了这个东西,你看什么?是不是阿里云这边有了,如果说他出现了,像我该给大家画出来的,哎,这个东西 相当于啊,我们的就是这个镜像就已经配完了这一步,不是说是选修这一步,他是一个必修啊,你必须得把这个阿里镜像给他配完,要然后续啊,嗯,你什么都玩不了啊,这个是一个必须的啊,咱必须得把这个下载问题解决了,因为一会 咱们实际啊,要去配环境,你要下各种各样的东西啊,还有这一步咱已经执行完了,相当于,哎,我们环境基本来说啊,已经没啥问题了。那接下来呢,就是, 呃,给大家去演示一个 hello world, 在 这里,比如说,呃,就在这个里演示吧,在这里,比如说现在,哎,我想去执行一个 dork 的 一个 hello world, 那 怎么做啊?那执行一下吧,在这里也是建议大家先去试一试啊,咱们当前这个下载好不好用啊?就是在这个 dork 扑一下, 所谓的扑的意思啊,就是说,呃,从这个 app 当中把我学校镜像给拉下来啊,就是把镜像拉到我这里来,是这个意思, 然后常规操作这个 hello world 啊,注意一下,这个 word 当中是一个杠儿就完事了,只需要打这个 dog 扑一下这个 hello world 就 完事了。咱们执行一下, 执行过程当中啊,它会给我进行下载,只要你的 hello world 能下下来,其实呢,其他问题啊,我觉着咱都能给它下下来啊。这里先给大家演示一下,我们去扑一个 hello world 出来, 很快啊,咱们就下完了,然后下完之后呢,相当于,哎,你这个环境当中啊,已经有了这个 hello world, 那 怎么看我有了这个 hello world 这个镜像啊,哎,这也说到镜像了,我给大家,呃,我给大家举个例子吧,就是在这道儿当中啊,其实有三个东西啊,我给大家分别说一说,咱们提到就顺便说一下, 这里就是有这个仓库,然后一般我现在叫仓库,然后还有一个镜像,然后还有个容器。呃,大概这样一件事, 就这个仓库啊,就相当于是一个 hop 了啊,就是在这里软件有很多资源,只要从这个仓库当中下一些东西下来,那比如说我下了这个 hello world, 下了 hello world, 我 们一般叫做一个镜像的意思啊,所以一个镜像你就当做是,比如说就我们生活学当中啊,你下了一个环境,可以吧?这时我就说,哎,这个东西,我说管它叫做一个镜像,然后还有个东西叫做容器,这个容器该怎么解释呢? 大家这样一件事,如果说你把这个镜像当做 python 当中的是一个类,那这个容器啊,就是类实力化出来的一个对象, 那你说我们这个镜像当中啊,是不是能构建什么?很多个容器吧,我可以构在一个类里边,我能构建出各种各样的对象,好多对象出来,哎,这个就是他们几个大概的一个关系啊,大家简单点就行啊,对我们的使用来说啊,也没什么影响啊,大家只需要简单了解。 那好了,我们现在啊,就是已经把这个镜像给它铺下来了,铺下来之后让大家得先执行这样一个文件,就是 docker, 呃, docker magisk 当中我们执行一下,看一看它的意思啊,就会帮你打印一下,有当前你这个环境当中啊,都有哪些个镜像了,我这块给大家写一写。呃,这块 这块相当于第三步吧,就是我们的一个呃,基本操作了,基本操作,然后给大家记一记啊,就是需要大家到时候自己啊,你去呃执行一下。这个 word 编辑器玩的不熟啊, 刀客,然后非要给我大写,我天啊,气死我了, 分校给我大写是不是?然后这个这个相当于就是呃,查看咱们现在有的镜像就完事了。这是第一步,大家可以打印一下我们现在有的镜像, 然后这里,哎,在这个 cursor 当中,然后这里你看啊,它有什么?它不光啊,是有这个 hello world, 然后这块有 type 标签, type 标签这个意思啊,就是,呃,当你去 做这个镜像的时候,比如说我们现在,呃,咱们这个系统,不是咱们系统啊,咱们做一个项目,然后这个项目经常会升级,一版本、二版本、三版本就不再升级,是不是?这个 tab 你 可以打个标签,比如说是最新版还是个一版本、二版本、三版本啊?四版本。到时候我给大家说啊,这个该怎么打版本? 这个就是他这个 id, 到时候咱们去操作呀,这个镜像时候,哎,会用到这个 id, 这个 size, 它这个大小 hello world 没,基本啥也没有。然后这个就是显示的是多长时间之前咱做这样一件事。 行了,那这里给大家呃,去看了一下啊,就是当前我们基本操作第一步,看一下我们有这个镜像啊,那我是不是说在这个镜像当中,那我得做点事才行啊? 那怎么样去做这个事,或者说怎么样进到这个镜像当中啊?来,咱们就用这样一个命令啊,就 doker run 一下, run 当中啊,我们还得需要指定一个,哎,这里先为大家指定了,直接给大家写这个 hello world 得了。然后一会实际来了,我再给大家说都有哪个参数实际的 run 一下, 实际转的过程当中啊,就相当于,呃,如果他出现这些信息,就说明当当前这个东西啊,就是已经能运行起来了,只是一个就相当于一个测试的过程,咱就不用去管了。好,接下来我给大家说一下实际啊,我们该怎么样 去构建咱们自己想要的东西好了,那这一块给大家看一下吧,就是基本操作,咱一会慢慢记吧。 然后呢?这一步,这这这个我觉得不用记了,这个就给大家演示得了,到时候大家自己来操作好了。我们接下来要去做一个环境,在我们的一个带耳当中啊,在这里是给大家演示的。呃,是一个派套式,那咱们就拿这个为例子了, typeface, 其实其他框架 啊,没什么太大区别,你想把所有东西都自己做成一个大包也行。在这里我就拿这个派套式给大家演示了。第一步,咱们去铺一个东西下来 好啦,我说在这个 dart 当中,哎,我说我要去执行操作,噗一下我的什么?噗一下我当前需要的一个环境嘛?那你说你需要的这个环境,那应该是什么呢?在哪找啊?在这个 docker hub 当中,我们来看一下。 好,在这个 dog 号当中,我们之前刚才好像搜了一下,哦,找一找哪去了?呃,哎,刚才搜呢,不是这里,哦,是这里吗?也不是,好像关掉了,没关系,我再搜一下吧。呃, dog 号一下,这块搜了,在这里咱直接的进去。 在这块我们可以自己搜一下,就是一个 padouch, 因为你需要知道你到哪去下这个东西,你需要把它的名字输入进来,所以说啊,就是,呃,但凡你要去找一些环境的过程当中 啊,你就是去找,在这个逗号当中,你去搜一下,哎,它实际的名字是什么?然后找那个排行榜第一的点赞人最多,下载量最多就行了。哎呦,这个东西咋这么慢呢? 呃,好慢啊,果然慢。是不是你看他这个官网访问都这么慢,那都不用说他其他的东西了, 我就要给大家看一下那个 petouch, 其实我知道我在这块,我在这块先写吧,其实到时候刚才搜完的时候,大家记没记着他叫什么,他叫做一个 petouch, 然后叫做一个杠,然后一个 petouch, 是 吧?呃,文件起见,我还是再看一眼啊,我忘了他第一个字母要不要大写了。 复制粘贴习惯了,复制粘贴习惯,就就有这个问题啊,就是有可能没记住他一个大消息 啊,这,哎,这里,哎,这里,这是咱们刚才搜的是吧?好了,这里有。好了,把。这个东西怎么样?你直接的把这个名字,我说我一复制粘贴,这就完事了啊。这是什么 type? 杠? type 好 了,然后在这块我们来执行一下, 在这一块三当中啊,执行一下。哎呀,这一步执行得花一阵一些时间了啊,他相当于就是会在这个拍套当中啊,就是我们要配这个拍套的环境,他其实不光 给你下拍套那一个东西,他要下拍套是所支持的所有的环境,你看这里他会一个下,但凡所有你需要的配置啊,就是给你挨个挨个下了,因为我配置按理完了,所以说,呃,咱这个速度讲道理还是会比较快的。 但是大家可能会问他为什么下这么多呀?他这个东西像,像这样,这是跟那个刀口的一个底层结构相关的,他这个东西是一层接着一层的,所以说大家不要觉着这个东西是一个环境,他是一层一层一层一层的,所以说这里他也一样的,铺当中也是一个一个一个一个来整。 然后呢我再给大家说一说啊,就这里吧,咱们铺下的环境,大家可能觉着是不是只有拍套这一个包啊?其实不是的,它相当于什么?它相当于是一个拎领系统了啊?一会我给大家可以进去看一看,在这个拍套上,一会会进入给大家看一下,进到这个拍套式的一个镜像当中, 我们来看一看这个镜像里边有什么。在这个镜像当中我们不光可以把这个牌套倒进来,我还可以干什么?我还可以做很多事,他就跟你新建了一个 linux 的 一个发行版本似的,只不过说他那个发行版本相对来说是比较简易的,我随便给大家一起说一说吧。 这里也建议大家这样,就是你自己配环境啊,就跟你服务器来,如果说你的一个所有服务器你们都是三 to s 的, 那你在这里你自己内置一个三 to s 也行啊。这个东西不是说这里边我们只能装环境,你想装的东西,你看这一块我给大家搜一搜,比如说你装这个, 你想装这个三 to s 在 这块能怎么样?讲道理也是可以直接去装的啊,但是大家可能会问问一个问题, 你这一块装一三 to s, 大家以前可能装个虚拟机啊,也知道这东西啊,那抵好几 g 是 不是?但实际上它不是的,这里边三 to s 我 记着好像也就是 几百兆吧,啊,也就是几百兆这个东西,因为刀口怎么样了?刀口在做这些配置,做这些依赖,是吧?他会有一个倾向,就是会尽可能啊,把你的一个呃,就尽可能把你的环境越简单化越好,因为他只是想提供这样一个环境去用代码,所以说其他啊,但凡跟这个环境没关系的东西, 他可以通通都不用。那为什么说一个底层上像是这样一件事,底层啊,他这个内核 相当于是一个共享的,所以说他只需要去做他基础的一些设施就行了啊。这里面镜像相对来说啊都会是比较精简的版本,这也是刀口的一个出发点啊,做东西就做的比较精简实用就完事了,不会给你做出一个镜像非常非常大啊,大到一个吓人的那样一个感觉。 然后行这块咱们就稍微等一等,你看这个下速也挺快,一会估计就下完了,下完之后会进入到这个,会把这个镜像我们先给他启动起来,然后呢在这个镜像当中 我们就给大家演示一下啊,咱们把所有我说我想装的东西咱们装好,装完好之后呢,我说最后啊,我给他打个包上传到我这这样当中,你看我这块有这样仓库是不是?这我刚才我做测试的时候我们上传了一个啊,当前就是我做好的一个派套的环境,这个派套的环境你做好之后, 接下来你说你其他服务器上,你直接去下载是不可以啊?只要能上网把这个阿里云一点,把你账号一添加进去。哎,对这点还没啥说,我们还有阿里账号,这个账号就是你自己注册过程当中是有账号密码的,账号密码记住了啊,因为到时候需要你去提交的过程当中,我们提交到这个就是将服务当中吧,得 让你输入你的用户名密码,咱给他忘了啊,就是有一个到时候你自己设置的东西, 行了,咱们稍微等一会吧,然后等安装完之后再一起跟大家说。等了一小段时间之后啊,终于把这个所有啊咱们需要铺下的东西全搞定了。接下来就是我们现在已经有这个镜像了吧,看一下吧,在这个刀口当中我们执行一下, 刀口当中有 mesh, 我 们看一下这里边是不多了一个,不光有咱们刚才这个 hello world, 还有这个牌套,是吧?是我们刚才配好的, 然后这个你看是比较大的啊,他是一个四点多 g 的, 然后做完这件事之后我们来执行下一个命令,下个命令啊,就是说,呃,咱们进到这个界面当中,然后去看一看这界面里边有什么东西呗,看看我们的环境现在怎么样啊?怎么进去呢?我们来执行个命令在这里,这样就是刀客, 等会儿我们要 run 一下, run 当中啊,就是你可以去指定一些方法。在这里啊,我们可以执行一个叫做杠 i t, 我 给大家解释一下这个杠 i t 啊,它是一个 i 和一个贴操作,其实说白了就是给你个交互式的一个命令展示啊,在命令行当中还可以接着去做,所以说大家做的过程当中,你就把这个杠 i t 给它加上,相当于一个交互性的一个展示的一个意思,然后接下来呢,把我们的一个呃,就是这个 pad 和杠 pad, 我 给他复制一下, 然后拿过来就完事了。相当于啊,这里我们去 dork run 一下啊,当前我们的一个镜像,然后注意点,就给大家复制一下, 因为有一点是有点不同的,一定注意一下,就有一个变化,你看这块变成什么了?哎,多了一个东西,我们怎么多了一个 root 东西啊?这块是不多了一个好了,然后点完成一下,我们来看一下下面我们该怎么去做好这块哦,基本操作 在这里,呃,这块吧,就是我,我这边写四吧,四就是呃三当中,一会我想起什么再大家一起说什么吧,就是还有一些删除啊,还有一些提交操作,咱们一起说,这里就是,呃,去配置一下啊,不是配置一下,就是呃进入到吧,进入到吉祥中啊,这个意思 好,进入到我们的镜像当中,这里也需要我们去执行一下 dog run, 然后杠 i t, 我 就教会用命令展示,然后它就变成了一个 route, 就是 咱当前我们实际做好的这个 padouch, 它这个镜像当中了,我就进去了,好了,然后看一下吧, 接下来在我这个画面当中,那你说,哎,这里边它是什么呀?那我们来看一下吧,我打个命令,这个命令大家是不比较熟悉,一个 l s 来指一下,结果看有什么, 哎,你看到这些东西之后眼不眼熟啊?是不,感觉挺眼熟的,给我们的感觉好像说这个环境当中啊,那他可不是只有一个派套式,是不是说我们基本的一个列在当中啊?相当于一些比较常规东西他是不是都有了?但是他就是不是所有的都有,比如我给大家打一个 为什么这操作怎么样?没有吧?就像我刚才说的就是这里边,哎,他都是一些基本的,或者说是所有必需品吧。啊?非必需品人家是没有的,因为毕竟这个大小相对来说还是比较小的吧。然后这里,哎,那你说我们这里能干什么? 那先试试水呗。那在这个拍套的环境当中,哎,他都把拍套的环境做好了,那肯定得有个拍准环境吧,有没有啊?试试呗。 part 当中是不有 part 三点七,哎,是不完事了。并且呢,我们来看一下在这里,哎。 p i p。 这个东西有没有啊? p i p。 例子一下安装什么东西了?看一看啊。在这个画面当中你看不光我不找我给大家,我看在哪呢?那个套式 在这里,你看他这个东西他是不是有了? touch 是 个一点四版本的,然后 touch 是 零点五版本的,基本上我们需要的东西人家是不是都有了呀?好了,那接下来在这里边我如果说我想再配这些其他的怎么办?那你看他少什么?我看一看这里边, 呃,应该还在,你可以再装 open cv 吧。那你说我该怎么样把这个环境配的跟这个,呃,就是服务器或者说这个环境我想配的更全一点,然后到时候用这个包自己配呗。然后这块我们说 撇撇 start 一下,然后这个 open cv, 然后杠一个 python, 然后再带大家这样就是加上那个青花园,青花园我背实在背不下来啊,一般我都是现查, 呃,就就就这样吧。 p i p in star, 然后呃 open cv, open o p n cv, 然后清华园的一个链接,什么来着?给大家复制过来。清华园, 呃, p i p star o p 哎呀,我就说一句,总拼错, open cv, 然后我看一下这呢,就是这个杠 i, 把这个青花园好复制过来,我把这个给大家复制一下啊,就是自己装东西的过程当中啊, 配置的时候,呃,最好咱们用这个青花园,因为这个东西啊,下载会比较快,你就在后面加上个杠 i, 就是 到哪个园当中去下就过来吧,在这块我们自己装一下,在这块 open cv, 刚 python, 然后把这个框 i 加上在这里一下,那应该是飞快的一个感觉。来看一看,是不是飞快的一个感觉啊, 如果自己装自己装就是默认啊,他那个圆肯定不是个飞快的。这里,哎,这不给面子啊,这他也没看,看看这速度怎么样,五点多兆每秒,是不是还是比较快啊?这就是一个啊,清华园也建议大家用这种方法去做, 背不下来这个东西,没关系啊,你复制粘贴到什么地方也行啊。在这里啊,咱这个 open cv, 那 我们就装下来了, 然后咱们演示一下。就是导一下这个 touch 吧,直接进入到我的 play 画面当中,然后引炮的一下当前这个 touch, 哎,是完事了直接读进来,但是有点小问题啊,就是当前在我们这个圆当中啊, 可能它里边所有基础的设施还都没有,因为这只是一个最就是最简易的一个版本了,需要大家去 app update 一下, 你把这东西啊都给更新一下,还有好多咱需要依赖。这里没有去装啊,我就不给大家一个演示啊,就是装所有内容了,因为这里你要真的去装的话,咱们现在只是做了一个 cpu 版本,如果说你要做 gpu 版本, 那这东西你不光要装个刀克,还要装一个啊,一个英伟达,这个刀克下来之后会比较麻烦啊,这个就不给大家一个演示了,主要说一下咱们当前这个刀克该怎么样去用。其实环境配置来说啊,这块 我们需要配的东西还是比较多的啊,我就不给大家一个演示了,到时候大家基于你们自己的环境吧,想配的时候想装什么,自己把这个东西在一溜烟的全装好啊,这是需要我们去做的。 好,这里这里,现在我们已经是,呃,退出来了,然后,呃,那我把这个退了吧,就是这个 root 就 相当于我们在你看这一块已经相当于啊,我们是在这个界面当中吧,这还有一个 id, 然后我们退出来吧,就是一个 exist, 好,退出来,退出来就回到我们这面号当中了。那这一块我们再给大家说下命令,就是还有一个 doctor, doctor 一个 ps, 他的意思就是说,呃,看一看现在有没有哪一个,就是,呃容器吧,是正在运行的这块没有,这样我给大家,咱们咱们启动一下,启动一下。好,启动完之后让我看一下 dock ps, 哦,不行,在这块在这个命令行当中啊,给大家去指定一下 dock ps, 你 看这个指定一下有了吧,相当于这个 id, 哎,是不是像刚才我们刚启动的一个呀?好,那 这块如果说啊,到时候大家你想去关闭,哎,就是这样一个容器怎么办?那就 dock stop, 然后你把它的一个 name 给它传进去啊,这也行?比如这里我说啊,咱们这个 dock, 然后呢,我说我就 stop 一下,把这个东西,呃,就这个 id 给它复制过来粘一下,行了,这就是给它 stop 一下,然后再 docker, 然后我的一个 ps 当中手机没有了,这给大家演示了一下,就是基本操作啊, docker stop, 还有一些什么 r m r m 可以 去删一下,当前我的一个容器 r m i 是 删我的一个镜像这些基本,给大家简单写一写吧,这些基本操作啊,我就觉着,呃,就是大家不用去记啊,就是现用现查这个东西啊,都完全来得及的。 doctor 一个 stop, 那 第一个大写爱大写大写吧,我也拦不了他了,这个 id, 这个编辑器,他就这样刀刻,然后还有一个 r m r m 或者是这个,还有一个叫 r m i, r m 是 说你删一个容器, r m i 就是 删一个镜像,就是 r m mag, 是 这个这个意思,这个刀刻不能忍,把它变成个小写的。 行,这完事了,这些不给大家去说了,比较简单的一个操作。好,接下来给大家演示一下,就是当我们配置好之后啊,如果说啊,我们现在,呃想把我们本地的一些数据给导进来,比如这里,咱们之前啊,在这个 app 当中啊,不是说了有这个东西吗?比如说随便导两个,导几个代码吧, 就这个代码得了,在这个就是 run 派特殊 server 当中,我们传一个数据进去啊,行,把这俩代码我说 给它导给它,给它那个传到我们这个,到时候当中,这个怎么办啊?这里啊,需要大家我们再起一个命令啊,起一个命令就相当于做一个复制的操作,就跟那个 linux, 我 们一个就是也是一个 c p, 只不过说所有 docker 当中的操作啊,它又是一个,前面多了一个东西,叫做一个 docker cp 啊,我给大家演示一下, 这里啊,我先在这个 v i n 当中啊,就是先找一下吧,我们那个代码所在的一个位置啊,我给大家演示一下,这里啊,我先在这个 v i n 当中啊,然后这个 pad, 然后, 哦,我想一想,我看一下这个路径 excel, 然后 wordpress 派 top, 然后在这个 model 啊,在 model 图层当中找一下, 在我们当前的文件夹当中找一找好,就是当下这个文件夹,然后派 top model 里边,这里边就是我们要把这几个文件,然后给复制过去,这这样这块就是有一个 git bash, 这个到时候大家如果说你们想要这个功能,就是自己装下这个 git 之后,它这个功能就都有了。 然后这块我给大家看一下,就是当前我的一个位置,但这位置当中你看有这个猫,还有这个狗,然后还有这些 t i t, 就是 我想要的这些数据吧。好了,那我们去复制一下吧, 就是一个刀砍,然后 cp 刀砍 cp 啊,就是就是说要把我们本地的东西复制到一个容器当中,然后他的命令是这样的,就是先写你这个本地的,然后再写你复制到什么地方。 本地的我看一下,就是,呃,把整个的一个文件夹咱就全复制过去吧,整个的文件夹复制过去,然后复制到哪,复制到哪的时候是这样,因为我们现在啊,你的一个端口当中你可能会存在很多个容器,是吧?在这里我给大家看一下, 这开灯稍有点多了,在这块我看一下,呃,咱们先进入到这里,我们先去 run 一下, 刀客先把这个都转起来,在这里啊,就是,呃,我们看一下这里他是不是有一个很多文件啊?在这块我们一会也可以去新建一个文件,然后就导入到当前这个位置得了。但是我得看一个,就是他当前的一个 id, 在 这里我就直接把他这个 id 给它复制过来,哎,就是这里一什么什么东西一大长串子,我也不管了,直接的复制过来。 好,然后我去点一下啊,粘贴一下,这个是他的一个 id, 然后 id 啊, id 完之后你写个冒号,相当于啊,就是,呃,你要存到这个容器,哎,这是个容器是吧?存到这个容器当中哪一个文案当中我这里就随便指定了,我就随便新建一个吧。 呃,就叫做这个派特吃,然后,呃,派特吃他叫我 model, 得了,随便,他到时候会帮我新建个文件夹,然后你这块看一下有没有结果。 二 s 一下,呃,是不多了个东西来找一找,是不多了,一个 python 的 model 啊,让我们进去进入到这个 python 的 model 当中,看有什么,是不是跟我们当前就是本地当中这些东西是一模一样的吧。这点就相当于啊,我做了一个复制,呃,把我们所有咱需要的数据我就全复制过来了。 然后呢?咱们刚才不是说了吗,这里边也不是可以去执行一个浮,就是启动 sub, 然后再去啊,可以做一然后,然后还可以去啊做一个传数据的一个操作,是吧?好,这里我们执行一下吧,看看在我们环境当中能不能跑起来, 反正基本上咱那个代码挺简单的吧。我再我再看一下这个代码还有什么?这个代码当中我看一看,哎,这个 app 有, 哎,差一个 plus 是 吧?我们装一下,在这里还有额外再装一个包, 装扮很简单哦,就是 p i p store 一下,然后这个 flask 就 完事了。我看除了这个包还有没有说没装的。呃,这里边应该都装了,这些都是默认带的。呃,应该就一个 flask, 然后要有没装的,咱一块装吧,先把它给装起来, 装一下。装也挺快的,马上咱就装完,装完之后呢,我们在这里启动一个服务,呃,马上它就完事了。 嗯,哎呀,这个配置还挺多的,因为咱们这个服务器是吧,实在太空了,什么都没有。好了,给抓完了,抓完之后,然后这样我先执行一下,试试水吧。 python, 然后一个 run 执行一下,看会不会报错啊。哦,他,哎,这这他这样,他这个没报错,但是我想起来了,在这个代码当中啊,他有这样一件事,在这个代码里啊,他是不是说这一块还有一个 load model 啊? load model 当中他要去把你这个瑞斯五十啊,然后有 portrait model 给给下一下来,是吧?这块我刚给忘了。 那不用这个名好了,换个简单点例子。那这样吧,也懒得改了,咱们稍微等个。呃,咱们稍微等一会吧,然后这里等他下完之后我再给大家做演示。 刚才啊,安装过程当中啊,就是翻车了,卸载的时候又出现了一个断网情况,这个比较烦啊,所以说我刚想起件事,我不是在这个本地环境当中啊,之前咱不下过吗?这个瑞赛五十, 那直接我 dog 拷贝过去就完事了吗?不用在这傻等啊。所以这里啊,我刚才又打开了一个呃拜师的东西,然后执行这个操作,就是 dog cp 一下把当前啊,我这里边的就是,呃,哎,我看哪去了?就是把当前,不是这里,不是这个,是另一个 把当前,哎,我这里边就是相当于这一个点 p t h 我 的一个模型文件直接传入到我这个,到时候当中不就完事了吗?这样它就是相当于已经下载好了。所以啊,咱们就不用等了,我们来执行一下,在这个到时候当中,这里我看一下。呃,咱们就执行一下咱们的一个 run python server, 点 py, 然后执行完之后还有个小问题,就是这里,哎,我们不是打开终端吗?在终端里边我们说执行程序,那下一步要干什么?我们是不是还有一个东西啊?我们还要发一个类似请求吧,那这个请求我们怎么执行啊?现在这个命令行已经运行上了, 那我是不是说我还得再一次进入到这个容器当中,那怎么进呢?给大家演示一下吧。比如这里在这个 c m d 当中 我先退出来,在这个 c m d 当中我们先当做就是新起个 c m d, 然后接下来我是不是知道当前我的一个容器这一块, 就是这里边我启动的这个 server, 不是 在我的做好界面当中,我说启动容器吗?然后我们执行了一个 python run 的 操作,然后这里接下来呢,我说在这一块我要再次的进入到这个,就是相当于我再次进入到这个容器当中,我要执行其他命令了。那怎么进呢?给大家刚才我写好了,这里只需要大家复一下这个命令。 duck, 呃,之前有一个叫 ducktrap, 然后我看了一下它这个版本升级啊,现在是有个新版本就用这个 exec 啊,这个他们说是,呃比那个 ducktrap, 因为之前我都是有 type 去做的,没太注意, 他们说新版本用这个 exec 要比要比那个 type 方法会更好一点,所以呢,咱们就用新版本方法吧,直接给他复制过来,呃。然后粘到我们的号当中,正好粘一下,然后需要大家改一个,就是你的一个 container 的 一个 id, 我直接把我容器 id 复制过来,在这里啊,看一下这个是我,这么这么长,这个是我的一个容器 id, 好, 复制一下,复制完之后在这粘一下,然后回车一下,然后看一下现在我是不是又进到了当前,哎,就是这个肯定是 id, 然后 root 跟刚才一样的吧。 好了,然后进进进,进一下吧,进一下我们当前的,呃。我看这在哪去的, 呃。进入到我的一个 python 文档当中,然后去呃执行一下,我看叫什么名啊?叫那个,呃。 simple request 是 吧?好,咱执行一下 simple request 的。 呃,我都没看这个代码里边显示什么,如果我没记错的话,按着咱之前演示,这里面应该是创建一张图像, 然后进去一一个图像路径,哪个图像我都忘了,先执行一下看结果吧。呃,这块他说了有一点小问题,他说这里面 simples 函数当中,然后呃,一个串啊,这块遇到一点小问题, 他说咱们现在啊传入的一个路径是不对的,或者是一个,哦,我想起来这一个轮胎应该是有传一个空的了。哦,咱们指定要指定个参数是吧?咱们之前说了有一个 fill, fill 当中这里它就是一个 dog, 点 jpg 就 完事了,回车一下好了,这块你看我这个 sort 段已经收到了一个请求,是不是?好,请请 收到了,然后这里啊,他给我返回的一个结果,咱是不是也有了?这给大家演示了一下,就是当前啊,我们是怎么样?哎,去在这个到手当中,把实际构造的镜像在镜像当中呢?我说进入啊, run 一下,启动一个容器,在容器里边我们做了一个配置,现在呢把这个配置环境,并且把我要部署的东西 直接的也拷贝过去了,咱是不是也得到了相当于结果啊?这个主要给大家演示一下。那好了,接下来接下来就是做假设吧,假设个数哈,我把所有的环境都配好了,这里虽然说咱配的还比较 low 啊, 很多我们需要东西还没配,这个交给大家吧,自己想怎么玩,咱怎么玩就行了。然后接下来给大家说一下,怎么样去把我当前啊, 做好这个镜像,哎,咱们去做一个提交,或者说这里咱刚才不说了吗?有一个阿里的一个镜像,哎,这里我们有阿里镜像吧,在这个镜像当中啊,我们怎么样把做好东西传到这个镜像仓库当中啊?我们要做这样一件事,首先啊,这里带,这样就是你先去创建一个镜像仓库,我给大家举个例子 啊,比如这里啊,它有个命名空间,命名空间啊,是这样,呃,要不然你就新建个命名空间,要不然就是咱们自己建成的吧。比如说我再叫一个仓库名称,我把这个删掉吧,把这个删掉,然后确认把这个删一下, 刷一下,然后我们重新新建一个。好,然后我们新建一个在这里,然后你自己命名空间公司名,然后你的名字也行,然后这个东西我就叫做一个派特得了,就要我的一个环境,然后一个公开得了, 然后苗信息咱也不用去写了,下一步直接完事了,然后本地仓库创建仓库行,创建完了,创建之后,然后点进去一下, 点进去之后啊,这块他会有一些呃,就是提示信息,他相当于啊会教你怎么去做啊,所需要大家去做一件事,就是复制粘贴得了,我这边写一下就是,呃,我看到哪了?在这块写第五步吧。 啊?提交包,我们要提交啊,做好的环境吧,做好的环境,然后到到我的阿里云当中, 第一步啊,就是先去,这我就不给大家去进了,就你创建创建一个空间,然后在空间当中按顺序去执行它代码,你看这块也写了一二三四五, 是不是有他的一个地址啊?咱们什么都不需要去做啊,他自动帮你把这个代码生成出来了,在这个 bios 当中,我们把这个命令给他复制过来就得了,随便打开 bios, 然后我们粘一下来,先去了,哦,不是不是,这个 bios 应该是这个 cmd 当中。好,我们直线一下,在这里我说我 dork log in 一下,这里咱们先去做一个登录,登录,哎呀,我 密码我打错了,然后我我重新登录一下,密码打错了,然后重新打一下,好,这是咱们第一步登录,然后他说会告诉你啊,咱们当当前登录已经成功了, 登录成功之后,然后接下来我们要做的就是,呃,你要去把当前我们这个镜像推送到啊,我的一个云当中,咱们不用做这个第二步, 这个第二步啊,他是说,呃,你从这个,呃,从当前云盘当中我拉一个到你那个就是到你这个导购当中,这里我们不是,我们是要做上传,所以说在这里这样我们先去打这个标签, 呃,在打标签的时候我还可以,我再跟大家说一下,还有一个肯妹的命令,我给大家也是简单解释一下吧。在这个到手当中啊,我给大家看一下 到手里面设置的当中啊,咱现在不有这几个吗?那我现在我说我也可以把,呃,当前的,我说打上一个包,然后去给他指定成我们当前的一个版本号,这个 t h j 就是 他这个版本号,我就按他这个操作来就行。这块我就直接啊全复制过来了,这个刀口这个东西全复制过来,然后稍微改一改, 哦,哎,怎么没复制呢?复制一下,好,复制下来了,然后这块我们看一下需要改什么,只需要大家改一个东西,叫做一个,哎, image id 相当于就是你的一个镜像啊,它的一个 id, 我 们找一找镜像的 id, 呃,咱们要做的是这个拍套式这个东西是吧?好,这是我们刚才做好的环境,然后呢我就把它的一个 id 给它复制过来,这块你看那个 image id, 好 给它复制一下。呃,复制过来 啊,这块写一下,然后后面这些东西啊,咱们都不用去改啊,然后只需要去改最后这个版本号,因为你可能啊,就是会多次提交,那每次提交可能是一版本一点一,一点二,一点三,是吧?那我们就是一点零得了,给他先打标签执行一下, 折完之后呢,我们再折一下这个,再看一下这个 mag 子当中,是不是这里边他又多了一个?多了一个,虽然多了一个,但是你看他这个版本是我们指定好了,他是一点零,因为实际啊,在你去做这个提交就是要复制操作的时候,你需要明确去指定好啊,当前你的一个版本号 是等于多少的?这是我按着点操作执行第二步。好,然后接下来就是一个,哦复制操作,我们 ctrl 加 c, 然后再 ctrl 加 v 好了,然后接下来这里就是前面东西都不用改啊,这东西都是一个默认的,然后下面就是一个版本号,一定是跟你刚才他的标签一样的,是一个一点零,我们执行一下,执行过程当中啊,他就会,呃,哎,这么快就完事了吗? 这个速度有点不对啊,因为我第一次再去做这个铺子的时候,他是等了好久啊,那这个怎么可能铺这么快?我感觉可能是跟我刚才把那个删掉了,然后重传有关系,可能我删掉了,但是他还有缓存,他一看我,因为我刚才我是刚传了,自己其实试了一遍,然后给大家演示了一遍,所以说他可能啊,就是会认为你这个东西 哦已经是有缓存了,或者有一模一样的,所以说他就直接的把之前的又找回来了。可能这样一件事啊,咱也不管啊,一会主要看一下咱们能不能给他呃铺下来啊,只要能铺下来就没问题。然后这里这样就假设我们现在给他上传完了吧,比我第一次上传 快多了,这简直是一个秒杀的感觉。然后这我们先不管,然后接下来我们去呃做这样一个操作,在我们当前这个刀口当中啊,你看 现在这里边我们是不是有这么多镜像啊?好了,那我说我把这镜像我要给它全删掉了,一会我在咱们这个云当中,我自己的重新也下来一下,然后这这样我先去呃 dk 当中啊,我去 rmi 一下,相当于把我当前的这些个呃镜像我就全不要了,一个个来吧,就是这是第一个给它删掉, 在我们删之前啊,刚才我还多做了一个操作啊,就是啊,你得把所有的一个容器先都停止下来,然后才能再去删这个镜像。这里呢,我一个一个就是全停止了,然后把我们的所有容器,所有的一个镜像通通的就跟他拜拜了。在这里我打印了一下咱们的 document 当中啊,现在 就只剩一个 hello world 了吧。好了,接下来我们从这个阿里云当中啊,再把咱们刚才传上去的给大家演示一下,我们要给它下下来了。好了,进入到这个拍照当中,让我们看这块他是不是也教你了,怎么样去呃拉这个东西。好,我们来执行一下吧,在这里 版本号我们刚才传的是一个一点零版本吧,好了,我们执行一下,执行过程当中啊,他就会呃,再把我这个东西给他拉下来,你看啊,就是刚才确实我觉着应该是有一个缓存,因为我给大家演示的时候刚把那个删掉,那他可能又重新上传的时候, 我觉着就是在服务器当中这个东西是删不掉的,它只是在你界面当中你显示不存在了,然后你再上传,其实它还是有缓存的,直接把那个又拿回来了,那这回就是,呃,它其实又是做这样一件事,就跟你在咱们之前啊去铺那个, 就是人家官方版本那个 padlock 是 一样的,只不过说这个版本是我的一个自己的吧,我在这里边我装了一个 flask, 然后再装了一个 cdrom, 然后还做了一些,就是给大家演示一个 demo, 这个就给大家演示了一下,就是在这个阿里云当中啊,我们该怎么样进行上传?还有一个下载的一个操作挺简单啊,就是基本上我们但凡需要的一个代码, 人家这里,哎,是不是都给你去写好了?我们需要什么东西,你看这个就有该上传的吧,镜像的一个大小,然后它的一个 id, 还有它的一个版本,主要就是一个版本来去啊指定,然后这里 啊给大家演示了一下吧,就是我们这个刀尔当中所有的啊基本操作,咱们有哪些?我是建议大家这样啊,就是在学这个刀尔过程中啊,你真的就不需要去了解他太多的一个底层太多原理, 就是帮我们去部署这个环境来去做的,只需要大家用,到时候什么时候查什么就完事了,不需要把这个东西啊做太多啊,深入只是一个工具而已。 行了,这个就是我们今天的任务啊,给大家讲了一下这个 doc 哎,该怎么样去用以及呢,给大家演示了一下咱们整体这个流程啊是怎么走的。然后唯一啊,就是可能大家遇到问题了,就是一个安装啊,安装遇到问题啊,这一块我给大家演示的是一个 windows 二 to 三 to s, 我 觉得大家用 linux 的 肯定都是比较熟悉了这里,要不然就是可以怎么办,就是比如说吧这个三 to s, 然后一个 刀口安装这么多个教程,咱们随便参考一下就完事了,跟这个 windows 我 觉着唯一有一点区别就是比 windows 简单方便多了,你看这里我这个 c m d, 这个拜师,我这个奎斯特来回切闹不闹心呐, 但是没办法, windows 他 就是这样啊,所以说还是建议大家就是尽可能在服务器上去做吧啊,我是为了录课,没办法,更多同学是 windows, 并且 呃我这个路客所有的环境都在 windows 当中,就拿这个 windows 酷 boss 给大家演示了,建议大家还是拿实际的服务器啊做一遍。哎,咱们这个小任务。

如果有人告诉你,用 pie torch 从零写一个大模型,只需要几百行代码,你信不信 tiktok 上有个八万七千 star 的 项目就干了这件事? 我们每天都在用大模型,但它到底是怎么工作的? transformer 是 什么?注意力机制?怎么算的?对大多数人来说,大模型就是一个黑箱, 这就是 l l m's from scratch。 作者 sebastian rashkai 是 威斯康星大学的机器学习研究者。他用七个章节带你从零搭建一个完整的 g、 p t 模型。从文本处理、注意力机制到域训练和微调,每一步都有代码和图解, 它的路线图非常清晰。第一步把文字变成数字,第二步,实现注意力机制。第三步,搭建 gpt 架构。第四步,用数据预训练,最后微调,让模型学会听指令,整个过程和训练真正的大模型一模一样,只是规模小了。 这个仓库是 manning 出版社同名书籍的官方代码库,附带完整的练习题和解答。八万七千个 star, 说明全世界的开发者都在用它学大模型。 想真正理解大模型,从动手实现开始。觉得有用就点个赞。我是锋芒 ai 追星,不盲从实测出真知!

想用 top 去做深度学习,但是代码水平又菜的可怕,你是不是也有这种感觉?有就对了,其实这并不是你的问题,而是绝大多数跨专业的人都存在的问题。我也不是科班出身,想当年入门到深度学习里面来,上来就跑模型,头都搞大了,其实选择确实大于努力, 我也是后知后觉,现在我用过来人的经验,可以给到你四个建议,跟着这四步走,绝对是最快入门到深度学习,并且能够跑通项目的方法路径。错了半年你都在瞎忙活, 那首先不要一上来就哐哐写代码,我们要先搞明白深度学习它到底是怎么一回事。如果说你连深度学习它的本质都不懂,你上来就说我要跑模型,你是要考研吗? 你先把神经网络前后传播、反向传播、损失函数这些概念你先搞明白,这个阶段的核心不是代码,而是构建体系化的知识,只有脑子清晰了,后面你学拍 touch 才不会蒙。那有了第一步的基础,你就可以正式的进入拍 touch 了。 这里我推荐小鼠堆的 top 教程,简单清晰不拖沓。我找几个例子看一看人家的数据,它的数据处理需要用哪几个代码,然后网络结构搭建又需要用什么样的代码,损失函数构建优化训练完它会用什么样的代码?你顺着这几个例子 边去看它具体是怎么处理数据的。处理完数据之后,我们打印出来,看看数据它长什么样,我们再去看看网络结构长什么样,再去看一看训练在优化的时候,每一步在做什么东西。第三步,理解代码,只要能去理解即可,理解完之后就会去用。你做到这一步就会突然发现,哎,以前看不懂的开源项目,现在能读懂百分之七十了, 即使现在不理解不会用,没关系,打开豆包让他帮你处理代码都行。最后,也就是第四步,我们就可以开始动手做项目了,用自己的领域问题练手。 前三阶段搞定以后呢,你其实已经具备了落地能力,这个时候你要做的不是继续啃教材,而是找一到两个和你专业相关的小项目直接上手。为什么?因为深度学习学到最后都一样,一句话,你能不能解决真实问题,跑通一个小项目比看十本书更值钱。 最后说一句,重点,跨专业的,或者说零基础的,千万别再自己摸索了。深度学习其实不难,难的是没有路线图,瞎学半年,一点成果都没有。最后呢,我也是整理了一份二零二五年最新深度学习入门思维导图,包含了四个阶段,学什么、怎么学,用什么书,看什么教程,需要的直接安排。