CN115586972A - 命令生成方法、装置、ai芯片、电子设备及存储介质 - Google Patents
命令生成方法、装置、ai芯片、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115586972A CN115586972A CN202211486830.0A CN202211486830A CN115586972A CN 115586972 A CN115586972 A CN 115586972A CN 202211486830 A CN202211486830 A CN 202211486830A CN 115586972 A CN115586972 A CN 115586972A
- Authority
- CN
- China
- Prior art keywords
- execution command
- network model
- memory space
- hardware execution
- hardware
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请涉及一种命令生成方法、装置、AI芯片、电子设备及存储介质,该命令生成方法包括:为待处理的网络模型分配对应的虚假内存空间;基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性;存储所述第一硬件执行命令,第一硬件执行命令用于在被进行地址替换后提供给需要运行网络模型的硬件设备执行。以此可以改善为网络模型生成硬件指令命令时容易导致内存不够用的问题。
Description
技术领域
本申请属于人工智能技术领域,具体涉及一种命令生成方法、装置、AI芯片、电子设备及存储介质。
背景技术
当需要使用AI(Artificial Intelligence,人工智能)网络进行数据处理时,需要为网络模型生成硬件能够识别的命令(即,硬件执行命令)。硬件执行命令通常需要包含或反映:操作的类型或内容、用于获取操作所需的数据源的读地址、用于存储操作运算结果的写地址等信息,处理器在将网络模型的各个操作翻译成硬件执行命令时,会用到很多内存信息。
在为网络模型生成硬件执行命令的过程中,会涉及内存资源的分配、占用,并且不同网络模型的数据会占用不同的内存空间,这样会加剧网络模型对有限内存资源的占用。尤其是在执行网络模型所需数据需要占用很大内存的时候,很容易出现内存不够用的情况,从而导致难以按照预期为网络模型翻译出硬件执行命令,进而导致硬件难以按照预期执行网络模型。此外,也可能因为这种内存不够用的情况而影响硬件在其他方面的性能。
发明内容
鉴于此,本申请的目的在于提供一种命令生成方法、装置、AI芯片、电子设备及存储介质,以改善现有技术中在为网络模型翻译生成硬件执行命令时,都需要占用很大的内存资源开销,容易导致内存不够用的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种命令生成方法,包括:为待处理的网络模型分配对应的虚假内存空间;基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性;存储所述第一硬件执行命令,所述第一硬件执行命令用于在被进行地址替换后提供给需要运行所述网络模型的硬件设备执行。
本申请实施例中,基于虚假内存空间(如用fake memory表示),将网络模型中包含的各个操作(即各个操作算子)翻译成对应的第一硬件执行命令。由于该过程是基于虚假内存空间进行的,因此不会因为命令的生成过程占用大量的真实内存空间。这样即便是为一个网络模型生成很多命令,或者,为多个网络模型翻译生成第一硬件执行命令,也不会因为在命令的生成过程中由于占用太多真实内存空间从而导致实际的真实内存空间不够用。此外,通过该方法,可以支持提前为网络模型翻译出硬件执行命令,有利于支持为一个或多个网络模型提前生成各模型分别对应的硬件执行命令,且可以避免由于提前为网络模型翻译出各操作对应的硬件执行命令而对有限的内存资源造成过多占用。
结合第一方面实施例的一种可能的实施方式,为待处理的网络模型分配对应的虚假内存空间,包括:根据执行所述网络模型所需的数据大小,分配与所述数据大小对应的虚假内存空间。
以此有利于在不过多占用硬件的真实内存资源的情况下,满足生成命令所需的要求。
结合第一方面实施例的一种可能的实施方式,在基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令之前,所述方法还包括:判断从当前时刻开始后的预设时间段内是否执行所述网络模型;在确定从当前时刻开始后的预设时间段内不执行所述网络模型时,执行步骤:基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令。
通过该实施方式,只有在确定从当前时刻开始后的预设时间段内不执行网络模型时,才基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令,这样有利于在不降低网络模型处理效率的情况下,对网络模型进行提前翻译,并且可以提高翻译效率,有利于提升对于网络模型的处理效率。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:在确定从当前时刻开始后的预设时间段内要执行所述网络模型时,基于所述真实内存空间,将所述网络模型中包含的各个操作翻译成对应的第二硬件执行命令,其中,所述第二硬件执行命令中包含的地址均为真实地址,所述真实内存空间用于存储执行所述网络模型时所需的数据;存储所述第二硬件执行命令。
通过该实施方式,在确定从当前时刻开始后的预设时间段内要执行网络模型时,直接基于真实内存空间,将网络模型中包含的各个操作翻译成对应的第二硬件执行命令,这样在需要尽快执行网络模型的情况下,避免基于虚假内存空间生成第一硬件执行命令后,又需要将第一硬件执行命令中的地址转换为执行所需的真实地址,从而能够提高即将要执行的网络模型的命令翻译效率、处理效率。
结合第一方面实施例的一种可能的实施方式,在存储所述第一硬件执行命令之后,所述方法还包括:在需要执行所述网络模型时,将执行所述网络模型所需的数据加载到所述真实内存空间;利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址;将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备,以供所述对应的硬件设备执行所述第二硬件执行命令。
通过该实施方式,便可以在保证不占用硬件的真实内存资源的情况下,又不会影响网络模型的正常使用。
结合第一方面实施例的一种可能的实施方式,利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,包括:对所述第一硬件执行命令进行识别,确定出当前包含虚假地址的部分或全部第一硬件执行命令,作为目标命令;利用所述真实内存空间对应的真实地址,替换掉所述目标命令中的虚假地址。
本申请实施例中,在进行地址替换时,通过对第一硬件执行命令进行识别,仅对包含虚假地址的第一硬件执行命令进行替换,避免出现错误替换或漏替换。
结合第一方面实施例的一种可能的实施方式,在将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备执行之后,所述方法还包括:将所述第二硬件执行命令中的真实地址替换为所述虚假内存空间对应的虚假地址,并将地址替换为虚假地址的命令进行缓存。
通过该实施方式,在将替换后的第一硬件执行命令作为第二硬件执行命令发送给对应的硬件设备执行之后,又将该命令中的真实地址替换为虚假内存空间对应的虚假地址,并缓存,这样可以释放一部分对应的真实内存空间。
结合第一方面实施例的一种可能的实施方式,基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,包括:将所述网络模型中包含的各个操作的源代码编译成各操作分别对应的指令,并基于所述虚假内存空间,获得执行所述网络模型中包含的各个操作所需的相关信息,所述相关信息包括地址信息;根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述第一硬件执行命令。
该实施方式中,通过将网络模型中包含的各个操作的源代码编译成指令,并基于虚假内存空间,获得执行网络模型中包含的各个操作所需的相关信息,之后根据各个操作的对应的指令与执行各个操作所需的相关信息,生成硬件执行命令,这样可以快速、准确地将网络模型包含的各个操作翻译成对应的硬件执行命令,并且在获得执行网络模型中包含的各个操作所需的相关信息,是基于虚拟内存空间获得的,在满足生成命令所需的要求下,不会占用硬件的真实内存资源。
结合第一方面实施例的一种可能的实施方式,不同的网络模型对应的虚假内存空间不同。
在本申请实施例中,针对不同的网络模型使用不同的虚假内存空间,从而使得后续在进行地址转换时,不会引起逻辑混乱,从而保证了命令的高效转换。
第二方面,本申请实施例还提供了一种命令生成方法,包括:在需要执行所述网络模型时,将所述网络模型对应的网络原始数据加载到真实内存空间,获取预先存储的第一硬件执行命令;其中,所述第一硬件执行命令是基于虚假内存空间对所述网络模型中包含的各个操作进行翻译得到的,所述虚假内存空间与真实内存空间具备相同属性;利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备。
结合第二方面实施例的一种可能的实施方式,在将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备执行之后,所述方法还包括:将所述第二硬件执行命令中的真实地址替换为虚假内存空间对应的虚假地址,并缓存地址替换为虚假地址的第二硬件执行命令。
第三方面,本申请实施例还提供了一种命令生成装置,包括:分配模块、翻译模块以及存储模块;分配模块,用于为待处理的网络模型分配对应的虚假内存空间;翻译模块,用于基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性;存储模块,用于存储所述第一硬件执行命令,所述第一硬件执行命令用于在被进行地址替换后提供给需要运行所述网络模型的硬件设备执行。
第四方面,本申请实施例还提供了一种命令生成装置,包括:获取模块、翻译模块、发送模块;获取模块,用于在需要执行所述网络模型时,将所述网络模型对应的网络原始数据加载到真实内存空间,获取预先存储的第一硬件执行命令;其中,所述第一硬件执行命令是基于虚假内存空间对所述网络模型中包含的各个操作进行翻译得到的,所述虚假内存空间与真实内存空间具备相同属性;翻译模块,用于利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址;发送模块,用于将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备。
第五方面,本申请实施例还提供了一种AI芯片,包括;内核和存储设备;内核,用于为待处理的网络模型分配对应的虚假内存空间,并基于所述虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性;存储设备,用于存储所述第一硬件执行命令,所述第一硬件执行命令用于在被进行地址替换后提供给需要运行所述网络模型的硬件设备执行。
第六方面,本申请实施例还提供了一种AI芯片,包括;硬件设备、存储设备、内核;存储设备,用于存储第一硬件执行命令;其中,所述第一硬件执行命令是基于虚假内存空间对网络模型中包含的各个操作进行翻译得到的,所述虚假内存空间与真实内存空间具备相同属性;内核,用于在需要执行所述网络模型时,将所述网络模型对应的网络原始数据加载到真实内存空间,获取存储于所述存储设备中的第一硬件执行命令,利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令,发送给硬件设备;所述硬件设备,用于执行第二硬件执行命令,以实现运行所述网络模型对输入数据进行处理的目的。
第七方面,本申请实施例还提供了一种电子设备,包括:存储装置、第一处理器;存储装置,用于存储待处理的网络模型;第一处理器,用于根据所述网络模型,执行上述第一方面实施例和/或第一方面实施例的任一种可能的实施方式提供的方法,或者,执行上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的方法。
第八方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法,或者,执行上述第二方面实施例和/或结合第二方面实施例的任一种可能的实施方式提供的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种命令生成方法的流程示意图。
图2示出了本申请实施例提供的另一种命令生成方法的流程示意图。
图3示出了本申请实施例提供的又一种命令生成方法的流程示意图。
图4示出了本申请实施例提供的一种电子设备的结构示意图。
图5示出了本申请实施例提供的一种命令生成装置的模块示意图。
图6示出了本申请实施例提供的又一种命令生成装置的模块示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例涉及使用网络模型(各类AI网络模型,例如各类神经网络模型)进行数据处理的应用场景,为了便于理解,下面先对本申请实施例涉及的一些概念进行介绍。
其中,神经网络模型可以是由神经单元组成的,具体可以理解为具有输入层、隐含层、输出层的神经网络模型,一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。
由于神经网络模型是使用一个或多个神经网络层(如,隐藏层、输出层等)来为接收到的输入生成输出,每个隐藏层的输出被用作下一层(如,神经网络的下一个隐藏层或输出层)的输入,神经网络的每一层则根据该层当前的相关参数(如,权重)的当前值以及接收到的输入生成输出。
神经网络模型中包含的各个操作被翻译成对应的硬件设备能够识别的硬件执行命令后,可以提供给硬件设备执行,以实现在硬件上运行神经网络来对输入数据进行处理的目的。也即,硬件设备能够通过执行硬件执行命令来运行网络模型。
为了表达网络模型的计算逻辑,常采用计算图的形式反映网络模型的计算逻辑,计算图中的每个节点可以对应网络模型中的一个操作,这些操作在网络模型中也称为算子,每个算子都有自己独特之处,用来完成特定的功能。一个网络模型的计算图中通常包含很多不同的操作,示例性的例如卷积运算、池化运算、激活函数等。
第一实施例
鉴于目前在AI芯片(可以是各种处理器)使用网络模型进行数据处理的场景下,处理器在为每个网络模型生成硬件执行命令(可简称硬件命令或命令)的过程中,都会占用内存空间,并且不同的网络模型所需的数据所占用的内存空间不同,很容易出现内存不够用的情况,从而导致硬件无法按照预期执行网络模型,并可能影响硬件的性能。基于此,本申请实施例提出了一种命令生成方法,以此来改善处理器每次在为网络模型生成硬件执行命令的过程中,都需要占用很大的内存资源开销,容易导致内存不够用的问题。
本申请实施例提供的命令生成方法,可以应用于使用网络模型进行数据处理的场景,该命令生成方法可应用于AI芯片,该AI芯片可以是同构的处理器,也可以是异构的处理器。为了更好的理解,下面将结合图1,对本申请实施例提供的命令生成方法进行说明。
S1:为待处理的网络模型分配对应的虚假内存空间。
本申请实施例中,在为网络模型中包含的各个操作生成对应的第一硬件执行命令之前,需要为该网络模型分配对应的虚假内存空间(可用fake memory表示)。作为一种实施方式,S1可以由AI芯片中的内核执行。
一种实施方式下,可以根据执行网络模型所需的数据(此处的数据包含网络模型待处理的输入数据,还可以包含网络模型本身的特征数据(比如权重、参数等))大小,分配与该数据大小对应的虚假内存空间。由于虚假内存空间是根据执行网络模型所需的数据大小进行分配的,可以在保证不占用硬件的真实内存资源的情况下,满足生成命令所需的要求。
需要说明的是,对于虚假内存空间的创建或分配也可视为不会对物理存储空间有过多占用,即使因为分配、记录或标记虚假内存空间而不得不占用一点真实的物理存储空间,占用的空间总量大概也就在1KB或数KB左右(该数据也仅作为举例示意)。分配虚假内存空间可以不占用待运行网络模型的硬件设备的真实内存,但有可能会因为分配或记录虚假内存空间的过程,而占用无需运行网络模型的硬件的少量存储空间,由于占用的总量极小(例如1KB左右),所以这种情况下的占用量也可以忽略不计,视为不会占用真实内存,不会占用真实的物理存储空间。
示例性的,假设执行一个网络模型所需的数据大小为2G,则在分配fake memory资源时,可以分配一个大小为2G的虚假内存空间,该虚假内存空间与真实内存空间一样,也是每个存储行均具备独立的地址,且虚假内存空间对应的大小与缓存执行网络模型所需的数据大小期望占用的真实内存空间大小一致。此时分配的并非实际为2G的物理内存,分配虚假内存时,并不会将执行网络模型所需的数据真的加载(或写入)到待运行网络模型的硬件设备的真实内存中,因此并不会占用硬件的真实内存资源。
可以理解的是,虚假内存空间与真实内存空间具备相同属性,比如可以具备空间尺寸的属性(虚假内存空间与真实内存空间的大小可以相同),以及具备独立地址(地址的格式、地址的查找方式也可以按照真实内存那样设计),区别仅在于虚假内存空间不是真实存在的物理存储空间。此处分配的fake memory是一个虚假内存,既不是真实的物理内存,也不是传统的需要与物理内存映射的虚拟内存(virtual memory,虚拟内存有时也称为逻辑内存)。该fake memory拥有的地址可视为假的地址,是为了满足生成硬件执行命令的这个需求而刻意创建并分配的假地址。
S2:基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令。
本申请实施例中,基于虚假内存空间(如用fake memory表示),将网络模型中包含的各个操作(即各个算子)翻译成对应的第一硬件执行命令,其中,为一个操作生成的第一硬件执行命令可能是成百条。由于命令生成过程是基于虚假内存空间进行的,因此不会占用真实内存空间。这样即便是为多个网络模型生成各自模型分别对应的第一硬件执行命令,也不会导致内存空间不够用。
由于每个网络模型的硬件执行命令中通常需要包含各种操作、用于获取操作所需的数据源的读地址、用于存储操作运算结果的写地址等操作信息,因此,在生成命令时,需要提供用于读写数据的地址才能生成命令。本申请中,考虑到实际应用中不一定会经常面临“生成命令后就要立即执行命令并立刻进行内存读写”的需求,因此,基于虚假内存空间(的地址)来生成硬件执行命令,使得硬件执行命令中的地址均为虚假地址,在确定需要执行一些命令时可对相关命令中的地址进行替换处理,这样可以支持为网络模型的各个操作提前翻译出硬件执行命令,有利于提升网络模型的执行效率,且可以避免因为提前为网络模型翻译出命令而对内存资源造成过多占用。
S2可由AI芯片的内核执行,内核中可部署用于将网络模型中包含的各个操作翻译成对应的硬件执行命令的驱动程序。
可选地,S2的实现过程可以包括:将网络模型中包含的各个操作的源代码编译成各个操作分别对应的指令,并基于虚假内存空间,获得执行网络模型中包含的各个操作所需的相关信息;根据各个操作的对应的指令与执行各个操作所需的相关信息,生成第一硬件执行命令。
为了能把网络模型包含的各个操作翻译成硬件能够执行的硬件执行命令,驱动程序提供一组比较通用的API函数,比如创建编译对象API、编译指令API、创建内存API、数据搬运API、执行API等。
示例性的,对于网络模型的每个操作,驱动程序提供类似于C++语法的可编程语言的功能,操作的源代码可以用这种语法来实现,同时驱动程序也会基于编译器,通过利用预设第一API函数(例如创建编译对象API、编译指令API)将网络模型包含的一个操作的源代码编译成该操作对应的硬件指令。关于利用编译器将源代码编译为硬件指令这部分的具体实现细节已经为本领域所熟知,在此不再介绍。
由于各个操作是需要有操作对象的,例如需要操作数据的,比如卷积运算这一操作, 需要将输入数据和权重进行卷积运算,可以通过驱动程序提供的一个创建内存API,在虚假内存空间上面分配一块空间,提供给卷积运算的操作算子。另外,各个操作中的有一部分可能会涉及到数据的搬运,因此驱动程序提供数据搬运API,用于搬运运算过程中的数据。这样驱动程序可通过利用预设第二API函数(例如前述的创建内存API、数据搬运API),基于虚假内存空间,获得硬件设备执行网络模型中包含的各个操作所需的相关信息。示例性的,硬件设备执行一个操作所需的相关信息可以用于反映与该操作相关的:指令的地址、长度、指令需要操作多少个内存地址、内存地址的具体位置在哪里、内存大小是多少、指令之间的处理顺序是什么等。最后可利用预设第三API函数(例如执行API),根据各个操作的对应的指令与执行各个操作所需的相关信息,生成第一硬件执行命令。其中,关于如何为单个操作,组织指令和相关信息来生成单个操作的硬件执行命令这部分的实现方式已经为本领域所熟知,在此不再介绍。在一些应用场景下,若将操作的源代码编译为硬件指令的过程也需要用到一些内存信息,且暂时不需要执行指令、暂时不需要进行实际的数据读写或加载,则也可以利用前述的虚假内存空间来进行指令的编译,当需要涉及数据读写或加载时将指令中的虚假地址替换为真实地址。
可选地,该第一硬件执行命令除了包含各操作、用于获取操作所需的数据源的读地址、用于存储操作运算结果的写地址外,还可包含硬件设备的设备信息(如设备标识),用于表示该第一硬件执行命令由哪个硬件设备来执行,不同的硬件设备对应的设备信息不同。硬件设备是期望能够具有运行该网络模型这一能力的硬件对象。一个AI芯片可能会涉及多个硬件设备。网络模块被翻译后得到的硬件执行命令可以在需要运行该硬件执行命令对应的网络模型时,被提供给对应的硬件设备执行。
示例性的,AI芯片可以是为了承担繁重的计算任务而设计的专用的计算加速芯片(或称加速器),如,图形处理器(Graphic Processing Unit,GPU)、张量处理器(TensorProcessing Unit,TPU)等,当然,也可以是其他面向AI计算任务的处理器。
可选的,一个AI芯片可以包含多个硬件设备,该多个硬件设备中的任一个,都可以按实际需求被选定作为运行该硬件执行命令的目标硬件设备。可选的,一个硬件设备可以包含多种硬件执行单元,不同类型的硬件设备所包含的硬件执行单元的数量可以不同,种类也可以不同。
当网络模型为多个时,在基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令时,可以是:针对不同的网络模型,基于不同的虚假内存空间,将各个网络模型中包含的各个操作翻译成对应的第一硬件执行命令,不同的网络模型对应的虚假内存空间不同(即,一个网络模型对应一个虚假内存空间)。由于使用的是虚假内存空间,并不是真实存在的,因此,即便要处理的网络模型很多,也不会增加太多内存资源消耗。
S3:存储所述第一硬件执行命令。
在S2后,存储第一硬件执行命令,以便后续使用。作为一种实施方式,在存储第一硬件命令时,可以将该第一硬件执行命令存储在事先构建的网络执行图中。例如,可以是由AI芯片中的存储设备来利用网络执行图存储第一硬件执行命令。其中,网络执行图用于记录为该网络模型生成的所有第一硬件执行命令,还可用于记录每个第一硬件执行命令的关键信息。该关键信息可包括起始地址、偏移量以及命令执行顺序等,根据起始地址和偏移量便可获悉该命令的长度、存储位置。硬件设备可根据关键信息来获取第一硬件执行命令。
可选的,考虑到基于网络模型的固有特征,即网络模型本身是固定的,只是每次处理的输入数据不一样,以及对应不同输入数据可能有不同的输出结果而已,因此,可以先将网络模型中包含的各个操作翻译成对应的硬件设备能够执行的第一硬件执行命令,但是先不发给硬件设备执行,而是先把翻译生成的第一硬件执行命令存储起来,使得后续每次需要使用该网络模型对输入数据进行处理时,不需要对其重新进行翻译,而是只需要对其进行微调,将第一硬件执行命令中的地址进行更换,例如将命令中与输入数据、输出数据相关的地址信息修改一下即可,不需要驱动程序重新将该网络模型中的各个操作翻译成第一硬件执行命令,从而可以节约处理器每次运行网络模型时所需的性能开销。
由于上述的第一硬件执行命令是基于虚假内存空间生成的,第一硬件执行命令中的地址均为虚假地址,虚假地址虽然可以在生成命令的过程中被查找应用,但实际上无法在命令执行过程中被用来存储载入的数据,因此,后续在需要执行网络模型时,该命令生成方法还可包括:将执行网络模型所需的数据加载到真实内存空间,并利用真实内存空间对应的真实地址替换掉第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令发送给对应的硬件设备去执行。
关于用真实地址替换掉第一硬件执行命令中的虚假地址的过程,可以包括:对第一硬件执行命令进行识别,确定出当前包含虚假地址的部分或全部第一硬件执行命令,作为目标命令;利用真实内存空间对应的真实地址对所述目标命令中的虚假地址进行地址替换。在替换时,需要识别哪些第一硬件执行命令是使用了虚假地址,当识别出使用了虚假地址的第一硬件执行命令后,可以将部分或全部第一硬件执行命令中的虚假地址对应替换为真实地址。
对于识别结果,可能有以下几种结果:1)当第一硬件执行命令全部未执行时,所有的第一硬件执行命令中的地址都是虚假地址;2)在网络模型的执行过程中,存在一部分正在被硬件设备执行的命令,这部分正在被执行的命令的地址可能已被替换为真实地址(有效地址),同时也可能有一些还未被替换的未被执行的命令,这部分命令的地址还是虚假地址。
当包含多个网络模型时,可以是一次性替换完所有网络模型对应的第一硬件执行命令中的假地址,也可以仅替换部分网络模型对应的第一硬件执行命令中的假地址。
其中,可以结合当前剩余的可用内存容量、网络模型的处理进度、待处理的数据量、芯片所支持的处理能力等可选因素,来决定进行全部命令的地址替换还是部分命令的地址替换。本申请不对每次进行地址替换的命令数量和/或命令对应的操作类型作要求,可以每次替换一个网络中的部分操作对应的一批命令所包含的虚假地址,也可以一次性替换一整个网络模型(或多个网络模型)的所有命令中的虚假地址。
例如,某个任务需要用到2个网络模型时,在替换时,若当前剩余的可用内存或芯片所支持的处理能力,支持一次性处理这2个网络模型对应的数据,则可以一次性替换这2个网络模型对应的第一硬件执行命令中的假地址,若当前不支持一次性将2个网络模型对应的第一硬件执行命令中的假地址都替换为真实地址,则可以分批进行替换,如先对其中一个网络模型的命令进行地址替换,之后再对另一个网络模型的命令进行地址替换。
可以理解的是,本申请中提到的“真实内存”是物理内存,且“真实地址”是物理存储介质会拥有的物理地址,而“虚假地址”则不是物理地址,是可以被设计为具有与物理地址类似属性或类似格式的假地址,关于“利用真实内存空间对应的真实地址替换掉第一硬件执行命令中的虚假地址”这一过程,用于进行地址替换的“真实内存空间对应的真实地址”既可以是物理内存的物理地址,也可以是与物理内存提前建立了映射关系的虚拟内存的地址,这种虚拟内存相对于本申请的虚假内存而言,也是具有真实地址且会占用物理存储空间的。通常而言,通过虚拟内存映射技术,可以将一个物理存储空间(可能是物理外存也可能是物理内存)与另一个物理存储空间(通常是物理内存)建立映射关系,从而将原本不连续的物理地址从逻辑上进行映射关联,使得原本分散或无关无序的物理地址在一些场景下从逻辑上变得有关联、有序,通过这种映射关系也可以完成数据的实际加载和读写。关于用于替换虚假地址的真实地址,不论是物理内存的地址还是与物理内存提前建立映射关系的其他的物理地址,只要能保证替换后的第一硬件执行命令能被正确执行即可。
其中,对于缓存的各个网络模型对应的第一硬件执行命令,可以按需处理、按需执行。例如,假设缓存有20个网络模型对应的第一硬件执行命令,但是当前只需要执行其中一个网络模型对应的命令,则可以暂时只针对这部分命令做替换,将替换后的新命令(可以称为第二硬件执行命令)分发给具体的硬件设备去执行。
此外,可选地,可以基于虚假内存空间对应的虚假地址来替换掉第二硬件执行命令中的真实地址,使得所述第二硬件执行命令可以再成为含有虚假地址的第一硬件执行命令(即,将替换了真实地址的第一硬件执行命令中的地址再次更改为虚假地址),从而可释放相应的物理内存资源。在将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备去执行之后,当不再需要执行某个网络模型时,该命令生成方法还可包括:在确定从当前时刻开始后的预设时间段内不执行网络模型时,基于虚假内存空间,将该网络模型对应的第二硬件执行命令中的真实地址替换为虚假地址,并将地址替换为虚假地址的硬件执行命令进行缓存,以便下一次需要运行相同网络模型时可以使用。
可以理解的是,第一硬件执行命令中的地址均为虚假地址,第二硬件执行命令中的地址均为真实地址,若用真实地址替换掉第一硬件执行命令中的虚假地址,则替换后的第一硬件执行命令即为第二硬件执行命令,同理,在将替换后的第一硬件执行命令(第二硬件执行命令)中的真实地址替换为虚假地址后,又可以重新得到第一硬件执行命令。
需要说明的是,上述的将网络模型中的各个操作翻译成硬件执行命令(包含第一硬件执行命令、第二硬件执行命令)的过程,与,执行硬件执行命令的过程,这两个过程可以是由同一个AI芯片来实现,也可以是由2个AI芯片来分别实现,比如AI芯片1仅负责将网络模型中的各个操作翻译成硬件执行命令,AI芯片2负责执行这些硬件执行命令,通过2个AI芯片之间的配合来完成这两个过程。
可选的,上述两个过程由2个AI芯片来实现时,可以是AI芯片1将网络模型中的各个操作翻译成第一硬件执行命令,并存储起来;待后续要运行网络模型时,再将对应的第一硬件执行命令转换为第二硬件执行命令后发给AI芯片2的硬件设备去执行,命令转换过程包括:利用真实内存空间对应的真实地址替换掉第一硬件执行命令中的虚假地址,从而得到第二硬件执行命令。也可以是AI芯片1将网络模型中的各个操作翻译成第一硬件执行命令,将该第一硬件执行命令发给AI芯片2进行存储,待后续要运行网络模型时,再由AI芯片2利用真实内存空间对应的真实地址替换掉第一硬件执行命令中的虚假地址,从而得到第二硬件执行命令,之后再发给AI芯片2的硬件设备去执行。
第二实施例
基于同样的发明构思,本申请实施例还提供了另一种命令生成方法,如图2所示。下面将结合图2对其原理进行说明。
S10:判断从当前时刻开始后的预设时间段内是否执行网络模型。
通过判断从当前时刻开始后的预设时间段内是否执行或使用网络模型,在确定从当前时刻开始后的预设时间段内要执行网络模型时,执行S20,在确定从当前时刻开始后的预设时间段内不执行网络模型时,执行S40。其中,预设时间段可以根据实际需要进行设定,比如可以按分钟、小时等进行设置。
S20:基于真实内存空间,将所述网络模型中包含的各个操作翻译成对应的第二硬件执行命令。
在确定从当前时刻开始后的预设时间段内要执行网络模型时,基于真实内存空间,将网络模型中包含的各个操作翻译成对应的第二硬件执行命令。其中,第二硬件执行命令中包含的地址均为真实地址,该真实内存空间用于存储执行网络模型时所需的数据。
在确定从当前时刻开始后的预设时间段内要执行网络模型时,可以根据执行网络模型所需的数据大小,分配与该数据大小对应的真实内存空间,并以此将网络模型中包含的各个操作翻译成对应的第二硬件执行命令,同时,将执行网络模型时所需的数据(此处的数据包含网络模型待处理的输入数据,还可以包含网络模型本身的特征数据(比如权重、参数等))加载至该真实内存空间,以便于在将网络模型中包含的各个操作翻译成对应的第二硬件执行命令后,直接将该第二硬件执行命令发送给对应的硬件设备执行,以使硬件设备执行这些第二硬件执行命令执行网络模型。
S30:存储所述第二硬件执行命令。
在基于真实内存空间,将网络模型中包含的各个操作翻译成对应的第二硬件执行命令后,存储第二硬件执行命令,后续需要执行时,直接将该第二硬件执行命令发送给对应的硬件设备执行,以使硬件设备执行这些第二硬件执行命令执行网络模型。
上述的S30的实现原理与图1中的S3的实现原理一致,不同之处在于,S3中存储的是第一硬件执行命令,而该步骤中存储的是第二硬件执行命令。第二硬件执行命令也可以存储到网络执行图中。
S40:基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令。
在确定从当前时刻开始后的预设时间段内不执行网络模型时,基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令。
S50:存储所述第一硬件执行命令。
上述的S40、S50实现原理分别与前述图1中S2、S3的实现原理一致,在此不再展开介绍。
第三实施例
基于同样的发明构思,本申请实施例还提供了又一种命令生成方法,如图3所示。下面将结合图3对其原理进行说明。
S100:在需要使用网络模型时,将所述网络模型对应的网络原始数据加载到真实内存空间,获取预先存储的第一硬件执行命令。
在需要使用网络模型对输入数据进行处理(如图像识别、分类等)时,将网络模型对应的网络原始数据(此时的数据包括网络模型待处理的输入数据、网络自身的特征数据)加载到真实内存空间,并获取预先存储的第一硬件执行命令。其中,第一硬件执行命令为基于虚假内存空间对网络模型中包含的各个操作进行翻译得到,虚假内存空间与真实内存空间具备相同属性。
在该种方式下,需要事先基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令,并进行缓存。
S200:利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令发送给对应的硬件设备。
由于上述的第一硬件执行命令是基于虚假内存空间生成的,第一硬件执行命令中的地址均为虚假地址,因此,后续在执行网络模型时,需要利用真实内存空间对应的真实地址替换掉第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备去执行。
当不再需要执行某个网络模型时,可以基于虚假内存空间对应的虚假地址来替换掉第二硬件执行命令中的真实地址,从而可释放相应的内存资源,即将替换了真实地址的第一硬件执行命令中的地址再次更改为虚假地址。此时,在将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备执行之后,该命令生成方法还包括:在确定从当前时刻开始后的预设时间段内不执行网络模型时,将替换后的第一硬件执行命令(即,第二硬件执行命令)中的真实地址替换为虚假内存空间对应的虚假地址,并缓存地址替换为虚假地址的硬件执行命令,其中,虚假内存空间与真实内存空间具备相同属性,且大小一致。
第四实施例
基于同样的发明构思,本申请实施例还提供了一种AI芯片,该AI芯片包括:内核以及存储设备。该AI芯片可用于执行前述相关实施例的命令生成方法。
内核,用于为待处理的网络模型分配对应的虚假内存空间,并基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令,第一硬件执行命令中的地址均为虚假地址,虚假内存空间与真实内存空间具备相同属性。
其中,内核中部署有驱动程序,可以由该驱动程序来将网络模型中包含的各个操作翻译成第一硬件执行命令,并将其第一硬件执行命令发给存储设备进行存储。
内核可以是用于将网络模型中包含的各个操作的源代码编译成指令,并基于虚假内存空间,获得执行所述网络模型中包含的各个操作所需的相关信息;根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述第一硬件执行命令。
存储设备,用于存储第一硬件执行命令,第一硬件执行命令用于在被进行地址替换后提供给需要运行网络模型的硬件设备执行。
可选地,内核,用于根据执行所述网络模型所需的数据大小,分配与所述数据大小对应的虚假内存空间。
可选地,内核在基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令之前,还用于判断从当前时刻开始后的预设时间段内是否执行所述网络模型,在确定从当前时刻开始后的预设时间段内不执行所述网络模型时,才基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令。
在确定从当前时刻开始后的预设时间段内要执行所述网络模型时,内核还用于基于所述真实内存空间,将所述网络模型中包含的各个操作翻译成对应的第二硬件执行命令,其中,所述第二硬件执行命令中包含的地址均为真实地址,所述真实内存空间存储有执行所述网络模型时所需的数据。此时,该存储设备,还用于存储所述第二硬件执行命令。
可选地,内核,还用于在执行所述网络模型时,将执行所述网络模型所需的数据加载到所述真实内存空间;利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备。
可选地,内核用于对所述第一硬件执行命令进行识别,确定出当前包含虚假地址的部分或全部第一硬件执行命令,作为目标命令;利用所述真实内存空间对应的真实地址,替换掉所述目标命令中的虚假地址。
可选地,内核还用于在将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备执行之后,将所述替换后的第一硬件执行命令(即,第二硬件执行命令)中的真实地址替换为所述虚假内存空间对应的虚假地址,并缓存地址替换为虚假地址的第二硬件执行命令。
本申请实施例所提供的AI芯片,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,AI芯片实施例部分未提及之处,可参考前述方法实施例中相应内容。
第五实施例
基于同样的发明构思,本申请实施例还提供了另一种AI芯片,该AI芯片包括:硬件设备、内核以及存储设备。该AI芯片可用于执行前述相关实施例的命令生成方法。
存储设备,用于存储第一硬件执行命令;其中,所述第一硬件执行命令为基于虚假内存空间对网络模型中包含的各个操作进行翻译得到,所述虚假内存空间与真实内存空间具备相同属性;
内核,用于在需要执行所述网络模型时,将所述网络模型对应的网络原始数据加载到真实内存空间,获取存储于所述存储设备中的第一硬件执行命令,利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令发送给所述硬件设备;
硬件设备,用于执行替换后的第一硬件执行命令,以实现运行所述网络模型对输入数据进行处理的目的。
本申请实施例所提供的AI芯片,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,AI芯片实施例部分未提及之处,可参考前述方法实施例中相应内容。
第六实施例
本申请实施例还提供了一种电子设备,该电子设备包括:存储装置、第一处理器,该第一处理器可用于执行前述相关实施例的命令生成方法。该电子设备可以是电脑、服务器、车载设备等任何具有数据处理能力的设备。
存储装置可以是各种非运行内存的存储器、硬盘等。
其中,存储装置用于存储网络模型,以及还可用于存储执行网络模型所需的原始数据,比如待处理的输入数据,以及网络本身的特征数据。
第一处理器,用于为待处理的网络模型分配对应的虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令,并将第一硬件执行命令进行存储。
待执行网络模型时,第一处理器将执行网络模型所需的数据加载到第一处理器的真实内存空间,并利用真实内存空间对应的真实地址替换掉第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备执行。之后,在确定从当前时刻开始后的预设时间段内不执行网络模型时,可以将第二硬件执行命令中的真实地址替换为虚假内存空间对应的虚假地址,并缓存地址替换为虚假地址的第二硬件执行命令。
此外,该电子设备还包括中央处理器(Central Processing Unit,CPU),上述的第一处理器可以是协助中央处理器进行数据处理的协处理器,比如可以是图形处理器(Graphics Processing Unit,GPU)或通用图形处理器(General Purpose computing onGraphics Processing Units,GPGPU)。其中,CPU和第一处理器都可以视为上述的AI芯片。
为了更好地理解本申请的原理,下面结合图4所示的电子设备,对本申请实例提供的命令生成方法和一种未采用虚假内存的命令生成方法进行对比说明。
常规流程:
步骤1.初始时,网络原始数据(包括待处理的输入数据,还可以包括网络本身的特征数据)及网络模型都是存储在存储装置(可以是磁盘)中。
步骤2.在需要将网络模型翻译成硬件执行命令之前,需要将网络原始数据及网络模型本身的数据都加载到CPU的DDR(Double Data Rate,双倍速率同步动态随机存储器)中,根据数据所占用的CPU DDR空间,在第一处理器的专用DDR中分配且占用锁定同样大小的真实DDR空间,通过CPU和第一处理器协作,将存储在CPU的DDR中的数据(含输入数据)全部搬运到第一处理器的DDR中。
步骤3.在将网络模型翻译成硬件执行命令时,第一处理器基于分配的真实DDR空间,将网络模型中的各个操作算子,特征数据的DDR 地址,输入数据的DDR地址,以及存储操作运行结果的DDR地址全部结合在一起,产生一系列的硬件执行命令。
步骤4.后续直接执行这些硬件执行命令。
而采用本申请所示的命令生成方法的一种流程可以包括:
步骤1.初始时,网络原始数据(包括输入数据,还可以包括网络本身的特征数据)及网络模型也可以存储在存储装置(可以是磁盘)中。
步骤2. 在需要将网络模型翻译成第一硬件执行命令之前,根据执行网络模型所需的数据大小,分配与该数据大小对应的虚假内存空间(fake memory), 并将网络模型加载至第一处理器的DDR中。
步骤3. 在将网络模型翻译成第一硬件执行命令时,第一处理器基于分配的虚假DDR空间(虚假内存空间),将网络模型中的各个操作算子, 特征数据的虚假DDR 地址, 输入数据的虚假DDR地址,以及存储操作运行结果的虚假DDR地址全部结合在一起,产生一系列的第一硬件执行命令,并对这些硬件执行命令进行存储。
步骤4. 在后续执行网络模型时,将网络原始数据加载到CPU的DDR中,根据数据所占用的DDR空间,在第一处理器的DDR中分配同样大小的DDR空间(是真实内存空间),通过CPU和第一处理器协作,将CPU的DDR中的数据全部搬运到第一处理器的DDR中,然后根据分配的真实内存空间对应的真实地址替换掉第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令发送给对应的硬件设备。
当电子设备上需要执行多种不同的网络模型时,而CPU和第一处理器的DDR又有限, 那么情况就是:
常规流程: 反复执行步骤1,步骤2,步骤3,这样很快就会将DDR占满。
而采用本申请所示的命令生成方法: 反复执行上述的步骤1,步骤2(以及步骤3),可以把所需的硬件执行命令全部生成出来,几乎不怎么占用CPU和第一处理器的DDR,当需要执行某个网络模型的时候,再执行对应步骤4。
需要说明的是,图4所示的流程仅为众多实施例中的一种,将网络模型中包含的各个操作翻译成对应的硬件执行命令的过程也可以用上述的CPU来完成。
第七实施例
本申请实施例还提供了一种应用于使用网络模型进行数据处理的场景的命令生成装置100,如图5所示,该命令生成装置100包括:分配模块110、翻译模块120和存储模块130。
分配模块110,用于为待处理的网络模型分配对应的虚假内存空间。
翻译模块120,用于基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性。
若所述网络模型为多个,翻译模块120,用于针对不同的网络模型,基于不同的虚假内存空间,将各个网络模型中包含的各个操作翻译成对应的第一硬件执行命令,不同的网络模型对应的虚假内存空间不同。
存储模块130,用于存储所述第一硬件执行命令,所述第一硬件执行命令用于在被进行地址替换后提供给需要运行所述网络模型的硬件设备执行。
可选地,分配模块110,用于根据执行所述网络模型所需的数据大小,分配与所述数据大小对应的虚假内存空间。
可选地,该命令生成装置100还包括判断模块,用于判断从当前时刻开始后的预设时间段内是否执行所述网络模型。在确定从当前时刻开始后的预设时间段内不执行所述网络模型时,翻译模块120基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令。
在确定从当前时刻开始后的预设时间段内要执行所述网络模型时,所述翻译模块120,还用于基于所述真实内存空间,将所述网络模型中包含的各个操作翻译成对应的第二硬件执行命令,其中,所述第二硬件执行命令中包含的地址均为真实地址,所述真实内存空间存储有执行所述网络模型时所需的数据。存储模块130,还用于存储所述第二硬件执行命令。
可选地,该命令生成装置100还包括获取模块和发送模块,获取模块用于在执行所述网络模型时,将执行所述网络模型所需的数据加载到所述真实内存空间。翻译模块120,还用于利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址。发送模块,用于将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备。
翻译模块120,还用于在确定从当前时刻开始后的预设时间段内不执行所述网络模型时,将所述替换后的第一硬件执行命令中的真实地址替换为所述虚假内存空间对应的虚假地址。
可选地,翻译模块120用于对所述第一硬件执行命令进行识别,识别出包含虚假地址的第一硬件执行命令;利用所述真实内存空间对应的真实地址替换掉所述包含虚假地址的第一硬件执行命令中的虚假地址。
翻译模块120用于将所述网络模型中包含的各个操作的源代码编译成指令,并基于所述虚假内存空间,获得执行所述网络模型中包含的各个操作所需的相关信息;根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述第一硬件执行命令。
本申请实施例所提供的命令生成装置100,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
第八实施例
本申请实施例还提供了一种应用于使用网络模型进行数据处理的场景的命令生成装置200,如图6所示,该命令生成装置200包括:获取模块210、翻译模块220和发送模块230。
获取模块210,用于在需要执行所述网络模型时,将所述网络模型对应的网络原始数据加载到真实内存空间,获取预先存储的第一硬件执行命令。其中,所述第一硬件执行命令为基于虚假内存空间对所述网络模型中包含的各个操作进行翻译得到,所述虚假内存空间与真实内存空间具备相同属性。
翻译模块220,用于利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址。
发送模块230,用于将替换后的第一硬件执行命令发送给对应的硬件设备。
翻译模块220,还用于在确定从当前时刻开始后的预设时间段内不执行所述网络模型时,将所述替换后的第一硬件执行命令中的真实地址替换为虚假内存空间对应的虚假地址,所述虚假内存空间与所述真实内存空间具备相同属性。
本申请实施例所提供的命令生成装置200,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。该命令生成装置200中的模块与前述的命令生成装置100中的模块可以集成在一起,也可以独立使用。
本申请实施例还提供了一种非易失性的计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备运行时,执行上述所示的命令生成方法。
而上述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种命令生成方法,其特征在于,包括:
为待处理的网络模型分配对应的虚假内存空间;
基于所述虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性;
存储所述第一硬件执行命令,所述第一硬件执行命令用于在被进行地址替换后提供给需要运行所述网络模型的硬件设备执行。
2.根据权利要求1所述的方法,其特征在于,为待处理的网络模型分配对应的虚假内存空间,包括:
根据执行所述网络模型所需的数据大小,分配与所述数据大小对应的虚假内存空间。
3.根据权利要求1所述的方法,其特征在于,在基于虚假内存空间,将网络模型中包含的各个操作翻译成对应的第一硬件执行命令之前,所述方法还包括:
判断从当前时刻开始后的预设时间段内是否执行所述网络模型;
在确定从当前时刻开始后的预设时间段内不执行所述网络模型时,执行步骤:基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在确定从当前时刻开始后的预设时间段内要执行所述网络模型时,基于所述真实内存空间,将所述网络模型中包含的各个操作翻译成对应的第二硬件执行命令,其中,所述第二硬件执行命令中包含的地址均为真实地址,所述真实内存空间用于存储执行所述网络模型时所需的数据;
存储所述第二硬件执行命令。
5.根据权利要求1所述的方法,其特征在于,在存储所述第一硬件执行命令之后,所述方法还包括:
在需要执行所述网络模型时,将执行所述网络模型所需的数据加载到所述真实内存空间;
利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址;
将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备,以供所述对应的硬件设备执行所述第二硬件执行命令。
6.根据权利要求5所述的方法,其特征在于,利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,包括:
对所述第一硬件执行命令进行识别,确定出当前包含虚假地址的部分或全部第一硬件执行命令,作为目标命令;
利用所述真实内存空间对应的真实地址,替换掉所述目标命令中的虚假地址。
7.根据权利要求5所述的方法,其特征在于,在将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备执行之后,所述方法还包括:
将所述第二硬件执行命令中的真实地址替换为所述虚假内存空间对应的虚假地址,并将地址替换为虚假地址的命令进行缓存。
8.根据权利要求1-7任一项所述的方法,其特征在于,基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,包括:
将所述网络模型中包含的各个操作的源代码编译成各操作分别对应的指令,并基于所述虚假内存空间,获得执行所述网络模型中包含的各个操作所需的相关信息,所述相关信息包括地址信息;
根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述第一硬件执行命令。
9.一种命令生成方法,其特征在于,包括:
在需要执行网络模型时,将所述网络模型对应的网络原始数据加载到真实内存空间,获取预先存储的第一硬件执行命令,其中,所述第一硬件执行命令是基于虚假内存空间对所述网络模型中包含的各个操作进行翻译得到的,所述虚假内存空间与所述真实内存空间具备相同属性;
利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令,发送给对应的硬件设备。
10.一种命令生成装置,其特征在于,包括:
分配模块,用于为待处理的网络模型分配对应的虚假内存空间;
翻译模块,用于基于虚假内存空间,将所述网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性;
存储模块,用于存储所述第一硬件执行命令,所述第一硬件执行命令用于在被进行地址替换后提供给需要运行所述网络模型的硬件设备执行。
11.一种AI芯片,其特征在于,包括:
内核,用于为待处理的网络模型分配对应的虚假内存空间,并基于所述虚假内存空间,将待处理的网络模型中包含的各个操作翻译成对应的第一硬件执行命令,所述第一硬件执行命令中的地址均为虚假地址,所述虚假内存空间与真实内存空间具备相同属性;
存储设备,用于存储所述第一硬件执行命令,所述第一硬件执行命令用于在被进行地址替换后提供给需要运行所述网络模型的硬件设备执行。
12.一种AI芯片,其特征在于,包括:硬件设备、内核以及存储设备;
所述存储设备,用于存储第一硬件执行命令,其中,所述第一硬件执行命令是基于虚假内存空间对网络模型中包含的各个操作进行翻译得到的,所述虚假内存空间与真实内存空间具备相同属性;
所述内核,用于在需要执行所述网络模型时,将所述网络模型对应的网络原始数据加载到所述真实内存空间,获取存储于所述存储设备中的第一硬件执行命令,利用所述真实内存空间对应的真实地址替换掉所述第一硬件执行命令中的虚假地址,并将替换后的第一硬件执行命令作为第二硬件执行命令,发送给所述硬件设备;
所述硬件设备,用于执行所述第二硬件执行命令。
13.一种电子设备,其特征在于,包括:
存储装置,用于存储待处理的网络模型;
第一处理器,用于根据所述网络模型,执行权利要求1-9中任一项所述的命令生成方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1-9中任一项所述的命令生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211486830.0A CN115586972B (zh) | 2022-11-25 | 2022-11-25 | 命令生成方法、装置、ai芯片、电子设备及存储介质 |
PCT/CN2023/092113 WO2024108907A1 (zh) | 2022-11-25 | 2023-05-04 | 一种数据处理方法、装置、ai芯片、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211486830.0A CN115586972B (zh) | 2022-11-25 | 2022-11-25 | 命令生成方法、装置、ai芯片、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115586972A true CN115586972A (zh) | 2023-01-10 |
CN115586972B CN115586972B (zh) | 2023-02-28 |
Family
ID=84783246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211486830.0A Active CN115586972B (zh) | 2022-11-25 | 2022-11-25 | 命令生成方法、装置、ai芯片、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115586972B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4323964A (en) * | 1976-11-01 | 1982-04-06 | Data General Corporation | CPU Employing micro programmable control for use in a data processing system |
JPS641049A (en) * | 1986-09-05 | 1989-01-05 | Hitachi Ltd | Parallel computer |
KR20030047074A (ko) * | 2001-12-07 | 2003-06-18 | 삼성전자주식회사 | 외부 리프레쉬 명령을 사용하지 않는 메모리장치의리프레쉬 제어회로 및 그 방법 |
WO2007098024A2 (en) * | 2006-02-16 | 2007-08-30 | Vns Portfolio Llc | Allocation of resources among an array of computers |
US8035648B1 (en) * | 2006-05-19 | 2011-10-11 | Nvidia Corporation | Runahead execution for graphics processing units |
CN108710787A (zh) * | 2018-03-26 | 2018-10-26 | 江苏通付盾信息安全技术有限公司 | 代码混淆方法及装置、计算设备、计算机存储介质 |
CN114237714A (zh) * | 2021-12-22 | 2022-03-25 | 上海壁仞智能科技有限公司 | 命令包生成方法、装置、电子设备和存储介质 |
CN114579288A (zh) * | 2022-05-09 | 2022-06-03 | 成都登临科技有限公司 | 一种任务处理的方法、装置以及计算机设备 |
-
2022
- 2022-11-25 CN CN202211486830.0A patent/CN115586972B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4323964A (en) * | 1976-11-01 | 1982-04-06 | Data General Corporation | CPU Employing micro programmable control for use in a data processing system |
JPS641049A (en) * | 1986-09-05 | 1989-01-05 | Hitachi Ltd | Parallel computer |
KR20030047074A (ko) * | 2001-12-07 | 2003-06-18 | 삼성전자주식회사 | 외부 리프레쉬 명령을 사용하지 않는 메모리장치의리프레쉬 제어회로 및 그 방법 |
WO2007098024A2 (en) * | 2006-02-16 | 2007-08-30 | Vns Portfolio Llc | Allocation of resources among an array of computers |
US8035648B1 (en) * | 2006-05-19 | 2011-10-11 | Nvidia Corporation | Runahead execution for graphics processing units |
CN108710787A (zh) * | 2018-03-26 | 2018-10-26 | 江苏通付盾信息安全技术有限公司 | 代码混淆方法及装置、计算设备、计算机存储介质 |
CN114237714A (zh) * | 2021-12-22 | 2022-03-25 | 上海壁仞智能科技有限公司 | 命令包生成方法、装置、电子设备和存储介质 |
CN114579288A (zh) * | 2022-05-09 | 2022-06-03 | 成都登临科技有限公司 | 一种任务处理的方法、装置以及计算机设备 |
Non-Patent Citations (2)
Title |
---|
HASSAN SALAMY: "Minimizing address arithmetic instructions in embedded applications on DSPs", 《COMPUTERS & ELECTRICAL ENGINEERING》 * |
朱旻: "基于硬件虚拟化技术的跨平台安全保护研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115586972B (zh) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8995070B2 (en) | Garbage collection based on functional block size | |
US8726257B2 (en) | File attributes for flexible linking | |
US11449355B2 (en) | Non-volatile memory (NVM) based method for performance acceleration of containers | |
CN102667714B (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
US7949848B2 (en) | Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program | |
US6985976B1 (en) | System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks | |
JP2000347876A (ja) | スタック・スロット割当て方法および装置 | |
TW201301033A (zh) | 用於未修正應用程式的記憶體管理模型和界面 | |
CN115576699B (zh) | 数据处理方法、装置、ai芯片、电子设备及存储介质 | |
CN114237714A (zh) | 命令包生成方法、装置、电子设备和存储介质 | |
CN112074820A (zh) | 用于多内核系统的存储器池分配 | |
CN116934330A (zh) | 一种调用智能合约的方法及执行方法、计算机设备及存储介质 | |
CN103140834A (zh) | 用于填充存储器区域的处理器支持 | |
US11915056B2 (en) | Combination of multiple data processing and machine learning frameworks for a target hardware | |
US10048953B2 (en) | Compiler program, compiling method, and compiling device | |
CN115586972B (zh) | 命令生成方法、装置、ai芯片、电子设备及存储介质 | |
US20110072231A1 (en) | Device, method and computer-readable medium relocating remote procedure call data in heterogeneous multiprocessor system on chip | |
WO2021219211A1 (en) | Memory allocation in a neural network | |
US7487336B2 (en) | Method for register allocation during instruction scheduling | |
US20070016744A1 (en) | Memory management in a portable data carrier | |
JP6953768B2 (ja) | 支援装置、プログラム | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
CN116360960A (zh) | 基于众核芯片的内存分配方法和内存分配装置 | |
WO2024108907A1 (zh) | 一种数据处理方法、装置、ai芯片、电子设备及存储介质 | |
CN108241508B (zh) | 处理OpenCL内核的方法及用于该方法的计算设备 |
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 |