CN114897151A - 访存优化方法、装置、电子设备及存储介质 - Google Patents
访存优化方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114897151A CN114897151A CN202210474287.6A CN202210474287A CN114897151A CN 114897151 A CN114897151 A CN 114897151A CN 202210474287 A CN202210474287 A CN 202210474287A CN 114897151 A CN114897151 A CN 114897151A
- Authority
- CN
- China
- Prior art keywords
- operator
- data
- output
- operators
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种访存优化方法、装置、电子设备及存储介质,所述方法包括:获取原始模型中的算子序列;根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,其中,所述算子子序列包括多个能够合并的算子;将每个所述算子子序列中的多个算子合并为对应的目标算子,得到目标模型。
Description
技术领域
本公开涉人工智能技术领域,尤其涉及一种访存优化方法、装置、电子设备及存储介质。
背景技术
随着人工智能技术的逐渐发展,深度神经网络模型广泛的应用在诸多行业,尤其是深度卷积神经网络模型,由于其对图像,视频等媒体介质高效的优化能力而被大量使用。为了保证深度神经网络模型的性能,通常会使用规模更大的网络,其中会包含大量的算子,提供更强的空间映射和信息提取能力。但是过多的算子,会使网络运行过程中存在过多的内存访问,导致计算时间较长,效率较低。
发明内容
本公开提供一种访存优化方法、装置、电子设备及存储介质,以解决相关技术中的缺陷。
根据本公开实施例的第一方面,提供一种访存优化方法,包括:
获取所述原始模型中的算子序列;
根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,其中,所述算子子序列包括多个能够合并的算子;
将每个所述算子子序列中的多个算子合并为对应的目标算子,得到目标模型。
在一个实施例中,所述原始模型包括神经网络模型。
在一个实施例中,所述根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,包括:
根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子;
将连续的多个所述可合并算子组成的序列,确定为算子子序列。
在一个实施例中,所述根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子,包括:
在所述算子的种类存在于预设种类列表的情况下,确定所述算子属于可合并算子;
在所述算子的种类未存在于预设种类列表的情况下,确定所述算子不属于可合并算子。
在一个实施例中,所述预设种类列表中包括输出可融合类、数据重排类、数据访问类和单个元素处理类。
在一个实施例中,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为输出可融合算子和数据重排算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,得到所述目标算子。
在一个实施例中,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为输出可融合算子和数据访问算子的情况下,根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
在一个实施例中,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为依次排列的输出可融合算子、数据重排算子和数据访问算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,并根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
在一个实施例中,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为输出可融合算子和单个元素处理算子的情况下,根据所述单个元素处理算子的参数对所述输出可融合算子的参数进行调整。
在一个实施例中,还包括:
将测试数据分别输入至所述原始模型和所述目标模型,得到所述原始模型的输出数据和所述目标数据的输出数据;
在所述原始模型的输出数据和所述目标数据的输出数据一致的情况下,将所述原始模型更新为所述目标模型。
根据本公开实施例的第二方面,提供一种访存优化装置,包括:
获取模块,用于获取所述原始模型中的算子序列;
筛选模块,用于根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,其中,所述算子子序列包括多个能够合并的算子;
合并模块,用于将每个所述算子子序列中的多个算子合并为对应的目标算子,得到目标模型。
在一个实施例中,所述原始模型包括神经网络模型。
在一个实施例中,所述筛选模块具体用于:
根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子;
将连续的多个所述可合并算子组成的序列,确定为算子子序列。
在一个实施例中,所述筛选模块用于根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子时,具体用于:
在所述算子的种类存在于预设种类列表的情况下,确定所述算子属于可合并算子;
在所述算子的种类未存在于预设种类列表的情况下,确定所述算子不属于可合并算子。
在一个实施例中,所述预设种类列表中包括输出可融合类、数据重排类、数据访问类和单个元素处理类。
在一个实施例中,所述合并模块具体用于:
在所述多个算子为输出可融合算子和数据重排算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,得到所述目标算子。
在一个实施例中,所述合并模块具体用于:
在所述多个算子为输出可融合算子和数据访问算子的情况下,根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
在一个实施例中,所述合并模块具体用于:
在所述多个算子为依次排列的输出可融合算子、数据重排算子和数据访问算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,并根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
在一个实施例中,所述合并模块具体用于:
在所述多个算子为输出可融合算子和单个元素处理算子的情况下,根据所述单个元素处理算子的参数对所述输出可融合算子的参数进行调整。
在一个实施例中,还包括测试模块,用于:
将测试数据分别输入至所述原始模型和所述目标模型,得到所述原始模型的输出数据和所述目标数据的输出数据;
在所述原始模型的输出数据和所述目标数据的输出数据一致的情况下,将所述原始模型更新为所述目标模型。
根据本公开实施例的第三方面,提供一种电子设备,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现第一方面所述的方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面所述的方法。
根据上述实施例可知,通过获取所述原始模型中的算子序列,可以根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,由于算子子序列包括多个能够合并的算子,因此可以将每个算子子序列中的多个算子合并为对应的目标算子,从而完成对原始模型的优化处理,得到目标模型。通过算子合并能够减少模型运行过程中的内存访问,从而减少计算时间,提高计算效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是本公开一示例性实施例示出的访存优化方法的流程图;
图2是本公开一示例性实施例示出的数据重排算子的示意图;
图3A是本公开一示例性实施例示出的原始数据的各个数据元素对应的位置索引示意图;
图3B是本公开一示例性实施例示出的重拍后的数据的各个数据元素对应的位置索引示意图;
图4是本公开一示例性实施例示出的数据访问类算子的示意图;
图5是本公开实施例示出的访存优化装置的结构示意图;
图6是本公开实施例示出的电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
随着硬件计算能力和软件协同能力的提升,越来越大的深度学习模型被训练以寻求获取更高的性能有着更佳的泛化性。然而太大的模型无论是部署在端侧或云侧都会面临高频率调用导致的巨大时延问题,这会降低模型的计算速度以及模型的性能。
基于此,第一方面,本公开至少一个实施例提供了一种访存优化方法,请参照附图1,其示出了该方法的流程,包括步骤S101至步骤S103。
其中,该方法可以用于对模型进行优化以达到减少对内存进行访问,即对内存访问进行优化的目的。该方法所针对的模型可以为神经网络模型,例如深度神经网络模型等。另外,该方法可以由终端设备或服务器等电子设备执行,终端设备可以为用户设备(UserEquipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(PersonalDigital Assistant,PDA)手持设备、计算设备、车载设备、可穿戴设备等,该方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。或者,可以通过服务器执行该方法,服务器可以为本地服务器、云端服务器等。
在步骤S101中,获取所述原始模型中的算子序列。
其中,所述原始模型可以为该方法所针对的待优化的模型,例如神经网络模型,具体可以为深度神经网络模型、深度卷积神经网络模型等。原始模型中包括多个算子,每个算子用于执行一种或多种数据处理。原始模型中的多个算子具有顺序性,即依次排列组成算子序列,该算子序列中的每个算子完成所负责的数据处理后,均会将处理结果发送至下一个算子进行数据处理。因此本步骤中可以获取原始模型中的所有算子按照排列顺序所组成的算子序列。
另外,还可以同步获取算子序列中每个算子的种类。
在步骤S102中,根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,其中,所述算子子序列包括多个能够合并的算子。
其中,在全部的算子种类中,一部分种类的算子是可以合并,例如输出可融合类算子(例如卷积算子、全连接算子等)、数据重排类算子和数据访问类算子等,另一部分种类的算子是不可以合并的。算子子序列最少可以包括2个算子,最多包括算子序列的全部算子。算子子序列内是能够合并的算子,算子子序列间的算子是不能够合并的算子。
在一个可能的实施例中,可以按照下述方式在算子序列中确定至少一个算子子序列:
首先,根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子。示例性的,可以预先统计可以合并的算子种类,然后将统计结果生成预设种类列表,该列表中记录了所有可以合并的算子种类,换言之,该列表外的算子均为不可以合并的算子种类,例如预设种类列表中包括输出可融合类、数据重排类和数据访问类;然后在所述算子的种类存在于预设种类列表的情况下,确定所述算子属于可合并算子,在所述算子的种类未存在于预设种类列表的情况下,确定所述算子不属于可合并算子。
接下来,将连续的多个所述可合并算子组成的序列,确定为算子子序列。示例性的,可以提取算子序列中所有的不属于可合并算子的算子(以下称为不可合并算子),然后将相邻的不可合并算子之间的所有算子确定为算子子序列,最后将仅包括一个算子的算子子序列删除,剩余的即为所确定的算子子序列。例如某个原始模型的算子序列共包括15个算子,其中,第1、2、7、12个算子均为不可合并算子,其余均为可合并算子,则第3、4、5、6个算子组成一个算子子序列,第8、9、10、11组成一个算子子序列。
在步骤S103中,将每个所述算子子序列中的多个算子合并为对应的目标算子,得到目标模型。
多个算子的合并可以为创造一个新的算子,将上述多个算子中第一个算子的输入数据输入到这个新的算子中,这个新的算子能够输出上述多个算子中最后一个算子的输出数据,也就是说,这个新的算子能够等效完成上述多个算子共同完成的数据处理。但是可以理解的是,相对于上述多个算子对数据的处理过程,这个新的算子的数据处理过程会大大减少内存访问,处理速度也会得到明显提高。
每个算子子序列中的多个算子合并为对应的目标算子后,整个模型的算子数量减少,得到优化。优化所得到的目标模型相对于原始模型,算子数量减少,因此数据处理过程中的内存访问会大大减少,数据处理的效率会得到明显提高。在一个可能的场景中,原始模型是运行在例如AI加速芯片等芯片上的神经网络模型,原始模型的每个算子在计算时均会对芯片的内存进行读取或写入等访问,这会使得芯片的计算效率较低,甚至会使得芯片由于内存访问频繁而出现运行错误,使用该方法将芯片内的神经网络模型优化后,即将芯片内的原始模型更新为目标模型后,由于模型的算子数量减少,芯片在运行目标模型时,会减少对内存的访问,这可以提高芯片的计算效率,避免芯片由于内存访问频繁而出现运行错误。
可以理解的是,访存优化的过程不能够改变原始模型的功能,否则将造成模型的破坏,致使模型失去原有的数据处理能力。基于此,可以在得到目标模型后,先将测试数据分别输入至所述原始模型和所述目标模型,得到所述原始模型的输出数据和所述目标模型的输出数据,然后在所述原始模型的输出数据和所述目标数据的输出数据一致的情况下,将所述原始模型更新为所述目标模型。其中,测试数据为原始模型的功能所针对的数据,例如原始模型用于处理图像数据,则测试数据为图像数据,再例如原始数据用于处理声音数据,则测试数据为声音数据。通过上述测试过程能够确定目标模型是否能够完成原始模型的功能,从而可以在不能完成原始模型的功能的情况删除目标模型,且可以重新对原始模型进行优化,在能够完成原始模型的功能的情况可以删除原始模型,并以目标模型替代,从而降低模型对内存的占用。
根据上述实施例可知,通过获取所述原始模型中的算子序列,可以根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,由于算子子序列包括多个能够合并的算子,因此可以将每个算子子序列中的多个算子合并为对应的目标算子,从而完成对原始模型的优化,得到目标模型。通过算子合并能够减少模型运行过程中的内存访问,从而减少计算时间,提高计算效率。
本公开的一些实施例中,可以根据算子子序列中的每个算子的种类,采用对应的合并方式对算子子序列中的多个算子进行合并。算子子序列中的多个算子可以包括输出可融合类、数据重排类、数据访问类和单个元素优化类中的至少两类。接下来分别以输出可融合类与数据重排类组成的算子子序列,输出可融合类与数据访问类组成的算子子序列,输出可融合类、数据重排类和数据访问类组成的算子子序列,以及输出可融合类与单个元素优化类组成的算子子序列为例来对算子的合并过程进行详细介绍。
在一个可能的实施例中,待合并的算子子序列中的多个算子为输出可融合算子和数据重排算子,在这种情况下,可以先根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;接下来,根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,得到所述目标算子。
示例性的,输出可融合类算子为卷积(Convolution)算子。数据重排算子为Permute算子,Permute算子能够对输入数据进行重新排列,请参照附图2,其示出了Permute算子对数据的重排过程,即原始数据为[[0,1,2],[3,4,5]],其形状为(2,3),使用permute((1,0))操作后数据变为[[0,3],[1,4],[2,5]],例如使用行优先存储,则可以得到原始数据对应的位置索引为[[0,1,2],[3,4,5]],而使用permute((1,0))重排后的数据的位置索引发生了改变,具体可以参照附图3A和附图3B,其分别示出了原始数据和重排后的数据所对应的位置索引示意图。通过对比原始数据和重排后的数据所对应的位置索引,可以得到用于表征每个数据元素的输出位置在数据重排前后的映射关系的下述表格(即第一映射关系)。
可以将卷积算子的输出数据的每个数据元素的输出位置按照上述映射表进行对应调整,即将输出位置发生改变的数据元素的输出位置进行更新,从而可以使目标算子直接将卷积运算的结果中的每个数据元素输出到数据重排之后的位置上,从而同时完成卷积算子和数据重排算子的数据处理过程。
在一个可能的实施例中,待合并的算子子序列中的多个算子为输出可融合算子和数据访问算子,在这种情况下,可以先根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;接下来,根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
示例性的,输出可融合类算子为卷积(Convolution)算子。数据访问算子同样在不改变数据分布的情况下,获取目标数据,例如数据访问类算子为附图4所示出的数据间隔获取的算子,对原始数据进行间隔为2的数据读取。若卷积算子的输出为附图4中示出的原始数据的格式,则可以将卷积算子的输出调整为原输出数据的第一个元素位置和第三个元素位置上的数据元素,从而不需要输出全部数据后再进行数据访存操作,有效的避免多次数据访存的问题,并且对于不再使用的数据不计算,有效的提升计算速度。
在一个可能的实施例中,待合并的算子子序列中的多个算子为输出可融合算子、数据重排算子和数据访问算子组成的算子子序列,在这种情况下,可以先根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;接下来,根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;最后,根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,并根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。上述各个步骤的具体执行方式及示例已经在前两个实施例中进行了较为详细的介绍,这里不再重复赘述。
在一个可能的实施例中,待合并的算子子序列中的多个算子为输出可融合算子与单个元素处理算子。则可以利用单个元素处理算子的内容对输出核融合算子的参数进行调整。
示例性的,输出可融合算子为卷积算子,单个元素处理算子为批归一化算子(Batch Normalization,BN)。卷积算子参数包括卷积对应的权重w和对应的偏置项b:
x1=w*x+b
其中x指输入特征图(Feature map),x1则是卷积计算输出。
BN算子包括四个参数γ,β,μ,σ,分别代表BN层的尺度(scale)系数,偏移(shift)系数,输入数据的均值、输入数据的方差。对应的计算公式为:
其中x1为上层输入,∈为防止出现分母为0的情况,x2是BN层计算输出。
随后我们可以将以上算子进行合并操作:
简单公式变换变形:
可以看到合并后可以将卷积与BN合并为一个卷积算子,对应完全减少了BN算子带来的计算访存,有效的提升计算速度。
可以理解的是,ReLU算子等其他单个元素优化类算子也可以按照上述方式与卷积算子、全连接算子等输出可融合类算子进行合并。
本公开的一个实施例中,原始模型为用于图像处理的芯片内的神经网络模型,例如:该模型能够识别待检测图像中的人脸上是否存在口罩、或者识别人物信息等。在该神经网络模型中,存在多个算子组成的算子序列,每个算子用于对待检测图像或者是待检测图像的中间特征进行处理。以待检测图像的中间特征的通道压缩处理为例,需要两个算子组成的一个算子子序列完成,其中一个算子为卷积算子,用于对该中间特征进行卷积处理,另一个算子为数据访问算子,用于对卷积算子的输出进行间隔为2的数据读取,因此需要卷积算子读取(第一次访问)芯片的内存中的中间特征(该中间特征由其他算子运算得到),然后对中间特征进行卷积处理,并将卷积处理结果存储(第二次访问)至芯片的内存中,接下来数据访问算子读取(第三次访问)芯片的内存中的卷积处理结果,并对卷积处理结果进行间隔为2的数据读取后,将读取结果储存(第四次访问)至芯片的内存中;当使用本公开提供的方法对原始模型的算子序列中的每个算子子序列进行合并后,得到目标模型,在目标模型中,上述用于对待检测图像的中间特征进行通道压缩处理的算子子序列被合并为对应的目标算子(具体的合并方式在上述实施例中已经进行详细介绍,这里不再重复赘述),该目标算子能够同时完成中间特征的卷积处理和间隔为2的数据读取,因此需要该目标算子读取(第一次访问)芯片的内存中的中间特征,然后对中间特征进行卷积运算和间隔为2的数据读取,然后将读取结果存储(第二次访问)至芯片的内存中,对比合并前后的算子可知,合并后的目标算子相对于合并前的算子子序列,减少两次对内存的访问。同理,原始模型的每个算子子序列在合并后均能够减少对内存的访问次数,从而使得芯片在进行图像处理时,减少对内存的访问,提高芯片的计算效率,避免芯片由于内存访问频繁而出现运行错误。
根据本公开实施例的第二方面,提供一种访存优化装置,请参照附图5,所述装置包括:
获取模块501,用于获取所述原始模型中的算子序列;
筛选模块502,用于根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,其中,所述算子子序列包括多个能够合并的算子;
合并模块503,用于将每个所述算子子序列中的多个算子合并为对应的目标算子,得到目标模型。
在本公开的一些实施例中,所述原始模型包括神经网络模型。
在本公开的一些实施例中,所述筛选模块具体用于:
根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子;
将连续的多个所述可合并算子组成的序列,确定为算子子序列。
在本公开的一些实施例中,所述筛选模块用于根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子时,具体用于:
在所述算子的种类存在于预设种类列表的情况下,确定所述算子属于可合并算子;
在所述算子的种类未存在于预设种类列表的情况下,确定所述算子不属于可合并算子。
在本公开的一些实施例中,所述预设种类列表中包括输出可融合类、数据重排类、数据访问类和单个元素处理类。
在本公开的一些实施例中,所述合并模块具体用于:
在所述多个算子为输出可融合算子和数据重排算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,得到所述目标算子。
在本公开的一些实施例中,所述合并模块具体用于:
在所述多个算子为输出可融合算子和数据访问算子的情况下,根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
在本公开的一些实施例中,所述合并模块具体用于:
在所述多个算子为依次排列的输出可融合算子、数据重排算子和数据访问算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,并根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
在本公开的一些实施例中,所述合并模块具体用于:
在所述多个算子为输出可融合算子和单个元素处理算子的情况下,根据所述单个元素处理算子的参数对所述输出可融合算子的参数进行调整。
在本公开的一些实施例中,还包括测试模块,用于:
将测试数据分别输入至所述原始模型和所述目标模型,得到所述原始模型的输出数据和所述目标数据的输出数据;
在所述原始模型的输出数据和所述目标数据的输出数据一致的情况下,将所述原始模型更新为所述目标模型。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在第三方面有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
第三方面,本公开至少一个实施例提供了一种设备,请参照附图6,其示出了该设备的结构,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时基于第一方面任一项所述的方法对模型进行处理。
第四方面,本公开至少一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面任一项所述的方法。
在本公开中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (13)
1.一种访存优化方法,其特征在于,包括:
获取原始模型中的算子序列;
根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,其中,所述算子子序列包括多个能够合并的算子;
将每个所述算子子序列中的多个算子合并为对应的目标算子,得到目标模型。
2.根据权利要求1所述的访存优化方法,其特征在于,所述原始模型包括神经网络模型。
3.根据权利要求1所述的访存优化方法,其特征在于,所述根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,包括:
根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子;
将连续的多个所述可合并算子组成的序列,确定为算子子序列。
4.根据权利要求3所述的访存优化方法,其特征在于,所述根据所述算子序列中的每个算子的种类,确定对应的算子是否属于可合并算子,包括:
在所述算子的种类存在于预设种类列表的情况下,确定所述算子属于可合并算子;
在所述算子的种类未存在于预设种类列表的情况下,确定所述算子不属于可合并算子。
5.根据权利要求4所述的访存优化方法,其特征在于,所述预设种类列表中包括输出可融合类、数据重排类、数据访问类和单个元素处理类。
6.根据权利要求4所述的访存优化方法,其特征在于,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为输出可融合算子和数据重排算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,得到所述目标算子。
7.根据权利要求4所述的访存优化方法,其特征在于,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为输出可融合算子和数据访问算子的情况下,根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
8.根据权利要求4所述的访存优化方法,其特征在于,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为依次排列的输出可融合算子、数据重排算子和数据访问算子的情况下,根据所述数据重排算子确定第一映射关系,其中,所述第一映射关系用于表征每个数据元素的输出位置在数据重排前后的映射关系;
根据所述数据访问算子确定所述输出可融合算子的输出数据中的多个数据元素中,至少一个被访问元素的输出位置;
根据所述第一映射关系,将所述输出可融合算子的输出数据的每个数据元素的输出位置进行对应调整,并根据所述至少一个被访问元素的输出位置,将所述输出可融合算子的输出数据调整为所述至少一个被访问元素,得到所述目标算子。
9.根据权利要求4所述的访存优化方法,其特征在于,所述将每个所述算子子序列中的多个算子合并为对应的目标算子,包括:
在所述多个算子为输出可融合算子和单个元素处理算子的情况下,根据所述单个元素处理算子的参数对所述输出可融合算子的参数进行调整。
10.根据权利要求1所述的访存优化方法,其特征在于,还包括:
将测试数据分别输入至所述原始模型和所述目标模型,得到所述原始模型的输出数据和所述目标数据的输出数据;
在所述原始模型的输出数据和所述目标数据的输出数据一致的情况下,将所述原始模型更新为所述目标模型。
11.一种访存优化装置,其特征在于,包括:
获取模块,用于获取原始模型中的算子序列;
筛选模块,用于根据所述算子序列中每个算子的种类,在所述算子序列中确定至少一个算子子序列,其中,所述算子子序列包括多个能够合并的算子;
合并模块,用于将每个所述算子子序列中的多个算子合并为对应的目标算子,得到目标模型。
12.一种电子设备,其特征在于,所述设备包括存储器、处理器,所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现权利要求1至10任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至10任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210474287.6A CN114897151A (zh) | 2022-04-29 | 2022-04-29 | 访存优化方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210474287.6A CN114897151A (zh) | 2022-04-29 | 2022-04-29 | 访存优化方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114897151A true CN114897151A (zh) | 2022-08-12 |
Family
ID=82718571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210474287.6A Pending CN114897151A (zh) | 2022-04-29 | 2022-04-29 | 访存优化方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114897151A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145965A (zh) * | 2022-09-01 | 2022-10-04 | 浙江大华技术股份有限公司 | 数据流的生成方法、电子设备及计算机可读存储介质 |
CN115981870A (zh) * | 2023-03-10 | 2023-04-18 | 之江实验室 | 一种数据处理的方法、装置、存储介质及电子设备 |
-
2022
- 2022-04-29 CN CN202210474287.6A patent/CN114897151A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115145965A (zh) * | 2022-09-01 | 2022-10-04 | 浙江大华技术股份有限公司 | 数据流的生成方法、电子设备及计算机可读存储介质 |
CN115145965B (zh) * | 2022-09-01 | 2022-11-22 | 浙江大华技术股份有限公司 | 数据流的生成方法、电子设备及计算机可读存储介质 |
CN115981870A (zh) * | 2023-03-10 | 2023-04-18 | 之江实验室 | 一种数据处理的方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114897151A (zh) | 访存优化方法、装置、电子设备及存储介质 | |
CN112862681B (zh) | 一种超分辨率方法、装置、终端设备及存储介质 | |
KR20210129031A (ko) | 모델 압축 방법, 이미지 처리 방법 및 장치 | |
CN110442516B (zh) | 信息处理方法、设备及计算机可读存储介质 | |
CN113095370A (zh) | 图像识别方法、装置、电子设备及存储介质 | |
CN111242319A (zh) | 模型预测结果的解释方法和装置 | |
CN110852224B (zh) | 一种表情识别方法及相关装置 | |
CN110276404A (zh) | 模型训练方法、装置及存储介质 | |
CN113111208A (zh) | 一种以图搜图的方法、系统、设备及存储介质 | |
CN111221827B (zh) | 基于图形处理器的数据库表连接方法、装置、计算机设备和存储介质 | |
CN116883740A (zh) | 相似图片识别方法、装置、电子设备和存储介质 | |
CN116795990A (zh) | 文本分类方法、装置、计算机设备和存储介质 | |
CN111222005A (zh) | 声纹数据重排序方法、装置、电子设备及存储介质 | |
CN115761888A (zh) | 基于nl-c3d模型的塔吊操作人员异常行为检测方法 | |
CN115495498A (zh) | 数据关联方法、系统、电子设备及存储介质 | |
CN115082999A (zh) | 合影图像人物分析方法、装置、计算机设备和存储介质 | |
CN109074654A (zh) | 连通域检测方法、电路、设备、计算机可读存储介质 | |
CN113448876A (zh) | 一种业务测试方法、装置、计算机设备及存储介质 | |
CN115601550B (zh) | 模型确定方法、装置、计算机设备及计算机可读存储介质 | |
CN111783711B (zh) | 基于身体部件层面的骨架行为识别方法及装置 | |
CN112370789B (zh) | 模型三角形网格合适度的检测方法及系统 | |
CN113302657B (zh) | 一种神经网络压缩方法和装置 | |
CN113239226A (zh) | 一种图像检索方法、装置、设备及存储介质 | |
CN116108752A (zh) | 模型压缩方法、装置、电子设备和存储介质 | |
CN115775393A (zh) | 对象识别方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |