CN116629330A - 一种算子检测方法、装置以及计算机设备 - Google Patents
一种算子检测方法、装置以及计算机设备 Download PDFInfo
- Publication number
- CN116629330A CN116629330A CN202310451059.1A CN202310451059A CN116629330A CN 116629330 A CN116629330 A CN 116629330A CN 202310451059 A CN202310451059 A CN 202310451059A CN 116629330 A CN116629330 A CN 116629330A
- Authority
- CN
- China
- Prior art keywords
- operator
- operators
- list
- target
- information
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 33
- 238000003062 neural network model Methods 0.000 claims abstract description 101
- 238000004364 calculation method Methods 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 44
- 230000004927 fusion Effects 0.000 claims description 63
- 230000001419 dependent effect Effects 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 26
- 238000004891 communication Methods 0.000 claims description 5
- 238000013473 artificial intelligence Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 14
- 238000004590 computer program Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 208000037824 growth disorder Diseases 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
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/0464—Convolutional networks [CNN, ConvNet]
-
- 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/048—Activation functions
-
- 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/08—Learning methods
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)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开提供了一种算子检测方法、装置以及计算机设备,其中,该方法包括:获取神经网络模型的模型文件;基于所述模型文件确定神经网络模型中各网络层的结构描述信息;对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系;对所述目标算子列表进行检查,得到检查结果;通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
Description
技术领域
本公开涉及计算机应用技术领域,具体而言,涉及一种算子检测方法、装置以及计算机设备。
背景技术
算子是人工智能软件执行时的基本单元,通常指神经网络的常用计算操作。人工智能硬件(以下简称为硬件)是算子执行的载体,也即,算子通常被硬件所封装且直接执行。人工智能计算框架是将软件编译成为硬件可执行的代码,从而有效使用算子。
然而,现有的编译技术在编译过程中无法有效确认硬件对算子的支持情况。这就导致较难从算子角度来评估硬件的计算能力和兼容性,只能以计算结果来看待硬件。这样,往往导致不同的人工智能应用在同样的硬件上时快时慢;同样的人工智能应用在不同的硬件上也是有好有坏。由于不同的硬件能够实现的算子不同,因此,硬件对各神经网络中算子的支持情况也不完全相同。硬件对算子的支持情况影响了人工智能应用的开发效率和硬件选型的准确性。
发明内容
本公开实施例至少提供一种算子检测方法、装置以及计算机设备。
第一方面,本公开实施例提供了一种算子检测方法,包括:获取神经网络模型的模型文件;基于所述模型文件确定神经网络模型中各网络层的结构描述信息;对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系;对所述目标算子列表进行检查,得到检查结果;通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
一种可选的实施方式中,所述对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,包括:根据所述神经网络模型的前向计算顺序,对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层中各算子的算子名称、各算子的输入输出的数据维度和各算子的依赖算子;其中,所述依赖算子的输出数据为该算子的输入数据;基于所述算子名称、所述数据维度和所述依赖算子,确定所述各网络层中算子的算子信息。
一种可选的实施方式中,所述基于每个所述网络层的算子信息生成目标算子列表,包括:在确定中间算子列表中存在与当前算子的算子名称相同,且与所述当前算子的输入输出的第一数据维度不相同的第一算子情况下,在所述中间算子列表中与所述第一算子相关联的第一数据中添加所述第一数据维度;基于添加所述第一数据维度后的中间算子列表确定所述目标算子列表;所述第一数据用于指示所述第一算子的输入输出的各种数据维度,每种数据维度对应所述第一算子的一个计算路径。
一种可选的实施方式中,所述基于每个所述网络层的算子信息生成目标算子列表,包括:在确定所述中间算子列表中不存在与当前算子的算子名称相同的算子的情况下,在所述中间算子列表中创建第二数据;其中,所述第二数据用于指示所述当前算子的算子名称和第一数据维度;基于创建所述第二数据后的中间算子列表确定所述目标算子列表。
一种可选的实施方式中,所述基于每个所述网络层的算子信息生成目标算子列表,包括:在确定所述中间算子列表中存在所述当前算子的依赖算子的情况下,在所述中间算子列表中建立所述当前算子和所述依赖算子之间的依赖关系;其中,所述依赖算子的输出数据为所述当前算子的输入数据;基于建立所述依赖关系后的中间算子列表确定所述目标算子列表。
一种可选的实施方式中,所述对所述目标算子列表进行检查,得到检查结果,包括:获取算子融合规则;基于所述目标算子列表中算子之间的依赖关系,确定满足所述算子融合规则的目标算子;按照所述算子融合规则对所述目标算子进行融合,得到融合算子;基于所述融合算子对所述目标算子列表进行检查,得到检查结果。
一种可选的实施方式中,所述基于所述融合算子对所述目标算子列表进行检查,得到检查结果,包括:在确定出所属于各个数据维度的目标算子均按照所述算子融合规则进行融合之后,将所述目标算子列表中的目标算子替换为所述融合算子,得到替换后目标算子列表;对所述替换后目标算子列表进行检查,得到所述检查结果。
一种可选的实施方式中,所述对所述目标算子列表进行检查,得到检查结果,包括:将所述目标算子列表和所述硬件设备的支持算子列表进行比对,并根据比对结果确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子;和/或,基于所述硬件设备对所述目标算子列表中每个算子所对应计算操作的处理时长,确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子。
第二方面,本公开实施例提供了一种算子检测装置,包括:获取单元,用于获取神经网络模型的模型文件;确定单元,用于基于所述模型文件确定神经网络模型中各网络层的结构描述信息;列表生成单元,用于对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系;检查单元,用于对所述目标算子列表进行检查,得到检查结果;通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
第三方面,本公开实施例提供了一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如第一方面中任一项所述的算子检测方法的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
在本公开实施例中,可以基于神经网络模型的模型文件确定该神经网络模型中各网络层的结构描述信息;之后,可以对结构描述信息进行遍历,从而得到每个网络层的算子信息,其中,该算子信息用于指示各网络层中算子的算子属性和算子之间的依赖关系;接下来,就可以根据该算子信息生成目标算子列表,从而根据该目标算子列表确定各网络层的算子中能够神经网络模型的硬件设备执行相应计算操作的算子。
上述实施方式中,从模型分析角度可以直接获得神经网络模型进行推理所需的目标算子列表;通过对目标算子列表进行检查,可以得到能够通过神经网络模型的硬件设备执行相应计算操作的算子,从而获得硬件(即,硬件设备)对该神经网络模型的支撑能力的判断。如果硬件能够完全执行神经网络模型中的所有算子,则表示该神经网络模型可以获得该硬件的全面加速;否则就有部分数量的算子需要通过CPU来进行计算。通过上述所描述的处理方式,能够获得硬件对特定的神经网络模型的算子支持能力的快速判断,从而能够为神经网络模型的硬件选型提供选型依据,进而提高硬件选型的准确性,同时还可以加速人工智能应用的开发效率。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种算子检测方法的流程图;
图2示出了本公开实施例所提供的算子检测方法中,对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息的具体方法的流程图;
图3示出了本公开实施例所提供的算子检测方法中,基于每个所述网络层的算子信息生成目标算子列表的具体方法的流程图;
图4示出了本公开实施例所提供的算子检测方法中,对目标算子列表进行检查,得到检查结果的具体方法的流程图;
图5示出了本公开实施例所提供的一种算子检测装置的示意图;
图6示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,算子是人工智能软件执行时的基本单元,通常指神经网络模型的常用计算操作。人工智能硬件是算子执行的载体,也即,算子通常被硬件所封装且直接执行。人工智能计算框架是将软件编译成为硬件可执行的代码,从而有效使用算子。
然而,现有的编译技术在编译过程中无法有效确认硬件对算子的支持情况。这就导致较难从算子角度来评估硬件的计算能力和兼容性,只能以计算结果来看待硬件。这样,往往导致不同的人工智能应用在同样的硬件上时快时慢;同样的人工智能应用在不同的硬件上也是有好有坏。由于不同的硬件能够实现的算子不同,因此,硬件对各神经网络模型中算子的支持情况也不完全相同。硬件对算子的支持情况影响了人工智能应用的开发效率和硬件选型的准确性。
在人工智能推理应用时,往往是直接运行已经训练好的模型。模型是神经网络结构和权重参数的结合体,描述了神经网络模型的构成和拓扑(即模型结构),以及对应的权重参数。根据模型结构和权重参数,软件就能执行神经网络模型的前向计算顺序,从输入获得计算输出。根据神经网络模型的模型文件,软件在内存中可以对模型文件进行编译,编译形成执行流,执行流被调度到计算硬件,例如CPU(Central Processing Unit,中央处理器)和GPU(Graphics Processing Unit,图形处理器),从而完成神经网络模型计算。其中,执行流中包含数据和算子操作,能够异步执行所有的计算。
由于GPU具有AI(Artificial Intelligence,人工智能)专用加速硬件,具有非常快的执行速度。在模型计算中,充分利用GPU就能快速获得计算结果。因此,如果一种类型的GPU能够全部加速一个神经网络模型,即该GPU能够完成神经网络模型中全部算子的计算操作,那么可以有效提高人工智能应用的处理效率。
现有技术中,通常将神经网络模型在一种GPU上进行计算,进而通过该GPU对神经网络模型的处理时间和处理效率,统计出由GPU完成计算过程的算子,以及统计出由CPU完成计算过程的算子。对于GPU支持率较低的神经网络模型,GPU硬件厂家将找到计算所缺失的算子进行开发,从而提升硬件兼容性。然而,上述所描述的现有技术通常通过人工分析的方式来统计GPU所支持的算子,该处理方式耗时耗力,不利于硬件的选型和应用的开发。
基于上述研究,本公开提供了一种算子检测方法、装置以及计算机设备。在本公开实施例中,可以基于神经网络模型的模型文件确定该神经网络模型中各网络层的结构描述信息;之后,可以对结构描述信息进行遍历,从而得到每个网络层的算子信息,其中,该算子信息用于指示各网络层中算子的算子属性和算子之间的依赖关系;接下来,就可以根据该算子信息生成目标算子列表,从而根据该目标算子列表确定各网络层的算子中能够神经网络模型的硬件设备执行相应计算操作的算子。
上述实施方式中,从模型分析角度可以直接获得神经网络模型进行推理所需的目标算子列表;通过对目标算子列表进行检查,可以得到能够通过神经网络模型的硬件设备执行相应计算操作的算子,从而获得硬件(即,硬件设备)对该神经网络模型的支撑能力的判断。如果硬件能够完全执行神经网络模型中的所有算子,则表示该神经网络模型可以获得该硬件的全面加速;否则就有部分数量的算子需要通过CPU来进行计算。通过上述所描述的处理方式,能够获得硬件对特定的神经网络模型的算子支持能力的快速判断,从而能够为神经网络模型的硬件选型提供选型依据,进而提高硬件选型的准确性,同时还可以加速人工智能应用的开发效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种算子检测方法进行详细介绍,本公开实施例所提供的算子检测方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字处理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该算子检测方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面对本公开实施例提供的算子检测方法加以说明。
实施例一
参见图1所示,为本公开实施例提供的一种算子检测方法的流程图,所述方法包括步骤S101~S104,其中:
S101:获取神经网络模型的模型文件。
在本公开实施例中,神经网络模型的模型文件的文件内容包含神经网络模型的网络结构,其中,该网络结构包含该神经网络模型中各网络层的结构信息,以及每个网络层对应的计算操作;模型文件的文件内容还包含各网络层之间的计算权重,以及每个网络层中的计算权重。
这里,神经网络模型为待编译(或者待部署)到硬件设备上的模型,或者,神经网络模型为硬件设备待执行的模型。通过该硬件设备可以执行神经网络模型的处理过程,从而得到对应的处理结果。例如,可以通过神经网络模型进行图像识别,从而得到对应的图像识别结果。
S102:基于所述模型文件确定神经网络模型中各网络层的结构描述信息。
在获取到模型文件之后,就基于模型文件的文件内容,生成该神经网络模型中各网络层的结构描述信息。其中,结构描述信息包含每个网络层的结构信息,以及各网络层之间的连接关系,以及各网络层之间的计算权重。通过该结构描述信息,可以生成该神经网络模型的神经网络结构图Graph。
S103:对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系。
在得到结构描述信息之后,可以对每个网络层的结构描述信息进行遍历,遍历得到每个网络层中的每个算子,从而得到每个网络层中算子的算子信息。其中,算子信息包含算子的属性信息和算子之间的依赖关系。
这里,属性信息包含算子名称、算子的输入输出的数据维度。算子之间的依赖关系用于指示神经网络模型中当前算子的依赖算子,其中,依赖算子的输出数据为该当前算子的输入数据。
这里,算子关联的计算操作可以为,卷积操作、激活函数操作、池化操作、张量变形操作等。此时,算子信息可以为计算操作的操作名称,例如,卷积操作;还可以为计算操作的输入输出的数据维度,例如,卷积操作的输入数据的数据维度和卷积操作的输出数据的数据维度。卷积操作的依赖算子可以理解为神经网络模型中输出数据为该卷积操作的输入数据的算子。
在得到各网络层中算子的算子信息之后,可以对全部网络层的算子信息进行融合,从而得到目标算子列表。
这里,目标算子列表中包含每种类型的算子在各个计算路径下的算子信息。算子的类型相同是指算子所对应的计算操作相同,例如,算子1和算子2对应的计算操作,那么算子1和算子2的类型相同,均为卷积类算子。
在神经网络模型中可能包含类型相同的多个算子,但是每个算子的输入输出的数据维度可能不完全相同。此时,该类型的算子的每种数据维度对应该算子的一个计算路径。
也就是说,在本公开实施例中,基于每个所述网络层的算子信息生成目标算子列表的目的是将各网络层中类型相同的算子按照对应的计算路径进行整理,从而得到上述所描述的目标算子列表。
S104:对所述目标算子列表进行检查,得到检查结果;其中,所述检查结果用于指示能够通过所述神经网络模型的硬件设备执行相应计算操作的算子,之后,就可以通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
在得到目标算子列表之后,就可以检查目标算子列表中能够通过所述神经网络模型的硬件设备执行相应计算操作的算子;之后,就可以基于检查结果为神经网络模型选择合适的硬件设备。其中,硬件设备可以为AI加速器,例如,GPU。
例如,硬件设备的数量可以为多个,此时,可以基于检查结果确定每个硬件设备所能够执行计算操作的算子,进而根据该算子从多个硬件设备中选择处理速度最快的硬件设备作为该神经网络模型的部署设备。
上述实施方式中,从模型分析角度可以直接获得神经网络模型进行推理所需的目标算子列表;通过对目标算子列表进行检查,可以得到能够通过神经网络模型的硬件设备执行相应计算操作的算子,从而获得硬件(即,硬件设备)对该神经网络模型的支撑能力的判断。如果硬件能够完全执行神经网络模型中的所有算子,则表示该神经网络模型可以获得该硬件的全面加速;否则就有部分数量的算子需要通过CPU来进行计算。通过上述所描述的处理方式,能够获得硬件对特定的神经网络模型的算子支持能力的快速判断,从而能够为神经网络模型的硬件选型提供选型依据,进而提高硬件选型的准确性,同时还可以加速人工智能应用的开发效率。
在一个可选的实施方式中,如图2所示,上述步骤S103对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,具体包括如下步骤:
步骤S11:根据所述神经网络模型的前向计算顺序,对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层中各算子的算子名称、各算子的输入输出的数据维度和各算子的依赖算子;其中,所述依赖算子的输出数据为该算子的输入数据;
步骤S12:基于所述算子名称、所述数据维度和所述依赖算子,确定所述各网络层中算子的算子信息。
在本公开实施例中,从神经网络模型的输入层开始,按照神经网络模型的前向计算顺序依次遍历每个网络层的结构描述信息,从而在每个网络层的结构描述信息中遍历出该网络层中所包含算子的算子名称、各算子的输入输出的数据维度和各算子的依赖算子。之后,可以基于算子名称、数据维度和依赖算子,确定所述各网络层中算子的算子信息。
这里,可以在每个网络层的结构描述信息中遍历各算子关联的计算操作的操作名称,例如,卷积操作、激活函数操作、池化操作、张量变形操作等;进而,基于该操作名称确定算子名称。
这里,可以基于各网络层的结构描述信息,确定各网络层中输出数据为当前算子的输入数据的算子,从而将确定出的该算子作为当前算子的依赖算子。
上述实施方式中,通过对网络层的结构描述信息进行遍历,得到网络层的算子信息的方式,不需要对神经网络模型进行实际推理计算,可以直接获得神经网络模型进行推理所需的算子信息,从而避免了神经网络模型的实际编译和计算过程。
在一个可选的实施方式中,如图3所示,上述步骤S103基于每个所述网络层的算子信息生成目标算子列表,具体包括如下步骤:
步骤S21:在确定中间算子列表中存在与当前算子的算子名称相同,且与所述当前算子的输入输出的第一数据维度不相同的第一算子情况下,在所述中间算子列表中与所述第一算子相关联的第一数据中添加所述第一数据维度;
步骤S22:基于添加所述第一数据维度后的中间算子列表确定所述目标算子列表;所述第一数据用于指示所述第一算子的输入输出的各种数据维度,每种数据维度对应所述第一算子的一个计算路径。
在基于每个网络层的算子生成目标算子列表的过程中,一种可能的实施方式中,可以在遍历得到每个网络层的算子信息之后,从输入层开始,按照前向计算顺序对每个网络层的算子信息进行融合,从而融合得到目标算子列表。在另一种可能的实施方式中,可以在对网络层的结构描述信息进行遍历的过程中,对遍历得到算子信息进行融合。例如,可以每遍历得到一个算子的算子信息,就将该算子信息融合到算子列表中,并继续遍历得到下一个算子的算子信息。
针对上述所描述的两种可能的实施方式,对算子信息进行融合,得到目标算子列表的融合过程相同。
具体实施时,针对待融合的当前算子,可以首先确定中间算子列表,其中,该中间算子列表可以为对当前算子之前的算子进行融合后得到的算子列表。接下来,可以在中间算子列表中查找与当前算子的算子名称相同的算子。
如果发现中间算子列表中存在与当前算子的算子名称相同的算子,则检查当前算子的输入输出的第一数据维度。如果中间算子列表中存在与当前算子的算子名称和第一数据维度相同的算子,则表示当前算子已经记录在中间算子列表中。此时,舍弃该算子的算子信息,并继续融合下一个算子的算子信息。
如果中间算子列表中存在与当前算子的算子名称一致,且第一数据维度不同的第一算子,则在中间算子列表中记录当前算子的第一数据维度。
这里,可以在中间算子列表中确定与该第一算子相关联的第一数据,其中,第一数据中记录的数据用于指示第一算子在各个计算路径下的输入数据的数据维度。之后,就可以在第一数据中添加第一数据维度。
接下来,可以在添加第一数据维度后的中间算子列表中融合下一个算子的算子信息,直至将最后一个算子的算子信息融合至中间算子列表,得到目标算子列表。
在一个可选的实施方式中,在图3所示实施方式的基础上,上述步骤S103基于每个所述网络层的算子信息生成目标算子列表,还包括如下步骤:
步骤S31:在确定所述中间算子列表中不存在与当前算子的算子名称相同的算子的情况下,在所述中间算子列表中创建第二数据;其中,所述第二数据用于指示所述当前算子的算子名称和第一数据维度;
步骤S32:基于创建所述第二数据后的中间算子列表确定所述目标算子列表。
在本公开实施例中,如果发现中间算子列表中不存在与当前算子的算子名称相同的算子,则记录当前算子为新算子。具体实施时,可以在中间算子列表中创建第二数据,其中,该第二数据包含当前算子的算子名称,以及第一数据维度。通过该第二数据可以指示该算子在各个计算路径下的输入数据的数据维度。
接下来,可以在创建第二数据后的中间算子列表中融合下一个算子的算子信息,直至将最后一个算子的算子信息融合至中间算子列表,得到目标算子列表。
通过上述步骤S21和步骤S22,以及步骤S31和步骤S32的描述可知,将算子信息融合至中间算子列表的总体融合原则可以理解为:
对当前时刻待融合的算子A(即当前算子),在中间算子列表检查是否出现与算子A的算子名称相同的算子B。如果存在算子B,则继续判断算子B的输入输出的数据维度与算子A的输入输出的第一数据维度是否一样。如果一样,则表示为重复记录的算子,此时舍弃该算子信息。如果算子B和算子A的算子名称一样,输入输出的数据维度不一样,则将算子A的输入输出的数据维度记录到算子B所对应的第一数据中。如果算子B和算子A的算子名称不一样,则表示出现一个新算子,此时,在中间算子列表中创建第二数据,以通过该第二数据记录算子A的算子名称和第一数据维度。
在一个可选的实施方式中,在图3所示实施方式的基础上,上述步骤S103基于每个所述网络层的算子信息生成目标算子列表,还包括如下步骤:
步骤S41:在确定所述中间算子列表中存在所述当前算子的依赖算子的情况下,在所述中间算子列表中建立所述当前算子和所述依赖算子之间的依赖关系;其中,所述依赖算子的输出数据为所述当前算子的输入数据;
步骤S42:基于建立所述依赖关系后的中间算子列表确定所述目标算子列表。
通过上述描述可知,在本公开实施例中,在对结构描述信息进行遍历的过程中,还要记录当前时刻所遍历算子的输入数据是否为之前所遍历算子的输出数据。如果是,则记录之前所遍历算子为当前时刻所遍历算子的依赖算子。
在将当前算子的算子信息融合至中间算子列表的过程中,如果确定当前算子存在依赖算子,则需要在中间算子列表中建立当前算子和依赖算子之间的依赖关系。
具体实施时,可以在中间算子列表中记录当前算子的第一数据维度,并在第一数据维度所对应的计算路径下记录该当前算子的依赖算子,从而建立当前算子和依赖算子之间的依赖关系。
接下来,可以在建立所述依赖关系后的中间算子列表中融合下一个算子的算子信息,直至将最后一个算子的算子信息融合至中间算子列表,得到目标算子列表。
上述实施方式中,通过对网络层的结构描述信息进行遍历,得到网络层的算子信息,并基于算子信息确定目标算子列表的方式,不需要对神经网络模型进行实际推理计算,可以直接获得神经网络模型进行推理所需的算子信息,从而避免了神经网络模型的实际编译和计算过程。
在一个可选的实施方式中,如图4所示,上述步骤S104对所述目标算子列表进行检查,得到检查结果,具体包括如下步骤:
步骤S1041:获取算子融合规则;
步骤S1042:基于所述目标算子列表中算子之间的依赖关系,确定满足所述算子融合规则的目标算子;
步骤S1043:按照所述算子融合规则对所述目标算子进行融合,得到融合算子;
步骤S1044:基于所述融合算子对所述目标算子列表进行检查,得到检查结果。
图形处理器GPU在发展过程中可以将多个计算操作合并成一个计算操作,即可以将多个算子的计算操作融合为一个计算操作,从而形成了算子融合技术。在该技术下,多个算子被合并成一个算子进行直接计算。
通过对结构描述信息进行遍历,并根据遍历的算子信息确定的目标算子列表中记录了算子之间的依赖关系,这就为算子的融合提供了融合依据。
这里,可以采用融合规则来实现算子之间的融合,然后根据依赖关系确定是否存在能够进行融合的算子,具体过程描述如下:
首先,获取算子融合规则,例如:add_bias_into_conv,这条算子融合规则可以理解为在卷积计算后面直接加上bias权重。
在本公开实施例中,针对每个硬件设备,例如,GPU,可以获取预先为该GPU设置的算子融合规则。通过该算子融合规则,可以确定该GPU所能够进行融合的算子,以及该算子的融合方式。
接下来,从目标算子列表的第一条数据开始,逐条检查每一个算子是否存在依赖算子。在检查出存在依赖算子的情况下,判断该依赖算子和本算子是否符合算子融合规则。如果是,则进行标记,从而确定该依赖算子和本算子为能够进行融合的算子,即满足算子融合规则的目标算子;否则,确定该依赖算子和本算子为不满足算子融合规则的目标算子。
在确定出目标算子之后,就可以基于算子融合规则确定目标算子的融合方式,然后,按照该融合方式将依赖算子和本算子进行融合,从而得到融合算子。
在得到融合算子之后,就可以基于融合算子对目标算子列表进行处理,并对处理后的目标算子列表进行检查,得到检查结果。
在一个可选的实施方式中,上述步骤S1044基于所述融合算子对所述目标算子列表进行检查,得到检查结果,具体包括如下步骤:
首先,在确定出所属于各个数据维度的目标算子均按照所述算子融合规则进行融合之后,将所述目标算子列表中的目标算子替换为所述融合算子,得到替换后目标算子列表;
其次,对所述替换后目标算子列表进行检查,得到所述检查结果。
在本公开实施例中,对目标算子列表中参与融合的目标算子,在判断出该目标算子在各个计算路径均参与了融合的情况下,从目标算子列表中删除该参与融合的目标算子,并在目标算子列表中保留融合算子。也就是说,如果该目标算子不存在一个计算路径未参与融合的,则从目标算子列表中删除该参与融合的目标算子;否则同时保留融合算子和参与融合的目标算子。
在一个可选的实施方式中,步骤S104对所述目标算子列表进行检查,得到检查结果,具体包括以下几种方式:
方式一:
将所述目标算子列表和所述硬件设备的支持算子列表进行比对,并根据比对结果确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子。
在本公开实施例中,可以获取硬件设备所支持算子的支持算子列表;然后,将目标算子列表中的算子和支持算子列表中的算子进行比对,从而得到比对结果。其中,该比对结果用于指示目标算子列表中存在于支持算子列表中的算子;或者,指示目标算子列表中未存在于指示算子列表中的算子。
接下来,就可以通过该比对结果确定目标算子列表中能够通过所述硬件设备执行相应计算操作的算子。
方式二:
基于所述硬件设备对所述目标算子列表中每个算子所对应计算操作的处理时长,确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子。
在本公开实施例中,可以调用预先编写的测试程序,通过该测试程序可以对目标算子列表中的每个算子进行测试,从而得到每个算子的测试结果;其中,该测试结果用于指示硬件设备(例如,GPU)对该算子所对应计算操作的处理时间。
具体实施时,通过该测试程序可以将该算子对应的计算操作编译成对应的指令,并将该指令调度至GPU进行处理。这里,如果GPU无法处理该指令,那么GPU可以将该指令下发至CPU中进行处理。由于CPU的处理速度慢于GPU的处理速度,因此,可以通过GPU对该指令的处理时间确定该算子能否能够通过所述硬件设备执行。比如,如果该处理时间较长,例如,大于第一时间阈值,则确定该算子由CPU处理;如果该处理时间较短,例如,小于第二时间阈值,则确定该算子由GPU处理。其中,第一时间阈值和第二时间阈值可以相同或不同,本公开对此不做具体限定,以能够实现为准。
通过上述描述可知,在本公开实施例中,按照神经网络模型的前向计算顺序从每个网络层的结构描述信息中解析出计算所需的算子,从而形成目标算子列表。之后,还可以根据目标算子列表和算子融合规则,获得融合算子,并通过该融合算子更新该目标算子列表。最后,就可以对更新后的目标算子列表进行简单测试,从而获得硬件对算子支撑与否的判断。上述处理方式不需要对神经网络模型进行实际推理计算,可以直接获得神经网络模型进行推理所需的算子信息,从而避免了神经网络模型的实际编译和计算过程。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与算子检测方法对应的算子检测装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述算子检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
实施例二
参照图5所示,为本公开实施例提供的一种算子检测装置的架构示意图,所述装置包括:获取单元10、确定单元20、列表生成单元30和检查单元40;其中,
获取单元,用于获取神经网络模型的模型文件;
确定单元,用于基于所述模型文件确定神经网络模型中各网络层的结构描述信息;
列表生成单元,用于对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系;
检查单元,用于对所述目标算子列表进行检查,得到检查结果;通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
上述实施方式中,从模型分析角度可以直接获得神经网络模型进行推理所需的目标算子列表;通过对目标算子列表进行检查,可以得到能够通过神经网络模型的硬件设备执行相应计算操作的算子,从而获得硬件(即,硬件设备)对该神经网络模型的支撑能力的判断。如果硬件能够完全执行神经网络模型中的所有算子,则表示该神经网络模型可以获得该硬件的全面加速;否则就有部分数量的算子需要通过CPU来进行计算。通过上述所描述的处理方式,能够获得硬件对特定的神经网络模型的算子支持能力的快速判断,从而能够为神经网络模型的硬件选型提供选型依据,进而提高硬件选型的准确性,同时还可以加速人工智能应用的开发效率。
一种可能的实施方式中,列表生成单元,还用于:根据所述神经网络模型的前向计算顺序,对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层中各算子的算子名称、各算子的输入输出的数据维度和各算子的依赖算子;其中,所述依赖算子的输出数据为该算子的输入数据;基于所述算子名称、所述数据维度和所述依赖算子,确定所述各网络层中算子的算子信息。
一种可能的实施方式中,列表生成单元,还用于:在确定中间算子列表中存在与当前算子的算子名称相同,且与所述当前算子的输入输出的第一数据维度不相同的第一算子情况下,在所述中间算子列表中与所述第一算子相关联的第一数据中添加所述第一数据维度;基于添加所述第一数据维度后的中间算子列表确定所述目标算子列表;所述第一数据用于指示所述第一算子的输入输出的各种数据维度,每种数据维度对应所述第一算子的一个计算路径。
一种可能的实施方式中,列表生成单元,还用于:在确定所述中间算子列表中不存在与当前算子的算子名称相同的算子的情况下,在所述中间算子列表中创建第二数据;其中,所述第二数据用于指示所述当前算子的算子名称和第一数据维度;基于创建所述第二数据后的中间算子列表确定所述目标算子列表。
一种可能的实施方式中,列表生成单元,还用于:在确定所述中间算子列表中存在所述当前算子的依赖算子的情况下,在所述中间算子列表中建立所述当前算子和所述依赖算子之间的依赖关系;其中,所述依赖算子的输出数据为所述当前算子的输入数据;基于建立所述依赖关系后的中间算子列表确定所述目标算子列表。
一种可能的实施方式中,检查单元,还用于:获取算子融合规则;基于所述目标算子列表中算子之间的依赖关系,确定满足所述算子融合规则的目标算子;按照所述算子融合规则对所述目标算子进行融合,得到融合算子;基于所述融合算子对所述目标算子列表进行检查,得到检查结果。
一种可能的实施方式中,检查单元,还用于:在确定出所属于各个数据维度的目标算子均按照所述算子融合规则进行融合之后,将所述目标算子列表中的目标算子替换为所述融合算子,得到替换后目标算子列表;对所述替换后目标算子列表进行检查,得到所述检查结果。
一种可能的实施方式中,检查单元,还用于:将所述目标算子列表和所述硬件设备的支持算子列表进行比对,并根据比对结果确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子;和/或,基于所述硬件设备对所述目标算子列表中每个算子所对应计算操作的处理时长,确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
实施例三
对应于图1中的算子检测方法,本公开实施例还提供了一种计算机设备600,如图6所示,为本公开实施例提供的计算机设备600结构示意图,包括:
处理器61、存储器62、和总线63;存储器62用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换,当所述计算机设备600运行时,所述处理器61与所述存储器62之间通过总线63通信,使得所述处理器61执行以下指令:
获取神经网络模型的模型文件;
基于所述模型文件确定神经网络模型中各网络层的结构描述信息;
对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系;
对所述目标算子列表进行检查,得到检查结果;通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的算子检测方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的算子检测方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的算子检测方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种算子检测方法,其特征在于,包括:
获取神经网络模型的模型文件;
基于所述模型文件确定神经网络模型中各网络层的结构描述信息;
对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系;
对所述目标算子列表进行检查,得到检查结果;通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
2.根据权利要求1所述的方法,其特征在于,所述对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,包括:
根据所述神经网络模型的前向计算顺序,对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层中各算子的算子名称、各算子的输入输出的数据维度和各算子的依赖算子;其中,所述依赖算子的输出数据为该算子的输入数据;
基于所述算子名称、所述数据维度和所述依赖算子,确定所述各网络层中算子的算子信息。
3.根据权利要求1所述的方法,其特征在于,所述基于每个所述网络层的算子信息生成目标算子列表,包括:
在确定中间算子列表中存在与当前算子的算子名称相同,且与所述当前算子的输入输出的第一数据维度不相同的第一算子情况下,在所述中间算子列表中与所述第一算子相关联的第一数据中添加所述第一数据维度;
基于添加所述第一数据维度后的中间算子列表确定所述目标算子列表;所述第一数据用于指示所述第一算子的输入输出的各种数据维度,每种数据维度对应所述第一算子的一个计算路径。
4.根据权利要求3所述的方法,其特征在于,所述基于每个所述网络层的算子信息生成目标算子列表,包括:
在确定所述中间算子列表中不存在与当前算子的算子名称相同的算子的情况下,在所述中间算子列表中创建第二数据;其中,所述第二数据用于指示所述当前算子的算子名称和第一数据维度;
基于创建所述第二数据后的中间算子列表确定所述目标算子列表。
5.根据权利要求3或4所述的方法,其特征在于,所述基于每个所述网络层的算子信息生成目标算子列表,包括:
在确定所述中间算子列表中存在所述当前算子的依赖算子的情况下,在所述中间算子列表中建立所述当前算子和所述依赖算子之间的依赖关系;其中,所述依赖算子的输出数据为所述当前算子的输入数据;
基于建立所述依赖关系后的中间算子列表确定所述目标算子列表。
6.根据权利要求1所述的方法,其特征在于,所述对所述目标算子列表进行检查,得到检查结果,包括:
获取算子融合规则;
基于所述目标算子列表中算子之间的依赖关系,确定满足所述算子融合规则的目标算子;
按照所述算子融合规则对所述目标算子进行融合,得到融合算子;
基于所述融合算子对所述目标算子列表进行检查,得到检查结果。
7.根据权利要求6所述的方法,其特征在于,所述基于所述融合算子对所述目标算子列表进行检查,得到检查结果,包括:
在确定出所属于各个数据维度的目标算子均按照所述算子融合规则进行融合之后,将所述目标算子列表中的目标算子替换为所述融合算子,得到替换后目标算子列表;
对所述替换后目标算子列表进行检查,得到所述检查结果。
8.根据权利要求1所述的方法,其特征在于,所述对所述目标算子列表进行检查,得到检查结果,包括:
将所述目标算子列表和所述硬件设备的支持算子列表进行比对,并根据比对结果确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子;
和/或
基于所述硬件设备对所述目标算子列表中每个算子所对应计算操作的处理时长,确定所述目标算子列表中能够通过所述硬件设备执行相应计算操作的算子。
9.一种算子检测装置,其特征在于,包括:
获取单元,用于获取神经网络模型的模型文件;
确定单元,用于基于所述模型文件确定神经网络模型中各网络层的结构描述信息;
列表生成单元,用于对每个所述网络层的结构描述信息进行遍历,得到每个所述网络层的算子信息,并基于每个所述网络层的算子信息生成目标算子列表;所述算子信息用于指示各网络层中算子的属性信息和算子之间的依赖关系;
检查单元,用于对所述目标算子列表进行检查,得到检查结果;通过所述检查结果确定能够通过所述神经网络模型的硬件设备执行相应计算操作的算子。
10.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至8任一项所述的算子检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310451059.1A CN116629330B (zh) | 2023-04-24 | 2023-04-24 | 一种算子检测方法、装置以及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310451059.1A CN116629330B (zh) | 2023-04-24 | 2023-04-24 | 一种算子检测方法、装置以及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116629330A true CN116629330A (zh) | 2023-08-22 |
CN116629330B CN116629330B (zh) | 2024-04-16 |
Family
ID=87612466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310451059.1A Active CN116629330B (zh) | 2023-04-24 | 2023-04-24 | 一种算子检测方法、装置以及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116629330B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076282A (zh) * | 2023-10-16 | 2023-11-17 | 北京大学 | 硬件算子时间性能的检测方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109697500A (zh) * | 2018-12-29 | 2019-04-30 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112686378A (zh) * | 2020-12-23 | 2021-04-20 | 展讯通信(上海)有限公司 | 神经网络的计算部署方法及装置、存储介质、计算机设备 |
CN113326942A (zh) * | 2020-02-28 | 2021-08-31 | 上海商汤智能科技有限公司 | 模型推理方法及装置、电子设备和存储介质 |
WO2022135028A1 (zh) * | 2020-12-25 | 2022-06-30 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
CN115659281A (zh) * | 2022-11-16 | 2023-01-31 | 之江实验室 | 一种自适应加速算子融合的方法及装置 |
CN115956247A (zh) * | 2020-08-26 | 2023-04-11 | 华为技术有限公司 | 神经网络模型优化方法及装置 |
-
2023
- 2023-04-24 CN CN202310451059.1A patent/CN116629330B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109697500A (zh) * | 2018-12-29 | 2019-04-30 | 北京中科寒武纪科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113326942A (zh) * | 2020-02-28 | 2021-08-31 | 上海商汤智能科技有限公司 | 模型推理方法及装置、电子设备和存储介质 |
CN115956247A (zh) * | 2020-08-26 | 2023-04-11 | 华为技术有限公司 | 神经网络模型优化方法及装置 |
CN112686378A (zh) * | 2020-12-23 | 2021-04-20 | 展讯通信(上海)有限公司 | 神经网络的计算部署方法及装置、存储介质、计算机设备 |
WO2022134948A1 (zh) * | 2020-12-23 | 2022-06-30 | 展讯通信(上海)有限公司 | 神经网络的计算部署方法及装置、存储介质、计算机设备 |
WO2022135028A1 (zh) * | 2020-12-25 | 2022-06-30 | 深圳云天励飞技术股份有限公司 | 对接tvm的方法及相关设备 |
CN115659281A (zh) * | 2022-11-16 | 2023-01-31 | 之江实验室 | 一种自适应加速算子融合的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076282A (zh) * | 2023-10-16 | 2023-11-17 | 北京大学 | 硬件算子时间性能的检测方法及装置 |
CN117076282B (zh) * | 2023-10-16 | 2023-12-15 | 北京大学 | 硬件算子时间性能的检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116629330B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7665072B2 (en) | Generating test cases for software with complex preconditions | |
CN108920135B (zh) | 一种自定义业务生成方法、装置、计算机设备及存储介质 | |
US9330411B2 (en) | High-performance graph analytics engine making recommendations using a finite state machine/FSM, bitmasks, and graphs with edges representing purchases, and vertices representing customers and products | |
US20100275186A1 (en) | Segmentation for static analysis | |
US11610117B2 (en) | System and method for adapting a neural network model on a hardware platform | |
CN106657192B (zh) | 一种用于呈现服务调用信息的方法与设备 | |
CN116629330B (zh) | 一种算子检测方法、装置以及计算机设备 | |
WO2019055378A1 (en) | METHOD AND APPARATUS FOR FINDING LONG PROCESSES IN A CODE | |
EP2771788B1 (en) | Methods and apparatuses for computing checksums for effective caching in continuous distributed builds | |
Hamza et al. | Web and mobile applications' testing using black and white box approaches | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
CN110321458B (zh) | 一种基于控制流图的数据流分析方法及装置 | |
CN110334012B (zh) | 一种风险评估方法及装置 | |
CN117369521B (zh) | 用于无人机决策的行为树模型路径生成方法、装置及设备 | |
JP2018169693A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
CN114398040A (zh) | 一种神经网络推理方法、装置、计算机设备及存储介质 | |
CN113918126A (zh) | 一种基于图算法的ai建模流程编排方法和系统 | |
CN117312167A (zh) | 一种面向低代码平台的自动化测试方法及系统 | |
CN112395199B (zh) | 基于云计算的分布式软件实例测试方法及软件开发平台 | |
CN116128525A (zh) | 一种基于模式前缀共享的多模式图匹配查询方法及装置 | |
BELL et al. | Model-based mutation testing using pushdown automata | |
Hegedüs et al. | Towards guided trajectory exploration of graph transformation systems | |
JP2017041196A (ja) | スタブ化対象判定装置、方法、及びプログラム | |
CN115543323B (zh) | 一种页面开发方法及装置 | |
US20080082471A1 (en) | Resolve Trace Minimization |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |