
AI编译器-部署
文章平均质量分 87
小源er
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据表示与运算
在计算机中,数据需要按照一定的规则表示、存储和计算,常见的数据表示方法包括二进制表示、八进制表示和十六进制表示。编程语言中支持的数据类型也很多,一般分为基本数据类型和引用数据类型。其中基本数据类型是直接存储数值的,包括字符型char、布尔值、整型(signed,unsigned int,short,long)和浮点类型(float、double)。引用类型则一般存储对应的地址如数组、字符串、结构体和对象等。一些高级编程语言还支持空类型和函数类型等数据类型。原创 2025-04-18 18:29:34 · 937 阅读 · 0 评论 -
TVM计算图分割--Collage
准确的指定执行平台对于发挥后端全部能力至关重要。后端模板(backend pattern)定义了一组算子和可以直接部署在各个后端的算子组合。然后Collage提供了一个两阶段的抽象,对于简单的pattern,直接列举出全部支持的算子pattern。对于复杂情况,用户可以指定pattern创建规则,如指定简单算子类型和复杂算子融合规则。当融合规则给定,整个计算图上的满足条件的模板都会被保存在后端模板注册表中。原创 2025-04-18 16:40:46 · 952 阅读 · 0 评论 -
TVM计算图分割--BYOC框架
随着后端设备数量激增,为达到较高的效果在这些设备上,对应的知识要求也同步增加。为缓解这些压力,硬件厂商会提供算子库如OneDNN、cuDNN或者推理引擎TensorRT以指定的方式描述模型以达到较高性能,但是这种方式需要用户学习新的编程接口。BYOC框架提供了方法使硬件厂商较为容易的实现自己的codegen并注册为Relay后端编译器支持自己的硬件或者算子库。自己的ASIC加速器必须有自己的编译流,一般分为两类:其一,生成一个图表示然后投喂到图执行引擎中。原创 2024-11-11 00:41:58 · 1101 阅读 · 0 评论 -
TVM计算图分割--分割方式
计算图分割是指将计算图按照所属执行平台划分为若干个子图,每个子图分别执行在对应硬件上,以最大化值执行效率。1. Partition Pass 2. dataflow_pattern3. 内置图分割接口4. Pipeline Executor5. BYOC框架6. Collage7. UMA原创 2024-11-08 23:28:34 · 1185 阅读 · 0 评论 -
TVM计算图分割--LayerGroup
Layergroup目前没找到严格、明确的定义,因为不同厂家的框架考虑的因素不同,但是基本逻辑是差不多的。一般来说,Layergroup是一种计算图优化方法,旨在根据约束条件将若干层(算子)组合起来形成一个复合算子以满足后端需要。而计算图分割是针对异构执行环境的计算图优化操作,与Layergroup没有绝对的关系。一般由于专属硬件的资源受限,所以会执行layergroup操作。这里需要解释以下算子融合和Layergroup的区别。这两者很多时候是被混用的,所以说layergroup没有明确的定义。原创 2024-11-05 21:19:35 · 1182 阅读 · 1 评论 -
Tiling与流水线技术小结
当j=11时,由于cache中没有B[11],所以需要从内存中读入,同时按照最久未访问策略将B[1]移除缓存,但是当外层循环加一即i=2时,内层循环重新遍历,此时j=1,但是此时cache中并没有B[1],未命中,需要再次从内存中读入。假设切分的大小为T,则之前的循环改写如下。由于Ai core的Local Memory的存储容量无法完整的容纳下算子的输入与输出,因此需要先搬运一部分输入进行计算然后搬出,再搬运下一部分输入进行计算,直到得到完整的最终结果,这个数据切分、分块计算的过程称之为Tiling。原创 2024-11-03 15:16:15 · 1213 阅读 · 0 评论 -
TVM前端研究--Pass
在 TVM 中,Pass 根据 IR 类型的不同分为 Relay 上的优化和 TIR 上的优化。因此,Relay 上的 Pass 包括通用的 pass,在 tvm.relay.transform 目录下,还有一些 Pass 包含系统信息或后端信息,在其他目录下如 AnnotateUsedMemory Pass 等。是包含了一个 Pass 所需的基本信息如 name 是 pass 名称,opt_level 表示将在哪个优化级别启用 pass,required 表示执行某个 pass 所需的 pass。原创 2024-11-01 23:32:53 · 1203 阅读 · 0 评论 -
TVM前端研究--Relay
TVM前端之前用的NNVM,现在用的Relay,后面会往Relax和Unity方向转。先简单介绍一下。Relay的解释比较杂乱,按照论文和官方文档的解释它算是一个编译器框架或着IR(Intermediate Representation)。说是编译器框架有些大,说是IR他不单单可以做算子表示,还可以支持函数、类型等编程逻辑。原创 2024-10-29 22:16:01 · 1194 阅读 · 0 评论 -
TVM初识
TVM编译、TVMC工具使用以及TVM中计算图分割的调研。原创 2024-10-21 22:19:55 · 148 阅读 · 0 评论 -
AI编译器与TVM
由于AI芯片的特殊性和高度定制化,为了兼容硬件的多样性,AI模型必须能被高效地映射到各种AI芯片上。AI编译器将深度学习框架描述的AI模型作为输入,将为各种AI芯片生成的优化代码作为输出。AI编译器的目标是通过编译优化的方法将深度学习框架产生的AI模型转化为与特定架构的AI芯片适配的可执行机器码。主流的AI硬件厂商都提供了高度优化的算子库或者推理引擎来实现高效计算,但是依赖算子库的缺点是算子库覆盖的硬件范围有限,而且库函数的更新落后于模型的发展速度,无法充分发挥AI芯片算力。原创 2024-10-21 16:58:14 · 1197 阅读 · 0 评论 -
模型压缩与量化
如今,庞大的参数量和推理过程中巨大的运算量阻碍着模型落地部署,成为深度学习的技术瓶颈之一。为解决这些问题,深度学习和硬件设计的专家学者针对深度神经网络压缩与加速方法展开了大量的研究。目前,较为有效地降低深度神经网络模型的空间和时间复杂度,达到模型压缩和推理速度的方法包括模型剪枝、知识蒸馏、神经网络结构搜索、张良分解和模型量化(Quantization)等。**模型剪枝:**通过去除模型中对性能影响较小的部分,从而解决模型过参数问题。根据剪枝粒度可以分为结构化剪枝和非结构化剪枝。原创 2024-10-21 16:08:00 · 723 阅读 · 0 评论