自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AI与算法都要通俗易懂

董董灿的AI聚集地

  • 博客(271)
  • 资源 (1)
  • 收藏
  • 关注

原创 我的Transformer专栏来啦

现在很多主流的大语言模型,比如chatGPT都是基于该架构进行的模型设计,可以说Transformer顶起了AI的半壁江山。对于这些有些枯燥的概念,有些乏味的数学表达,我会尽可能说的直白和通俗易懂,打通理解Transformer的最后一公里。我会在本公众号进行文章的首发,相关文章会添加标签“Transformer专栏”,可点击文章左下角的标签查看所有文章。巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。

2024-05-09 22:05:51 579 2

原创 历时3个月,代码开源了,给所有想入门 AI 视觉的朋友

本项目旨在完成对 AI 的计算机视觉的入门学习,并且在 Intel CPU 上完成以 resnet50 为基础的神经网络的全部手写,以及性能优化。首先通过对一些经典的传统计算机视觉算法进行实操,理解计算机视觉的含义;随后以 resnet50 神经网络为例子,系统的讲解一个 AI 模型的基础算法原理和相关背景知识。最后通过本仓库中的代码实战,从零手写 resnet50 神经网络,完成任意一张图片的识别,以及神经网络模型的性能优化。

2024-02-25 21:12:10 1076 2

原创 手把手教你升级GPT-4,内附详细步骤

在升级之前,你需要先有一个 GPT-3.5 的账户,GPT-3.5 是可以免费使用的,并且基本可以满足很多人的日常需求。而大部分人选择升级 GPT-4 的原因,则是看中了。

2024-01-11 19:24:03 2791

原创 计算机视觉入门与调优

大家好啊,我是董董灿。在 CSDN 上写文章写了有一段时间了,期间不少小伙伴私信我,咨询如何自学入门AI,或者咨询一些AI算法。90%的问题我都回复了,但有时确实因为太忙,没顾得过来。在这个过程中,我发现很多小伙伴问的问题都类似:比如如何入门计算机视觉,某某算法是做什么的,有什么作用。之前写的文章由于过于分散,不成体系,很多知识点没有串联起来。然后依托Resnet50这一经典图像分类网络,将涉及到的算法都剖析和实现一遍,最后亲自完成该神经网络的搭建,并带你完成任意图像的识别。

2024-01-04 22:16:26 1421

原创 算法岗这么卷吗?985硕士也要报培训班了

对于这些有些枯燥的概念,有些乏味的数学表达,我会尽可能说的直白和通俗易懂,打通理解Transformer的最后一公里。巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。另外,现在培训机构里培训你、教你找工作的人,可能自己都没工作过,教你搞模型的人,可能自己都没实际做过业务,也仅仅会调用一些API而已。在我这里过的两个候选人,一个是哥伦比亚的,一个是清华的,还有很多简历很好但都没有过。大家好啊,我是董董灿。

2024-05-20 22:44:11 488

原创 搞懂这个例子,再也不怕词向量了

对于这些有些枯燥的概念,有些乏味的数学表达,我会尽可能说的直白和通俗易懂,打通理解Transformer的最后一公里。巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。在最下面增加了water单词的可视化,可以看到在上面有一条蓝色的线从上到下贯穿,一直到water则停止消失了,这条蓝色的线或许代表的是“人类”这种信息。上面放了:queen,king,man,women,boy,girl,water(无关)的可视化结果。

2024-05-20 22:40:11 636

原创 为什么卷积可以提取特征?

巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。这是因为 resnet 中有大量的设计好的卷积层,因此,大部分将 resnet 作为骨干网络的神经网络,都是把 resnet 这一部分结构当做一个图像的特征提取器来使用。可以回想一下在介绍卷积的时候,描述的卷积运算的场景是:一个窗口在图片上滑动,窗口中的数值是卷积核的参数,也就是权值。和矩阵乘法一样,卷积在每一次扫描的过程中,完成的是权值数据和输入图像的乘累加运算。

2024-05-19 22:26:22 604

原创 图解词向量的特征

巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。在很多类似的测试中,都会有许多道题来让你回答,然后从多个维度、多个方面衡量你的潜力或特质,然后给出分值,最后综合来评判你是一个什么样的人。是的,在数学模型上,衡量两个人的性格数据(这里实际上是向量)是否相似,可以使用余弦相似度的方法,这个在上一节介绍过了。如果把上述例子中的得分组成的向量看做是词嵌入向量,那么其中的数值,便是代表一个单词在各个维度特征的得分值。

2024-05-19 22:25:17 1041

原创 通俗理解向量:从One-hot 到词嵌入

巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。我们学过几何,在三维坐标系下,[1, 0, 0]、[0, 1, 0]和[0, 0, 1]这三个向量是互相垂直的,也就是互相正交独立。那么二进制向量,就是里面的数字都是二进制的,像是[0, 1, 0, 0],因为在二进制里面,数字只有 0 和 1。上表竖着看,黄色的代表是猫的编码 [1, 0, 0],浅绿色代表的是狗的编码 [0, 1, 0]。

2024-05-15 17:46:49 623

原创 GPT4 是如何将文本 token 化的?

巧的是,下班路上刚手敲完大纲,晚上一个小伙伴来咨询学习LLM的事情,问我之前写的《五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。像GPT-3.5和GPT-4这样的模型使用的方法与旧模型(比如GPT-2)会有不同,不同的token算法对于相同的输入文本会产生不同的token序列。通过该网站工具,你可以了解一段文本如何被GPT-4模型token化的,以及文本的被token化之后的token总数是多少。需要注意的是,具体的文本token化结果与模型有关。

2024-05-15 17:44:17 245

原创 大模型的性能是真不好调啊

,正在内测更新中。另一方面,则是可以依照自家独特的模型和算法,自定义设计出更适用于自家业务的芯片结构,这样做出来的产品性能才好。在接触的模型中,有一些模型有着非常奇怪的分支结构,有些有着非常奇怪的shape,有的有着奇怪的自定义算法。这样设计出来的芯片,在使用其进行算法开发时,才能发挥出最大的硬件潜能,才能榨干芯片的每一处性能。前段时间,在某芯片上调试大模型的一个矩阵转置算法,用了很长时间,才将其性能调到可用的范围。所以啊,一个看似简单的算法,其实背后要做的事和细节太多了,模型性能调优真的很难。

2024-05-12 23:14:56 365

原创 阿里P7,绩效3.5+,年终22W

另外,据说淘天部门的员工如果绩效达到3.75以上,有6个月的年终奖,加上3000元的普调。如果当初真的去了,如我所想的那样,职位并不是自己喜欢的,还要加班加点疲于奔命,最终因为某些原因被优化,那哪里里还有心思和时间做其他事情呢?2023年阿里的年终奖,可以说中规中矩,并没有在网上激起很大的浪花,可能与近些年公司各种改制、各种改革有关。P7级别,在阿里基本都是百万年薪级别的了,正常发挥,年终22W也还算是ok,毕竟工资基数在那。最终我主动结束了倒数第二场的面试,因为职位内容和我的需求不匹配,而且还有风险。

2024-05-12 23:11:44 287

原创 三条命令快速配置Hugging Face

另外,如果你是在Linux 环境下做开发,建议将导入环境变量那条命令放在 ~/.bashrc 中,这样系统启动就会自动导入该环境变量,之后所有的开发就不用关心Hugging Face 有关的环境配置了。要学习与Transformer架构相关的知识,肯定要接触一些大模型,要接触大模型就免不了要从Hugging Face上下载一些模型和参数等文件。除此之外,Hugging Face 还有一个模型共享平台,类似于大模型界的Github,开发者可以在这个平台上下载训练好的大模型来使用。大家好啊,我是董董灿。

2024-05-09 22:03:35 343

原创 计算机是如何理解文本的?

余弦相似度虽然可以方便快速的判断两个向量之间的关系,但是它也是有缺点的,那就是它并没有考虑向量的绝对大小,只关注方向,这一点在公式中也可以看出来。通过计算也可以得到相同的结论:“猫”和“狗”余弦相似度接近1,说明两个向量更为接近,而“鱼”和“跑”则接近-1,说明两个向量代表的单词相差很远。我们通过观察可以很轻松的看出来,“猫”和“狗”的两个向量很相近,“鱼”和“跑”代表的两个向量则相差很远。- 两个向量之间的夹角越小,余弦相似度值越接近于1,说明两个向量靠的越近,代表的两个单词就越相关。

2024-04-24 22:33:53 796

原创 5分钟搞懂词向量生成技术:Word2Vec

举个例子,如果在训练时,模型看到了句子“猫喜欢吃鱼”,在Skip-gram模型中,如果选择“喜欢”作为输入单词,模型便会试图预测它周围的“猫”和“吃鱼”。简单来说,Word2Vec 并不是一个具体的神经网络模型,而是一个由很多生成词向量的模型(算法)组成的词向量生成框架,或者词向量生成工具。我们通过观察可以很轻松的看出来,“猫”和“狗”的两个向量很相近,“鱼”和“跑”代表的两个向量则相差很远。相同的是,这两种方法都是让模型来学习大量的文本,以及文本中单词的使用环境来生成高质量的词向量。

2024-04-24 22:30:52 984

原创 大模型的自我监督

因此,每给定一个单词(Token),模型都要预测下一个词,然后将预测出来的词加上原来已有的词作为新的输入,继续预测下一个词,如此反复迭代。事实上,很多自然语言处理(NLP)的模型,尤其是上文提到的大语言模型(如GPT系列),都是通过无监督学习或自监督学习的方式进行训练的。在 GPT 等模型的训练时,如果给定上述句子作为模型的输入,是希望模型可以预测出下一个词是什么,这是模型的任务。在这种训练模式下,模型被训练来预测给定前文的下一个词,这样,模型就能学习到文本的顺序结构和语言的生成过程。

2024-04-15 21:49:07 934

原创 没有算法大佬,都是草台班子

大家都经历过高考,高考成绩好说明你高中花的时间多,刻苦努力,考的不好说明高中有点懒散,不够刻苦,但无论如何,你都学了,而且坚持学了高中3年的时间。去年我业余时间,花了 3 个月开源了一个入门 AI 视觉的项目,面向的是AI小白同学们,就是希望可以帮助想要从零学习 AI 的同学快速入门。所以,小白从零学习 AI 也不要怕,学到及格线就可以去工作,学习不难,还是那句话,难在入行,难在第一份工作的选择。这位小伙伴则相反,从心理学的双非院校毕业后,就直接去做了AI算法,虽然是小公司,但我觉得毕竟是已经入行了。

2024-04-15 21:46:19 754

原创 面试字节被挂了

减少参数量可以这么理解:在输出相同特征图的前提下,将一个普通的卷积,替换成一个1x1的卷积加上另一个卷积,先进行降维,然后计算,如此一来整体的计算量要比普通卷积少。由于1x1卷积不存在长宽方向的像素融合,所有的计算都是通道之间的交叉计算,因此,可以更好的完成通道间的融合,而通道代表的是特征,因此可以更好的实现特征融合。上可以看出,卷积核的个数就是卷积输出的通道数。这是因为1x1的卷积,卷积核长宽尺寸都是 1,在计算的过程中,不存在长、宽方向像素之间的融合计算(乘累加计算),而仅仅存在通道之间的融合计算。

2024-04-07 22:37:15 4586 1

原创 99、仓库代码使用说明

另外,如果你想运行 python/model 目录下的文件,需要 cd 到 model 目录,安装解析模型相关的依赖库(可以不运行,我已经运行完并且将解析好的文件放在了 model 目录下,可直接用)。此外在仓库主目录下,还增加了一个 new_version_with_notes 目录: 这是本仓库的一个新版本,包含上述所有代码,里面的目录结构复刻了上述结构。6 个目录相互独立,可以独立运行任意目录中的代码,对比查看在迭代过程中,由于代码的优化带来的性能提升效果。

2024-04-07 22:34:52 38

原创 98、小册内容总结

本项目旨在完成对 AI 计算机视觉的入门学习。首先通过对一些经典的传统计算机视觉算法进行实操,理解计算机视觉的含义;随后以 resnet50 神经网络为例子,系统的讲解一个 AI 模型的基础算法原理和相关背景知识。最后通过本仓库中的代码实战,从零手写 resnet50 神经网络,完成任意一张图片的识别,以及神经网络模型的性能优化。传统计算机视觉部分,会有灰度图、RGB、均值/高斯滤波器、利用 Canny 算子对图像进行边缘检测、利用大津算法对图像进行分割等小的实操项目。

2024-03-07 22:40:22 97

原创 97、我对 AI 模型调优的经验和认识

做 AI 算法调优一些年了,这些年中接触了不少模型,也做过不少在 ASIC 芯片进行模型加速的案例。在接触的模型中,有一些模型有着非常奇怪的分支结构,有的还有奇怪的 tensor shape,还有的有这奇怪的自定义算法。但在模型优化时,为了将一个 AI 模型性能调到最优,也是无所不用其极,能用到的办法几乎都会尝试一遍。但是,有方法不代表有效。很多时候,在一个 AI 平台上有效的优化手段,换到了另一个平台上就失效了。

2024-03-07 22:39:01 121

原创 小白如何快速入门计算机视觉?

本项目旨在完成对 AI 的计算机视觉的入门学习,并且在 Intel CPU 上完成以 resnet50 为基础的神经网络的全部手写,以及性能优化。首先通过对一些经典的传统计算机视觉算法进行实操,理解计算机视觉的含义;随后以 resnet50 神经网络为例子,系统的讲解一个 AI 模型的基础算法原理和相关背景知识。最后通过本仓库中的代码实战,从零手写 resnet50 神经网络,完成任意一张图片的识别,以及神经网络模型的性能优化。

2024-03-06 21:53:19 1754 1

原创 96、C++ 性能优化一览

在对 C++ 版本的 resnet50 经过大约 5 个版本的优化之后,性能也基本达到了预期。至少利用手写的 resnet50 在 CPU 上推理一张图片感觉不到卡顿了。下面对这几个版本的性能优化做一个总结。

2024-03-06 21:51:14 203

原创 95、评估使用多线程优化带来的性能提升

在相同的环境下,分别运行 5th_codegen 和 6th_multi_thread 下的 compile.sh 脚本进行代码编译,然后运行编译后生成的可执行文件 ./resnet。可以看到性能提升非常明显:优化前平均推理延时为 772 ms,优化后为 291 ms,性能提升了大概 260%,效果很好,而且推理结果也是正确的。注意:不同电脑机器不同环境下测出来的性能会有差异,大家只需要比对性能提升的相对值即可。本节评估一下,通过对卷积的 co 维度进行多线程切分之后,对于模型的性能提升。

2024-03-06 21:50:22 48

原创 94、利用多线程优化卷积运算

上一节简单介绍了多线程的概念,同时也介绍了在使用多线程编程时,对于数据在线程间的切分,应该遵循的一个原则:那就是切分独立的数据快,而不切分有数据依赖的数据块。最后还抛出了一个问题:对于卷积算法而言,你觉的切分哪个维度最合适呢?

2024-03-04 21:54:45 152

原创 93、多线程概念简介

多线程是一种并发编程技术,它允许程序同时执行多个线程,从而提高程序运行速度。在开始多线程优化之前,先看两个概念:进程和线程。进程我们可以简单粗暴的理解为一个应用进程,比如你在电脑上开一个QQ聊天,那么一个QQ应用就是一个进程,但如果你用一个QQ和多人同时聊天,可以认为每个人聊天都是一个线程,你此时在多线程工作。对应到 C++ 的 resnet50 示例中,当你在 linux 上执行 ./resnet 时,就开启了一个进程,在没有进行多线程编程的情况下,resnet 默认使用一个线程。

2024-03-04 21:53:36 43

原创 从零入门 AI 视觉:历时 3 个月,我的代码仓库开源了

本项目旨在完成对 AI 的计算机视觉的入门学习,并且在 Intel CPU 上完成以 resnet50 为基础的神经网络的全部手写,以及性能优化。首先通过对一些经典的传统计算机视觉算法进行实操,理解计算机视觉的含义;随后以 resnet50 神经网络为例子,系统的讲解一个 AI 模型的基础算法原理和相关背景知识。最后通过本仓库中的代码实战,从零手写 resnet50 神经网络,完成任意一张图片的识别,以及神经网络模型的性能优化。

2024-02-29 21:39:25 1460

原创 92、评估代码生成操作带来的性能提升

这是因为在目前很多主流的推理框架里,如TVM,MLIR中,都有比较完善的 codegen机制。他们大都是将一个模型中的算法,通过一些中间表示(IR)的形式表示出来,然后对这些中间表示进行优化(包括冗余计算消除,流水排布,指令调优,指令生成)。这其中,指令生成就是会将 IR 对应的计算逻辑直接生成与硬件相关的高效指令计算流。然后进行编译,运行模型。其实整体思路和我们进行的 codegen 差不太多,但是这些推理框架有十分完善的 IR 表示机制,而这个我没有办法手写来复现。

2024-02-29 21:16:35 33

原创 91、在推理流程中加载动态库中的Infer函数

注:建议在 new_version_with_notes 目录下尝试本节内容,有更为丰富的细节输出。在将生成的代码编译成一个动态链接库之后,接下来需要加载动态链接库中写好的推理入口函数,完成推理。在生成的代码中,在 codegen 目录下,有一个文件,里面是一个 Infer 函数,该函数由 5th_codegen/resnet_中的 CodeGen 函数生成。Infer 函数也就是推理的主入口函数。翻回 4th_no_malloc/

2024-02-29 21:15:33 37

原创 90、利用JIT编译技术完成对生成的代码的编译

在完成后,就需要对生成的代码进行编译,这里采用一种叫做 jit 的编译技术来进行。所谓 jit,就是just in time,可以理解为实时编译,它是在程序运行过程中对程序生成的一些中间文件进行编译,从而生成机器码的技术。对应到 codegen 场景下,由于 codegen 中生成的代码是在程序运行时生成的,因此很适合使用 jit 编译来进行。

2024-02-28 22:22:19 46

原创 89、对 resnet50 的c++实现进行代码生成

简单介绍了代码生成的逻辑,并且通过一个例子来进行了代码生成的演示。resnet50 的代码生成思路为:1. 先预先运行一遍模型,在核心计算函数的地方,通过输出字符串的形式,将关键信息(如内存地址、一些层的参数)作为确定值固定下来,然后构造相关算法逻辑的字符串流,输出到文本文件中。2. 生成的所有代码存放在 5th_codegen/ 下的 codegen 目录下。3. 程序运行(执行 ./resnet) 时会进行 jit 编译,调用相关编译命令对生成的代码文本进行编译,编译成动态库。

2024-02-28 22:21:33 297

原创 88、代码生成初探

先看个例子,假设要实现如下功能:对两个等长的数组,将第一个数组中数值为偶数的数与第二个数组中对应位置的数相加,得到一个新的数组,其余位置设为0。i < 5;i++) {if (v1[i] % 2 == 0) { // 判断是否是偶数// 如果为偶数则相加这样写没问题,但是深入分析就可以看到,数组中 index 为0 和 3 的位置为奇数,只有1,2,4的位置为偶数,相加操作仅计算 index = 1,2,4 的位置即可。这种写法和上面的写法区别在于:没有了循环的使用。

2024-02-28 09:25:36 146

原创 5分钟看懂安迪比尔定律

某游戏项目组B程序猿:“不用,现在的手机都8G运存,至少128G内存,够使的,我们直接加特性就行,再说了,把原来无用代码删了,不怕出bug吗。超级玛丽这款游戏,我们玩了很多年,游戏中那么多关卡,那么丰富的剧情,丰富的配图,丰富的配乐,但是你能想象,这款游戏的总大小才64KB么?除了软件不断更新,添加新的特性之外,更重要的是,现在的应用程序开发者,几乎很难再有节省几KB 内存的意识了。我做过芯片开发,要知道,芯片的片上存储是很珍贵的,多出几十KB的存储,就会有意想不到的系统性能提升。

2024-02-28 09:23:50 341

原创 87、评估移除所有动态内存操作带来的性能提升

在相同的环境下,分别运行 3rd_preload 和 4th_no_malloc 下的 compile.sh 脚本进行代码编译,然后运行编译后生成的可执行文件 ./resnet。可以看到性能提升非常明显:优化前平均推理延时为 875ms,优化后为 742 ms,性能提升了大概 15%,还是很不错的。注意:不同电脑机器不同环境下测出来的性能会有差异,大家只需要比对性能提升的相对值即可。可以分别获取到权值预加载前后的性能指标。之后,对于模型的性能提升。

2024-02-25 21:13:41 42

原创 chatGPT 使用随想

我本身是做AI算法的,很多时候在写一写对于AI算法的理解文章时,需要做一些对比或者更深入的理解某个算法,或者更加通俗易懂的理解某个算法,最常见的是想用一些日常生活中的例子来类比某个AI算法。最后,国产大模型其实也出了很多了,但是还是和GPT4有不少的差距,真的希望国内大模型也可以尽快作出这么好用的功能出来,这样就不用费劲使用某些方法来访问 GPT-4 了。现在写文章,几乎离不开 GPT-4,很多时候会和他探讨一个文章行文的思路,并且确定一个主题,对我来说真的很有帮助,写文好伙伴一点不为过。

2024-02-23 23:03:21 1806

原创 86、移除推理路径上的所有内存操作

动态申请内存的影响,前两节已经介绍过了,细心的朋友可能会发现,在使用 C++实现的 resnet50 代码中,还存在一处动态申请内存的操作。那就是对于每一层的输入或输出 feature map 数据进行内存申请,比如在文件中,卷积的计算中存在对于输出 feature map 的 malloc 行为。本节就使用一种全局内存复用的方法,来将每一层动态分配内存的操作删除掉,从而使得整个推理模型中,不存在任何动态申请内存的操作。

2024-02-23 23:01:24 60

原创 85、字符串操作的优化

介绍了在模型的推理优化过程中,动态内存申请会带来额外的性能损失。Python 语言在性能上之所以没有c++高效,有一部分原因就在于Python语言将内存的动态管理过程给封装起来了,我们作为 Python 语言的使用者是看不到这个过程的。这一点有点类似于 c++ 标准库中的一些操作, c++的标准库中提供了很多容器,常见的有vector,也就是数组,可类比于python中的列表,还有字符串string。

2024-02-23 23:00:17 67

原创 拒掉了一个双 985 的面试者

对应到某一个具体的技术问题时,即使他自己回答的不对,但是能够表现出谦逊好学的态度,就会给我很好的印象分,而这个印象分,真的很重要。如果候选人面试时态度还可以,不需要表现的很谦虚,就和一般的面试者一样,有问有答,也肯定会给他发offer。而社会却是一个大熔炉,它教给我们的,除了知识技能之外,还有很大的一部分是复杂的社会交际关系,其中就包括在。学校教会给我们的,很大程度上是知识,但是学校里学的这点知识,在社会工作中能发挥多大作用,还有待商量。但是如果太过分,仗着自己懂技术,就傲慢的不得了,就很难了。

2024-01-30 23:03:04 477

原创 84、介绍:操作系统中内存申请的性能

本节简单的介绍一下在操作系统中的内存申请机制。有些同学看到这可能会有疑惑,我们不是在学习 AI吗,为什么要介绍内存申请的知识呢?因为无论是 AI,还是其他的计算学科,都离不开以下几个方面的内容:算法 + 操作系统 + 芯片 + 数据。AI 作为这几年爆火的学科,不是突然之间横空出世的,它是在已有的计算科学框架下,厚积薄发的一门学科。AI 与其他传统的学科相比,变化最大的地方应该是算法和芯片,但即使是这两方面,也离不开传统算法和传统芯片的加持。

2024-01-30 23:01:37 119

原创 83、评估权值预加载带来的性能提升

上两节介绍的权值预加载技术,在很多业务中是真实存在的。只不过限于本小册内容以及大部分同学硬件设备的局限,这里无法通过真正的推理框架(比如 tvm, pytorch) + GPU 来实现底层细节,这些推理框架中一般会将类似的优化技术封装起来。作为 tvm 或者 pytorch 的用户,你一般看不到这些实现细节,除非你是这些框架的开发者。因此,为了介绍这个优化,我通过 81、82 这两节内容来引入了一个简单的硬件-内存模型。

2024-01-29 20:43:18 282

串口COM口数据转发软件

可实现电脑上两个串口之间的数据转发,将两个串口合并为一个通信信道使用。注意选择串口类型为COM。

2018-01-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除