CN114724103A - 神经网络处理系统、指令生成方法、装置及电子设备 - Google Patents

神经网络处理系统、指令生成方法、装置及电子设备 Download PDF

Info

Publication number
CN114724103A
CN114724103A CN202210447166.2A CN202210447166A CN114724103A CN 114724103 A CN114724103 A CN 114724103A CN 202210447166 A CN202210447166 A CN 202210447166A CN 114724103 A CN114724103 A CN 114724103A
Authority
CN
China
Prior art keywords
processing
neural network
node
sequence information
feature
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210447166.2A
Other languages
English (en)
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.)
Shanghai Sensetime Lingang Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Lingang Intelligent 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 Shanghai Sensetime Lingang Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Lingang Intelligent Technology Co Ltd
Priority to CN202210447166.2A priority Critical patent/CN114724103A/zh
Publication of CN114724103A publication Critical patent/CN114724103A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • G06F18/253Fusion techniques of extracted features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Image Analysis (AREA)

Abstract

本公开提供了一种神经网络处理系统、指令生成方法、装置、电子设备及存储介质,该系统包括:计算模块和缓冲模块;所述计算模块包括多个计算单元;待运行的神经网络中包括的每种特征处理层与所述计算模块中的至少一个计算单元相匹配;所述计算单元,用于从所述缓冲模块中获取输入特征数据;基于匹配的特征处理层的运算原理,对获取的所述输入特征数据进行运算处理,得到输出特征数据;并将所述输出特征数据缓冲至所述缓冲模块。

Description

神经网络处理系统、指令生成方法、装置及电子设备
技术领域
本公开涉及深度学习技术领域,具体而言,涉及一种神经网络处理系统、指令生成方法、装置、电子设备及存储介质。
背景技术
高级驾驶辅助系统(Advanced Driving Assistance System,ADAS)是利用安装于车辆上的各式各样的传感器,通过收集车内外的环境数据,进行静、动态物体的辨识、侦测与追踪等技术上的处理,从而能够让驾驶者快速察觉可能发生的危险,以提高车辆行驶安全性的主动安全技术。该系统是由很多计算机视觉的任务组成的。近些年来,得益于深度神经网络(Deep Neural Networks,DNN)在计算机视觉的快速发展,ADAS也变得更加智能化。
因此,提出一种能够高效的处理ADAS中的各个任务的系统尤为重要。
发明内容
有鉴于此,本公开至少提供一种神经网络处理系统、指令生成方法、装置、电子设备及存储介质。
第一方面,本公开提供了一种神经网络处理系统,包括:计算模块和缓冲模块;所述计算模块包括多个计算单元;待运行的神经网络中包括的每种特征处理层与所述计算模块中的至少一个计算单元相匹配;
所述计算单元,用于从所述缓冲模块中获取输入特征数据;基于匹配的特征处理层的运算原理,对获取的所述输入特征数据进行运算处理,得到输出特征数据;并将所述输出特征数据缓冲至所述缓冲模块。
这里,计算模块包括多个计算单元,待运行的神经网络中包括的每种特征处理层与计算模块中的至少一个计算单元相匹配,每个计算单元可以根据匹配的特征处理层的运算原理对获取到的输入特征数据进行运算处理,得到输出特征数据,实现对待运行的神经网络中包括的每种特征处理层的运行;进而使得该系统可以对具有任何网络结构的神经网络进行推理,该系统的应用较为广泛。比如,在待运行的神经网络为多模型和/或多模式的神经网络时,该系统能够运行该待运行的神经网络中的每种模型、每种模式,无需针对每种模型或每种模式设置对应的处理系统,提高了该系统运行待运行的神经网络的效率。
一种可能的实施方式中,在所述待运行的神经网络中包括快速卷积特征处理层的情况下,与所述快速卷积特征处理层匹配的计算单元,包括:预处理单元、数据处理单元、后处理单元;
所述预处理单元,用于基于与获取到的输入特征数据的尺寸信息匹配的第一变换矩阵,对所述输入特征数据进行变换,生成变换后的输入特征数据;并将所述变换后的输入特征数据输入至所述数据处理单元;
所述数据处理单元,用于获取权重特征数据,并对所述变换后的输入特征数据与所述权重特征数据进行向量乘以矩阵VMM运算,得第一中间运算结果,并将所述第一中间运算结果输入至所述后处理单元;
所述后处理单元,用于基于与所述第一中间运算结果的尺寸信息匹配的第二变换矩阵,对所述第一中间运算结果进行变换,生成输出特征数据。
这里,在待运行的神经网络中包括快速卷积特征处理层的情况下,通过设置与快速卷积特征处理层匹配的计算单元,利用该计算单元基于快速卷积运算处理,对输入特征数据和权重特征数据进行运算处理,得到输出特征数据,实现了对快速卷积特征处理层的推理过程的支持,提高了快速卷积特征处理层的处理效率。
同时,在与快速卷积特征处理层匹配的计算单元为多个时,通过多个计算单元并行处理,可以在同一时间对多个需要进行快速卷积处理的数据进行快速卷积运算,提高系统的效率。
一种可能的实施方式中,与所述快速卷积特征处理层匹配的计算单元,还包括:池化处理单元和激活处理单元;
所述池化处理单元,用于获取所述后处理单元生成的输出特征数据,并对所述输出特征数据进行池化处理,生成第二中间运算结果;
所述激活处理单元,用于对所述第二中间运算结果进行激活处理,得到处理后的输出特征数据。
这里,针对与快速卷积特征处理层匹配的计算单元,通过在该计算单元内设置池化处理单元和激活处理单元,可以在对输入特征数据和权重特征数据进行卷积运算处理,得到输出特征数据后,在同一计算单元内对输出特征数据进行池化处理和/或激活处理,减少了不同计算单元间存取数据的时间,提高了计算单元的处理效率。
一种可能的实施方式中,所述缓冲模块包括:输入缓冲区、输出缓冲区、权重缓冲区;
所述输入缓冲区,用于缓冲接收到的输入特征数据;
所述输出缓冲区,用于缓冲所述计算单元生成的输出特征数据;
所述权重缓冲区,用于缓冲接收到的权重特征数据。
这里,通过在缓冲模块中设置输入缓冲区、输出缓冲区、权重缓冲区,可以提前将计算单元所需的输入特征数据缓冲至输入缓冲区、和/或将所需的权重特征数据缓冲至权重缓冲区,使得计算单元能够从输入缓冲区和/或权重缓冲区中获取所需的运算数据,无需直接从内部存储器中读取运算数据,以及计算单元能够较为快速的将输出特征数据缓冲至输出缓冲区,无需直接将输出特征数据输入至内部存储器,缓解了计算单元与内部存储器直接交互时带来的成本较高的问题,提高了计算单元的处理效率。同时,设置输入缓冲区、输出缓冲区、权重缓冲区,能够减少动态分配内存和回收内存的次数。
一种可能的实施方式中,所述输入缓冲区、输出缓冲区和权重缓冲区中的至少一种为ping-pong结构的缓冲区。
考虑到待运行的神经网络的运算数据量较大,无法一次性的完成输入,可能需要将运算数据比如权重特征数据、输入特征数据等多次缓冲到缓冲模块,故可以将输入缓冲区、输出缓冲区和权重缓冲区设计为ping-pong结构,使得权重特征数据、输入特征数据、输出特征数据缓冲至对应的缓冲区时无需等待,提高神经网络处理系统处理效率。
一种可能的实施方式中,所述缓冲模块还包括:配置缓冲区和查找表缓冲区;
所述配置缓冲区,用于缓冲待运行的神经网络运行过程所需的多条指令;
所述查找表缓冲区,用于缓冲任一数值、与对所述任一数值进行指数运算后得到的运算值之间的映射关系。
这里,查找表缓冲区缓冲任一数值、与对所述任一数值进行指数运算后得到的运算值之间的映射关系,可以使特征处理层如Softmax层对应的计算单元无需进行指数运算,缓解了进行指数运算所消耗的运算资源,提高了该计算单元的处理效率。
一种可能的实施方式中,所述系统还包括:直接存储器访问DMA和内部存储器;所述DMA分别与所述缓冲模块和所述内部存储器相连;
所述内部存储器,用于存储所述计算模块所需的运算数据;其中,所述运算数据包括:输入特征数据、权重特征数据、和输出特征数据;
所述DMA,用于从所述内部存储器中获取输入特征数据和权重特征数据;并将获取的所述输入特征数据缓冲至所述缓冲模块的输入缓冲区,和将获取的所述权重特征数据缓冲至所述缓冲模块的权重缓冲区;以及
从所述缓冲模块的输出缓冲区中获取输出特征数据,并将所述输出特征数据发送至所述内部存储器。
第二方面,本公开提供了一种指令生成方法,所述方法包括:
获取用于描述待运行的神经网络的网络结构的神经网络计算图;
基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息;
基于所述目标处理顺序信息,对第一方面或任一实施方式所述的神经网络处理系统中的内部存储器进行分配,得到内部存储器分配结果;其中,所述内部存储器用于存储所述神经网络处理系统中计算模块所需的运算数据;
基于所述目标处理顺序信息和所述内部存储器分配结果,得到所述神经网络处理系统对应的指令集。
上述方法中,在获取用于描述待运行的神经网络的网络结构的神经网络计算图后,对神经网络计算图进行编译处理,确定待运行的神经网络中各个特征处理层的目标处理顺序信息,该目标处理顺序信息为神经网络处理系统执行待运行的神经网络的较优的顺序;并基于目标处理顺序信息,对神经网络处理系统的内部存储器进行分配,得到内部存储器分配结果;再基于目标处理顺序信息和内部存储器分配结果,得到神经网络处理系统对应的指令集,该指令集与该系统和待运行的神经网络较为匹配,进而神经网络处理系统根据指令集进行工作时,系统的运行效率较高。
一种可能的实施方式中,所述基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息,包括:
基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息;
对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息。
实施时,可以先基于神经网络计算图,确定待运行的神经网络中各个特征处理层的初始处理顺序信息,该初始处理顺序信息为待运行的神经网络中包括的各个特征处理层的执行顺序。考虑到该神经网络中可能包括多个分支,而在神经网络处理系统运行神经网络时需要在每个分支上的特征处理层执行完成之后,再执行下一个分支,因此,可以对初始处理顺序信息进行划分,得到目标处理顺序信息,以便系统能够按照目标处理顺序信息运行待运行的神经网络,提高系统的处理效率。
一种可能的实施方式中,所述神经网络计算图包括:待运行的神经网络中每个特征处理层对应的节点的节点信息、以及不同节点之间的连接边信息,所述节点信息包括节点出度和节点标识,节点出度用于表征与该节点相连的子节点的数量;
所述基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息,包括:
确定所述神经网络计算图中节点出度为预设值的多个目标节点;
从所述多个目标节点中选取一个目标节点作为当前节点,将预设的初始序列信息作为当前序列信息;
按照当前序列信息中各个序列位的写入顺序,将所述当前节点的节点标识写入至所述当前序列信息,得到更新后序列信息;以及基于所述当前节点和所述神经网络计算图,确定待写入节点;其中,所述序列位为用于存储节点标识的存储位置;
将所述待写入节点作为更新后的当前节点,将所述更新后序列信息作为当前序列信息,返回至按照当前序列信息中各个序列位的写入顺序,将所述当前节点的节点标识写入至所述当前序列信息,得到更新后序列信息的步骤;直至所述神经网络计算图中的每个节点的节点标识均被写入至序列信息中为止;
基于最后一次写入操作后得到的更新后序列信息,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息。
这里,通过神经网络计算图中每个特征处理层对应的节点的节点信息、以及不同节点之间的连接边信息,能够较为精准的确定待运行的神经网络中各个特征处理层的初始处理顺序,为后续生成神经网络处理系统对应的指令集提供数据支持。
一种可能的实施方式中,所述基于所述当前节点和所述神经网络计算图,确定待写入节点,包括:
针对所述当前节点,基于所述神经网络计算图,确定与所述当前节点相连的父节点;并对所述父节点对应的节点出度进行减一操作,得到所述父节点对应的更新后节点出度;
若确定所述父节点对应的更新后节点出度为预设值,则将所述父节点作为所述待写入节点;
若确定所述父节点对应的更新后节点出度为非预设值,则基于当前节点的节点标识,从当前的节点出度为预设值的至少一个节点中选取目标节点,作为所述待写入节点。
这里,通过针对当前节点,基于该当前节点对应的父节点的更新后节点出度,寻找当前节点对应的下一个待写入节点,实现了待写入节点的精准确定,提高了得到的初始处理顺序信息的精准度。
一种可能的实施方式中,在基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息之后,所述方法还包括:
基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息;
所述对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息,包括:
对所述融合后处理顺序信息进行划分,得到所述目标处理顺序信息。
上述方法中,通过对初始处理顺序信息进行融合操作,得到融合后处理顺序信息,该融合后处理顺序信息中可以指示将多个特征处理层的运算过程一起执行,即将多个特征处理层的一个特征处理层的输出特征数据,直接输入至另一个特征处理层进行运算处理,可以在运算过程中减少计算单元与内部存储器之间的数据存储交换次数,进而减少了数据加载所需的带宽,提高了神经网络处理系统的处理性能。
一种可能的实施方式中,所述基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息,包括:
确定神经网络计算图中的连接处理层;其中,所述连接处理层为:将多个特征处理层的输出特征数据作为输入特征数据的特征处理层,和/或,将输出特征数据作为多个特征处理层的输入特征数据的特征处理层;
基于所述连接处理层和/或所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,确定特征处理层组合;
基于所述特征处理层组合,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息。
上述方法中,通过对初始处理顺序信息进行融合操作,得到融合后处理顺序信息,该融合后处理顺序信息中可以指示将多个特征处理层的运算过程一起执行,即将多个特征处理层的一个特征处理层的输出特征数据,直接输入至另一个特征处理层进行运算处理,可以在运算过程中减少计算单元与内部存储器之间的数据存储交换次数,进而减少了数据加载所需的带宽,提高了神经网络处理系统的处理性能。
一种可能的实施方式中,所述对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息,包括:
确定神经网络计算图中的连接处理层;
基于所述连接处理层对应的节点的节点标识、和所述神经网络计算图,将所述初始处理顺序信息划分为多个部分处理顺序信息;
基于所述神经网络计算图,对所述多个部分处理顺序信息和所述连接处理层进行排序,得到所述目标处理顺序信息。
上述方法中,通过对初始处理顺序信息进行划分,得到多个部分处理顺序信息,其中,每个部分处理顺序信息中包括的特征处理层可以位于同一分支上;使得目标处理顺序信息满足将同一分支上的各个特征处理层执行完成后执行下一个分支的要求,提高了目标处理顺序信息的精准性。
以下装置、电子设备等的效果描述参见上述方法的说明,这里不再赘述。
第三方面,本公开提供了一种指令生成装置,包括:
获取模块,用于获取用于描述待运行的神经网络的网络结构的神经网络计算图;
确定模块,用于基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息;
分配模块,用于基于所述目标处理顺序信息,对第一方面或任一实施方式所述的神经网络处理系统中的内部存储器进行分配,得到内部存储器分配结果;其中,所述内部存储器用于存储所述神经网络处理系统中计算模块所需的运算数据;
生成模块,用于基于所述目标处理顺序信息和所述内部存储器分配结果,得到所述神经网络处理系统对应的指令集。
第四方面,本公开提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述第二方面或任一实施方式所述的指令生成方法的步骤。
第五方面,本公开提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述第二方面或任一实施方式所述的指令生成方法的步骤。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种神经网络处理系统的架构示意图;
图2示出了本公开实施例所提供的另一种神经网络处理系统的架构示意图;
图3示出了本公开实施例所提供的一种指令生成方法的流程示意图;
图4a示出了本公开实施例所提供的一种指令生成方法中,待运行的神经网络的网络结构的结构示意图;
图4b示出了本公开实施例所提供的一种指令生成方法中,待运行的神经网络的网络结构的结构示意图;
图4c示出了本公开实施例所提供的一种指令生成方法中,待运行的神经网络的网络结构的结构示意图;
图4d示出了本公开实施例所提供的一种指令生成方法中,内部存储器分配结果的示意图;
图5示出了本公开实施例所提供的一种指令生成装置的架构示意图;
图6示出了本公开实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
高级驾驶辅助系统(Advanced Driving Assistance System,ADAS)是由很多计算机视觉的任务组成的。近些年来,得益于深度神经网络(Deep Neural Networks,DNN)在计算机视觉的快速发展,ADAS也变得更加智能化。
一般的,可以使用现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)运行DNN的推理过程;其中,DNN是一个单一任务的神经网络模型,而ADAS是一个包含多个子任务的复杂系统,使得将现有FPGA应用在ADAS上时,会造成神经网络处理的效率较低。
基于此,本公开实施例提供了一种神经网络处理系统、指令生成方法、装置、电子设备及存储介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
参见图1所示,为本公开实施例所提供的神经网络处理系统的架构示意图,该系统包括:计算模块11和缓冲模块12;所述计算模块包括多个计算单元101;待运行的神经网络中包括的每种特征处理层与所述计算模块11中的至少一个计算单元101相匹配;
所述计算单元101,用于从所述缓冲模块中获取输入特征数据;基于匹配的特征处理层的运算原理,对获取的所述输入特征数据进行运算处理,得到输出特征数据;并将所述输出特征数据缓冲至所述缓冲模块。
该系统可以应用于ADAS中,待运行的神经网络为ADAS所使用的神经网络。待运行的神经网络是多模型多模式的,即待运行的神经网络中可以包括多个模型,每个模型中包括至少一个子任务,其中,各个模型可以处理车辆上不同传感器采集的数据;每个传感器所需的模型架构可以不同。
其中,子任务的数量和内容可以根据实际需要进行设置,比如子任务可以包括但不限于:车道检测、交通灯检测、停车线检测、前车检测等。
比如,在车辆上包括图像传感器和雷达传感器,待运行的神经网络可以包括至少两个模型,第一模型用于处理图像传感器采集的第一数据、第二模型用于处理雷达传感器采集的第二数据。
同时,待运行的神经网络可以包括多个模式,即待运行的神经网络中的每个模型可以包括多个模式。比如,以第一模型为例,针对图像传感器采集的第1帧第一数据,可以使用第一模式对第1帧第一数据进行处理,其中,第一模式包括的子任务可以为:车道检测、交通灯检测、停车线检测、前车检测;针对图像传感器采集的第2帧第一数据,可以使用第二模式对第2帧第一数据进行处理,其中,第二模式包括的子任务可以为:车道检测、停车线检测、前车检测;等等。
实施时,缓冲模块可以用于缓冲待运行的神经网络所需要的数据;该数据可以包括:输入特征数据、权重特征数据、输出特征数据等。
基于待运行的神经网络所包括的各种特征处理层,确定计算模块所包括的计算单元。实施时,针对每种特征处理层,设计执行该特征处理层的运算流程的计算单元,使得每种特征处理层与一个计算单元相匹配,每种特征处理层可以对应一个或多个计算单元。其中,待运行的神经网络所包括的特征处理层的种类和数量可以根据实际需要进行设置。比如,特征处理层可以包括但不限于:卷积特征处理层、池化处理层、激活处理层、归一化指数处理层softmax、插值处理层interp、最大值自变量点集处理层argmax、元素指向处理层(element-wise,eltwise)、体素散射处理层voxel_scatter等。其中,voxel_scatter层可以用于对雷达传感器采集的点云数据进行处理。
比如,若待运行的神经网络包括:卷积特征处理层、池化处理层、激活处理层、softmax、interp时,可以在计算模块中为:卷积特征处理层设置一个匹配的计算单元1、池化处理层设置一个匹配的计算单元2、激活处理层设置一个匹配的计算单元3、softmax层设置一个匹配的计算单元4、interp层设置一个匹配的计算单元5。其中,计算单元1可以基于卷积特征处理层对应的运算原理,对输入特征数据和权重特征数据进行运算处理,得到输出特征数据;计算单元2可以基于池化处理层对应的运算原理,对输入特征数据进行运算处理,得到输出特征数据等等。
在待运行的神经网络包括多模型和多模式时,针对每种模型的任一模式,可以根据该模型的该模式下所包括的各个特征处理层,利用与各个特征处理层分别匹配的计算单元进行数据处理,完成对该模型的该模式的推理过程。通过本公开的上述系统,能够支持对待运行的神经网络中各种模型的每个模式进行推理,待运行的神经网络的推理过程较为高效。
具体实施时,针对任一计算单元,该计算单元可以从缓冲模块中获取输入特征数据,对获取到的输入特征数据进行运算,得到输出特征数据,并将该输出特征数据缓冲至缓冲模块中。在计算单元与卷积特征处理层相匹配时,该计算单元还可以从缓冲模块中获取输入特征数据和权重特征数据,对获取到的输入特征数据和权重特征数据进行运算,得到输出特征数据,并将该输出特征数据缓冲至缓冲模块。
这里,计算模块包括多个计算单元,待运行的神经网络中包括的每种特征处理层与计算模块中的至少一个计算单元相匹配,每个计算单元可以根据匹配的特征处理层的运算原理对获取到的输入特征数据进行运算处理,得到输出特征数据,实现对待运行的神经网络中包括的每种特征处理层的运行;进而使得该系统可以对具有任何网络结构的神经网络进行推理,该系统的应用较为广泛。比如,在待运行的神经网络为多模型和/或多模式的神经网络时,该系统能够运行该待运行的神经网络中的每种模型、每种模式,无需针对每种模型或每种模式设置对应的处理系统,提高了该系统运行待运行的神经网络的效率。
一种可选实施方式中,参见图2所示,在所述待运行的神经网络中包括快速卷积特征处理层的情况下,与所述快速卷积特征处理层匹配的计算单元101,包括:预处理单元1011、数据处理单元1012、后处理单元1013;
所述预处理单元1011,用于基于与获取到的输入特征数据的尺寸信息匹配的第一变换矩阵,对所述输入特征数据进行变换,生成变换后的输入特征数据;并将所述变换后的输入特征数据输入至所述数据处理单元;
所述数据处理单元1012,用于获取权重特征数据,并对所述变换后的输入特征数据与权重特征数据进行向量乘以矩阵(Vector Matrix Multiplication,VMM)运算,得第一中间运算结果,并将所述第一中间运算结果输入至所述后处理单元;
所述后处理单元1013,用于基于与所述第一中间运算结果的尺寸信息匹配的第二变换矩阵,对所述第一中间运算结果进行变换,生成输出特征数据。
实施时,在待运行的神经网络中包括快速卷积特征处理层的情况下,与快速卷积特征处理层匹配的计算单元可以应用快速卷积算法对获取到的输入特征数据和权重特征数据进行快速卷积运算处理,得到输出特征数据。比如该快速卷积算法可以是Winograd算法。
其中,与快速卷积特征处理层匹配的计算单元的数量可以为一个或多个,在该计算单元为多个时,多个计算单元可以并行处理。其中,与快速卷积特征处理层匹配的计算单元可以为处理引擎(Processing Engine,PE)阵列。
该计算单元内的预处理单元可以获取与输入特征数据的尺寸信息匹配的第一变换矩阵(第一变换矩阵是根据输入特征数据的尺寸确定的,相同尺寸的输入特征数据,所对应的变换矩阵是固定的),将输入特征数据与第一变换矩阵进行矩阵乘法运算,得到变换后的输入特征数据;并将变换后的输入特征数据输入至数据处理单元。数据处理单元再对变换后的输入特征数据与权重特征数据进行向量乘以矩阵VMM运算,得第一中间运算结果,其中,权重特征数据可以为:利用与初始权重特征数据的尺寸信息匹配的第三变换矩阵,对初始权重特征数据进行变换处理后得到的数据。并将第一中间运算结果输入至后处理单元。后处理单元可以获取与第一中间运算结果的尺寸信息匹配的第二变换矩阵,将第一中间运算结果与第二变换矩阵进行矩阵乘法运算,得到输出特征数据。
这里,在待运行的神经网络中包括快速卷积特征处理层的情况下,通过设置与快速卷积特征处理层匹配的计算单元,利用该计算单元基于快速卷积运算处理,对输入特征数据和权重特征数据进行运算处理,得到输出特征数据,实现了对快速卷积特征处理层的推理过程的支持,提高了快速卷积特征处理层的处理效率。
同时,在与快速卷积特征处理层匹配的计算单元为多个时,通过多个计算单元并行处理,可以在同一时间对多个需要进行快速卷积处理的数据进行快速卷积运算,提高系统的效率。
一种可选实施方式中,参见图2所示,与所述快速卷积特征处理层匹配的计算单元101,还包括:池化处理单元1014和激活处理单元1015;
所述池化处理单元1014,用于获取所述后处理单元生成的输出特征数据,并对所述输出特征数据进行池化处理,生成第二中间运算结果;
所述激活处理单元1015,用于对所述第二中间运算结果进行激活处理,得到处理后的输出特征数据。
示例性的,在快速卷积特征处理层输出的输出特征数据需要进行池化处理时,可以在与所述快速卷积特征处理层匹配的计算单元中,设置与池化层相匹配的池化处理单元。和/或,在快速卷积特征处理层输出的输出特征数据需要进行激活处理时,可以在与所述快速卷积特征处理层匹配的计算单元中,设置与激活层相匹配的激活处理单元。
在快速卷积特征处理层匹配的计算单元还包括池化处理单元和激活处理单元时,后处理单元在生成输出特征数据后,将输出特征数据发送给池化处理单元。池化处理单元对接收到的输出特征数据进行池化处理,以便对输入特征数据进行压缩,同时减小过拟合,生成第二中间运算结果,其中,池化处理的方式可以根据需要进行设置。比如池化处理可以为最大池化处理,示例性的,若输出据特征数据为[1,1,2,3;4,6,7,8;3,2,1,1;1,2,2,4],则从1、1、4、6中取最大值6,从2、3、7、8中取最大值8,从3、2、1、2中取最大值3,从1、1、2、4中取最大值4,将6、8、3、4作为第二中间运算结果中的数据,即第二中间运算结果为[6,8,3,4]。并将生成的第二中间运算结果发送到激活处理单元;激活处理单元对得到的第二中间运算结果进行激活处理,得到处理后的输出特征数据。
参见图2所示,该系统中还可以包括:池化处理单元102、归一化指数处理单元103、最大值自变量点集处理单元104、插值处理单元105、元素指向处理单元106、体素散射处理单元107;其中,池化处理单元102为与池化处理层匹配的计算单元,归一化指数处理单元103为与归一化指数处理层softmax匹配的计算单元、最大值自变量点集处理单元104为与最大值自变量点集处理层argmax匹配的计算单元、插值处理单元105为与插值处理层interp匹配的计算单元、元素指向处理单元106为与元素指向处理层eltwise匹配的计算单元、体素散射处理单元107为与体素散射处理层voxel_scatter匹配的计算单元。
这里,针对与快速卷积特征处理层匹配的计算单元,通过在该计算单元内设置池化处理单元和激活处理单元,还可以在对输入特征数据和权重特征数据进行卷积运算处理,得到输出特征数据后,在同一计算单元内对输出特征数据进行池化处理和/或激活处理,减少了不同计算单元间存取数据的时间,提高了计算单元的处理效率。
一种可选实施方式中,参见图2所示,所述缓冲模块12包括:输入缓冲区1201、输出缓冲区1202、权重缓冲区1203;
所述输入缓冲区1201,用于缓冲接收到的输入特征数据;
所述输出缓冲区1202,用于缓冲所述计算单元生成的输出特征数据;
所述权重缓冲区1203,用于缓冲接收到的权重特征数据。
实施时,缓冲模块可以包括输入缓冲区、输出缓冲区、权重缓冲区;输入缓冲区缓冲输入特征数据,以便计算模块内的计算单元能够从输入缓冲区获取输入特征数据,并对输入特征数据进行运算处理,得到输出特征数据,以及将输出特征数据发送到输出缓冲区。
权重缓冲区可以缓冲接收到的权重特征数据,在计算单元进行卷积运算处理时,供该计算单元从权重缓冲区获取权重特征数据,和从输入缓冲区获取输入特征数据;对输入特征数据和权重特征数据进行运算处理,得到输出特征数据;再将输出特征数据发送到输出缓冲区。
这里,通过在缓冲模块中设置输入缓冲区、输出缓冲区、权重缓冲区,可以提前将计算单元所需的输入特征数据缓冲至输入缓冲区、和/或将所需的权重特征数据缓冲至权重缓冲区,使得计算单元能够从输入缓冲区和/或权重缓冲区中获取所需的运算数据,无需直接从内部存储器中读取运算数据,以及计算单元能够较为快速的将输出特征数据缓冲至输出缓冲区,无需直接将输出特征数据输入至内部存储器,缓解了计算单元与内部存储器直接交互时带来的成本较高的问题,提高了计算单元的处理效率。同时,设置输入缓冲区、输出缓冲区、权重缓冲区,能够减少动态分配内存和回收内存的次数。
一种可选实施方式中,所述输入缓冲区、输出缓冲区和权重缓冲区中的至少一种为ping-pong结构的缓冲区。
实施时,输入缓冲区、输出缓冲区、权重缓冲区均定义两个缓冲区。以输入缓冲区为例进行说明,输入缓冲区可以包括输入缓冲区A和输入缓冲区B。具体的,可以针对输入缓冲区A,设置一个第一标记量flag1的值为0,表示输入缓冲区A可写,设置一个第二标记量flag2的值为0,表示输入缓冲区A未被占用;当有指令进来的时候,负责写入缓冲区的进程就寻找输入缓冲区A,查看flag1和flag2的值,若flag1和flag2的值均为0,即输入缓冲区A的状态为可写,则对输入缓冲区A进行写入,同时将flag2的值改为1,表示输入缓冲区A被占用,即输入缓冲区A的状态为在写;写好之后,将flag1的值改为1,flag2的值改为0,将输入缓冲区A释放并提示输入缓冲区A已经可读,即输入缓冲区A的状态为可读。然后再接下去找输入缓冲区B,写入新的数据。
同时读入的进程也是一直对输入缓冲区A的状态进行检测,一旦发现输入缓冲区A没有被占用,而且已经可以被读(即输入缓冲区A的状态为可读时),就把这个输入缓冲区A的数据取出来,然后将输入缓冲区的状态标记为可写。即读入的进程发现输入缓冲区A的flag1为1,flag2为0,就会把输入缓冲区A的数据取出来,同时将flag2改为1;在取完后,将flag1和flag2的值均改为0,输入缓冲区A又回到可以写入的状态。
权重缓冲区和输出缓冲区的执行过程原理与输入缓冲区的执行过程原理类似,这里不再进行赘述。
考虑到待运行的神经网络的运算数据量较大,无法一次性的完成输入,可能需要将运算数据比如权重特征数据、输入特征数据等多次缓冲到缓冲模块,故可以将输入缓冲区、输出缓冲区和权重缓冲区设计为ping-pong结构,使得权重特征数据、输入特征数据、输出特征数据缓冲至对应的缓冲区时无需等待,提高神经网络处理系统处理效率。
一种可选实施方式中,参见图2所示,所述缓冲模块12还包括:配置缓冲区1204和查找表缓冲区1205;
所述配置缓冲区1204,用于缓冲待运行的神经网络运行过程所需的多条指令;
所述查找表缓冲区1205,用于缓冲任一数值、与对所述任一数值进行指数运算后得到的运算值之间的映射关系。
实施时,在神经网络处理系统生成后,会通过编译器生成该系统处理待运行的神经网络时所需的指令集,指令集中包括多条指令,配置缓冲区可以缓冲指令集中的至少部分指令,以便神经网络处理系统根据配置缓冲区中缓冲的多条指令进行运行。
查找表缓冲区缓冲任一数值、与对任一数值进行指数运算后得到的运算值之间的映射关系。比如softmax层,softmax函数的公式可以为:
Figure BDA0003617429590000121
查找表缓冲区可以缓冲x与ex之间的映射关系,比如,查找表缓冲区中可以缓冲:1与对应的e1的值;2与对应的e2的值等等。实施时,softmax层可以根据vi的值,从查找表缓冲区中查找
Figure BDA0003617429590000122
比如,若vi=5,可以直接从查找表缓冲区中查找e5的值,从而使得softmax层无需进行指数运算。
这里,查找表缓冲区缓冲任一数值、与对所述任一数值进行指数运算后得到的运算值之间的映射关系,可以使Softmax层对应的计算单元无需进行指数运算,缓解了进行指数运算所消耗的运算资源,提高了该计算单元的处理效率。
一种可选实施方式中,参见图2所示,所述系统还包括:直接存储器访问(DirectMemory Access,DMA)13和内部存储器14;所述DMA分别与所述缓冲模块12和所述内部存储器14相连;
所述内部存储器14,用于存储所述计算模块所需的运算数据;其中,所述运算数据包括:输入特征数据、权重特征数据、和输出特征数据;
所述DMA13,用于从内部存储器中获取输入特征数据和权重特征数据;并将获取的所述输入特征数据缓冲至所述缓冲模块的输入缓冲区,和将获取的所述权重特征数据缓冲至所述缓冲模块的权重缓冲区;以及从所述缓冲模块的输出缓冲区中获取输出特征数据,并将所述输出特征数据发送至所述内部存储器。
内部存储器能够存储计算模块所需的运算数据;其中,该运算数据包括:输入特征数据、权重特征数据、和输出特征数据;以及该运算数据中还可以包括:该系统运行待运行的神经网络时所需的指令集。
DMA可以从内部存储器存储的指令集中获取至少部分指令,并将至少部分指令输入至配置缓冲区中。以及基于部分指令,从内部存储器中获取输入特征数据和权重特征数据;并将获取的输入特征数据缓冲至输入缓冲区、将获取的权重特征数据缓冲至权重缓冲区。
DMA还可以从输出缓冲区中获取输出特征数据,并将输出特征数据发送至内部存储器,以便内部存储器对输出特征数据进行存储。
神经网络处理系统还包括总线模块;该总线模块包括数据读取总线模块和数据存储总线模块。其中,数据读取总线模块分别与输入缓冲区、权重缓冲区、查找表缓冲区、计算模块相连;数据存储总线模块分别与输出缓冲区、DMA、计算模块相连。
计算模块通过数据读取总线模块从输入缓冲区中获取所需的输入特征数据,或者,从输入缓冲区和权重缓冲区中获取所需的输入特征数据和权重特征数据;进而该计算模块能够对获取的输入特征数据进行处理,得到输出特征数据,或者对输入特征数据和权重特征数据进行处理,生成输出特征数据;计算模块通过数据存储总线模块将输出特征数据输入至输出缓冲区。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
本公开实施例还提供了一种指令生成方法,该方法应用于生成上述实施方式所描述的神经网络处理系统所需的多条指令。本公开实施例所提供的指令生成方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器。在一些可能的实现方式中,该指令生成方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图3所示,为本公开实施例还提供了指令生成方法的流程示意图,该方法包括S301-S304,具体的:
S301,获取用于描述待运行的神经网络的网络结构的神经网络计算图。
S302,基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息。
S303,基于所述目标处理顺序信息,对上述实施例所述的神经网络处理系统中的内部存储器进行分配,得到内部存储器分配结果;其中,所述内部存储器用于存储所述神经网络处理系统中计算模块所需的运算数据。
S304,基于所述目标处理顺序信息和内部存储器分配结果,得到所述神经网络处理系统对应的指令集。
上述方法中,在获取用于描述待运行的神经网络的网络结构的神经网络计算图后,对神经网络计算图进行编译处理,确定待运行的神经网络中各个特征处理层的目标处理顺序信息,该目标处理顺序信息为神经网络处理系统执行待运行的神经网络的较优的顺序;并基于目标处理顺序信息,对神经网络处理系统的内部存储器进行分配,得到内部存储器分配结果;再基于目标处理顺序信息和内部存储器分配结果,得到神经网络处理系统对应的指令集,该指令集与该系统和待运行的神经网络较为匹配,进而神经网络处理系统根据指令集进行工作时,系统的运行效率较高。
下述对S301-S304进行具体说明。
针对S301和S302:
实施时,可以通过神经网络学习框架,获取用于描述待运行的神经网络的网络结构的神经网络描述文件,其中该神经网络描述文件包括神经网络计算图。该待运行的神经网络为上述实施方式所提出的神经网络。比如,神经网络学习框架可以是快速特征嵌入的卷积结构(Convolutional Architecture for Fast Feature Embedding,caffe)。
神经网络计算图包括:待运行的神经网络中每个特征处理层对应的节点的节点信息、以及不同节点之间的连接边信息;节点信息包括节点出度和节点标识,节点出度用于表征与该节点相连的子节点的数量。连接边为连接任意两个相邻节点之间的边,即任一节点可以通过连接边信息找到与之相连的节点,其中,任一节点和与之相连的节点为父子节点。
一种可选实施方式中,在S302中,基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息,可以包括:基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息;对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息。
由于神经网络处理系统的计算资源有限,使得神经网络模型的全部运算过程无法在神经网络处理系统上同时执行。基于此,本公开实施方式中,可以基于神经网络计算图,对待运行的神经网络中各个特征处理层的处理顺序进行重排,得到初始处理顺序信息。比如,可以按照设置的重排规则,利用基于逆拓扑排序的算法,对神经网络计算图进行排序,得到初始处理顺序信息。再对初始处理顺序信息进行划分,得到目标处理顺序信息。
示例性的,设置的重排规则可以包括:规则1、针对任一分支上的每个特征处理层,只有在执行完成该特征处理层之前的所有特征处理层后,才能处理该特征处理层。规则2、针对任一分支,需要执行完成该分支上的最后一层特征处理层之后,才能处理下一个分支。
实施时,可以先基于神经网络计算图,确定待运行的神经网络中各个特征处理层的初始处理顺序信息,该初始处理顺序信息为待运行的神经网络中包括的各个特征处理层的执行顺序。考虑到该神经网络中可能包括多个分支,而在神经网络处理系统运行神经网络时需要在每个分支上的特征处理层执行完成之后,再执行下一个分支,因此,可以对初始处理顺序信息进行划分,得到目标处理顺序信息,以便系统能够按照目标处理顺序信息运行待运行的神经网络,提高系统的处理效率。
一种可选实施方式中,所述基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息,包括:
步骤A1,神经网络计算图中节点出度为预设值的多个目标节点;
步骤A2,从所述多个目标节点中选取一个目标节点作为当前节点,将预设的初始序列信息作为当前序列信息;
步骤A3,按照当前序列信息中各个序列位的写入顺序,将所述当前节点的节点标识写入至所述当前序列信息,得到更新后序列信息;以及基于所述当前节点和所述神经网络计算图,确定待写入节点;其中,所述序列位为用于存储节点标识的存储位置;
步骤A4,将所述待写入节点作为更新后的当前节点,将所述更新后序列信息作为当前序列信息,返回至步骤A3;直至所述神经网络计算图中的每个节点的节点标识均被写入至序列信息中为止;
步骤A5,基于最后一次写入操作后得到的更新后序列信息,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息。
参见图4a所示的一种待运行的神经网络的网络结构示意图,结合图4a对步骤A1至步骤A5进行说明。其中,图4a中,卷积特征处理层6的节点出度为0、连接处理层2的节点出度为1、连接处理层1的节点出度为2等等。特征处理层的节点标识可以根据需要进行设置,比如,卷积特征处理层6的节点标识可以为:卷积特征处理层6或J-6;连接处理层2的节点标识可以为:连接处理层2或L-2。
实施时,该预设值可以根据需要进行设置,比如该预设值可以为0。下述以预设值为0进行具体说明。可以先从神经网络计算图中确定节点出度为0的至少一个目标节点。可知图4a中节点出度为0的节点只有卷积特征处理层6,即该卷积特征处理层6为目标节点。再可以从至少一个目标节点中选取一个目标节点作为当前节点,即卷积特征处理层6为当前节点。
结合下表1所示,按照当前序列信息中各个序列位的写入顺序,即从0至n-1的写入顺序,n为正整数,将卷积特征处理层6的节点标识写入至当前序列信息中的第0位,得到更新后序列信息。
表1当前序列信息
序列位 0 1 …… n-2 n-1
节点标识
同时,基于当前节点和神经网络计算图,确定待写入节点。并在每次确定待写入节点后,将更新后序列信息作为当前序列信息,按照表1中各个序列位的写入顺序重复执行写入操作,直至神经网络计算图中的每个节点的节点标识均被写入至序列信息中为止;得到最后一次写入操作后的更新后序列信息。进而可以将最后一次写入操作后得到的更新后序列信息进行反转,得到待运行的神经网络中各个特征处理层的初始处理顺序信息,即在得到最后一次写入操作后得到的更新后序列信息后,按照n-1至0的顺序得到初始处理顺序信息。
这里,通过神经网络计算图中每个特征处理层对应的节点的节点信息、以及不同节点之间的连接边信息,能够较为精准的确定待运行的神经网络中各个特征处理层的初始处理顺序,为后续生成神经网络处理系统对应的指令集提供数据支持。
一种可选实施方式中,在步骤A3中,所述基于所述当前节点和所述神经网络计算图,确定待写入节点,可以包括:
步骤A31,针对所述当前节点,基于所述神经网络计算图,确定与所述当前节点相连的父节点;并对所述父节点对应的节点出度进行减一操作,得到所述父节点对应的更新后节点出度。
步骤A32,若确定所述父节点对应的更新后节点出度为预设值,则将所述父节点作为所述待写入节点。
步骤A33,若确定所述父节点对应的更新后节点出度为非预设值,则基于当前节点的节点标识,从当前的节点出度为预设值的至少一个节点中选取目标节点,作为所述待写入节点。
参见图4a所示,若当前节点为卷积特征处理层6,在卷积特征处理层6的节点标识被写入至当前序列信息后,根据连接边的信息能够确定卷积特征处理层6的父节点是连接处理层2,故对连接处理层2的节点出度进行减一操作,则连接处理层2的节点出度由1改为0;可知该父节点(连接处理层2)对应的更新后节点出度为预设值,故将连接处理层2确定为待写入节点,执行写入操作,即将连接处理层2的节点标识写入至表1中的第1位,得到更新后的当前序列信息。
若当前节点为连接处理层2,在连接处理层2的节点标识被写入当前序列信息后,根据连接边的信息能够确定连接处理层2的父节点有激活处理层3和池化处理层2,故对激活处理层3和池化处理层2的节点出度均进行减一操作,则激活处理层3和池化处理层2的节点出度均由1改为0;此时,激活处理层3和池化处理层2均是节点出度为0的目标节点,任选其一作为待写入节点,执行写入操作。
若当前节点为卷积特征处理层5且卷积特征处理层3未被访问,在卷积特征处理层5的标识被写入当前序列信息后,根据连接边的信息能够确定卷积特征处理层5的父节点是连接处理层1,故对连接处理层1的节点出度进行减一操作,则连接处理层1的节点出度由2改为1;由于连接处理层1的节点出度不为0,所以基于当前节点的节点标识,从当前的节点出度为预设值的至少一个节点中选取目标节点,作为待写入节点。由图4a可知,当前的节点出度为0的至少一个节点为激活处理层3,且激活处理层3所在分支与卷积特征处理层5所在的分支具有一个父节点(连接处理层1),故可以将激活处理层3作为待写入节点,执行写入操作。
示例性的,图4a的待运行的神经网络对应的一种初始处理顺序信息可以为:卷积特征处理层1-激活处理层1-卷积特征处理层2-激活处理层2-连接处理层1-卷积特征处理层3-卷积特征处理层4-激活处理层3-卷积特征处理层5-池化处理层1-激活处理层4-池化处理层2-连接处理层2-卷积特征处理层6。其中,图4a中出现的每个处理层均为本公开所提到的特征处理层,即卷积特征处理层、激活处理层、池化处理层等均为特征处理层。
这里,通过针对当前节点,基于该当前节点对应的父节点的更新后节点出度,寻找当前节点对应的下一个待写入节点,实现了待写入节点的精准确定,提高了得到的初始处理顺序信息的精准度。
一种可选实施方式中,在基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息之后,所述方法还包括:基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息。
上述方法中,通过对初始处理顺序信息进行融合操作,得到融合后处理顺序信息,该融合后处理顺序信息中可以指示将多个特征处理层的运算过程一起执行,即将多个特征处理层的一个特征处理层的输出特征数据,直接输入至另一个特征处理层进行运算处理,可以在运算过程中减少计算单元与内部存储器之间的数据存储交换次数,进而减少了数据加载所需的带宽,提高了神经网络处理系统的处理性能。
示例性的,若神经网络处理系统的计算单元包括卷积特征处理单元、池化处理单元、和激活处理单元时,为了提高运算的性能,可以将相邻的卷积特征处理层、池化处理层和激活处理层进行融合,得到融合后处理顺序信息。
进而后续可以对融合后处理顺序信息进行划分,得到目标处理顺序信息。
一种可选实施方式中,所述基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息,可以包括:
步骤B1,确定神经网络计算图中的连接处理层;其中,所述连接处理层为:将多个特征处理层的输出特征数据作为输入特征数据的特征处理层,和/或,将输出特征数据作为多个特征处理层的输入特征数据的特征处理层;
步骤B2,基于所述连接处理层和/或所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,确定特征处理层组合;
步骤B3,基于所述特征处理层组合,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息。
实施时,确定神经网络计算图中的连接处理层,该连接处理层可以为将多个特征处理层的输出特征数据作为输入特征数据的特征处理层,和/或,将输出特征数据作为多个特征处理层的输入特征数据的特征处理层。确定的连接处理层如图4b中的连接处理层1和连接处理层2。
实施时,连接处理层所执行的操作可以根据需要进行设置。比如,该连接处理层1可以将激活处理层1的输出特征数据和激活处理层2的输出特征数据进行级联,得到输出特征数据。或者,该连接处理层1可以将激活处理层1的输出特征数据和激活处理层2的输出特征数据进行级联,并将级联得到的特征数据进行特征提取,得到输出特征数据。进而可以将该输出特征数据分别作为卷积特征处理层3和卷积特征处理层5的输入特征数据。
示例性的,在神经网络处理系统的结构中,若卷积特征处理层、池化处理层、激活处理层位于同一计算单元中,则可以基于卷积特征处理层、池化处理层、激活处理层,确定特征处理层组合。比如该特征处理层组合可以是:卷积特征处理层-池化处理层、卷积特征处理层-激活处理层、池化处理层-激活处理层、卷积特征处理层-池化处理层-激活处理层。可以理解的是,特征处理层组合可以与神经网络处理系统的结构相匹配,即在其他实施方式中,特征处理层组合的组合方式可以与本公开中的不同,对此不作具体限定。
或者,可以基于连接处理层,确定特征处理层组合。比如,可以将连接处理层与该连接处理层的上一特征处理层进行组合,得到特征处理层组合。参见图4b所示,可以将连接处理层2与池化处理层2进行组合,得到特征处理层组合⑥。
再或者,还可以基于连接处理层和神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,确定特征处理层组合。参见图4b所示,可以将卷积特征处理层4、激活处理层3、连接处理层2进行组合,得到特征处理层组合④。
再可以利用特征处理层组合,对初始处理顺序信息进行融合,得到融合后处理顺序信息。
针对图4a的初始处理顺序信息进行融合,得到融合后处理顺序信息为:卷积特征处理层1-激活处理层1-连接处理层1、卷积特征处理层2-激活处理层2-连接处理层1、卷积特征处理层3、卷积特征处理层4-激活处理层3-连接处理层2、卷积特征处理层5-池化处理层1-激活处理层4、池化处理层2-连接处理层2、卷积特征处理层6。
上述方法中,通过对初始处理顺序信息进行划分,得到多个部分处理顺序信息,其中,每个部分处理顺序信息中包括的特征处理层可以位于同一分支上,使得目标处理顺序信息满足将同一分支上的各个特征处理层执行完成后执行下一个分支的要求,提高了目标处理顺序信息的精准性。
一种可选实施方式中,所述对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息,可以包括:确定神经网络计算图中的连接处理层;基于所述连接处理层对应的节点的节点标识、和所述神经网络计算图,将所述初始处理顺序信息划分为多个部分处理顺序信息;将所述多个部分处理顺序信息,确定为所述目标处理顺序信息。
确定神经网络计算图中的连接处理层,再根据连接处理层对应的节点的节点标识,从初始处理顺序信息中查找对应的特征处理层;基于查找到的特征处理层,将初始处理顺序信息划分为多个中间处理顺序信息;再根据神经网络计算图,对任一个中间处理顺序信息进行划分,得到多个部分处理顺序信息。
实施时,每个部分处理顺序信息可以以卷积特征处理层开始,以连接处理层对应的父节点结束,即每个部分处理顺序信息中均不包括连接处理层;并且同一个部分处理顺序信息中包括的各个特征处理层对应的节点均为父子节点的关系,即同一个部分处理顺序信息中包括的各个特征处理层位于同一分支上。
参见图4c所示,将神经网络计算图划分为多个部分处理顺序信息,部分处理顺序信息包括:卷积特征处理层1-激活处理层1、卷积特征处理层2-激活处理层2、连接处理层1、卷积特征处理层3-卷积特征处理层4-激活处理层3、卷积特征处理层5-池化处理层1-激活处理层4-池化处理层2、连接处理层2、卷积特征处理层6。
针对S303:
在对神经网络计算图进行划分操作后,基于每个部分处理顺序信息中包括的各个特征处理层,确定该部分处理顺序信息所需的存储容量。比如,可以将该部分处理顺序信息包括的各个特征处理层分别所需的存储容量中的最大存储容量值,确定为该部分处理顺序信息所需的存储容量。其中,每个部分处理顺序信息所占据的内存结构,可以为ping-pong内存。
再根据神经网络处理系统包括的内部存储器的容量及每个部分处理顺序信息对应的存储容量,在内部存储器中为每个部分处理顺序信息分配存储空间。同时,可以在内部存储器中为神经网络计算图中的连接处理层分配一个单独的存储空间。
参见图4d所示,为部分处理顺序信息:卷积特征处理层1-激活处理层1,分配ping-pong内存块0;为部分处理顺序信息:卷积特征处理层2-激活处理层2,分配ping-pong内存块1;为连接处理层1分配连接层内存块0,为连接处理层2分配连接层内存块1等等。
以及可以在内部存储器中为部分处理顺序信息对应的输出特征数据分配输出内存模块,还可以在内部存储器中划分用于存储生成的多条指令的指令模块。
针对S304:
在得到目标处理顺序信息和内部存储器分配结果之后,即确定了每次操作所包括的特征处理层的类型、和每次操作的输入特征数据的存储地址、权重特征数据的存储地址、以及得到的输出特征数据的存储地址,结合操作的一些具体参数parameter,比如该参数可以包括通道channel的数量、尺寸等,生成神经网络处理系统对应的指令集。
基于相同的构思,本公开实施例还提供了一种指令生成装置,参见图5所示,为本公开实施例提供的指令生成装置的架构示意图,包括获取模块501、确定模块502、分配模块503、生成模块504,具体的:
获取模块501,用于获取用于描述待运行的神经网络的网络结构的神经网络计算图;
确定模块502,用于基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息;
分配模块503,用于基于所述目标处理顺序信息,对上述实施方式所述的神经网络处理系统中的内部存储器进行分配,得到内部存储器分配结果;其中,所述内部存储器用于存储所述神经网络处理系统中计算模块所需的运算数据;
生成模块504,用于基于所述目标处理顺序信息和内部存储器分配结果,得到所述神经网络处理系统对应的指令集。
一种可能的实施方式中,所述确定模块502,在基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息时,用于:
基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息;
对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息。
一种可能的实施方式中,所述神经网络计算图包括:待运行的神经网络中每个特征处理层对应的节点的节点信息、以及不同节点之间的连接边信息,所述节点信息包括节点出度和节点标识,节点出度用于表征与该节点相连的子节点的数量;
所述确定模块502,在基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息时,用于:
确定所述神经网络计算图中节点出度为预设值的多个目标节点;
从所述多个目标节点中选取一个目标节点作为当前节点,将预设的初始序列信息作为当前序列信息;
按照当前序列信息中各个序列位的写入顺序,将所述当前节点的节点标识写入至所述当前序列信息,得到更新后序列信息;以及基于所述当前节点和所述神经网络计算图,确定待写入节点;其中,所述序列位为用于存储节点标识的存储位置;
将所述待写入节点作为更新后的当前节点,将所述更新后序列信息作为当前序列信息,返回至按照当前序列信息中各个序列位的写入顺序,将所述当前节点的节点标识写入至所述当前序列信息,得到更新后序列信息的步骤;直至所述神经网络计算图中的每个节点的节点标识均被写入至序列信息中为止;
基于最后一次写入操作后得到的更新后序列信息,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息。
一种可能的实施方式中,所述确定模块502,在基于所述当前节点和所述神经网络计算图,确定待写入节点时,用于:
针对所述当前节点,基于所述神经网络计算图,确定与所述当前节点相连的父节点;并对所述父节点对应的节点出度进行减一操作,得到所述父节点对应的更新后节点出度;
若确定所述父节点对应的更新后节点出度为预设值,则将所述父节点作为所述待写入节点;
若确定所述父节点对应的更新后节点出度为非预设值,则基于当前节点的节点标识,从当前的节点出度为预设值的至少一个节点中选取目标节点,作为所述待写入节点。
一种可能的实施方式中,在基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息之后,所述装置还包括:融合模块505,所述融合模块505,用于:
基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息;
所述确定模块502,在对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息时,用于:
对所述融合后处理顺序信息进行划分,得到所述目标处理顺序信息。
一种可能的实施方式中,所述融合模块505,在基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息时,用于:
确定神经网络计算图中的连接处理层;其中,所述连接处理层为:将多个特征处理层的输出特征数据作为输入特征数据的特征处理层,和/或,将输出特征数据作为多个特征处理层的输入特征数据的特征处理层;
基于所述连接处理层和/或所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,确定特征处理层组合;
基于所述特征处理层组合,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息。
一种可能的实施方式中,所述确定模块502,在对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息时,用于:
确定神经网络计算图中的连接处理层;
基于所述连接处理层对应的节点的节点标识、和所述神经网络计算图,将所述初始处理顺序信息划分为多个部分处理顺序信息;
基于所述神经网络计算图,对所述多个部分处理顺序信息和所述连接处理层进行排序,得到所述目标处理顺序信息。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模板可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
基于同一技术构思,本公开实施例还提供了一种电子设备。参照图6所示,为本公开实施例提供的电子设备的结构示意图,包括处理器601、存储器602、和总线603。其中,存储器602用于存储执行指令,包括内存6021和外部存储器6022;这里的内存6021也称内存储器,用于暂时存放处理器601中的运算数据,以及与硬盘等外部存储器6022交换的数据,处理器601通过内存6021与外部存储器6022进行数据交换,当电子设备600运行时,处理器601与存储器602之间通过总线603通信,使得处理器601在执行以下指令:
获取用于描述待运行的神经网络的网络结构的神经网络计算图;
基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息;
基于所述目标处理顺序信息,对上述实施方式所述的神经网络处理系统中的内部存储器进行分配,得到内部存储器分配结果;其中,所述内部存储器用于存储所述神经网络处理系统中计算模块所需的运算数据;
基于所述目标处理顺序信息和内部存储器分配结果,得到所述神经网络处理系统对应的指令集。
其中,处理器601的具体处理流程可以参照上述方法实施例的记载,这里不再赘述。
此外,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的指令生成方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的指令生成方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

Claims (17)

1.一种神经网络处理系统,其特征在于,包括:计算模块和缓冲模块;所述计算模块包括多个计算单元;待运行的神经网络中包括的每种特征处理层与所述计算模块中的至少一个计算单元相匹配;
所述计算单元,用于从所述缓冲模块中获取输入特征数据;基于匹配的特征处理层的运算原理,对获取的所述输入特征数据进行运算处理,得到输出特征数据;并将所述输出特征数据缓冲至所述缓冲模块。
2.根据权利要求1所述的系统,其特征在于,在所述待运行的神经网络中包括快速卷积特征处理层的情况下,与所述快速卷积特征处理层匹配的计算单元,包括:预处理单元、数据处理单元、后处理单元;
所述预处理单元,用于基于与获取到的输入特征数据的尺寸信息匹配的第一变换矩阵,对所述输入特征数据进行变换,生成变换后的输入特征数据;并将所述变换后的输入特征数据输入至所述数据处理单元;
所述数据处理单元,用于获取权重特征数据,并对所述变换后的输入特征数据与所述权重特征数据进行向量乘以矩阵VMM运算,得第一中间运算结果,并将所述第一中间运算结果输入至所述后处理单元;
所述后处理单元,用于基于与所述第一中间运算结果的尺寸信息匹配的第二变换矩阵,对所述第一中间运算结果进行变换,生成输出特征数据。
3.根据权利要求2所述的系统,其特征在于,与所述快速卷积特征处理层匹配的计算单元,还包括:池化处理单元和激活处理单元;
所述池化处理单元,用于获取所述后处理单元生成的输出特征数据,并对所述输出特征数据进行池化处理,生成第二中间运算结果;
所述激活处理单元,用于对所述第二中间运算结果进行激活处理,得到处理后的输出特征数据。
4.根据权利要求1~3任一所述的系统,其特征在于,所述缓冲模块包括:输入缓冲区、输出缓冲区、权重缓冲区;
所述输入缓冲区,用于缓冲接收到的输入特征数据;
所述输出缓冲区,用于缓冲所述计算单元生成的输出特征数据;
所述权重缓冲区,用于缓冲接收到的权重特征数据。
5.根据权利要求4所述的系统,其特征在于,所述输入缓冲区、输出缓冲区和权重缓冲区中的至少一种为ping-pong结构的缓冲区。
6.根据权利要求4或5所述的系统,其特征在于,所述缓冲模块还包括:配置缓冲区和查找表缓冲区;
所述配置缓冲区,用于缓冲待运行的神经网络运行过程所需的多条指令;
所述查找表缓冲区,用于缓冲任一数值、与对所述任一数值进行指数运算后得到的运算值之间的映射关系。
7.根据权利要求1~6任一所述的系统,其特征在于,所述系统还包括:直接存储器访问DMA和内部存储器;所述DMA分别与所述缓冲模块和所述内部存储器相连;
所述内部存储器,用于存储所述计算模块所需的运算数据;其中,所述运算数据包括:输入特征数据、权重特征数据、和输出特征数据;
所述DMA,用于从所述内部存储器中获取输入特征数据和权重特征数据;并将获取的所述输入特征数据缓冲至所述缓冲模块的输入缓冲区,和将获取的所述权重特征数据缓冲至所述缓冲模块的权重缓冲区;以及
从所述缓冲模块的输出缓冲区中获取输出特征数据,并将所述输出特征数据发送至所述内部存储器。
8.一种指令生成方法,其特征在于,所述方法包括:
获取用于描述待运行的神经网络的网络结构的神经网络计算图;
基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息;
基于所述目标处理顺序信息,对权利要求1至7任一所述的神经网络处理系统中的内部存储器进行分配,得到内部存储器分配结果;其中,所述内部存储器用于存储所述神经网络处理系统中计算模块所需的运算数据;
基于所述目标处理顺序信息和所述内部存储器分配结果,得到所述神经网络处理系统对应的指令集。
9.根据权利要求8所述的方法,其特征在于,所述基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息,包括:
基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息;
对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息。
10.根据权利要求9所述的方法,其特征在于,所述神经网络计算图包括:待运行的神经网络中每个特征处理层对应的节点的节点信息、以及不同节点之间的连接边信息,所述节点信息包括节点出度和节点标识,节点出度用于表征与该节点相连的子节点的数量;
所述基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息,包括:
确定所述神经网络计算图中节点出度为预设值的多个目标节点;
从所述多个目标节点中选取一个目标节点作为当前节点,将预设的初始序列信息作为当前序列信息;
按照当前序列信息中各个序列位的写入顺序,将所述当前节点的节点标识写入至所述当前序列信息,得到更新后序列信息;以及基于所述当前节点和所述神经网络计算图,确定待写入节点;其中,所述序列位为用于存储节点标识的存储位置;
将所述待写入节点作为更新后的当前节点,将所述更新后序列信息作为当前序列信息,返回至按照当前序列信息中各个序列位的写入顺序,将所述当前节点的节点标识写入至所述当前序列信息,得到更新后序列信息的步骤;直至所述神经网络计算图中的每个节点的节点标识均被写入至序列信息中为止;
基于最后一次写入操作后得到的更新后序列信息,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息。
11.根据权利要求10所述的方法,其特征在于,所述基于所述当前节点和所述神经网络计算图,确定待写入节点,包括:
针对所述当前节点,基于所述神经网络计算图,确定与所述当前节点相连的父节点;并对所述父节点对应的节点出度进行减一操作,得到所述父节点对应的更新后节点出度;
若确定所述父节点对应的更新后节点出度为预设值,则将所述父节点作为所述待写入节点;
若确定所述父节点对应的更新后节点出度为非预设值,则基于当前节点的节点标识,从当前的节点出度为预设值的至少一个节点中选取目标节点,作为所述待写入节点。
12.根据权利要求9~11任一所述的方法,其特征在于,在基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的初始处理顺序信息之后,所述方法还包括:
基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息;
所述对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息,包括:
对所述融合后处理顺序信息进行划分,得到所述目标处理顺序信息。
13.根据权利要求12所述的方法,其特征在于,所述基于所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息,包括:
确定神经网络计算图中的连接处理层;其中,所述连接处理层为:将多个特征处理层的输出特征数据作为输入特征数据的特征处理层,和/或,将输出特征数据作为多个特征处理层的输入特征数据的特征处理层;
基于所述连接处理层和/或所述神经网络处理系统指示的在同一计算单元内进行运算的特征处理层,确定特征处理层组合;
基于所述特征处理层组合,对所述初始处理顺序信息进行融合,得到融合后处理顺序信息。
14.根据权利要求9~13任一所述的方法,其特征在于,所述对所述初始处理顺序信息进行划分,得到所述目标处理顺序信息,包括:
确定神经网络计算图中的连接处理层;
基于所述连接处理层对应的节点的节点标识、和所述神经网络计算图,将所述初始处理顺序信息划分为多个部分处理顺序信息;
基于所述神经网络计算图,对所述多个部分处理顺序信息和所述连接处理层进行排序,得到所述目标处理顺序信息。
15.一种指令生成装置,其特征在于,包括:
获取模块,用于获取用于描述待运行的神经网络的网络结构的神经网络计算图;
确定模块,用于基于所述神经网络计算图,确定所述待运行的神经网络中各个特征处理层的目标处理顺序信息;
分配模块,用于基于所述目标处理顺序信息,对权利要求1至7任一所述的神经网络处理系统中的内部存储器进行分配,得到内部存储器分配结果;其中,所述内部存储器用于存储所述神经网络处理系统中计算模块所需的运算数据;
生成模块,用于基于所述目标处理顺序信息和所述内部存储器分配结果,得到所述神经网络处理系统对应的指令集。
16.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求8至14任一所述的指令生成方法的步骤。
17.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求8至14任一所述的指令生成方法的步骤。
CN202210447166.2A 2022-04-26 2022-04-26 神经网络处理系统、指令生成方法、装置及电子设备 Pending CN114724103A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210447166.2A CN114724103A (zh) 2022-04-26 2022-04-26 神经网络处理系统、指令生成方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210447166.2A CN114724103A (zh) 2022-04-26 2022-04-26 神经网络处理系统、指令生成方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN114724103A true CN114724103A (zh) 2022-07-08

Family

ID=82246503

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210447166.2A Pending CN114724103A (zh) 2022-04-26 2022-04-26 神经网络处理系统、指令生成方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN114724103A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115640494A (zh) * 2022-12-14 2023-01-24 北京登临科技有限公司 卷积计算单元、ai运算阵列及相关设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115640494A (zh) * 2022-12-14 2023-01-24 北京登临科技有限公司 卷积计算单元、ai运算阵列及相关设备
CN115640494B (zh) * 2022-12-14 2023-03-21 北京登临科技有限公司 卷积计算单元、ai运算阵列及相关设备

Similar Documents

Publication Publication Date Title
US20230023101A1 (en) Data processing method and device
CN111709533B (zh) 机器学习模型的分布式训练方法、装置以及计算机设备
CN108701250B (zh) 数据定点化方法和装置
CN109284823B (zh) 一种运算装置及相关产品
CN114327844A (zh) 内存分配方法、相关设备及计算机可读存储介质
CN106649391B (zh) 处理图数据的方法和装置
CN111984400A (zh) 神经网络的内存分配方法及装置
CN111626311B (zh) 一种异构图数据处理方法和装置
CN111475736A (zh) 社区挖掘的方法、装置和服务器
CN111008631A (zh) 图像的关联方法及装置、存储介质和电子装置
CN116467061B (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN111709415B (zh) 目标检测方法、装置、计算机设备和存储介质
CN114724103A (zh) 神经网络处理系统、指令生成方法、装置及电子设备
CN108830302B (zh) 一种图像分类方法、训练方法、分类预测方法及相关装置
CN112990433B (zh) 模型耗时预测方法、装置、电子设备以及存储介质
US11496775B2 (en) Neural network model compression with selective structured weight unification
CN114004335A (zh) 一种数据处理的方法、装置、电子设备及存储介质
EP3859611B1 (en) Method, apparatus and device for updating convolutional neural network using gpu cluster
CN113554164A (zh) 神经网络模型的优化、数据处理方法及装置、存储介质
CN112000611A (zh) 图数据划分方法、处理方法及电子设备
CN114219091A (zh) 网络模型推理加速的方法、装置、设备及存储介质
CN113986488A (zh) 计算任务的调度方法、装置、计算机设备及存储介质
CN115309539A (zh) 显存分配方法、系统及非暂时性存储介质
CN111275176B (zh) 分布式计算方法及分布式计算系统
Wu et al. Accelerating deep convolutional neural network inference based on 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