CN115576699B - 数据处理方法、装置、ai芯片、电子设备及存储介质 - Google Patents

数据处理方法、装置、ai芯片、电子设备及存储介质 Download PDF

Info

Publication number
CN115576699B
CN115576699B CN202211486836.8A CN202211486836A CN115576699B CN 115576699 B CN115576699 B CN 115576699B CN 202211486836 A CN202211486836 A CN 202211486836A CN 115576699 B CN115576699 B CN 115576699B
Authority
CN
China
Prior art keywords
hardware
network model
execution command
execution
hardware execution
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.)
Active
Application number
CN202211486836.8A
Other languages
English (en)
Other versions
CN115576699A (zh
Inventor
刘军
彭凡
杨媛静
王鸥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Denglin Technology Co ltd
Original Assignee
Chengdu Denglin Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Denglin Technology Co ltd filed Critical Chengdu Denglin Technology Co ltd
Priority to CN202211486836.8A priority Critical patent/CN115576699B/zh
Publication of CN115576699A publication Critical patent/CN115576699A/zh
Priority to PCT/CN2023/092113 priority patent/WO2024108907A1/zh
Application granted granted Critical
Publication of CN115576699B publication Critical patent/CN115576699B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请涉及一种数据处理方法、装置、AI芯片、电子设备及存储介质,属于数据处理技术领域。该数据处理方法包括:获取待运行的网络模型的计算图;将网络模型的计算图中的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令;利用网络执行图存储硬件执行命令。通过将网络模型的计算图中的各个操作翻译成对应的目标硬件设备能够执行的硬件执行命令,并存储起来,使得后续每次需要运行该网络模型时,直接将事先存储的硬件执行命令分发给对应的硬件执行,不需要重新将该网络模型的计算图中的各个操作翻译成硬件执行命令,从而改善处理器每次运行网络模型时都需要很大的性能开销,且耗时长的问题。

Description

数据处理方法、装置、AI芯片、电子设备及存储介质
技术领域
本申请属于人工智能技术领域,具体涉及一种数据处理方法、装置、AI芯片、电子设备及存储介质。
背景技术
当需要运行AI(Artificial Intelligence,人工智能)网络进行数据处理、计算时,通常需要将网络模型对应的计算任务加载到用于执行计算任务的硬件设备上,该过程需要为网络模型生成硬件能够识别并执行的硬件执行命令。
目前,处理器每次运行网络模型时,都需要重新为该网络模型中的各个操作(或称为算子)翻译出对应的硬件执行命令并尽快提供给硬件去执行,而每个操作被翻译成硬件执行命令都需要耗一点时间。在处理器每次需要运行网络模型时,每处理到该网络模型中的一个操作,驱动程序都需要将该操作翻译成硬件执行命令并发送给硬件执行,然后才处理下一个操作,驱动程序再将该下一个操作翻译成硬件执行命令并发送给硬件执行,直至驱动程序将该网络模型的最后一个操作翻译完,并且将本次运行该网络模型所需的最后一个操作对应的硬件执行命令发送给硬件执行。这样的处理方式,使得处理器每次运行网络模型来进行数据处理时,每次执行、运行AI网络都需要很大的性能开销,且耗时长。
发明内容
鉴于此,本申请的目的在于提供一种数据处理方法、装置、AI芯片、电子设备及存储介质,以改善当前处理器每次运行网络模型进行数据处理时都需要很大的性能开销,且耗时长的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种数据处理方法,所述方法包括:获取待运行的网络模型的计算图;将所述网络模型的计算图中的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息;利用网络执行图存储所述硬件执行命令,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,所述目标硬件设备用于通过执行所述网络执行图中的硬件执行命令来运行所述网络模型。
本申请实施例中,先将网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令,但是先不发给目标硬件设备执行,而是利用网络执行图先把翻译出的硬件执行命令存储起来,使得后续每次需要运行该网络模型时,将事先存储的硬件执行命令分发给对应的硬件执行即可,不需要重新将该网络模型的计算图中的各个操作再次翻译成硬件执行命令,从而改善处理器每次运行网络模型时,都需要很大的性能开销,且耗时长的问题。
结合第一方面实施例的一种可能的实施方式,将所述网络模型的计算图中包含的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令,包括:将所述网络模型的计算图中的各个操作的源代码编译成指令,并获取目标硬件设备执行各个操作所需的相关信息;根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
其中,可以利用预设第一API函数(如创建对象API、编译指令API)将网络模型的计算图中的各个操作的源代码编译成指令,再利用预设第二API函数(如内存分配API、数据搬运API)获得目标硬件设备执行各个操作所需的相关信息(如指令的地址、长度、指令需要操作多少个内存地址、指令之间的执行顺序等),之后利用预设第三API函数(如执行API)根据各个操作的对应的指令与执行各个操作所需的相关信息,生成硬件执行命令,这样可以快速、准确地将网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令。
结合第一方面实施例的一种可能的实施方式,利用网络执行图存储所述硬件执行命令,包括:按照所述网络模型中包含的各个操作的执行顺序,依次将各个操作对应的硬件执行命令存储至所述网络执行图中,并记录每个硬件执行命令的关键信息,所述关键信息用于获取所述硬件执行命令。
其中,按照网络模型中包含的各个操作的执行顺序,依次将各个操作对应的硬件执行命令存储至网络执行图中,并记录每个硬件执行命令的关键信息,使得后续可以根据网络执行图快速获悉该神经网络涉及的计算逻辑(网络模型中的各个操作的执行顺序),以便于在执行该网络模型时,可以按照网络执行图中记录的关键信息并按照各个操作的执行顺序,依次将对应的硬件执行命令发送目标硬件设备执行,从而可以避免执行逻辑出错以及提高效率。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:在需要运行所述网络模型时,获取预先存储在所述网络执行图中的所述硬件执行命令;将所述硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型。
其中,通过事先将网络模型中的各个操作对应的硬件执行命令存储起来,使得后续在运行网络模型时,将事先存储在网络执行图中的硬件执行命令分发给对应的硬件执行,不需要重新将该网络模型中的各个操作翻译成硬件执行命令,从而解决了处理器每次运行网络模型时,都需要很大的性能开销,且耗时长的问题。
结合第一方面实施例的一种可能的实施方式,将所述硬件执行命令发送给所述目标硬件设备执行,包括:修改所述硬件执行命令中用于获取输入数据的读地址,和/或,修改所述硬件执行命令中用于存储输出数据的写地址;将修改后的硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行修改后的所述硬件执行命令,实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的。
其中,通过修改硬件执行命令中用于获取输入数据的读地址,和/或,修改硬件执行命令中用于存储输出数据的写地址,之后,将修改后的对应的硬件执行命令发送给目标硬件设备执行,这样使得前后执行该网络模型时,可以从不同的地方获取输入数据,以及将输出数据存储到不同的地方,灵活性更好。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:根据所述AI芯片中的硬件设备的总数量,对所述硬件执行命令进行复制;根据所述AI芯片中除所述目标硬件设备外的其他硬件设备的设备信息,对复制出的所述硬件执行命令中包含的设备信息进行修改,得到修改过设备信息的硬件执行命令,其中,修改过设备信息的硬件执行命令能够被提供给所述其他硬件设备执行。
通过上述方式,针对一个目标硬件设备生成的硬件执行命令,可以快速扩展到AI芯片中的其他硬件设备上,使得当需要多个硬件设备并行运行网络模型时,不需要分别针对不同的硬件设备,将该网络模型的计算图中的各个操作重新翻译成对应的硬件执行命令,进一步降低了处理器的性能开销和提高了数据处理时的效率。
结合第一方面实施例的一种可能的实施方式,所述方法还包括:根据待处理的数据量,确定当前需要运行所述网络模型的硬件设备的第一数量。
其中,可以结合待处理的数据量的实际情况和支持运行网络模型的硬件设备总量,从所有硬件设备中确定出部分或全部,来运行该网络模型从而对待处理的输入数据进行处理。这样可以最大化的合理确定所需的硬件设备的数量,提高处理效率。
第二方面,本申请实施例还提供了一种数据处理方法,所述方法包括:在需要运行网络模型时,获取预先存储的所述网络模型对应的目标硬件设备能够执行的硬件执行命令;将所述硬件执行命令发送给所述目标硬件设备,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的。
第三方面,本申请实施例还提供了一种数据处理装置,包括:获取模块、命令生成模块、存储模块;获取模块,用于获取待运行的网络模型的计算图;命令生成模块,用于将网络模型的计算图中的各个操作翻译成对应的目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息;存储模块,用于利用网络执行图存储所述硬件执行命令,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,所述目标硬件设备能够通过执行所述网络执行图中的硬件执行命令来运行所述网络模型。
第四方面,本申请实施例还提供了一种数据处理装置,包括:获取模块、发送模块;获取模块,用于在需要运行网络模型时,获取预先存储的所述网络模型对应的目标硬件设备能够执行的硬件执行命令;发送模块,用于将所述硬件执行命令发送给所述目标硬件设备,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的。
第六方面,本申请实施例还提供了一种AI芯片,包括:内核、存储设备;内核,用于获取待运行的网络模型的计算图,并将所述网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息;存储设备,用于利用网络执行图存储所述硬件执行命令,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,所述目标硬件设备能够用于通过执行所述网络执行图中的硬件执行命令来运行所述网络模型。
第七方面,本申请实施例还提供了一种AI芯片,包括:硬件设备、存储设备、内核;存储设备,用于存储网络模型的计算图中的各个操作对应的硬件执行命令;内核,用于在需要运行所述网络模型时,从所述存储设备中获取先存储的所述硬件执行命令,并将所述的硬件执行命令发送给所述硬件设备;所述硬件设备,用于执行所述硬件执行命令,以实现运行所述网络模型对输入数据进行处理的目的。
第八方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器,所述处理器与所述存储器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的数据处理方法,或者,执行上述第二方面实施例提供的数据处理方法。
第九方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的数据处理方法,或者,执行上述第二方面实施例提供的数据处理方法。
本申请的其他特征和优点将在随后的说明书阐述。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种数据处理方法的流程示意图。
图2示出了本申请实施例提供的又一种数据处理方法的流程示意图。
图3示出了本申请实施例提供的一种数据处理装置的模块示意图。
图4示出了本申请实施例提供的又一种数据处理装置的模块示意图。
图5示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在不冲突的情况下,本申请中的各实施例或实施例中更具体的实施细节可以相互组合使用。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请中的术语“第一”、“第二”仅仅用来将一个实体或者操作或对象,与另一个实体或操作或对象区分开来,并不是要求或者暗示这些实体或操作或对象之间存在任何这种实际的关系或者顺序。
本申请实施例涉及使用网络模型(各类神经网络模型)进行数据处理的应用场景,为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的相关术语和概念进行介绍。
其中,神经网络模型可以是由神经单元组成的,具体可以理解为具有输入层、隐含层、输出层的神经网络模型,一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层(可以有很多隐含层)。神经网络模型使用一个或多个层(如,隐藏层、输出层等)来为接收到的输入生成输出,每个隐藏层的输出被用作下一层(如,下一个隐藏层或输出层)的输入,神经网络模型的每一层根据该层当前的相关参数(如,权重)为接收到的输入生成输出。
神经网络模型中包含的各个操作(如卷积运算、池化运算、激活、归一化、分类处理等操作)需要在被翻译为硬件执行命令后,才可以让硬件设备去执行,硬件设备通过执行这些硬件执行命令来使得网络模型中相应操作的功能被实现,从而支持在硬件设备上运行神经网络对输入数据进行处理的功能。
鉴于发明人发现,目前在面临需要通过运行网络模型来进行数据处理的场景时,处理器每次运行网络模型时,都需要重新将该网络模型中的各个操作临时翻译成硬件执行命令,并将临时为单个操作生成的硬件执行命令发送给硬件执行(即,在为网络模型的一个操作生成一部分硬件执行命令并将这部分命令发送给硬件执行以后,才会为同一网络模型的下一个操作生成另一部分的硬件执行命令并发送给硬件执行),使得处理器每次运行网络模型时都需要很大的性能开销,且耗时长。
因此,发明人根据网络模型的特点,提出了以下实施例,以此来改善上述问题。
本申请发明人考虑到在用一个网络模型进行数据处理时,网络模型本身的结构是固定的,只是这个网络模型被加载到硬件执行时每次处理的输入数据可能不一样,以及对应不同输入数据可能有不同的输出结果而已。基于此,本申请为网络模型中包含的各个操作提前生成(或称提前翻译)出对应的目标硬件设备能够执行的硬件执行命令,但是先不发给目标硬件设备(是指能够执行硬件执行命令的硬件设备)执行,而是先把网络模型中包含的各个操作对应的硬件执行命令存储起来(例如,存储到构建的网络执行图中),使得后续每次需要利用该网络模型来对输入数据进行处理(如识别、分类、特征提取、尺寸变换等)时,可以将事先存储的硬件执行命令分发给对应的硬件执行,以此有利于快速将网络模型的计算逻辑、计算任务加载到需要运行网络模型的硬件上。在提前为网络模型的各个操作生成硬件执行命令的情况下,每次执行的时候,仅需要对与输入、输出相关的内容进行修改即可,不需要重新将该网络模型中的各个操作再次翻译成硬件执行命令,以此改善处理器每次运行网络模型时,都需要很大的性能开销,且耗时长的问题。
本申请实施例提供一种数据处理方法,可以应用于各种人工智能应用场景下使用的网络模型。人工智能应用场景包括但不限于:文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制。该数据处理方法可应用于驱动程序,可以应用于AI芯片,该AI芯片可以是同构的处理器,也可以是异构的处理器。
为了更好的理解,下面将结合图1,对本申请实施例提供的数据处理方法进行说明。
S1:获取待运行的网络模型的计算图。
在将网络模型的各个操作翻译成硬件执行命令之前,获取待运行的、待翻译的网络模型的计算图。
在人工智能领域,计算图是一种常用的计算过程表示方法,常用来表示神经网络模型设计的计算逻辑,普遍应用在各类数据处理平台。计算图中的每个节点表示网络模型需要进行的相应运算(即算子或操作),节点之间的有向边表示节点对应的操作之间的依赖关系。计算图中的各个操作(或称算子)被翻译成硬件执行命令后,再发给对应的硬件设备去执行,进而完成该网络模型的执行。计算图中节点对应的操作运算符可定义在代数运算符(如向量的加、减、乘、除和矩阵乘法等)这个粒度上,对于运算符的抽象粒度较低的情况,往往一个网络模型的计算图可能包括很多个(例如可能有数千个)节点。
其中,步骤S1所获取的待运行、待翻译的网络模型的计算图,可以是原始计算图,也可以是经过优化后的计算图,例如可以是经过算子融合后得到的计算图。网络模型的网络结构转化为原始的计算图后,可以经过一次或多次优化,得到优化后的计算图。
作为一种实施方式,可以是AI芯片直接或间接获取网络模型的计算图,只要能够确定网络模型的结构、得知该网络模型需要实现的各个操作即可。AI芯片中设置有对应的驱动程序,驱动程序可以部署在AI芯片的内核中。
S2:将网络模型的计算图中的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令。
其中,S2的翻译过程可由AI芯片对应的驱动程序执行。
翻译得到的硬件执行命令中可包含目标硬件设备的设备信息(如设备标识),用于表示该硬件执行命令可以由哪个硬件设备来执行,不同的目标硬件设备对应的设备信息不同。网络模型中的操作被翻译后,得到的硬件执行命令可以在需要运行该硬件执行命令对应的网络模型时,被提供给对应的硬件设备执行。
目标硬件设备是指运行该硬件执行命令的硬件设备,是期望能够具有运行该网络模型这一能力的硬件对象。一个AI芯片可能会涉及多个硬件设备。
示例性的,AI芯片可以是为了承担繁重的计算任务而设计的专用的计算加速芯片(或称加速器),如,图形处理器(Graphic Processing Unit,GPU)、张量处理器(TensorProcessing Unit,TPU)等,当然,也可以是其他的同构或异构处理器。
可选的,一个AI芯片可以包含多个硬件设备,该多个硬件设备中的任一个,都可以按实际需求被作为目标硬件设备。一个硬件设备可以包含多种硬件执行单元,比如一个AI芯片中的一个硬件设备可以包含但不限于:用于通用计算的第一单元(CU,Compute engineUnit)、用于AI加速计算的第二单元(TU,Tensor Unit)、用于数据搬运的第三单元(DMA,Direct Memory Access)等。AI芯片中的一个硬件设备也可以视为含有多个硬件执行单元的计算集群。不同类型的硬件设备所包含的硬件执行单元的数量可以不同,且种类也可以不同。具体硬件架构不应理解为对本申请方法实施例的限制。
一种可选实施方式下,S2可包括:将网络模型的计算图中的各个操作的源代码编译成指令(硬件机器指令),并获得目标硬件设备执行各个操作所需的相关信息;根据各个操作的对应的指令与执行各个操作所需的相关信息,生成硬件执行命令。示例性的,目标硬件设备执行一个操作所需的相关信息可以用于反映与该操作相关的:硬件指令的地址、长度、指令需要操作多少个内存地址、内存地址的具体位置在哪里、内存大小是多少、指令之间的处理顺序是什么等。
示例性的,可利用预设第一API(Application Programming Interface,应用程序编程接口)函数将网络模型的计算图中的各个操作的源代码编译成指令,并利用预设第二API函数获得目标硬件设备执行各个操作所需的相关信息;利用预设第三API函数根据各个操作的对应的指令与执行各个操作所需的相关信息,生成硬件执行命令。其中,可以为网络模型的每个操作都提前生成各操作分别对应的硬件执行命令。为一个操作生成的硬件执行命令可能是成百条。
其中,网络模型的计算图中包含很多不同的操作(也称为算子,每个算子都有自己独特之处,用来完成特定的功能),例如卷积运算、池化运算、激活函数等,为了能把网络模型的计算图中的各个操作翻译成硬件能够执行的硬件执行命令,驱动程序提供一组比较通用的API函数,比如创建对象API、编译指令API、内存分配API、数据搬运API、执行API等。
示例性的,对于网络模型的每个操作,驱动程序提供了一个类似于C++语法的可编程语言的功能,操作的源代码可以用这种语法来实现,同时驱动程序也会利用预设第一API函数(例如创建对象API、编译指令API),通过编译器将网络模型的计算图中的一个操作的源代码编译成该操作对应的硬件指令。关于利用编译器将源代码编译为指令这部分的具体实现细节已经为本领域所熟知,在此不再介绍。
由于各个操作是需要有操作对象的,例如需要操作数据的,比如卷积运算这一操作, 需要将输入数据和权重进行卷积运算,可以通过驱动程序提供的一个内存分配API,在内存上面分配一块空间,提供给卷积运算。另外,各个操作中的有一部分可能会涉及到数据的搬运,因此驱动程序提供的数据搬运API,用于搬运运算过程中的数据。驱动程序可通过利用预设第二API函数(例如前述的内存分配API、数据搬运API),获得目标硬件设备执行各个操作所需的相关信息,可利用预设第三API函数(例如执行API),根据各个操作的对应的指令与执行各个操作所需的相关信息,生成硬件执行命令。其中,关于如何为单个操作,组织指令和相关信息来生成单个操作的硬件执行命令,这部分的实现方式已经为本领域所熟知,在此不再介绍。
采用本申请实施例提供的数据处理方法,为网络模型生成该网络模型对应的硬件执行命令这个过程只需要做一次,生成的硬件执行命令先缓存起来,例如存到构建的网络执行图(graph)中,每次要执行的时候,基于已经构建的网络执行图中所存的硬件执行命令,来做命令的分发以使硬件执行这些命令。而无需像现有技术那样将这个过程需要重复做很多次,且每做一次就把生成的命令立刻发给硬件去执行(现有技术每次分发命令前都要做一次翻译转化过程来生成所需的命令,分发很多次就需要翻译很多次)。
S3:利用网络执行图存储所述硬件执行命令。
在将网络模型的各个操作翻译成对应的目标硬件设备能够执行的硬件执行命令后,存储翻译得到的硬件执行命令,一种实施方式下,可以利用构建的网络执行图来存储。
网络执行图也能够用于反映网络模型的计算逻辑,可以视为一种新的计算图,但网络执行图无需像网络模型的原始计算图那样记录或存储各操作的源代码。
网络执行图用于记录为该网络模型生成的所有硬件执行命令,还可用于记录每个硬件执行命令的关键信息。该关键信息可包括起始地址、偏移量以及命令执行顺序等,根据起始地址和偏移量便可获悉该命令的长度、存储位置。关键信息用于获取硬件执行命令,目标硬件设备可根据关键信息来获取硬件执行命令。
网络执行图中存储关于该网络模型需要硬件执行的所有命令,将硬件执行命令存到构建的网络执行图(该过程可将网络模型包含的各个操作(包含特征参数)转换为硬件能够识别并执行的命令存储起来)后,在网络执行图或网络执行图中的命令被提供给目标硬件设备后,目标硬件设备能够基于该网络执行图中缓存的硬件执行命令运行该网络模型。
其中,可以是由AI芯片中的存储设备来利用网络执行图存储硬件执行命令。网络执行图可以是位于目标硬件设备上,也可以不位于目标硬件设备上。比如可以是位于与目标硬件设备连接的存储设备上。
一种可选实施方式下,利用网络执行图存储翻译的硬件执行命令的过程可以是,按照网络模型中包含的各个操作的执行顺序,依次将各个操作对应的硬件执行命令存储至网络执行图中,并对应记录每个硬件执行命令的关键信息。可以理解的是,相比于随机存储的方式,这种按照各个操作的执行顺序来存储硬件执行命令的方式,可以提高后续执行硬件执行命令的效率,由于后续在执行硬件执行命令时,需要按照网络模型中包含的各个操作的执行顺序去执行对应的硬件执行命令,才能保证网络模型正常运行,因此在存储硬件执行命令时,就按照这种执行顺序进行存储,后续执行指令时直接按照存储的先后顺序发送命令即可。
鉴于网络模型具有除了输入数据、输出结果不一样外,网络模型每次执行的计算操作都一样的特点,可以把网络模型中包含的各个操作,预先通过驱动程序全部翻译成一堆命令序列存储起来,每次执行网络模型时,将硬件执行命令进行微调即可。
例如,在需要运行一个AI模型来识别不同人脸图像的场景下,对于采用同一AI模型进行的两次人脸识别过程,因为用的是同一个AI模型,所以每次执行该AI模型时,所用的网络执行图(包含生成并缓存的硬件执行命令)所对应的本质计算逻辑不变,在识别完一张脸图后需要识别新脸图时,只需要把部分硬件执行命令中与输入、输出有关的内容/参数进行微调,例如,只需要将硬件执行命令中的用于获取输入数据的读地址替换为新数据所在的地址,和/或,将用于存储输出数据的写地址替换为新的写地址,以便利用同一个AI模型对新的输入数据进行处理,以及将新输入数据对应的输出结果存储到新的位置。这样极大的降低了处理器的负担,且提高了数据处理的效率。
可以理解的是,该方法可以适用于多个网络模型的场景,即在网络模型的数量有多个时,相应地,可针对每一个网络模型,将该网络模型中包含的各个操作翻译成对应的目标硬件设备能够执行的硬件执行命令,硬件执行命令中包含目标硬件设备的设备信息,并存储翻译的硬件执行命令。其中,一种网络模型对应一个唯一的网络执行图。通过将不同网络模型中包含的各个操作分别翻译成目标硬件设备能够执行的硬件执行命令,并存储起来,后续在需要执行哪个网络模型(可以根据待处理任务来选择所需的网络模型)时,可选择所需要的网络模型对应的事先存储的硬件执行命令,从而进行命令的分发以使硬件执行相应网络模型对应的这些硬件执行命令。
可选地,该数据处理方法还可包括S4:在需要运行网络模型对输入数据进行处理时,获取预先存储的硬件执行命令,并将硬件执行命令发送给目标硬件设备执行,实现网络模型在目标硬件设备上的运行。例如,按照网络模型中包含的各个操作的执行顺序,依次将对应的硬件执行命令发送给目标硬件设备执行,从而支持在目标硬件设备上运行网络模型来对输入数据进行处理的功能。
在提前存储网络模型对应的所有硬件执行命令的情况下,后续在需要运行网络模型对输入数据进行处理时,可以直接基于预先存储的硬件执行命令,来做命令的分发以使硬件执行这些命令。
其中,将硬件执行命令发送给所述目标硬件设备执行,可包括:修改硬件执行命令中用于获取输入数据的读地址,和/或,修改硬件执行命令中用于存储输出数据的写地址;将修改后的硬件执行命令发送给目标硬件设备执行,以使目标硬件设备执行修改后的硬件执行命令,实现在硬件上运行网络模型对输入数据进行处理的功能或目的。可选的,可以按照网络模型中包含的各个操作的执行顺序,依次将修改后的对应的硬件执行命令发送给目标硬件设备执行,以使目标硬件设备执行修改后的硬件执行命令。
假设前一次执行该网络模型时,输入数据存储在A位置且输出数据存储在B位置,若当前需要用该网络模型对存储在C位置的输入数据进行处理时,可以修改硬件执行命令中用于获取输入数据的读地址(即将读地址从原本的A位置修改为C位置),以及修改硬件执行命令中用于存储输出数据的写地址(如将写地址从原本的B位置修改为D位置),之后,按照网络模型中包含的各个操作的执行顺序,依次将修改后的硬件执行命令发送给目标硬件设备执行,以使目标硬件设备执行修改后的硬件执行命令,从而实现在目标硬件设备运行网络模型时能够对存储在C位置的输入数据进行处理,并将处理得到的输出数据存储到D位置。
可以理解的是,若输入数据的获取地址不变(例如上一次需要处理的输入数据在A位置,当前需要处理的新的输入数据仍然被放在A位置,可用新的输入数据替换A位置的原输入数据),则不需要修改硬件执行命令中用于获取输入数据的读地址。同理,若输出数据的存储地址不变(例如在当前对新输入数据进行处理后,期望得到的输出数据仍然存储到B位置),则不需要修改硬件执行命令中用于存储输出数据的写地址。若期望当前对A位置的新输入数据进行处理后,将得到的输出数据存储到D位置,则可修改硬件执行命令中用于存储输出数据的写地址(如将写地址从原本的B位置修改为D位置)。
上面描述的过程是针对AI芯片内部的一个硬件设备进行说明的,一种实施方式下,若AI芯片包含多个并行的硬件设备,为了支持多个并行的硬件设备对于网络模型的并行运行,该数据处理方法还可包括:S5:根据AI芯片中的硬件设备的总数量,对S2得到的硬件执行命令进行复制;S6:根据AI芯片中除所述目标硬件设备外的其他硬件设备的设备信息,对复制出的硬件执行命令中包含的设备信息进行修改,得到修改过设备信息的硬件执行命令,其中,修改过设备信息的硬件执行命令能够被提供给其他硬件设备执行。
其中,通过将硬件执行命令复制为指定数量份,指定数量为AI芯片中的硬件设备的总数量,根据AI芯片中除目标硬件设备外的硬件设备的设备信息修改每一份复制的硬件执行命令(即修改该硬件执行命令中的设备信息),使得修改后的每一份复制的硬件执行命令能够被其他硬件设备运行。
在得到修改过设备信息的硬件执行命令后,可以将为该网络模型生成的硬件执行命令,按照设备信息匹配的原则,发送给AI芯片中设备信息匹配的各个硬件设备,从而使得AI芯片中的每个硬件设备都能够得到各自能够执行的硬件执行命令,使得AI芯片中的每个硬件设备都能够运行该网络模型。可以理解的是,也可以通过发送网络执行图的方式进行命令的分发,也即,将网络执行图复制为多份,并将网络执行图中的设备信息进行修改,然后将设备信息不同的多份网络执行图分别发送给AI芯片中设备信息匹配的各个硬件设备。
假设AI芯片中能够运行网络模型的硬件设备的总数量为3(假设3个硬件设备分别记为硬件设备0、硬件设备1、硬件设备2,其中,硬件设备0为目标硬件设备),则可以将针对目标硬件设备生成的硬件执行命令复制2份,针对其中一份复制的硬件执行命令,根据硬件设备1的设备信息来修改该份复制的硬件执行命令,使得修改后的该份复制的硬件执行命令能够被硬件设备1执行,同理,可根据硬件设备2的设备信息来修改另一份复制的硬件执行命令,使得修改后的另一份复制的硬件执行命令能够被硬件设备2执行。将已经为网络模型翻译得到的硬件执行命令在同一个芯片内进行扩展,使得该芯片内的各个硬件设备都能够运行该网络模型。
该种实施方式下,使得针对一个硬件设备生成的硬件执行命令,可以快速扩展到其他硬件设备上,在一个应用场景下,可以先把网络执行图复制到其他硬件设备上,再修改其中与设备信息相关的信息(对网络执行图进行微调)。基于已经生成并缓存的一份硬件执行命令,复制多份并缓存到多个硬件设备上,对于复制过去的硬件执行命令,针对所匹配的硬件设备进行信息修改。此处的信息修改是微调,目的是将复制的硬件执行命令修改为适配各硬件设备的命令。例如,基于硬件设备0和一个AI模型,为硬件设备0和该AI模型生成并缓存一份硬件执行命令的情况下,将这些硬件执行命令复制到硬件设备1、硬件设备2、硬件设备3后,将复制到硬件设备1、硬件设备2、硬件设备3的三份命令,分别修改为适用于硬件设备1的命令、适用于硬件设备2的命令、适用于硬件设备3的命令。
可以理解的是,若不是采用前述的命令扩展方式,就得:先指定一个硬件设备,为指定的这个硬件设备生成一份硬件执行命令,再指定另一个硬件设备,为该另一个硬件设备又生成另一份硬件执行命令,这其实又是另一个层次的重复过程,为不同硬件设备多次分别生成命令的过程也会在一定程度上影响处理器的性能表现,使得功耗高,且效率低下。
可选地,关于当前时刻需要运行网络模型的硬件设备的数量,可以由人工进行配置,也可以根据待处理的数据量来确定,此时,该数据处理方法,还可包括:根据待处理的数据量,确定当前需要运行网络模型的硬件设备的第一数量。其中,第一数量小于等于前述的总数量,每次运行网络模型时,并不是一定要将该芯片内的各个硬件设备都用完,具体需要运行多少个硬件设备可根据实际应用场景决定。
在待处理的数据任务量少的情况下,调用一个硬件设备可能就足以满足需求,在任务量多的情况下,可能需要多个硬件设备并行运行。例如,对于用AI模型识别医疗场景下的CT(Computed Tomography,电子计算机断层扫描)图,可能只需要识别一张图或者少量的图像数据,此时用一个硬件设备来运行该AI网络就能满足运算需求;而对于一些需要在短时间内进行大量识别的场景,即需要对大量的图像数据进行识别,或对计算结果的实时性要求高的场景,可以用多个硬件设备并行运行AI网络来进行处理。
需要说明的是,上述的将网络模型中的各个操作翻译成硬件执行命令的过程与执行硬件执行命令的过程,这两个过程可以是由同一个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相比于图1,仅从执行硬件执行命令这一角度进行描述。
S10:在需要运行网络模型时,获取预先存储的所述网络模型对应的目标硬件设备能够执行的硬件执行命令。
S20:将硬件执行命令发送给目标硬件设备执行,以使所述目标硬件设备执行所述硬件执行命令,从而在所述目标硬件设备上运行所述网络模型。
为了降低处理器的性能开销以及提高效率,可以事先将网络模型中包含的各个操作翻译成目标硬件设备能够执行的硬件执行命令,并存储起来(可利用前述的网络执行图存储),在后续需要运行网络模型对输入数据进行处理时,获取预先存储的该网络模型对应的硬件执行命令,并提供给目标硬件设备执行。
一种实施方式下,可以是按照网络模型中包含的各个操作的执行顺序,依次将对应的硬件执行命令发送给目标硬件设备执行。在获取到预先存储的网络模型对应的目标硬件设备能够执行的硬件执行命令后,按照网络模型中包含的各个操作的执行顺序,依次将对应的硬件执行命令发送给标硬件设备执行,以使目标硬件设备执行硬件执行命令,从而实现在目标硬件设备上运行网络模型的功能,便于在目标硬件设备上能够运行网络模型对输入数据进行处理。
图2所示的数据处理方法的原理及产生的技术效果和图1所示的方法实施例相同,为简要描述,图2所示实施例部分未提及之处,可参考前述图1所示方法实施例中相应内容。
基于同样的发明构思,本申请实施例还提供了一种数据处理装置100,如图3所示,该数据处理装置100包括:获取模块110、命令生成模块120、存储模块130。该获取模块110也可以记为第一获取模块。
获取模块110,用于获取待运行的网络模型的计算图。
命令生成模块120,用于将所述网络模型的计算图中的各个操作翻译成对应的目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息。
存储模块130,用于利用网络执行图存储所述硬件执行命令,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,所述目标硬件设备能够通过执行所述网络执行图中的硬件执行命令来运行所述网络模型。
可选地,命令生成模块120,用于利用预设第一API函数将所述网络模型的计算图中的各个操作的源代码编译成指令,并利用预设第二API函数获得目标硬件设备执行各个操作所需的相关信息;利用预设第三API函数根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
存储模块130,用于按照所述网络模型中包含的各个操作的执行顺序,依次将各个操作对应的硬件执行命令存储至所述网络执行图中,并记录每个硬件执行命令的关键信息,所述关键信息用于获取所述硬件执行命令。
可选地,该数据处理装置100还包括:发送模块。
获取模块110,还用于在需要运行所述网络模型时,获取预先存储在所述网络执行图中的所述硬件执行命令。
发送模块,用于将所述硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型。
可选地,发送模块,用于修改所述硬件执行命令中用于获取输入数据的读地址,和/或修改所述硬件执行命令中用于存储输出数据的写地址;将修改后的对应的硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行修改后的所述硬件执行命令,实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的。
可选地,该数据处理装置100还包括:复制模块,用于根据所述AI芯片中的硬件设备的总数量,对所述硬件执行命令进行复制;根据所述AI芯片中除所述目标硬件设备外的其他硬件设备的设备信息,对复制出的所述硬件执行命令中包含的设备信息进行修改,得到修改过设备信息的硬件执行命令,其中,修改过设备信息的硬件执行命令能够被提供给所述其他硬件设备执行。
可选地,复制模块,还用于根据待处理的数据量,当前需要运行所述网络模型的硬件设备的第一数量。
基于同样的发明构思,本申请实施例还提供了又一种应用于运行网络模型进行数据处理的场景的数据处理装置200,如图4所示,该数据处理装置200包括:获取模块210、发送模块220。该获取模块210也可以记为第二获取模块。
获取模块210,用于在需要运行网络模型时,获取预先存储的所述网络模型对应的目标硬件设备能够执行的硬件执行命令。
发送模块220,用于将所述硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的。
本申请实施例所提供的数据处理装置100或数据处理装置200,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
基于同样的发明构思,本申请实施例还提供了一种AI芯片,该AI芯片包括:内核以及存储设备。该AI芯片可用于执行前述的数据处理方法。
内核,用于获取待运行的网络模型的计算图,并将所述网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息;
其中,内核中部署有驱动程序,可以由该驱动程序来将网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令,并将其硬件执行命令发给存储设备。
内核可以是利用预设第一API函数将网络模型的计算图中的各个操作的源代码编译成指令,并利用预设第二API函数获得目标硬件设备执行各个操作所需的相关信息;利用预设第三API函数根据各个操作的对应的指令与执行各个操作所需的相关信息,生成硬件执行命令。
存储设备,用于利用网络执行图存储硬件执行命令,其中,网络执行图用于记录硬件执行命令,硬件执行命令用于运行网络模型。
一种可选实施方式下,存储设备可以是按照网络模型中包含的各个操作的执行顺序,依次将各个操作对应的硬件执行命令存储至网络执行图中,并记录每个硬件执行命令的关键信息,关键信息用于获取硬件执行命令。
由于将网络模型中的各个操作翻译成硬件执行命令的过程与执行硬件执行命令的过程可以由不同的AI芯片来实现,因此,AI芯片1在得到硬件执行命令后,可以是存储在AI芯片1的存储设备中,也可以是存储到AI芯片2的存储设备中,或者存储到AI芯片1与AI芯片2共享的存储设备中。
基于同样的发明构思,本申请实施例还提供了一种AI芯片,该AI芯片包括:硬件设备、内核以及存储设备。该AI芯片可用于执行前述的数据处理方法。
存储设备,用于存储网络模型的计算图中的各个操作对应的硬件执行命令。
内核,用于在需要运行网络模型时,从存储设备中获取先存储的硬件执行命令,并将的硬件执行命令发送给硬件设备。
硬件设备,用于执行硬件执行命令,以实现运行网络模型对输入数据进行处理的目的。
由于将网络模型中的各个操作翻译成硬件执行命令的过程与执行硬件执行命令的过程可以由不同的AI芯片来实现。因此,一种实施方式下,可以是该AI芯片接收其他AI芯片发送的硬件执行命令,并执行硬件执行命令。此时,内核还用于接收其他AI芯片发送的硬件执行命令,并存储给硬件设备执行。
本申请实施例所提供的AI芯片,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,AI芯片实施例部分未提及之处,可参考前述方法实施例中相应内容。
如图5所示,图5示出了本申请实施例提供的一种电子设备300的结构框图。所述电子设备300包括:收发器310、存储器320、通讯总线330以及处理器340。所述收发器310、所述存储器320、处理器340各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线330或信号线实现电性连接。其中,收发器310用于收发数据。存储器320用于存储计算机程序,如存储有图3或图4中所示的软件功能模块,即图3的数据处理装置100或图4的数据处理装置200。其中,数据处理装置100包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器320中或固化在所述电子设备300的操作系统(Operating System,OS)中的软件功能模块。所述处理器340,用于执行存储器320中存储的可执行模块。
例如,处理器340,用于执行数据处理装置100包括的软件功能模块或计算机程序时,处理器340,用于获取待运行的网络模型的计算图;将网络模型的计算图中的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息;利用网络执行图存储所述硬件执行命令,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,所述目标硬件设备能够通过执行所述网络执行图中的硬件执行命令来运行所述网络模型。
处理器340,用于执行数据处理装置200包括的软件功能模块或计算机程序时,处理器340,用于在需要运行所述网络模型时,获取预先存储的所述网络模型对应的目标硬件设备能够执行的硬件执行命令;将所述硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的。
可以理解的是,电子设备300也可以包括2个处理器340,其中一个处理器340负责将网络模型中的各个操作翻译成硬件执行命令,一个处理器340负责执行硬件执行命令。
其中,存储器320可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器340可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit, CPU)、网络处理器(NetworkProcessor,NP)等;还可以是图形处理器(Graphic Processing Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器340也可以是任何常规的处理器等。
其中,上述的电子设备300,包括但不限于智能手机、平板、电脑、工控机、车载设备、服务器、智能穿戴设备、边缘盒子等。
本申请实施例还提供了一种非易失性的计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备300运行时,执行上述所示的数据处理方法。而前述的计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个计算机可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (14)

1.一种数据处理方法,其特征在于,所述方法包括:
获取待运行的网络模型的计算图;
通过AI芯片对应的驱动程序将所述网络模型的计算图中的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息,用于表示该硬件执行命令可以由哪个硬件设备来执行,其中,设备信息包括设备标识;
利用网络执行图存储所述硬件执行命令,使得后续每次需要运行所述网络模型时,不需要重新对所述网络模型的计算图中的各个操作进行临时翻译,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,并记录用于获取每个硬件执行命令的关键信息,所述关键信息包括起始地址、偏移量以及命令执行顺序,所述目标硬件设备用于通过执行所述网络执行图中的硬件执行命令来运行所述网络模型;
其中,通过以下方式将所述网络模型的计算图中的各个操作翻译成硬件设备能够执行的硬件执行命令:
将所述网络模型的计算图中的各个操作的源代码编译成指令,并获得目标硬件设备执行各个操作所需的相关信息,其中,所述相关信息包括指令的地址、长度、指令需要操作多少个内存地址、指令之间的执行顺序;
根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
2.根据权利要求1所述的方法,其特征在于,将所述网络模型的计算图中包含的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令,包括:
利用预设第一API函数将所述网络模型的计算图中的各个操作的源代码编译成指令,并利用预设第二API函数获得目标硬件设备执行各个操作所需的相关信息;
利用预设第三API函数根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
3.根据权利要求1所述的方法,其特征在于,利用网络执行图存储所述硬件执行命令,包括:
按照所述网络模型中包含的各个操作的执行顺序,依次将各个操作对应的硬件执行命令存储至所述网络执行图中,并记录每个硬件执行命令的关键信息,所述关键信息用于获取所述硬件执行命令。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在需要运行所述网络模型时,获取预先存储在所述网络执行图中的所述硬件执行命令;
将所述硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型。
5.根据权利要求4所述的方法,其特征在于,将所述硬件执行命令发送给所述目标硬件设备执行,包括:
修改所述硬件执行命令中用于获取输入数据的读地址,和/或,修改所述硬件执行命令中用于存储输出数据的写地址;
将修改后的硬件执行命令发送给所述目标硬件设备执行,以使所述目标硬件设备执行修改后的所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型来对输入数据进行处理。
6.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
根据所述AI芯片中的硬件设备的总数量,对所述硬件执行命令进行复制;
根据所述AI芯片中除所述目标硬件设备外的其他硬件设备的设备信息,对复制出的所述硬件执行命令中包含的设备信息进行修改,得到修改过设备信息的硬件执行命令,其中,修改过设备信息的硬件执行命令能够被提供给所述其他硬件设备执行。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
根据待处理的数据量,确定当前需要运行所述网络模型的硬件设备的第一数量。
8.一种数据处理方法,其特征在于,所述方法包括:
在需要运行网络模型时,获取预先利用网络执行图存储的所述网络模型对应的目标硬件设备能够执行的硬件执行命令,使得后续每次需要运行所述网络模型时,不需要重新对所述网络模型的计算图中的各个操作进行临时翻译,其中,所述硬件执行命令为通过AI芯片对应的驱动程序将所述网络模型的计算图中的各个操作翻译成AI芯片的目标硬件设备能够执行的硬件执行命令而得到,所述硬件执行命令中包含所述目标硬件设备的设备信息,用于表示该硬件执行命令可以由哪个硬件设备来执行,其中,设备信息包括设备标识;所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,并记录用于获取每个硬件执行命令的关键信息,所述关键信息包括起始地址、偏移量以及命令执行顺序;
将所述硬件执行命令发送给所述目标硬件设备,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的;
其中,通过以下方式将所述网络模型的计算图中的各个操作翻译成硬件设备能够执行的硬件执行命令:
将所述网络模型的计算图中的各个操作的源代码编译成指令,并获得目标硬件设备执行各个操作所需的相关信息,其中,所述相关信息包括指令的地址、长度、指令需要操作多少个内存地址、指令之间的执行顺序;
根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
9.一种数据处理装置,其特征在于,包括:
获取模块,用于获取待运行的网络模型的计算图;
命令生成模块,用于通过AI芯片对应的驱动程序将所述网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息,用于表示该硬件执行命令可以由哪个硬件设备来执行,其中,设备信息包括设备标识;
存储模块,用于利用网络执行图存储所述硬件执行命令,使得后续每次需要运行所述网络模型时,不需要重新对所述网络模型的计算图中的各个操作进行临时翻译,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,并记录用于获取每个硬件执行命令的关键信息,所述关键信息包括起始地址、偏移量以及命令执行顺序,所述目标硬件设备用于通过执行所述网络执行图中的硬件执行命令来运行所述网络模型;
其中,通过以下方式将所述网络模型的计算图中的各个操作翻译成硬件设备能够执行的硬件执行命令:
将所述网络模型的计算图中的各个操作的源代码编译成指令,并获得目标硬件设备执行各个操作所需的相关信息,其中,所述相关信息包括指令的地址、长度、指令需要操作多少个内存地址、指令之间的执行顺序;
根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
10.一种数据处理装置,包括:
获取模块,用于在需要运行网络模型时,获取预先利用网络执行图存储的所述网络模型对应的目标硬件设备能够执行的硬件执行命令,使得后续每次需要运行所述网络模型时,不需要重新对所述网络模型的计算图中的各个操作进行临时翻译,其中,所述硬件执行命令为通过AI芯片对应的驱动程序将所述网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令而得到,所述硬件执行命令中包含所述目标硬件设备的设备信息,用于表示该硬件执行命令可以由哪个硬件设备来执行,其中,设备信息包括设备标识;所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,并记录用于获取每个硬件执行命令的关键信息,所述关键信息包括起始地址、偏移量以及命令执行顺序;
发送模块,用于将所述硬件执行命令发送给所述目标硬件设备,以使所述目标硬件设备执行所述硬件执行命令,以实现在所述目标硬件设备上运行所述网络模型对输入数据进行处理的目的;
其中,通过以下方式将所述网络模型的计算图中的各个操作翻译成硬件设备能够执行的硬件执行命令:
将所述网络模型的计算图中的各个操作的源代码编译成指令,并获得目标硬件设备执行各个操作所需的相关信息,其中,所述相关信息包括指令的地址、长度、指令需要操作多少个内存地址、指令之间的执行顺序;
根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
11.一种AI芯片,其特征在于,包括:
内核,用于获取待运行的网络模型的计算图,并通过对应的驱动程序将所述网络模型的计算图中的各个操作翻译成目标硬件设备能够执行的硬件执行命令,所述硬件执行命令中包含所述目标硬件设备的设备信息,用于表示该硬件执行命令可以由哪个硬件设备来执行,其中,设备信息包括设备标识;
存储设备,用于利用网络执行图存储所述硬件执行命令,使得后续每次需要运行所述网络模型时,不需要重新对所述网络模型的计算图中的各个操作进行临时翻译,其中,所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,并记录用于获取每个硬件执行命令的关键信息,所述关键信息包括起始地址、偏移量以及命令执行顺序,所述目标硬件设备用于通过执行所述网络执行图中的硬件执行命令来运行所述网络模型;
其中,通过以下方式将所述网络模型的计算图中的各个操作翻译成硬件设备能够执行的硬件执行命令:
将所述网络模型的计算图中的各个操作的源代码编译成指令,并获得目标硬件设备执行各个操作所需的相关信息,其中,所述相关信息包括指令的地址、长度、指令需要操作多少个内存地址、指令之间的执行顺序;
根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
12.一种AI芯片,其特征在于,包括:
硬件设备;
存储设备,用于利用网络执行图存储网络模型的计算图中的各个操作对应的硬件执行命令,使得后续每次需要运行所述网络模型时,不需要重新对所述网络模型的计算图中的各个操作进行临时翻译,其中,所述硬件执行命令为通过AI芯片对应的驱动程序将所述网络模型的计算图中的各个操作翻译成硬件设备能够执行的硬件执行命令而得到,所述硬件执行命令中包含所述硬件设备的设备信息,用于表示该硬件执行命令可以由哪个硬件设备来执行,其中,设备信息包括设备标识;所述网络执行图用于记录为所述网络模型生成的所有硬件执行命令,并记录用于获取每个硬件执行命令的关键信息,所述关键信息包括起始地址、偏移量以及命令执行顺序;
内核,用于在需要运行所述网络模型时,从所述存储设备中获取预先存储的所述硬件执行命令,并将所述硬件执行命令发送给所述硬件设备;
所述硬件设备,用于执行所述硬件执行命令,以实现运行所述网络模型对输入数据进行处理的目的;
其中,通过以下方式将所述网络模型的计算图中的各个操作翻译成硬件设备能够执行的硬件执行命令:
将所述网络模型的计算图中的各个操作的源代码编译成指令,并获得目标硬件设备执行各个操作所需的相关信息,其中,所述相关信息包括指令的地址、长度、指令需要操作多少个内存地址、指令之间的执行顺序;
根据各个操作的对应的指令与执行各个操作所需的相关信息,生成所述硬件执行命令。
13.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储程序;
所述处理器,用于调用存储于所述存储器中的程序,以执行如权利要求1-8中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1-8中任一项所述的方法。
CN202211486836.8A 2022-11-25 2022-11-25 数据处理方法、装置、ai芯片、电子设备及存储介质 Active CN115576699B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211486836.8A CN115576699B (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
CN202211486836.8A CN115576699B (zh) 2022-11-25 2022-11-25 数据处理方法、装置、ai芯片、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN115576699A CN115576699A (zh) 2023-01-06
CN115576699B true CN115576699B (zh) 2024-03-12

Family

ID=84590319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211486836.8A Active CN115576699B (zh) 2022-11-25 2022-11-25 数据处理方法、装置、ai芯片、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115576699B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024108907A1 (zh) * 2022-11-25 2024-05-30 成都登临科技有限公司 一种数据处理方法、装置、ai芯片、电子设备及存储介质
CN116382880B (zh) * 2023-06-07 2023-08-11 成都登临科技有限公司 任务执行方法、装置、处理器、电子设备及存储介质
CN116431315B (zh) * 2023-06-07 2023-08-29 成都登临科技有限公司 批处理任务的处理方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647981A (zh) * 2019-09-23 2020-01-03 北京中科寒武纪科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN110908667A (zh) * 2019-11-18 2020-03-24 北京迈格威科技有限公司 神经网络联合编译的方法、装置和电子设备
CN111079909A (zh) * 2018-10-19 2020-04-28 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111274023A (zh) * 2018-12-05 2020-06-12 上海寒武纪信息科技有限公司 数据处理方法、装置、计算机系统和存储介质
CN113435570A (zh) * 2021-05-07 2021-09-24 西安电子科技大学 可编程卷积神经网络处理器、方法、设备、介质、终端
CN114356738A (zh) * 2021-12-31 2022-04-15 上海寒武纪信息科技有限公司 预估执行神经网络模型所需时间的方法及相关产品
CN114461221A (zh) * 2022-01-27 2022-05-10 北京奕斯伟计算技术有限公司 编译方法、编译装置、电子设备、存储介质
CN115099399A (zh) * 2022-06-27 2022-09-23 清华大学 神经网络模型部署方法、装置、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
WO2020132833A1 (en) * 2018-12-24 2020-07-02 Intel Corporation Methods and apparatus to process machine learning model in multi-process web browser environment
US20190391796A1 (en) * 2019-06-28 2019-12-26 Intel Corporation Control of scheduling dependencies by a neural network compiler
US12002145B2 (en) * 2020-08-17 2024-06-04 Intel Corporation Apparatus and method for efficient graphics processing including ray tracing
US12118460B2 (en) * 2020-11-06 2024-10-15 Micron Technology, Inc. Discovery of hardware characteristics of deep learning accelerators for optimization via compiler
US12106154B2 (en) * 2021-06-12 2024-10-01 Intel Corporation Serverless computing architecture for artificial intelligence workloads on edge for dynamic reconfiguration of workloads and enhanced resource utilization

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111079909A (zh) * 2018-10-19 2020-04-28 中科寒武纪科技股份有限公司 运算方法、系统及相关产品
CN111274023A (zh) * 2018-12-05 2020-06-12 上海寒武纪信息科技有限公司 数据处理方法、装置、计算机系统和存储介质
CN110647981A (zh) * 2019-09-23 2020-01-03 北京中科寒武纪科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN110908667A (zh) * 2019-11-18 2020-03-24 北京迈格威科技有限公司 神经网络联合编译的方法、装置和电子设备
CN113435570A (zh) * 2021-05-07 2021-09-24 西安电子科技大学 可编程卷积神经网络处理器、方法、设备、介质、终端
CN114356738A (zh) * 2021-12-31 2022-04-15 上海寒武纪信息科技有限公司 预估执行神经网络模型所需时间的方法及相关产品
CN114461221A (zh) * 2022-01-27 2022-05-10 北京奕斯伟计算技术有限公司 编译方法、编译装置、电子设备、存储介质
CN115099399A (zh) * 2022-06-27 2022-09-23 清华大学 神经网络模型部署方法、装置、电子设备及存储介质

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
PyCARL: A PyNN Interface for Hardware-Software Co-Simulation of Spiking Neural Network;Adarsha Balaji 等;《2020 International Joint Conference on Neural Networks (IJCNN)》;20200928;1-10 *
QingLong: 一种基于常变量异步拷贝的神经网络编程模型;杜伟健 等;《计算机学报》;20200415;第43卷(第4期);587-599 *
W.Daniel Hillis.《丹尼尔·希利斯讲计算机》.天津科学技术出版社,2021,86-87. *
基于K-L散度的int8量化方法研究与框架实现;钱源;《中国优秀硕士学位论文全文数据库 信息科技辑》;20210115;I140-292 *
朱有产 等.《微机原理与接口技术 基于Proteus仿真》.北京邮电大学出版社,2021,第3.1、3.3节. *
李心广 等.《普通高等教育计算机类系列教材 汇编语言与计算机系统组成 第2版》.机械工业出版社,2021,(第2版),第2.7节. *
韩兆轩 等.《计算机导论》.西北工业大学出版社,1996,6.3 编译程序. *

Also Published As

Publication number Publication date
CN115576699A (zh) 2023-01-06

Similar Documents

Publication Publication Date Title
CN115576699B (zh) 数据处理方法、装置、ai芯片、电子设备及存储介质
CN111258744A (zh) 一种基于异构计算的任务处理方法及软硬件框架系统
US20240161474A1 (en) Neural Network Inference Acceleration Method, Target Detection Method, Device, and Storage Medium
CN111104120B (zh) 神经网络编译方法、系统及相应异构计算平台
US6363522B1 (en) Method and apparatus for handling exceptions as normal control flow
Falch et al. Machine learning based auto-tuning for enhanced opencl performance portability
US10782935B2 (en) Method and system to provide a generalized framework for dynamic creation of module analytic applications
CN109324893B (zh) 分配内存的方法和装置
CN110825514B (zh) 人工智能芯片以及用于人工智能芯片的指令执行方法
US20240143397A1 (en) Data processing method and system, and related device
CN115437637A (zh) 一种编译方法及相关装置
CN116934330A (zh) 一种调用智能合约的方法及执行方法、计算机设备及存储介质
US20220343145A1 (en) Method and system for graph neural network acceleration
CN115586972B (zh) 命令生成方法、装置、ai芯片、电子设备及存储介质
EP4170482A1 (en) Deployment of machine learned models to plurality of devices
CN116360960A (zh) 基于众核芯片的内存分配方法和内存分配装置
CN112668659A (zh) 模型训练方法、平台和电子设备
WO2024108907A1 (zh) 一种数据处理方法、装置、ai芯片、电子设备及存储介质
CN112540835B (zh) 一种混合机器学习模型的运行方法、装置及相关设备
EP4414892A1 (en) Instruction generation method and apparatus for neural network accelerator, and electronic device
US20240330666A1 (en) Method and electronic apparatus for generating instructions of artificial intelligence accelerator
US11809981B1 (en) Performing hardware operator fusion
US20240143496A1 (en) Data processing method and system, and related device
CN118409758B (zh) 用于编译核函数的方法、装置、介质和程序产品
CN113495727B (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