CN115794604A - 数据生成方法、装置、设备、介质及程序产品 - Google Patents
数据生成方法、装置、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN115794604A CN115794604A CN202211258813.1A CN202211258813A CN115794604A CN 115794604 A CN115794604 A CN 115794604A CN 202211258813 A CN202211258813 A CN 202211258813A CN 115794604 A CN115794604 A CN 115794604A
- Authority
- CN
- China
- Prior art keywords
- test case
- data
- operator
- current
- generation mode
- 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
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012360 testing method Methods 0.000 claims abstract description 341
- 238000013507 mapping Methods 0.000 claims description 39
- 238000004590 computer program Methods 0.000 claims description 11
- 239000002699 waste material Substances 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 15
- 238000005259 measurement Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 210000004027 cell Anatomy 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 210000002364 input neuron Anatomy 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种数据生成方法、装置、设备、介质及程序产品,该方法包括:响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;所述当前算子位于目标网络模型中;根据所述当前线程标识判断当前线程是否具有对应的测例生成模式栈;若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈;根据所述开关数据的取值确定是否生成当前算子的测例数据。能够有效避免冗余测例数据的生成,进而有效减少额外的存储空间,避免计算资源的浪费,有效提高所需要的测例数据的生成效率。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种数据生成方法、装置、设备、介质及程序产品。
背景技术
随着人工智能技术的发展,各种深度学习模型、机器学习模型等网络模型被广泛应用。具体可应用在分类场景,识别场景,预测场景中。为了使网络模型在应用中具有更高的准确率,需要对网络模型进行分析。
其中网络模型是由多个计算单元组合组成的,每个计算单元称为算子(英文为:Operator,简称Op)。在对网络模型进行分析时,需要运行网络模型,并根据运行网络模型中算子的测例数据来确定网络模型是否存在问题。所以在对网络模型进行分析时需要生成算子的测例数据,并导出到文件中。
但由于在网络模型中,同一个算子可能会在不同的网络模型分支中使用,目前对生成测例数据的算子进行配置时,会造成上述情况中生成不需要的冗余测例数据,对于冗余测例数据的存储会增加额外的存储空间,并且会浪费计算资源,降低测例数据的生成效率。
发明内容
本申请实施例提供一种数据生成方法、装置、设备、介质及程序产品,用以解决现有技术中冗余测例数据的存储会增加额外的存储空间,并且会浪费计算资源,降低测例数据的生成效率技术问题。
第一方面,本申请提供一种数据生成方法,包括:
响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;所述当前算子位于目标网络模型中;
根据所述当前线程标识判断当前线程是否具有对应的测例生成模式栈;
若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈;
根据所述开关数据的取值确定是否生成当前算子的测例数据。
第二方面,本申请提供一种数据生成装置,包括:
获取模块,用于响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;所述当前算子位于目标网络模型中;
判断模块,用于根据所述当前线程标识判断当前线程是否具有对应的测例生成模式栈;
写入模块,若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈;
判断模块,还用于根据所述开关数据的取值确定是否生成当前算子的测例数据。
第三方面,本申请实施例提供一种数据生成设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被至少一个处理器执行时,实现如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法。
本申请实施例提供的数据生成方法、装置、及相关产品,通过响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;所述当前算子位于目标网络模型中;根据所述当前线程标识判断当前线程是否具有对应的测例生成模式栈;若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈;根据所述开关数据的取值确定是否生成当前算子的测例数据。由于对于在目标网络模型中的每个算子,在通过初始生成模式确定要生成测例数据后,通过维护执行该算子的线程与对应的测例生成模式栈,以及测例生成模式栈中的开关数据,能够为每个算子在执行时确定是否生成对应的测例数据。即使相同算子在不同的网络模型分支中,在初始生成模式为均生成测例数据,也能够通过执行相同算子分别的线程对应的测例生成模式栈中的开关数据取值来分别控制是否生成测例数据,能够有效避免冗余测例数据的生成,进而有效减少额外的存储空间,避免计算资源的浪费,有效提高所需要的测例数据的生成效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为本申请一个实施例提供的数据生成方法的应用场景图;
图2为本申请一实施例提供的数据生成方法的流程图;
图3为本申请再一实施例提供的数据生成方法的流程图;
图4为本申请还一实施例提供的数据生成方法的流程图;
图5为本申请实施例提供的数据生成方法中嵌入算子的数据生成原理图;
图6为本申请一个实施例提供的数据生成装置的结构示意图;
图7为本申请一个实施例提供的数据生成设备的结构示意图;
图8是示出根据本申请实施例的板卡的结构图;
图9是示出根据本申请实施例的组合处理装置的结构图;
图10是示出根据本申请实施例的单核计算装置的内部结构示意图;
图11是示出根据本申请实施例的多核计算装置的内部结构示意图;
图12是示出根据本申请实施例的处理器核的内部结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
为了清楚理解本申请的技术方案,首先对现有技术的方案进行详细介绍。
目前对网络模型进行分析时,需要运行网络模型,并根据运行网络模型中算子的测例数据来确定网络模型是否存在问题。所以在对网络模型进行分析时需要生成影响网络模型运行时的关键算子的测例数据,并导出到文件中。
但由于在网络模型中,同一个算子可能会在不同的网络模型分支中使用。如基于卷积神经网络模型中,卷积算子会被频繁使用。所以会出现在不同的网络模型分支中使用的情况。同一个算子在不同的网络模型分支中使用时,会出现对应的测例数据不同的情况。但是对网络模型进行分析时,会有只对一个网络模型分支中该算子生成测例数据的需求,但目前对生成测例数据的算子进行配置时,只会对算子进行区分,而不会进行不同网络模型分支的区分,所以就导致了在网络模型中存在于不同网络模型分支中的同一算子,都会生成测例数据,造成不需要的冗余测例数据的产生。
那么在生成测例数据,有冗余测例数据产生时,会有大量的读写操作,所以耗费大量的读写数据时间,浪费大量的计算资源,进而降低测例数据的生成效率。并且在将测例数据存储起来时会占据大量的存储空间。
所以在面对现有技术中的技术问题时,可对目标网络模型中的每个算子是否生成测例数据进行各自维护。具体地,在确定目标网络模型中要执行的每个算子对应测例数据的初始生成模式是生成测例数据后,可通过维护执行该算子的线程与对应的测例生成模式栈,以及测例生成模式栈中的开关数据,来为每个算子在执行时确定是否生成对应的测例数据。具体地,可获取执行当前算子的当前线程的标识,若确定当前线程具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈。若确定开关数据的取值为生成测例数据的取值,则生成当前算子的测例数据,若确定开关数据的取值为不生成测例数据的取值,则不生成当前算子的测例数据。所以即使相同算子在不同的网络模型分支中,在初始生成模式为均生成测例数据,也能够通过执行相同算子分别的线程对应的测例生成模式栈中的开关数据取值来分别控制是否生成测例数据,能够有效避免冗余测例数据的生成,进而有效减少额外的存储空间,避免计算资源的浪费,有效提高所需要的测例数据的生成效率。
图1为本申请一个实施例提供的数据生成方法的应用场景图,如图1所示,本申请的应用场景中可包括执行目标网络模型的电子设备1,该电子设备1也用于执行本申请的数据生成方法。具体地,该电子设备包括客户端10,用户可通过客户端10对目标网络模型中算子的初始生成模式进行配置,并且用户还可对配置初始生成模式为生成测例数据的每个算子的生成测例数据的开关数据的取值进行配置。在电子设备1中存储有目标网络模型11,并且在电子设备1中具有一个预设关联容器12,在预设关联容器12中存储有多个线程标识与具有映射关系的测例生成模式栈。如在图1中包括三个线程,分分别为线程a,b和c。具有映射关系的测例生成模式栈对应为测例生成模式栈a,b和c。电子设备1获取客户端中对目标网络模型中算子是否生成测例数据的配置信息,电子设备运行目标网络模型11。在运行到配置的测例数据初始生成模式为生成测例数据的算子时,根据当前线程标识判断当前线程是否具有对应的测例生成模式栈;若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈,根据开关数据的取值确定是否生成当前算子的测例数据。如开关数据的取值为1,则表示生成当前算子的测例数据,则生成当前算子的测例数据,并将生成的测例数据存储到预设的文件中。示例性的,如图1中,在目标网络模型11中包括4个算子。在获取到当前孙子4配置的测例数据初始生成模式为生成测例数据后,确定运行当前算子4的线程为线程c,确定预设关联容器中包括线程c,则将当前算子4生成测例数据的开关数据写入到测例模式栈c中,以确定当前算子4是否生成测例数据。
下面以具体地实施例对本发明的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图2为本申请一实施例提供的数据生成方法的流程图,如图2所示,本实施例提供的数据生成方法的执行主体为数据生成装置。在实际应用中,该数据生成装置可以通过计算机程序实现,也可以通过存储有相关计算机程序的介质,例如U盘和/或光盘等实现;或者,还可以通过集成或安装有相关计算机程序的实体装置实现,例如芯片、板卡、电子设备等。则本实施例提供的数据生成方法包括以下步骤:
步骤201,响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;当前算子位于目标网络模型中。
本实施例中,目标网络模型为需要进行分析的网络模型,该目标网络模型可以为深度学习模型、机器学习模型等,本实施例中对此不做限定。
其中,目标网络模型是由多个计算单元组成的,每个计算单元称为算子。在执行目标网络模型中的每个算子时,都要确定好输入数据,输入数据的规模以及算子中的参数等,并且在执行完算子后,会有对应的输出数据。那么执行算子时的输入数据,输入数据的规模、算子中的参数以及输出数据中的至少一种数据为算子的测例数据。
本实施例中,生成测例数据的目的是为了对目标网络模型进行分析,以对目标网络模型进行调优,具体的调优过程可以为提高目标网络模型在推理过程中的准确率,还可以为降低目标网络模型在训练过程中的复杂度等。本实施例中对此不做限定。
所以本实施例中,在执行目标网络模型前,需要先对目标网络模型中哪些算子生成测例数据进行配置。配置的需要生成测例数据的算子可以为具体的至少一个算子,也可以为至少一类算子或者目标网络模型中的全部算子,本实施例中对此不做限定。
而在对算子是否生成测例数据进行配置时需要配置两部分内容,第一部分为配置目标网络模型中初步需要生成测例数据的算子,即初始生成模式为生成测例数据的算子。第二部分为在配置了初始生成模式为生成测例数据的算子,在本次执行目标网络模型时这个算子是否要生成测例数据,第二部分的配置可称为控制本次执行目标网络模型时这个算子是否生成测例数据的配置。
可选地,第一部分的配置信息和第二部分的配置信息均可采用全局变量来表示。
具体地,第一部分的配置信息可在对应的全局变量中存储需要生成测例数据的算子标识,以及需要生成的测例数据的类型。其中,测例数据的类型可以为输入数据,输入数据的规模、算子中的参数以及输出数据中的至少一种。
具体地,第二部分的配置信息可在对应的全局变量中存储生成测例数据的开关数据,在开关数据取值为第一预设数值时,表示不生成测例数据。在开关数据取值为第二预设数值时,表示生成测例数据。
其中,第一预设数值可以为0,第二预设数值可以为1。
具体地,本实施例中,在执行目标网络模型时,对于在执行目标网络模型中的当前算子时,首先要获取初始生成模式对应的全局变量,通过判断当前算子的标识是否存在于对应的全局变量存储的算子标识中,来确定当前算子的初始生成模式是否为生成测例数据。具体的,若确定当前算子的标识存在于对应的全局变量存储的算子标识中,则确定当前算子对应的初始生成模式为生成测例数据。若确定当前算子的标识不存在于对应全局变量存储的算子标识中,则确定当前算子对应的初始生成模式为不生成测例数据。
可以理解的是,若确定当前算子对应的初始生成模式为不生成测例数据,则不再执行本实施例提供的数据生成方法的后续方案。若确定当前算子对应的初始生成模式为生成测例数据,则继续执行本实施例提供的数据生成方法的后续方案。
需要说明的是,在执行目标网络模型时,是采用一个进程来执行的。但由于目标网络模型可以存在多个网络模型分支,所以可采用不同的线程来执行不同的网络模型分支。在每个网络模型分支中具有至少一个算子,所以执行网络模型中在不同网络模型分支中的算子时也可采用不同的线程。所以本实施例中,在确定当前算子配置的测例数据初始生成模式为生成测例数据后,获取执行当前算子对应的当前线程标识。
其中,当前线程标识可以为当前线程在整个进程中的序号或其他表示唯一线程的信息。
步骤202,根据当前线程标识判断当前线程是否具有对应的测例生成模式栈。
本实施例中,在执行目标网络模型的过程中,在采用线程执行第一个算子时,可将该线程标识与对应的测例生成模式栈进行关联存储。关联存储的测例生成模式栈用于维护第一个算子的第二部分的配置信息,以在执行第一个算子的过程中或第一个算子执行结束后确定是否生成第一个算子的测例数据。在第一个算子执行完后,可将测例生成模式栈中位数的第一个算子的第二部分的配置信息删除,若第二个算子仍然采用相同的线程来执行,则继续采用关联存储的测例生成模式栈来维护第二个算子的第二部分的配置信息,以在执行第二个算子的过程中或第二个算子执行结束后确定是否生成第二个算子的测例数据。依次类推。直到在执行到第N个算子时,采用了一个新的线程执行第N个算子,那么可为该新的线程创建一个对应的测例生成模式栈,将该新的线程标识与对应的测例生成模式栈进行关联存储,来维护第N个算子的第二部分的配置信息。
所以在执行目标网络模型的过程中,会创建出至少一个线程标识与对应的测例生成模式栈的映射关系。在对应的测例生成模式栈中会维护该线程执行的当前算子的第二部分的配置信息,以在执行当前算子的过程中或当前算子执行结束后确定是否生成当前算子的测例数据。
所以本实施例中,在获取到执行当前算子对应的当前线程标识后,判断当前线程标识是否有对应的具有对应的测例生成模式栈。在判断当前线程标识是否有对应的具有对应的测例生成模式栈的方式可以为:判断已经创建的线程标识中是否具有当前线程标识。若确定具有当前线程标识,则确定当前线程具有对应的测例生成模式栈。若确定不具有当前线程标识,则确定当前线程具有对应的测例生成模式栈。
步骤203,若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈。
本实施例中,若确定具有对应的测例生成模式栈,则如步骤202,在测例生成模式栈中是空的,获取当前算子第二部分的配置信息,将第二部分的配置信息,即表示本次运行目标网络模型当前算子是否生成测例数据的开关数据写入到对应的测例生成模式栈。
其中,当前算子是否生成测例数据的开关数据的取值可以为第一预设数值或第二预设数值。
步骤204,根据开关数据的取值确定是否生成当前算子的测例数据。
可选地,本实施例中,在进入当前算子的接口,准备执行当前算子时,对开关数据的取值进行解析,若确定开关数据的取值为第一预设数值,则确定不生成当前算子的测例数据的输入数据。若确定开关数据的取值为第二预设数值,则确定生成当前算子的测例数据的输出数据。在执行完当前算子后,对开关数据的取值进行解析,若取值为第一预设数值,则确定不生成当前算子的测例数据的输出数据。若取值为第二预设数值,则确定生成当前算子的测例数据的输出数据。
可以理解的是,无论在准备执行当前算子,还是已经执行完当前算子,对应的开关数据的取值均不会变,所以可只在进入当前算子的接口时,就可对开关数据的取值进行解析,确定是否生成当前算子的测例数据。或者可只在执行完当前算子后,对开关数据的取值进行解析,确定是否生成当前算子的测例数据,而具体生成哪些测例数据可通过第一部分的配置信息来确定。
在根据开关数据的取值确定是否生成当前算子的测例数据时,若确定开关数据的取值为第一预设数值,则确定不生成当前算子的测例数据;若确定开关数据的取值为第二预设数值,则确定生成当前算子的测例数据。
本实施例提供的数据生成方法,通过响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;当前算子位于目标网络模型中;根据当前线程标识判断当前线程是否具有对应的测例生成模式栈;若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈;根据开关数据的取值确定是否生成当前算子的测例数据。由于对于在目标网络模型中的每个算子,在通过初始生成模式确定要生成测例数据后,通过维护执行该算子的线程与对应的测例生成模式栈,以及测例生成模式栈中的开关数据,能够为每个算子在执行时确定是否生成对应的测例数据。即使相同算子在不同的网络模型分支中,在初始生成模式为均生成测例数据,也能够通过执行相同算子分别的线程对应的测例生成模式栈中的开关数据取值来分别控制是否生成测例数据,能够有效避免冗余测例数据的生成,进而有效减少额外的存储空间,避免计算资源的浪费,有效提高所需要的测例数据的生成效率。
实施例二
图3为本申请再一实施例提供的数据生成方法的流程图,如图3所示,本实施例提供的数据生成方法,在实施例一提供的数据生成方法的基础上,对步骤202进行进一步细化,并且还包括了其他步骤,则本实施例提供的数据生成方法还包括以下步骤:
步骤301,获取预设的关联容器中存储的已执行算子对应的线程标识及具有映射关系的测例生成模式栈。
其中,测例生成模式栈是用于存储对应的线程执行算子生成测例数据的开关数据对应的堆栈,该测例生成模式栈可采用容器(英文为vector)表示,并且测例生成模式栈遵从数据先进后出的原则,即向测例生成模式栈栈写入新数据称作进栈,把新数据放到栈顶数据的上面,使之成为新的栈顶数据;从测例生成模式栈删除数据又称作出栈,它是把栈顶数据删除掉,使其相邻的数据成为新的栈顶数据。
步骤302,判断当前线程标识是否与任意一个已执行算子对应的线程标识相匹配。
其中,已执行算子为在当前算子之前采用线程已经执行完的算子。
具体地,可采用预设的关联容器(英文为:unordered-map)存储已执行算子对应的线程标识与测例生成模式栈的映射关系。若多个已执行算子对应的线程为同一个线程,则在预设的关联容器中,可只存储一个该线程标识与测例生成模式栈的映射关系。本实施例中,将当前线程标识与预设关联容器中存储的线程标识进行对比,判断在预设关联容器中是否包括当前线程标识。若确定包括当前线程标识,则确定当前线程标识与任意一个已执行算子对应的线程标识相匹配。若确定不包括当前线程标识,则确定当前线程标识不与任意一个已执行算子对应的线程标识相匹配。
在步骤302之后,若是,则执行步骤303,否则执行步骤305。
步骤303,确定当前线程具有对应的测例生成模式栈。
步骤304,将相匹配的已执行算子对应的线程标识具有映射关系的测例生成模式栈确定为当前线程标识对应的测例生成模式栈。
本实施例中,若确定当前线程标识与任意一个已执行算子对应的线程标识相匹配,则说明当前线程具有对应的测例生成模式栈,则把将相匹配的已执行算子对应的线程标识具有映射关系的测例生成模式栈确定为当前线程标识对应的测例生成模式栈,那么该测例生成模式栈可用于维护当前算子的第二部分的配置信息,以在执行第二个算子的过程中确定是否生成第二个算子的测例数据。
步骤305,确定当前线程不具有对应的测例生成模式栈。
步骤306,在预设的关联容器中创建当前线程具有映射关系的测例生成模式栈;将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
本实施例中,若确定当前线程标识不与任意一个已执行算子对应的线程标识相匹配,则确定当前线程不具有对应的测例生成模式栈,则需要为当前线程创建具有映射关系的测例生成栈。
在为当前线程创建具有映射关系的测例生成栈时,在预设关联容器库中,可首先将当前线程标识写入,然后创建一个测例生成模式栈,并建立当前线程标识与新创建的测例生成模式栈的映射关系。
可选地,本实施例中,步骤306中将当前线程标识与具有映射关系的测例生成模式栈进行关联存储,包括:
采用键值对的形式将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
本实施例中,可在预设关联容器中,可将当前线程标识作为键,将新创建的测例生成模式栈作为值,以键值对的方式建立当前线程标识与新创建的测例生成模式栈的映射关系,并将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
本实施例提供的数据生成方法,在根据当前线程标识判断当前线程是否具有对应的测例生成模式栈时,获取预设的关联容器中存储的已执行算子对应的线程标识及具有映射关系的测例生成模式栈;判断当前线程标识是否与任意一个已执行算子对应的线程标识相匹配;若确定当前线程标识与任意一个已执行算子对应的线程标识相匹配,则确定当前线程具有对应的测例生成模式栈,将相匹配的已执行算子对应的线程标识具有映射关系的测例生成模式栈确定为当前线程标识对应的测例生成模式栈。若确定当前线程标识不与任意一个已执行算子对应的线程标识相匹配,则确定当前线程不具有对应的测例生成模式栈。在预设的关联容器中创建当前线程具有映射关系的测例生成模式栈;将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。在预设关联容器中并不是为目标网络模型中的每个算子关联存储对应的测例生成模式栈,而是为执行目标网络模型中不同的线程关联存储对应的测例生成模式栈,可有效减少存储数据量,节省存储空间。
本实施例中,在将当前线程标识与具有映射关系的测例生成模式栈进行关联存储时,采用键值对的形式将当前线程标识与具有映射关系的测例生成模式栈进行关联存储,能够快速建立当前线程标识与测例生成模式栈的映射关系,并且有效减少存储空间。
目前在网络模型中还会存在一些嵌套算子的情况。如算子A调用算子B,算子B中调用算子C,算子C中调用算子D,那么算子A、B、C、D就构成了嵌套算子的情况。现有技术中在对算子A配置生成测例数据的功能后,默认嵌套算子中的多个算子均会生成测例数据。如上述示例中,算子A、B、C、D均会生成测例数据。由于对网络模型进行分析时,只需要获取算子A的测例数据,B、C、D的测例数据并不是需要的测例数据,所以也会导致冗余测例数据的产生。那么在生成测例数据,有冗余测例数据产生时,会有大量的读写操作,所以耗费大量的读写数据时间,浪费大量的计算资源,进而降低测例数据的生成效率。并且在将测例数据存储起来时会占据大量的存储空间。
本申请在上述实施例的基础上,又提供了解决嵌套算子生成冗余测例数据的问题。
实施例三
图4为本申请还一实施例提供的数据生成方法的流程图,如图4所示,本实施例提供的数据生成方法包括以下步骤:
步骤401,响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识。
步骤401的实现方式与步骤201的实现方式类似,再次不在一一赘述。
步骤402,判断当前线程标识是否在预设关联容器中。若否,则执行步骤403,否则执行步骤404。
本实施例中,将当前线程标识与预设关联容器中存储的线程标识进行对比,若确定当前线程标识在预设关联容器中,即若确定当前线程标识与任意一个已执行算子对应的线程标识相匹配,则确定当前线程具有对应的测例生成模式栈,执行步骤404。否则若确定当前线程标识不与任意一个已执行算子对应的线程标识相匹配,则确定当前线程不具有对应的测例生成模式栈,则执行步骤403。
步骤403,在预设的关联容器中创建当前线程具有映射关系的测例生成模式栈,将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
本实施例中,步骤403的实现方式与步骤306的实现方式类似,在此不在一一赘述。
步骤404,判断测例生成模式栈是否为空。若是,则执行步骤405,否则执行步骤406。
需要说明的是,若确定当前线程标识在预设关联容器中,即若确定当前线程标识具有对应的测例生成模式栈,则判断测例生成模式栈是否为空。或者若确定当前线程标识不在预设关联容器中,在创建了当前线程具有映射关系的测例生成模式栈后也可判断测例生成模式栈是否为空。
步骤405,将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈。
步骤406,将第一预设数值写入到对应的测例生成模式栈;第一预设数值表示控制不生成测例数据的数值。
本实施例中,若当前算子是嵌套算子中的最外围的算子或者不是嵌套算子而是一个独立的算子,则测例生成模式栈为空。将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈,以便在执行完当前算子后根据写入的当前算子生成测例数据的开关数据的取值是否生成当前算子的测例数据。
若当前算子不是嵌套算子中的最外围的算子而是被最外围算子调用或者被除了最外围算子之外的算子所调用的算子,则在测例生成模式栈中不为空。若调用算子是最外围的算子,则在测例生成模式栈中存储的数据为一个,并且为最外围的算子生成测例数据的开关数据。若调用算子是除了最外围算子之外的算子,则在测例生成模式栈中存储的数据为多个,最底层的数据为最外围的算子生成测例数据的开关数据。上层的数据为嵌套算子中在当前算子外围的算子对应的生成测例数据的开关数据。由于嵌套算子除了最外围的算子外,其他算子的测例数据一般在对目标网络模型分析时是不需要的,所以上层的数据可以为已经写入的表示不生成测例数据的第一预设数值。
那么本实施例中,若确定测例生成模式栈不为空,则说明当前算子为被调用的算子,那么对于当前算子而言,一般在对目标网络模型分析时是不需要的,所以将表示控制不生成测例数据的第一预设数值写入到对应的测例生成模式栈,以便在执行完当前算子后,在确定测例生成模式栈中处于栈顶的第一个数据取值为第一预设数值时,不生成当前算子的测例数据。
步骤407,在执行完当前算子后,判断测例生成模式栈中的第一个数据取值是否为第一预设数值。若是,在执行步骤408,否则执行步骤409。
步骤408,确定不生成当前算子的测例数据。
步骤409,确定生成当前算子的测例数据。
本实施例中,在当前算子执行过程以及执行完毕后,在测例生成模式栈中处于栈顶的第一个数据是基于当前算子所写入的数据,所以在执行完当前算子后,若确定测例生成模式栈中的第一个数据取值为第一预设数值,则确定不生成当前算子的测例数据,若确定测例生成模式栈中的第一个数据取值不为第一预设数值,则确定生成当前算子的测例数据。
其中,在当前算子为被调用的算子,在测例生成模式栈中的第一个数据取值就为第一预设数值,所以确定不生成当前算子的测例数据。或者虽然当前算子为独立的算子或者为嵌套算子中的最外围算子,在测例生成模式栈中的第一个数据为生成测例数据的开关数据,但由于生成测例数据的开关数据的取值为第一预设数值,所以也确定不生成当前算子的测例数据。
步骤410,将测例生成模式栈中的第一个数据删除。
本实施例中,由于当前算子执行结束,所以需要根据堆栈先进后出的原则,将测例生成模式栈中位于栈顶的第一个数据删除,以便在执行下一个算子时,仍然能够根据测例生成模式栈中的第一个数据准确判断是否生成测例数据。
步骤411,判断测例生成模式栈中是否还存在数据,若是,则执行步骤407,否则结束。
本实施例中,判断测例生成模式栈中是否还存在数据,若确定存在数据,则说明当前算子是被调用的算子,在当前算子在执行完并删除了在测例生成模式栈中对应的数据后,在测例生成模式栈中的第一个数据为调用前一个执行完的算子的算子。那么对于这个算子,将其确认为当前算子,并执行步骤407到步骤411。直到判断出测例生成模式栈中不存在数据再结束。
为了更清楚的说明本实施例的技术方案,以算子A调用算子B,算子B中调用算子C,算子C中调用算子D进行说明。其中,算子A为该示例性说明中的嵌套算子的最外围算子。B为A被调用的算子,C为B被调用的算子,D为C被调用的算子。
如图5所示,采用当前线程a执行算子A,在对应的测例生成模式栈中为空,将算子A生成测例数据的开关数据写入到对应的测例生成模式栈。其中,算子A的开关数据的取值为第二预设数值1。在执行算子A的过程中,算子A调用了算子B,算子B作为了当前算子。由于算子A没有执行结束,所以算子B仍然采用线程a执行。而在对应的测例生成模式栈中不为空。则将第一预设数值0写入到测例生成模式栈中。在执行算子B的过程中,调用了算子C,算子C作为了当前算子。算子C仍然采用线程a执行。而在对应的测例生成模式栈中不为空。则继续将第一预设数值0写入到测例生成模式栈中。在执行算子C的过程中,调用了算子D,D作为了当前算子。算子D仍然采用线程a执行。而在对应的测例生成模式栈中不为空。则继续将第一预设数值0写入到测例生成模式栈中。在算子D执行完后,获取测例生成模式栈中的第一个数据,确定取值为0,则确定不生成算子D的测例数据。将测例生成模式栈中的第一个数据0删除。执行完算子D后,继续执行算子C,在算子C执行完后,获取测例生成模式栈中的第一个数据,确定取值为0,则确定不生成算子C的测例数据。将测例生成模式栈中的第一个数据0删除。继续执行算子B,在算子B执行完后,获取测例生成模式栈中的第一个数据,确定取值为0,则确定不生成算子B的测例数据,将测例生成模式栈中的第一个数据0删除。继续执行算子A,在算子A执行完后,获取测例生成模式栈中的第一个数据,确定取值为1,则确定生成算子A的测例数据。
本实施例提供的数据生成方法,若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈时,若确定具有对应的测例生成模式栈,则判断测例生成模式栈是否为空;若确定测例生成模式栈为空,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈。在测例生成模式栈为空时,说明当前算子为嵌套算子中的最外围算子或者为独立算子,但无论当前算子是嵌套算子中的最外围算子还是独立算子,都能够在测例生成模式栈为空时,将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈,并确定出当前算子执行完后,通过当前算子生成测例数据的开关数据的取值准确确定出是否生成对应的测例数据。使本申请的数据生成方法更均有通用性。
本实施例提供的数据生成方法,若确定测例生成模式栈不为空,则将第一预设数值写入到对应的测例生成模式栈;第一预设数值表示控制不生成测例数据的数值;若在执行完当前算子后,测例生成模式栈中的第一个数据取值为第一预设数值,则确定不生成当前算子的测例数据。由于在确定测例生成模式栈不为空时,则说明当前算子为被其他算子所调用的算子,是不需要生成测例数据的,所以可将表示控制不生成测例数据的第一预设数值写入到测例生成模式栈中,该第一预设数值为测例生成模式栈的栈顶第一个数据,以在当前算子执行结束后,基于该写入的第一预设数值准确确定出被调用的算子不生成测例数据,有效避免了嵌套算子中被调用算子生成冗余测例数据的情况发生,进而进一步减少额外的存储空间,进一步提高所需要的测例数据的生成效率。
实施例四
图6为本申请一个实施例提供的数据生成装置的结构示意图,如图6所示,本实施例提供的数据生成装置60包括:获取模块61,判断模块62,写入模块63。
其中,获取模块61,用于响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;当前算子位于目标网络模型中。判断模块62,用于根据当前线程标识判断当前线程是否具有对应的测例生成模式栈。写入模块63,若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈。判断模块62,还用于根据开关数据的取值确定是否生成当前算子的测例数据。
可选地,判断模块62,在根据当前线程标识判断当前线程是否具有对应的测例生成模式栈时,具体用于:
获取预设的关联容器中存储的已执行算子对应的线程标识及具有映射关系的测例生成模式栈;判断当前线程标识是否与任意一个已执行算子对应的线程标识相匹配;若确定当前线程标识与任意一个已执行算子对应的线程标识相匹配,则确定当前线程具有对应的测例生成模式栈;若确定当前线程标识不与任意一个已执行算子对应的线程标识相匹配,则确定当前线程不具有对应的测例生成模式栈。
可选地,本实施例提供的数据生成装置还包括:确定模块。
确定模块,在判断模块确定当前线程标识与任意一个已执行算子对应的线程标识相匹配后,用于:
将相匹配的已执行算子对应的线程标识具有映射关系的测例生成模式栈确定为当前线程标识对应的测例生成模式栈。
可选地,本实施例提供的数据生成装置还包括:创建模块。
其中,创建模块,用于在判断模块确定不具有对应的测例生成模式栈后,用于:
在预设的关联容器中创建当前线程具有映射关系的测例生成模式栈;将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
创建模块,在将当前线程标识与具有映射关系的测例生成模式栈进行关联存储时,具体用于:
采用键值对的形式将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
可选地,写入模块63,具体用于:
若确定具有对应的测例生成模式栈,则判断测例生成模式栈是否为空;若确定测例生成模式栈为空,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈。
可选地,写入模块63,还用于:若确定测例生成模式栈不为空,则将第一预设数值写入到对应的测例生成模式栈;第一预设数值表示控制不生成测例数据的数值。确定模块,还用于若在执行完当前算子后,测例生成模式栈中的第一个数据取值为第一预设数值,则确定不生成当前算子的测例数据。
可选地,本实施例提供的数据生成装置还包括:删除模块。
其中,删除模块,用于判断模块在确定是否生成当前算子的测例数据后,用于:
将测例生成模式栈中的第一个数据删除。
可选地,判断模块61,在根据开关数据的取值确定是否生成当前算子的测例数据时,具体用于:
若确定开关数据的取值为第一预设数值,则确定不生成当前算子的测例数据。若确定开关数据的取值为第二预设数值,则确定生成当前算子的测例数据。
本实施例提供的数据生成方法可以执行上述任意一个实施例提供的数据生成方法,具体的原理及有益效果不再赘述。
实施例五
图7为本申请一个实施例提供的数据生成设备的结构示意图。如图7所示,本实施例提供的数据生成设备70,包括:
包括:处理器72和存储器71;其中,存储器71,用于存储程序代码;处理器72,用于调用存储器中所存储的程度代码,执行上述任意一个实施例提供的数据生成方法。相关说明可以对应参见附图中的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
其中,程序可以包括程序代码,程序代码包括计算机执行指令。存储器801可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
其中,本实施例中,存储器71和处理器72通过总线连接。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent Interconnect,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述任意一个实施例提供的数据生成方法。
本申请实施例还提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述任意一个实施例提供的数据生成方法。
本申请实施例还提供一种人工智能芯片及板卡。上述任意一个实施例提供的数据生成方法采用人工智能芯片或板卡执行。图8是示出根据本申请实施例的板卡的结构图。如图8所示,板卡80包括芯片801,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡80适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
芯片801通过对外接口装置802与外部设备803相连接。外部设备803例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备803通过对外接口装置802传递至芯片801。芯片801的计算结果可以经由对外接口装置802传送回外部设备803。根据不同的应用场景,对外接口装置802可以具有不同的接口形式,例如PCIe接口等。
板卡80还包括用于存储数据的存储器件804,其包括一个或多个存储单元805。存储器件804通过总线与控制器件806和芯片801进行连接和数据传输。板卡80中的控制器件806配置用于对芯片801的状态进行调控。为此,在一个应用场景中,控制器件806可以包括单片机(Micro Controller Unit,MCU)。
在一种可能的实现方式中,还提供了一种组合处理装置,图9是示出根据本申请实施例的组合处理装置的结构图。如图9中所示,组合处理装置90包括计算装置901、接口装置902、处理装置903和存储装置904。
计算装置901配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置902与处理装置903进行交互,以共同完成用户指定的操作。
接口装置902用于在计算装置901与处理装置903间传输数据和控制指令。例如,计算装置901可以经由接口装置902从处理装置903中获取输入数据,写入计算装置901片上的存储装置。进一步,计算装置901可以经由接口装置902从处理装置903中获取控制指令,写入计算装置901片上的控制缓存中。替代地或可选地,接口装置902也可以读取计算装置901的存储装置中的数据并传输给处理装置903。
处理装置903作为通用的处理装置,执行包括但不限于数据搬运、对计算装置901的开启和/或停止等基本控制。根据实现方式的不同,处理装置903可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前,仅就本申请的计算装置901而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置901和处理装置903整合共同考虑时,二者视为形成异构多核结构。
存储装置904用以存储待处理的数据,其可以是DRAM 904,为DDR内存,大小通常为16G或更大,用于保存计算装置901和/或处理装置903的数据。
图10中,是计算装置为单核的内部结构示意图。单核计算装置1000用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,单核计算装置1000包括三大模块:控制模块1001、运算模块1002及存储模块1003。
控制模块1001用以协调并控制运算模块1002和存储模块1003的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,IFU)10011及指令译码单元(instruction decode unit,IDU)10012。取指单元10011用以获取来自处理装置的指令,指令译码单元10012则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块1002和存储模块1003。
运算模块1002包括向量运算单元10021及矩阵运算单元10022。向量运算单元10021用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元10022负责深度学习算法的核心计算,即矩阵乘及卷积。
存储模块1003用来存储或搬运相关数据,包括神经元存储单元(neuron RAM,NRAM)10031、参数存储单元(weight RAM,WRAM)10032、直接内存访问模块(direct memoryaccess,DMA)10033。NRAM 10031用以存储输入神经元、输出神经元和计算后的中间结果;WRAM 10032则用以存储深度学习网络的卷积核,即权值;DMA 10033通过总线1004连接DRAM904,负责单核计算装置1000与DRAM 904间的数据搬运。
图11中,示出了计算装置为多核的内部结构示意图。多核计算装置1100采用分层结构设计,多核计算装置1100作为一个片上系统,其包括至少一个集群(cluster),每个集群又包括多个处理器核,换言之,多核计算装置1100是以片上系统-集群-处理器核的层次所构成的。
以片上系统的层级来看,如图11所示,多核计算装置1100包括外部存储控制器1101、外设通信模块1102、片上互联模块1103、同步模块1104以及多个集群1105。
外部存储控制器1101可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图9中的DRAM 904,从而自片外读取数据或是将数据写入。外设通信模块1102用以通过接口装置902接收来自处理装置的控制信号,启动计算装置901执行任务。片上互联模块1103将外部存储控制器1101、外设通信模块1102及多个集群1105连接起来,用以在各个模块间传输数据和控制信号。同步模块1104是一种全局同步屏障控制器(global barrier controller,GBC),用以协调各集群的工作进度,确保信息的同步。多个集群1105是多核计算装置1100的计算核心,在图中示例性地展示4个。以集群的层级来看,如图11所示,每个集群1105包括多个处理器核(IPU core)1106及一个存储核(MEM core)1107。示例性的,每个集群1105包括4个处理器核和1个存储器,存储器可以为DRAM 904。
处理器核1106在图中示例性地展示4个,本申请不限制处理器核1106的数量。每个处理器核1106类似于图12的单核计算装置1200,同样包括三大模块:控制模块1201、运算模块1202及存储模块1203。控制模块1201、运算模块1202及存储模块1203的功用及结构大致与控制模块1001、运算模块1002及存储模块1003相同,控制模块1201包括取指单元12011和指令译码单元12012。运算模块1202包括向量运算单元12021和矩阵运算单元12022。不再赘述。需特别说明的是,存储模块1203包括输入/输出直接内存访问模块(input/outputdirect memory access,IODMA)12033、搬运直接内存访问模块(move direct memoryaccess,MVDMA)12034。IODMA 12033通过广播总线1109控制NRAM 12031/WRAM 12032与DRAM904的访存;MVDMA 12034则用以控制NRAM 12031/WRAM 12032与存储单元(SRAM)1108的访存。
回到图11,存储核1107主要用以存储和通信,即存储处理器核1106间的共享数据或中间结果、以及执行集群1105与DRAM 904之间的通信、集群1105间彼此的通信、处理器核1106间彼此的通信等。在其他实施例中,存储核1107具有标量运算的能力,用以执行标量运算。
存储核1107包括SRAM 1108、广播总线1109、集群直接内存访问模块(clusterdirect memory access,CDMA)1110及全局直接内存访问模块(global direct memoryaccess,GDMA)1111。SRAM 1108承担高性能数据中转站的角色,在同一个集群1105内不同处理器核1106之间所复用的数据不需要通过处理器核1106各自向DRAM 904获得,而是经SRAM1108在处理器核1106间中转,存储核1107只需要将复用的数据从SRAM 1108迅速分发给多个处理器核1106即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。
广播总线1109、CDMA 910及GDMA 1111则分别用来执行处理器核1106间的通信、集群1105间的通信和集群1105与DRAM 904的数据传输。以下将分别说明。
广播总线1109用以完成集群1105内各处理器核1106间的高速通信,此实施例的广播总线1109支持核间通信方式包括单播、多播与广播。单播是指点对点(例如单一处理器核至单一处理器核)的数据传输,多播是将一份数据从SRAM 1108传输到特定几个处理器核1106的通信方式,而广播则是将一份数据从SRAM 1108传输到所有处理器核1106的通信方式,属于多播的一种特例。
CDMA 1110用以控制在同一个计算装置内不同集群1105间的SRAM 1108的访存。
GDMA 1111与外部存储控制器1101协同,用以控制集群1105的SRAM 1108到DRAM904的访存,或是将数据自DRAM 904读取至SRAM 1108中。从前述可知,DRAM 904与NRAM10031或WRAM 10032间的通信可以经由2个渠道来实现。第一个渠道是通过IODAM直接联系DRAM 904与NRAM 10031或WRAM 10032;第二个渠道是先经由GDMA 1111使得数据在DRAM904与SRAM 1108间传输,再经过MVDMA使得数据在SRAM 1108与NRAM 10031或WRAM 10032间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此DRAM 904与NRAM 10031或WRAM 10032间的通信通过第二个渠道可能更有效率。本申请的实施例可根据本身硬件条件选择数据传输渠道。
在其他实施例中,GDMA 1111的功能和IODMA的功能可以整合在同一部件中。本申请为了方便描述,将GDMA 1111和IODMA视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本申请类似,即属于本申请的保护范围。进一步地,GDMA1111的功能、IODMA的功能、CDMA 1110的功能、MVDMA的功能亦可以由同一部件来实现。
本申请实施例还提供一种电子设备,电子设备包括人工智能芯片或板卡。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random AccessMemory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
Claims (13)
1.一种数据生成方法,其特征在于,包括:
响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;所述当前算子位于目标网络模型中;
根据所述当前线程标识判断当前线程是否具有对应的测例生成模式栈;
若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈;
根据所述开关数据的取值确定是否生成当前算子的测例数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前线程标识判断当前线程是否具有对应的测例生成模式栈,包括:
获取预设的关联容器中存储的已执行算子对应的线程标识及具有映射关系的测例生成模式栈;
判断当前线程标识是否与任意一个已执行算子对应的线程标识相匹配;
若确定当前线程标识与任意一个已执行算子对应的线程标识相匹配,则确定当前线程具有对应的测例生成模式栈;
若确定当前线程标识不与任意一个已执行算子对应的线程标识相匹配,则确定当前线程不具有对应的测例生成模式栈。
3.根据权利要求2所述的方法,其特征在于,若确定当前线程标识与任意一个已执行算子对应的线程标识相匹配,则还包括:
将相匹配的已执行算子对应的线程标识具有映射关系的测例生成模式栈确定为当前线程标识对应的测例生成模式栈。
4.根据权利要求2所述的方法,其特征在于,若确定不具有对应的测例生成模式栈,则还包括:
在预设的关联容器中创建当前线程具有映射关系的测例生成模式栈;
将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
5.根据权利要求4所述的方法,其特征在于,所述将当前线程标识与具有映射关系的测例生成模式栈进行关联存储,包括:
采用键值对的形式将当前线程标识与具有映射关系的测例生成模式栈进行关联存储。
6.根据权利要求1所述的方法,其特征在于,所述若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈,包括:
若确定具有对应的测例生成模式栈,则判断所述测例生成模式栈是否为空;
若确定所述测例生成模式栈为空,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈。
7.根据权利要求6所述的方法,其特征在于,若确定所述测例生成模式栈不为空,则还包括;
将第一预设数值写入到对应的测例生成模式栈;所述第一预设数值表示控制不生成测例数据的数值;
若在执行完当前算子后,测例生成模式栈中的第一个数据取值为第一预设数值,则确定不生成当前算子的测例数据。
8.根据权利要求7所述的方法,其特征在于,在确定是否生成当前算子的测例数据后,还包括:
将所述测例生成模式栈中的第一个数据删除。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述根据所述开关数据的取值确定是否生成当前算子的测例数据,包括:
若确定开关数据的取值为第一预设数值,则确定不生成当前算子的测例数据;
若确定开关数据的取值为第二预设数值,则确定生成当前算子的测例数据。
10.一种数据生成装置,其特征在于,包括:
获取模块,用于响应于获取到的为当前算子配置的测例数据初始生成模式为生成测例数据,获取执行当前算子对应的当前线程标识;所述当前算子位于目标网络模型中;
判断模块,用于根据所述当前线程标识判断当前线程是否具有对应的测例生成模式栈;
写入模块,若确定具有对应的测例生成模式栈,则将当前算子生成测例数据的开关数据写入到对应的测例生成模式栈;
判断模块,还用于根据所述开关数据的取值确定是否生成当前算子的测例数据。
11.一种数据生成设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-9中任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-9中任一项所述的方法。
13.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211258813.1A CN115794604B (zh) | 2022-10-14 | 2022-10-14 | 数据生成方法、装置、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211258813.1A CN115794604B (zh) | 2022-10-14 | 2022-10-14 | 数据生成方法、装置、设备、介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794604A true CN115794604A (zh) | 2023-03-14 |
CN115794604B CN115794604B (zh) | 2024-04-19 |
Family
ID=85433024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211258813.1A Active CN115794604B (zh) | 2022-10-14 | 2022-10-14 | 数据生成方法、装置、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794604B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160062947A1 (en) * | 2014-08-29 | 2016-03-03 | Nvidia Corporation | Performing multi-convolution operations in a parallel processing system |
CN108369625A (zh) * | 2015-12-19 | 2018-08-03 | 比特梵德知识产权管理有限公司 | 用于保护多个网络端点的双重存储器内省 |
CN109948807A (zh) * | 2019-03-14 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 一种主动学习方法及装置 |
CN111858340A (zh) * | 2020-07-23 | 2020-10-30 | 深圳慕智科技有限公司 | 一种基于稳定性变换的深度神经网络测试数据生成方法 |
CN113282436A (zh) * | 2021-05-21 | 2021-08-20 | 北京达佳互联信息技术有限公司 | 事件处理方法、装置、设备以及存储介质 |
CN113608982A (zh) * | 2021-07-27 | 2021-11-05 | 远景智能国际私人投资有限公司 | 函数执行性能监测方法、装置、计算机设备及存储介质 |
CN114564374A (zh) * | 2022-02-21 | 2022-05-31 | 北京百度网讯科技有限公司 | 算子性能评估方法、装置、电子设备及存储介质 |
CN114995822A (zh) * | 2022-06-07 | 2022-09-02 | 重庆大学 | 专用于cnn加速器的深度学习编译器优化方法 |
-
2022
- 2022-10-14 CN CN202211258813.1A patent/CN115794604B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160062947A1 (en) * | 2014-08-29 | 2016-03-03 | Nvidia Corporation | Performing multi-convolution operations in a parallel processing system |
CN108369625A (zh) * | 2015-12-19 | 2018-08-03 | 比特梵德知识产权管理有限公司 | 用于保护多个网络端点的双重存储器内省 |
CN109948807A (zh) * | 2019-03-14 | 2019-06-28 | 腾讯科技(深圳)有限公司 | 一种主动学习方法及装置 |
CN111858340A (zh) * | 2020-07-23 | 2020-10-30 | 深圳慕智科技有限公司 | 一种基于稳定性变换的深度神经网络测试数据生成方法 |
CN113282436A (zh) * | 2021-05-21 | 2021-08-20 | 北京达佳互联信息技术有限公司 | 事件处理方法、装置、设备以及存储介质 |
CN113608982A (zh) * | 2021-07-27 | 2021-11-05 | 远景智能国际私人投资有限公司 | 函数执行性能监测方法、装置、计算机设备及存储介质 |
CN114564374A (zh) * | 2022-02-21 | 2022-05-31 | 北京百度网讯科技有限公司 | 算子性能评估方法、装置、电子设备及存储介质 |
CN114995822A (zh) * | 2022-06-07 | 2022-09-02 | 重庆大学 | 专用于cnn加速器的深度学习编译器优化方法 |
Non-Patent Citations (1)
Title |
---|
LIMING HU等: "Evolutionary Generation of Test Case for Deep Neural Network Based on Coverage Guidance", 《2021 IEEE INTERNATIONAL CONFERENCE ON ARTIFICIAL INTELLIGENCE TESTING》, pages 1 - 2 * |
Also Published As
Publication number | Publication date |
---|---|
CN115794604B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110689115B (zh) | 神经网络模型处理方法、装置、计算机设备及存储介质 | |
CN110674936A (zh) | 一种神经网络处理方法、装置、计算机设备及存储介质 | |
CN109416636B (zh) | 共享的机器学习数据结构 | |
US20230367722A1 (en) | Data processing device and method, and related products | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115034402A (zh) | 模型推理性能的优化方法、装置及相关产品 | |
WO2024093292A1 (zh) | 计算图的算子自动融合方法及相关产品 | |
EP3846036B1 (en) | Matrix storage method, matrix access method, apparatus and electronic device | |
CN109491934B (zh) | 一种集成计算功能的存储管理系统控制方法 | |
CN110458285B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110555522B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2023030507A1 (zh) | 编译优化方法、装置、计算机设备以及存储介质 | |
CN115794604B (zh) | 数据生成方法、装置、设备、介质及程序产品 | |
CN114580607A (zh) | 数据处理方法、装置和存储介质 | |
CN113469326A (zh) | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 | |
CN112183725A (zh) | 提供神经网络的方法、计算装置和计算机可读存储介质 | |
CN114996648A (zh) | 基于芯片的融合算子处理方法、装置及相关产品 | |
CN114661301B (zh) | 图形处理单元编译方法、装置、编译加速库和存储介质 | |
US20220147809A1 (en) | Deep learning accelerators with configurable hardware options optimizable via compiler | |
CN110458286B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
WO2023045478A1 (zh) | 图任务调度方法、执行端设备、存储介质及程序产品 | |
CN117648091A (zh) | 计算图的编译方法及相关产品 | |
CN117742715A (zh) | 访存越界检测方法、装置及存储介质 | |
CN116402091A (zh) | 面向人工智能芯片的混合引擎智能计算方法和装置 | |
CN117539823A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |