- 博客(83)
- 资源 (4)
- 收藏
- 关注
原创 TVM计算图分割--BYOC框架
随着后端设备数量激增,为达到较高的效果在这些设备上,对应的知识要求也同步增加。为缓解这些压力,硬件厂商会提供算子库如OneDNN、cuDNN或者推理引擎TensorRT以指定的方式描述模型以达到较高性能,但是这种方式需要用户学习新的编程接口。BYOC框架提供了方法使硬件厂商较为容易的实现自己的codegen并注册为Relay后端编译器支持自己的硬件或者算子库。自己的ASIC加速器必须有自己的编译流,一般分为两类:其一,生成一个图表示然后投喂到图执行引擎中。
2024-11-11 00:41:58
916
原创 TVM计算图分割--分割方式
计算图分割是指将计算图按照所属执行平台划分为若干个子图,每个子图分别执行在对应硬件上,以最大化值执行效率。1. Partition Pass 2. dataflow_pattern3. 内置图分割接口4. Pipeline Executor5. BYOC框架6. Collage7. UMA
2024-11-08 23:28:34
1070
原创 TVM计算图分割--LayerGroup
Layergroup目前没找到严格、明确的定义,因为不同厂家的框架考虑的因素不同,但是基本逻辑是差不多的。一般来说,Layergroup是一种计算图优化方法,旨在根据约束条件将若干层(算子)组合起来形成一个复合算子以满足后端需要。而计算图分割是针对异构执行环境的计算图优化操作,与Layergroup没有绝对的关系。一般由于专属硬件的资源受限,所以会执行layergroup操作。这里需要解释以下算子融合和Layergroup的区别。这两者很多时候是被混用的,所以说layergroup没有明确的定义。
2024-11-05 21:19:35
1107
2
原创 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
1030
原创 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
1154
原创 TVM前端研究--Relay
TVM前端之前用的NNVM,现在用的Relay,后面会往Relax和Unity方向转。先简单介绍一下。Relay的解释比较杂乱,按照论文和官方文档的解释它算是一个编译器框架或着IR(Intermediate Representation)。说是编译器框架有些大,说是IR他不单单可以做算子表示,还可以支持函数、类型等编程逻辑。
2024-10-29 22:16:01
1062
1
原创 AI编译器与TVM
由于AI芯片的特殊性和高度定制化,为了兼容硬件的多样性,AI模型必须能被高效地映射到各种AI芯片上。AI编译器将深度学习框架描述的AI模型作为输入,将为各种AI芯片生成的优化代码作为输出。AI编译器的目标是通过编译优化的方法将深度学习框架产生的AI模型转化为与特定架构的AI芯片适配的可执行机器码。主流的AI硬件厂商都提供了高度优化的算子库或者推理引擎来实现高效计算,但是依赖算子库的缺点是算子库覆盖的硬件范围有限,而且库函数的更新落后于模型的发展速度,无法充分发挥AI芯片算力。
2024-10-21 16:58:14
1091
原创 模型压缩与量化
如今,庞大的参数量和推理过程中巨大的运算量阻碍着模型落地部署,成为深度学习的技术瓶颈之一。为解决这些问题,深度学习和硬件设计的专家学者针对深度神经网络压缩与加速方法展开了大量的研究。目前,较为有效地降低深度神经网络模型的空间和时间复杂度,达到模型压缩和推理速度的方法包括模型剪枝、知识蒸馏、神经网络结构搜索、张良分解和模型量化(Quantization)等。**模型剪枝:**通过去除模型中对性能影响较小的部分,从而解决模型过参数问题。根据剪枝粒度可以分为结构化剪枝和非结构化剪枝。
2024-10-21 16:08:00
645
原创 RuntimeError: Exporting the operator grid_sampler to ONNX opset version 11 is not support
grid_sampler是比较经典的算子不支持问题,在pytorch1.12之后已经支持了,而我这里要求的版本是torch=1.8.0,该了torch版本后,之后的推理平台又会有版本限制所以不能改。然后用mmcv库中的bilinear_grid_sample()来替换grid_sample函数。二者是等价的,可以去torch官网看具体的api。具体做法就是定位到你出错的代码位置,一般就是grid_sample函数的定义位置。如果还是报错则重新写bilinear_grid_sample函数,具体代码如下。
2023-09-08 17:08:29
3096
原创 RuntimeError:CUDA error: no kernel image is available for execution on the device
根据网上所说,检查是否有cpuonly包,删除即可,但是我没有,网上说先下载后卸载就可以,可我这直接就无法安装,conda和pip都安装不了。我的conda默认还是安装的cpu版本的torch。用pip指定版本可以安装并且是支持gpu的版本,但是还是报之前不兼容的错误,不指定版本的话竟然安装的是1.0.2的版本,没有最新的软件包。发现我要的torch1.8.0还没有对应版本,1.8.1的版本只有cpu的对应版本。检索发现我的本机没有cuda10.1的版本,我的cuda是11.4的版本。
2023-09-08 16:57:26
695
原创 硬件名词--单片机,开发板和芯片
初学硬件,一脸懵逼。整理了半天还是没太懂。只能说我不学习,我是知识点的搬运工。1.半导体(semiconductor)指常温下导电性能介于导体与绝缘体之间的材料,常见材料有硅,锗、砷化镓等。2.芯片(chip)又称微电路或者集成电路(integrated circuit),是指内含继承电路的硅片,常作为电子设备的一部分,通常是在半导体晶圆的表面制造。芯片是在半导体芯片表面制造电路的集成电路又称薄膜集成电路。
2023-08-25 11:28:09
1217
原创 设计模式之结构型模式
一般具有相同内部状态的享元对象存储在享元池中,通常由一个享元工厂(工厂模式)来维护,享元模式的核心就在于这个享元工厂类,当用户需要对象时,先在享元池中找,如果没有则创建新对象并加入享元池。外观模式中,外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面。具体实现类(ConcreteImplementor)实现了实现类接口并且具体实现它,在不同的具体实现类中提供基本操作的不同实现,在程序运行时,具体实现类对象将替换其父类对象,提供给客户端具体的业务操作方法。
2022-10-06 16:13:12
762
原创 设计模式之行为型模式
为了减少对象两两之间复杂的引用关系,使之成为一个松耦合的系统,我们引入中介者模式,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。状态模式的关键是引入了一个抽象类来专门表示对象的状态,对象的每一种具体状态类都继承了该类,不同的具体状态类实现了不同状态的行为。状态与行为一一对应。具体状态类是抽象状态类的子类,每一个子类实现一个与环境类的一个状态相关的行为,每一个具体状态类对应环境的一个具体状态,不同的具体状态类其行为有所不同。
2022-10-06 16:01:09
962
原创 设计模式之创建型模式
工厂模式是在具体实现上做了抽象得到工厂类,抽象工厂模式是在工厂类之上做了进一步抽象(工厂模式是先定义工厂,由工厂生产对象;抽象工厂模式是先定义抽象工厂,由抽象工厂生成具体工厂,再由具体工厂生成对象)。即抽象工厂模式是工厂的工厂。抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。相较于工厂模式,抽象工厂可以提供多个产品对象而非单一对象。产品等级结构:即产品的继承结构。一个抽象类是电视,子类是具体品牌,则父类与子类构成了产品等级结构。
2022-09-26 21:02:52
794
原创 机器学习面经--常见问题
要计算这两个指标需在一个集合范围内才可行,所以这就要求必须指定一个神经元组成的集合,利用这个集合里每个神经元的激活值来统计出所需的均值和方差,这样才能达到预定的规范化目标。机器学习中常见的Normalization方法分为两种类型,一种是特征标准化,是对输入的数据进行预处理,是对数据的不同特征分别进行处理,常见有max-min normalizaiton,z-score normalization等;不论哪种标准化方法,其规范化目标都是一样的,就是将其激活值调整为均值为0,方差为1的正态分布。
2022-09-24 17:52:14
793
原创 社区发现算法总结
Kernighan-Lin算法先以任意方式将网络顶点按指定规模划分为两个群组,然后,对于任意一对不属于同一分组的节点对,交换两个节点,计算交换前后两个群组割集规模的变化量。在所有节点对中找到使割集规模减少最多的顶点对。如果没有使割集规模减少的定点对,在选择使割集规模增加最小的节点对,然后交换两个节点。重复该过程,被交换过的节点不再参与交换,直到没有可以交换的顶点为止。记录所有交换后的状态,选择割集规模最小的状态。
2022-09-05 00:20:00
4655
原创 K-Core, K-Shell & K-Crust傻傻分不清楚
K-Core(K-核)就是所有大于等于K的K-Shell的并集;K-Crust(K-皮)就是所有小于等于K的K-shell的并集。
2022-07-29 20:44:46
1836
原创 图增强与图对比学习
自监督学习的主要目标是通过精心设计的代理任务,从丰富的无标签数据中学习可迁移的知识,然后将学到的知识迁移到具有特定监督信号的下游任务中。首先在得到的两组视图中的结点表示上采样K个motif-like子图,然后使用readout函数得到图级别和子图级别的表示。在这里,我们把针对图数据的数据增广策略分为以下四类基于特征的增广、基于结构的增广、基于采样的增广和自适应的增广。对比学习的目的是最大化正样本对之间的一致性。视图的尺度可能是局部的,上下文的或者全局的,对应的图中结点级,子图级和图级别的信息。.......
2022-07-20 16:31:30
1291
2
原创 图论基础知识总结
图是由节点和连接节点之间的边组成的,与连线的长度,节点的位置没有关系。一个图是一个三元组,其中V是一个非空的节点集合,E是边集合,F是从边集合E到节点序偶(无序偶或有序偶)集合上的函数。若图中边总是两个节点的关联,则图可简记为G=。树可以是空树但图不能是空图。图的结点集不能为空但边集可以为空。**无向图:**若图中所有边都是无向边,则图是无向图;**有向图:**若所有边都是有向边,则图是有向图;**混合图:**若图中既有无向边又有无向边则图为混合图;**多重图...
2022-07-18 20:48:20
7468
原创 超图构造综述,Hypergraph Learning: Methods and Practices
超图学习是一种在超图结构上学习的方法。在本文中,我们首先系统重温了现有的超图生成方法,包括基于距离的,基于表示的,基于属性的和基于网络的方法。然后介绍超图上现存的学习方法包括transductivehypergraphlearning,inductivehypergraphlearning,超图结构更新以及多模态超图学习。......
2022-07-18 20:31:09
3065
原创 图构造总结-Graph‑based semi‑supervised learning via improving the quality of the graph dynamically
基于图的半监督学习GSSL主要包含两个过程图的构建和标签推测。传统的GSSL中这两个过程是完全独立的,一旦图结构构建完成,标签推断的结果也不再改变。因此,图的结构直接影响GSSL的效果。传统的图构造方法对数据的分布做了一个具体的假设,导致图的质量严重依赖于这些假设的正确性。因此,对于传统图构造方法很难应用再复杂多样的数据分布上。本文提出了一个框架叫做通过动态地提升图质量的图半监督学习。在本方法中,图的构建是基于多个聚类结果的加权融合,并且把标签推断也整合进一个统一的框架达到相互引导,动态提升的效果。....
2022-07-14 21:28:07
874
2
原创 A Survey on Graph Structure Learning: Progress and Opportunities
图数据广泛用于描述现实中的实体及其他们之间的联系。图神经网络高度敏感于给定的图结构,因此噪声和不完备的图会得到不满意的表示并且妨碍模型全面理解潜在的机理。图结构学习GSL旨在联合学习最优的图结构和对应的图表示。在本篇工作中,我们广泛回顾了GSL最近的进展。图神经网络的成功归功于它同时探索了图结构和属性中的丰富信息,但是给定的图数据不可避免的会包含噪声和不完备,这样会阻碍GNN在现实问题中的应用。从表示学习的角度来讲,GNN是通过聚合邻居信息来学习节点表示的。这种迭代的方式存在一个级联的效果即当一个小的噪声传
2022-07-13 20:16:52
758
2
原创 Graph Contrastive Learning with Adaptive Augmentation
对比学习在无监督图表示学习中取得了很好的效果,大部分图对比学习首先对输入图做随机增强生成两个视图然后最大化两个视图表示的一致性。其中,图上的增强方式是非常重要的部分鲜有人探索。我们认为数据增强模式应该保留图固有的属性和结构,可以使模型学到对于不重要的结点和边扰动不敏感的表示信息。但目前的方法大多采用均质的增强方法如均匀的去边,或扰动特征,只能达到次优效果。本文借助先验信息从拓扑和语义角度引入自适应的增强策略。具体来说,在拓扑角度,采用基于结点的中心性来衡量连接结构的重要性的方式设计增强模式;在特征维度,给不
2022-07-09 17:19:23
1092
原创 GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training
目前图表示学习在许多任务上取得了很好的效果但是都是关注于具体领域的并不具有迁移性。本文借鉴预训练思想,设计了一个自监督图神经网络框架来在多个网络中捕获一般化的网络拓扑结构属性。我们设计的预训练任务是在多个网络之间判别子图实体,使用对比学习强化图神经网络来学习固有的,可迁移的结构化表示。假设:具有代表性的图结构模式是一般化的且在网络之间可迁移。过去二十多年的工作主要关注点在发掘不同网络中潜在的一般化的结构属性。最近几年图学习的重点从结构模式挖掘转向图表示学习。将结点,边,子图等转化为低维嵌入可以保留一些重要
2022-07-08 16:32:46
458
原创 Semi-Supervised and Self-Supervised Classification with Multi-View Graph Neural Networks
摘要图神经网络在图结构数据中取得了很好的效果但是大多数的模型使用的还是叫浅层的结构,当模型层数加深时很容易过平滑。本文基于多视图来聚合更多的信息。我们首先设计两个互补的视图来描述全局结构和节点特征相似性,然后使用注意力策略融合节点表示。最后,通过在不同视图上使用对比学习来学习节点的表示。引言GCN是每层聚合一次一阶邻居的信息,通过增加层数迭代聚合邻居信息。但随着网络层数的增加,效果会严重下降。实验发现使用RELU作为激活函数的GCN随着层数的增加效果严重下降而使用其他激活函数图tanh有减缓过平滑的效果
2022-07-06 20:50:20
791
原创 Data Augmentation
自监督深度学习模型的精确性严重依赖于训练时数据的多样性和数据量。模型要想在更复杂任务上有较好的效果一般会有大量的隐藏单元。一般在训练过程中训练隐藏单元越多需要的数据越多,即任务复杂度与参数量与需要的数据量成正比。由于训练复杂任务时数据的缺乏,迁移学习往往被应用并取得较好的结果但是对于指定任务创建预训练模型依旧严峻。另一种解决数据不足问题的技术便是数据增强即通过在可用数据上转化合成新的数据。数据增强可用来解决训练数据的多样性和数据量的问题。数据增强技术依赖于数据的类型。对于常规的数字型数据,常见的技术包括SM
2022-07-05 10:57:36
537
原创 An Empirical Study of Graph Contrastive Learning
摘要图对比学习在图表示学习领域树立了新的范式,不需要人工标注信息。但对GCL的分析却寥寥无几。本文通过分析一般化的GCL范式的各个部分包括增强函数,对比模式,对比目标和负采样技术,然后分析各个组件之间的相互作用。实验结论显示,简单的拓扑增强可以生成稀疏视图带来不错的性能提升;对比模型应该与最终任务的粒度一致。引言一个经典的图对比学习方法是首先通过对输入的随机增强构建多个图视图,然后通过对比正负样本学习表示。以每个节点作为中心节点为例,正样本一般是其他视图中表示一致的一些节点,而负样本则是在该Batch中
2022-07-05 10:36:05
551
原创 Multi-view graph convolutional networks with attention mechanism
摘要传统的图卷积网络关注于如何高效的探索不同阶跳数(hops)的邻居节点的信息。但是目前的基于GCN的图网络模型都是构建在固定邻接矩阵上的即实际图的一个拓扑视角。当数据包含噪声或者图不完备时,这种方式会限制模型的表达能力。由于数据的测量或者收集会不可避免的会出现错误,因此基于固定结构的图模型表达能力是不充分的。本文提出了基于注意力机制的多视图图卷积网络,将拓扑结构的多个视图和基于注意力的特征聚合策略引入到图卷积中。MAGCN输入多个可靠的拓扑结构,这些结构一般是对应任务给定的结构或者使用经典图构造方法生成
2022-07-03 21:10:23
1411
4
原创 设计模式之类间关系与设计原则
设计模式是软件开发人员在软件开发过程中面临的不断重复的问题的解决方案,是解决特定问题的一系列套路,具有一定的普遍性。设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。使用设计模式是为了复用代码、让代码更容易被他人理解、保证代码可靠性。1. 根据目的划分可分为创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)3 种。创建型模式:用于描述
2022-06-13 16:39:01
535
原创 正则表达式简记
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。例子:+ 号 代表前面的字符必须至少出现一次(1次或多次,>=1)** * 号**代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次,>=0)? 问号 代表前面的字符最多只可以出现一次(0次、或1次). 点号匹配除换行符(\n、\r)之外的任何单个字符,相
2022-06-13 15:02:02
154
原创 UML之用例图,类图,时序图,活动图
用例图用例图是用于描述系统在某个系统边界下需要提供的功能的图例描述,是对用户与系统进行交互的动作的表述。用例图描述了用户、需求以及系统功能单元之间的关系,主要由参与者,用例和它们之间的关系组成。用例图需要的因素:参与者(Actor):使用系统功能的人或者团体,用小人表示,参与者可以继承,用空三角表示系统边界:用于确定用例的使用场景,用例图必须在系统边界中设计才有意义,用矩形表示用例:用户与系统之间的交互行为,一般是用户做的某件事,用椭圆表示,注:每个用例都得是动宾结构(动词+名词)关系:用例与参与
2022-06-06 09:21:11
10864
原创 图上的统计特征之Motif,Graphlet和Role
聚类系数结点的度或者中心性在衡量结点重要性区分结点时起到很重要的作用但是对于图中结点度近似或者中心性近似的结点便很难区分它们。因此很有必要从其他角度挖掘图的特征。聚类系数用于衡量邻接结点之间的连接程度(有的解释是衡量一个结点的局部邻域中闭合三角形的比例)。聚类系数分为全局的聚类系数和局部的聚类系数(还有其他变体如平均聚类系数等)。全局聚类系数是对于全图而言的,是计算一个图中所有封闭的三点组的数量除以所有联通的三点组的数量。分子要求三点封闭,分母要求三点联通即可。局部聚类系数是对于结点而言的,计算的是
2022-04-11 00:49:28
3889
1
原创 inductive learning 与 transductive learning在图神经网络上的区别
由于在图数据上的学习需要考虑图的结构信息,在模型训练时需要将全图输入,所以训练时会使用到没有标记信息的数据,所以使用的是transductive方式,一旦图的结构发生变化,需要重新学习。当图结构非常的时,内存可能无法全部放下数据,因此需要对图进行采样,如graphSage。那么采样到的数据就可以不包含没有标记的结点,因此可以使用inductive方式学习,这样模型就有一定的迁移能力,可以预测没有见过的结点。标准的半监督要求数据满足独立同分布假设,但是在图数据中并不遵循该前提,图机器学习不是标准机器学习
2021-07-13 21:54:20
789
原创 2021-05-19图神经网络小结
图神经网络的引入图神经网络能够实现强大的非结构学习的能力,能够从非结构化数据(例如:场景图片、故事片段等)中进行学习和推理。尽管传统的深度学习方法被应用在提取欧氏空间数据的特征方面取得了巨大的成功,但许多实际应用场景中的数据是从非欧式空间生成的,传统的深度学习方法在处理非欧式空间数据上的表现却仍难以使人满意。最早,研究人员也借用图谱理论的知识,如用拉普拉斯矩阵的特征值和特征向量做社区分析或者人群聚类等.随着深度学习的崛起,研究人员开始考虑把深度学习的模型引入到图数据中,代表性的研究工作是网络嵌.
2021-05-19 20:10:02
721
原创 Representation learning表示学习
机器学习(Machine Learning,ML)是指从有限的观测数据中学习(或“猜 测”)出具有一般性的规律,并利用这些规律对未知数据进行预测的方法。传统的机器学习主要关注如何学习一个预测模型。一般需要首先将数据表示为一组特征(Feature),特征的表示形式可以是连续的数值、离散的符号或其他形式。然后将这些特征输入到预测模型,并输出预测结果。这类机器学习可以看作浅层学习(Shallow Learning)。浅层学习的一个重要特点是不涉及特征学习,其特征主要靠人工经验或特征转换方法来抽取为了提高.
2021-05-03 11:43:08
1472
原创 机器学习与深度学习中概率论知识的回顾
概率与统计: 统计:给定样本,推测总体分布,概率:给定总体分布 ,推测样本概率归纳与演绎:归纳就是从个别到一般,演绎则是从一般到个别随机变量:可以随机地取不同值的变量,是对可能的状态的描述。可以是离散或连续概率分布:描述随机变量取每个可能状态的可能性大小。概率质量函数(probability mass function),离散型随机变量的概率分布。概率质量函数将随机变量能够取得的每个状态映射到随机变量取得该状态的概率。注:所有状态的概率质量函数之和为1.每个状态的概率介于0到1之间,可取到边
2021-03-29 19:52:41
487
基于C++模板Template的数据结构代码库
2024-10-06
常见设计模式的解读和对应代码示例,包括设计原则和软件工程中类之间的依赖关系
2024-08-28
数据结构中树、图、排序模块的模板代码和例题,包含刷体面试考点
2024-08-28
classifier.zip
2019-07-30
alpha-beta剪枝讲解
2018-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人