CN111461310A - 处理神经网络模型的神经网络设备、神经网络系统和方法 - Google Patents

处理神经网络模型的神经网络设备、神经网络系统和方法 Download PDF

Info

Publication number
CN111461310A
CN111461310A CN202010068165.8A CN202010068165A CN111461310A CN 111461310 A CN111461310 A CN 111461310A CN 202010068165 A CN202010068165 A CN 202010068165A CN 111461310 A CN111461310 A CN 111461310A
Authority
CN
China
Prior art keywords
feature map
branch
module
internal memory
stored
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
CN202010068165.8A
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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
Priority claimed from KR1020190088529A external-priority patent/KR20200090600A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111461310A publication Critical patent/CN111461310A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • 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/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/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • 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/047Probabilistic or stochastic networks
    • 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/048Activation functions
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

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

Abstract

一种用于处理包括运算处理图在内的神经网络模型的神经网络系统,该神经网络系统包括运算处理器,其中该运算处理图包括多个运算,该运算处理器包括存储第一模块输入特征图的内部存储器。该运算处理器被配置为:基于所存储的第一模块输入特征图,通过执行多个运算中的第一运算来获得第一分支输出特征图;以及基于所存储的第一模块输入特征图,通过执行多个运算中的第二运算来获得第二分支输出特征图。该内部存储器在执行第一运算时保持对第一模块输入特征图的存储。

Description

处理神经网络模型的神经网络设备、神经网络系统和方法
相关申请的交叉引用
本申请基于并要求于2019年1月21日向韩国知识产权局提交的韩国专利申请10-2019—0007583和于2019年7月22日向韩国知识产权局提交的韩国专利申请10-2019—0088529的优先权,其公开内容通过全文引用合并于此。
背景技术
本公开涉及一种用于通过使用神经网络的运算处理图对输入模型进行深度学习的神经网络系统,更具体地,涉及一种通过使用用于运算处理图的内部存储器来对运算处理图有效地执行计算的神经网络系统,并且涉及一种通过使用该神经网络系统处理神经网络模型的方法。
人工神经网络(ANN)是指对生物大脑进行建模的计算体系结构。可以基于ANN来实现深度学习、机器学习等。近来,随着将要通过使用ANN来处理的运算迅速增加,期望通过使用ANN来有效地执行运算处理。
发明内容
根据实施例,提供了一种用于处理包括运算处理图在内的神经网络模型的神经网络系统,该神经网络系统包括运算处理器,其中该运算处理图包括多个运算,该运算处理器包括存储第一模块输入特征图的内部存储器。该运算处理器被配置为:基于所存储的第一模块输入特征图,通过执行多个运算中的第一运算来获得第一分支输出特征图;以及基于所存储的第一模块输入特征图,通过执行多个运算中的第二运算来获得第二分支输出特征图。该内部存储器在执行第一运算时保持对第一模块输入特征图的存储。
根据实施例,提供了一种使用包括内部存储器的运算处理器来处理包括运算处理图的神经网络模型的方法,其中该运算处理图包括多个运算,该方法包括将第一模块输入特征图存储在该内部存储器中。该方法还包括:基于所存储的第一模块输入特征图,通过执行多个运算中的第一运算来获得第一分支输出特征图;基于所存储的第一模块输入特征图,通过执行多个运算中的第二运算来获得第二分支输出特征图;以及在执行第一运算时保持对第一模块输入特征图的存储。
根据实施例,用于处理包括多个运算的运算处理图的神经网络设备包括存储第一特征图的内部存储器。该神经网络设备还包括至少一个资源,该至少一个资源被配置为:基于所存储的第一特征图,通过执行多个运算中的第一运算来获得第二特征图;将所获得的第二特征图存储在内部存储器中;并且基于所存储的第二特征图,通过执行多个运算中的第二运算来获得第三特征图。
附图说明
图1是示出了根据实施例的神经网络系统的框图。
图2是示出了根据实施例的后处理器的框图。
图3是示出了根据实施例的后处理器的操作的流程图。
图4是示出了根据实施例的运算处理图的图。
图5是示出了根据实施例的模块的图。
图6是示出了根据实施例的操作运算处理器的方法的流程图。
图7是示出了根据实施例的根据重用策略的神经网络处理方法的图。
图8是示出了根据实施例的操作运算处理器的方法的流程图。
图9是示出了根据实施例的根据重用策略和模块转发策略的神经网络处理方法的图。
图10是示出了根据实施例的根据重用策略和模块转发策略的神经网络处理方法的图。
图11是示出了根据实施例的操作运算处理器的方法的流程图。
图12是示出了根据实施例的根据重用策略和运算转发策略的神经网络处理方法的图。
图13是示出了根据实施例的操作运算处理器的方法的流程图。
图14是示出了根据实施例的神经网络处理方法的图。
图15是示出了根据实施例的操作运算处理器的方法的流程图。
图16是示出了根据实施例的运算处理器的框图。
图17是示出了根据实施例的运算处理器的框图。
图18是示出了根据实施例的电子系统的框图。
具体实施方式
图1是示出了根据实施例的神经网络系统的框图。
参照图1,神经网络系统10可以包括多个应用APP、后处理器100、运算处理器200和外部存储器300。多个应用APP可以由各种应用编程接口(API)生成,并且可以通过使用神经网络模型来执行各种任务。该神经网络模型可以包括各种神经网络模型,例如但不限于:卷积神经网络(CNN)(包括GoogLeNet、AlexNet、VGG网络等)、具有卷积神经网络的区域(R-CNN)、区域提议网络(RPN)、循环神经网络(RNN)、基于堆栈的深度神经网络(S-DNN)、深度信念网络(DBN)、受限玻尔兹曼机(RBM)、完全卷积网络、长短期记忆(LSTM)网络和分类网络。另外,执行一项任务的神经网络模型可以包括子神经网络,并且该子神经网络可以包括异构神经网络,并且可以用异构神经网络模型来实现。
多个应用APP可以通过将输入模型IM输出到后处理器100来请求后处理器100使用神经网络模型执行数据处理。
后处理器100可以包括模型分析器120、模块检测器140和顺序管理器160。后处理器100中包括的每个组件可以由软件来实现,并且可以由神经网络平台(例如,进化深度网络(EDEN))来实现。在另一示例中,后处理器100中包括的每个组件可以由硬件(例如,电子电路、中央处理单元(CPU)或应用处理器(AP))来实现。在一个示例中,后处理器100可以由神经网络的框架来实现。
模型分析器120可以从多个应用APP接收输入模型IM,该输入模型IM包括用于神经网络的数据,并且模型分析器120可以通过分析该输入模型IM来生成运算处理图OPG。运算处理图OPG可以指代由包括多个运算节点的图所表示的数据结构。模型分析器120可以将运算处理图OPG输出到模块检测器140。
模块检测器140可以将运算处理图OPG划分为多个模块M1至Mn。如本文所使用的,术语“模块”可以指代由接收一个输入特征图并因此输出一个输出特征图的多个运算构成的单元组。即,模块可以经由一个输入节点接收输入特征图,并且可以经由一个输出节点生成输出特征图。模块检测器140可以将运算处理图OPG中包括的运算之中的共享输入节点和输出节点的至少一个运算分类为模块,并且可以生成划分为多个模块M1至Mn的运算处理图OPG。将参照图4对此进行详细描述。
顺序管理器160可以确定模块中包括的多个分支的处理顺序。如本文中所使用的,术语“分支”可以指代由连续地串联连接的多个运算构成的单元组。在实施例中,顺序管理器160可以确定多个分支的处理顺序,使得使用的存储量可以减少。将参照图4对此进行详细描述。
运算处理器200可以包括运算资源,该运算资源包括各种运算处理设备,例如,中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、神经网络处理单元(NPU)、电子控制单元(ECU)、图像信号处理器(ISP)等。运算处理器200可以包括用于通过使用神经网络模型来处理运算的特定任务专用硬件,例如,NPU。
在一个示例中,运算处理器200可以包括能够支持内部通信(例如,系统总线、外围组件互连(PCI)、PCI高速(PCIe)串行高级技术附件(SATA)、小型计算机系统接口(SCSI)和串行连接的SCSI(SAS))和/或支持外部通信(例如,通用串行总线(USB)、以太网、WiFi、蓝牙、近场通信(NFC)、射频识别(RFID)和移动电信)的通信资源。
在一个示例中,运算处理器200可以包括异构资源。在一个示例中,运算处理器200可以包括作为第一资源的NPU、以及作为第二资源的GPU。
运算处理器200可以包括存储器管理器220和内部存储器240。运算处理器200可以从后处理器100接收被划分为多个模块M1至Mn的运算处理图OPG,并且可以通过使用内部存储器240来执行该运算处理图OPG中包括的至少一个运算。
存储器管理器220可以确定用于处理运算处理图OPG中包括的多个运算的存储器。存储了输入特征图和权重的存储器被运算处理器200用来执行运算处理图OPG中包括的运算,并且存储器管理器220可以基于用于运算处理的存储量(例如,输入特征图的数据量、输出特征图的数据量、权重的数据量和工作存储器),将内部存储器240和外部存储器300之一确定为用于执行运算的存储器。
内部存储器240是位于运算处理器200内部的用于运算处理器200的运算处理的存储器,并且可以包括至少一个存储设备。作为示例,内部存储器240可以包括从由易失性存储器和非易失性存储器组成的组中选择的至少一个,其中非易失性存储器可以包括闪存、相变随机存取存储器(PRAM)、磁性随机存取存储器(MRAM)、电阻式随机存取存储器(RRAM)、铁电随机存取存储器(FRAM)等,并且易失性存储器可以包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步DRAM(SDRAM)、锁存器、触发器、寄存器等。在此,尽管内部存储器240被描述为SRAM,但是本发明构思不限于此。
外部存储器300是位于运算处理器200外部的用于神经网络系统10的各种运算的存储器,并且可以包括至少一个存储设备。作为示例,外部存储器300可以包括从由易失性存储器和非易失性存储器组成的组中选择的至少一个,其中非易失性存储器可以包括闪存、PRAM、MRAM、RRAM、FRAM等,并且易失性存储器可以包括DRAM、SRAM、SDRAM、锁存器、触发器、寄存器等。在此,尽管外部存储器300被描述为DRAM,但是本发明构思不限于此。
运算处理器200可以将特征图FM存储在外部存储器300中,或者可以从外部存储器300加载所存储的特征图FM。为了该目的,运算处理器200还可以包括存取设备(例如,直接存储器存取(DMA)、存储器DMA(MDMA)、外围DMA(PDMA)、远程DMA(RDMA)或智能DMA(SDMA))以控制对外部存储器300的存取。
根据实施例的运算处理器200可以将输入特征图存储在内部存储器240中,并且可以通过重复使用存储在内部存储器240中的输入特征图来对模块M1至Mn之一中包括的多个分支执行计算。因此,运算处理器200可以通过使用具有相对较高数据输入/输出速率的内部存储器240,而不是使用经由各种存取设备而连接的外部存储器300来执行运算处理,并且可以提高运算处理器200的运算处理速度。
后处理器100还可以包括:任务管理器,基于其结构特征、其中包括的运算的种类等来分配运算处理图OPG的至少一部分;以及编译器,执行编译以将运算处理图OPG翻译为运算处理器200可以理解的编程语言。另外,后处理器100还可以包括用于驱动各种功能块的操作系统,并且该操作系统可以包括各种移动操作系统、在线操作系统、离线操作系统等。在一个示例中,操作系统可以由Linux、基于Linux的Android、Windows、iOS、Mac OS、Chromium OS等来实现。
另外,尽管图1示出了运算处理器200中包括的存储器管理器220的示例,但是这是示例,并且在另一示例中,存储器管理器220可以包括在后处理器100中。即,在实施例中,后处理器100可以确定用于处理运算处理图OPG中包括的运算的存储器。
另外,类似地,尽管图1示出了模块检测器140和顺管理器160包括在后处理器100中,但是这是示例,并且在另一示例中,选自模块检测器140和顺序管理器160中的至少一个可以包括在运算处理器200中。即,在实施例中,运算处理器200可以将运算处理图OPG划分为多个模块M1至Mn,并且可以确定模块中包括的多个分支的处理顺序。
图2是示出了根据实施例的后处理器的框图。将省略参考图1给出的重复描述。
参照图2,后处理器100可以包括模型分析器120、模块检测器140和顺序管理器160,并且模型分析器120可以包括模型解析器121、模型构建器122和模型优化器123。
模型解析器121可以通过解析从应用APP接收的输入模型IM来生成模型信息Info_M。输入模型IM可以包括用于通过使用神经网络来执行在应用APP中编程的指令的请求信息,并且术语“解析”可以指代分析输入模型的语法构造或句法的过程。在一个示例中,模型信息Info_M可以包括元数据,该元数据包括输入模型IM的大小信息。
模型构建器122可以基于从模型解析器121接收的模型信息Info_M,从输入模型IM生成运算处理图OPG’。该运算处理图OPG’可以指代包括多个运算节点的图。
模型优化器123可以对运算处理图OPG’执行优化运算,并且可以将作为优化运算的结果而生成的原始运算处理图OPG_org输出到模块检测器140。该优化运算可以指代对用于运算处理图OPG’的运算处理量进行最小化和优化的运算。在实施例中,优化运算可以包括:用于将运算处理图OPG′的至少一部分替换为另一个图的图替换运算;用于合并运算处理图OPG′的至少一部分的图合并运算;以及用于从运算处理图OPG’中分割出至少一部分的图分割运算。
模块检测器140可以接收原始运算处理图OPG_org,可以通过分析接收到的原始运算处理图OPG_org来检测多个模块M1至Mn,并且因此可以生成经模块划分的运算处理图OPG_m。在一个示例中,模块检测器140可以将接收一个输入特征图并因此生成一个输出特征图的多个分支分类为模块。
在实施例中,模块检测器140可以检测跳跃连接运算,可以排除该跳跃连接运算,然后可以将原始运算处理图OPG_org划分为多个模块M1至Mn。另外,模块检测器140可以通过将原始运算处理图OPG_org划分为多个模块M1至Mn来生成经模块划分的运算处理图OPG_m,然后将该跳跃连接运算再次包括在其中。根据实施例,可以通过使用外部存储器300来处理该跳跃连接运算。下文将参照图3和图4详细描述生成模块划分的运算处理图OPG_m的方法。
如本文所使用的,术语“跳跃连接运算”可以指代在两个分支之间连接的运算。在一个示例中,模块检测器140可以基于连接到运算的两个节点之间的层长来确定跳跃连接运算,这将在下文参考图4进行详细描述。
顺序管理器160可以接收经模块划分的运算处理图OPG_m,并且可以确定模块中包括的多个分支中的处理顺序。在实施例中,顺序管理器160可以确定处理顺序,使得处理存储量最小化,并且可以通过使关于所确定的处理顺序的信息被包括在经模块划分的运算处理图OPG_m中来生成运算处理图OPG。
根据实施例,后处理器100可以将运算处理图OPG划分为模块,并在模块中包括的多个分支之间调整该运算处理图OPG,从而最小化用于处理该运算处理图OPG的存储量,因此,运算处理器200(图1)可以通过有效地使用内部存储器240来执行该运算处理图OPG中包括的运算。
图3是示出了根据实施例的后处理器的操作的流程图,并且图4是示出了根据实施例的运算处理图的图。
参照图1、图3和图4,后处理器100可以通过分析输入模型IM来生成运算处理图OPG(S110)。在图4的示例中,通过分析输入模型IM,后处理器100可以生成运算处理图OPG,该运算处理图OPG包括:多个第一运算OP11_1至OP11_3和OP12,多个第二运算OP21_1至OP21_3、OP22_1至OP22_4、OP23_1和OP23_2以及OP24_1至OP24_3,第三运算OP3和第四运算OP4。
多个第一运算OP11_1至OP11_3和OP12,多个第二运算OP21_1至OP21_3、OP22_1至OP22_4、OP23_1和OP23_2以及OP24_1至OP24_3,第三运算OP3和第四运算OP4可以分别表示各种数学运算(例如,卷积运算、整流线性单元运算、存储器复制运算、级联运算等),并且可以分别是彼此相同或不同的运算。
后处理器100可以从该运算处理图OPG中排除跳跃连接运算SC(S120)。在实施例中,后处理器100可以检测运算所连接到的两个节点之间的层长,并且可以基于该层长确定跳跃连接运算SC。在实施例中,后处理器100可以将连接在分别包括在不同模块中的分支之间的运算确定为跳跃连接运算SC。
在图4的示例中,后处理器100可以将连接在数量大于预定数量的层之间的第三运算OP3(例如,节点之间连接的运算数量)确定为跳跃连接运算SC,并且可以在将运算处理图OPG划分为模块时排除第三运算OP3。在另一示例中,后处理器100可以将连接在第二模块M2的第一分支B1和第一模块M1之间的第三运算OP3确定为跳跃连接运算SC,并且可以在将运算处理图OPG划分为模块时排除第三运算OP3。
再次参照图3,后处理器100可以将排除了跳跃连接运算SC的运算处理图OPG划分为多个模块M1和M2(S130)。在实施例中,后处理器100可以将接收一个输入特征图并生成一个输出特征图的多个运算分类为一个模块。在实施例中,后处理器100可以将共享一个输入节点和一个输出节点的多个并行连接的分支中包括的运算分类为一个模块。
在图4的示例中,后处理器100可以将分别执行的接收一个输入特征图的多个第一运算OP11_1至OP11_3和OP12分类为第一模块M1,然后输出一个输出特征图,并且类似地,可以将多个第二运算OP21_1至OP21_3、OP22_1至OP22_4、OP23_1和OP23_2以及OP24_1至OP24_3分类为第二模块M2。在另一示例中,后处理器100可以检测并联连接并且共享一个输入节点和一个输出节点的第一分支B1、第二分支B2、第三分支B3和第四分支B4,并且可以将该第一分支B1、第二分支B2、第三分支B3和第四分支B4中包括的多个第二运算OP21_1至OP21_3、OP22_1至OP22_4、OP23_1和OP23_2以及OP24_1至OP24_3分类为第二模块M2。
再次参考图3,后处理器100可以确定多个模块M1和M2的每一个中包括的分支的处理顺序(S140)。在实施例中,后处理器100可以基于用于处理多个分支B1至B4中的每一个的数据量来确定该多个分支B1至B4的处理顺序。
在图4的第二模块M2的示例中,后处理器100可以改变第一分支B1至第四分支B4的处理顺序。在一个示例中,后处理器100可以按用于处理的数据量增加的顺序来改变处理顺序。在第三分支B3、第一分支B1、第四分支B4和第二分支B2按该顺序分别具有逐渐增加的用于处理的数据量的示例中,后处理器100可以按第三分支B3、第一分支B1、第四分支B4和第二分支B2的顺序改变处理顺序。
在另一示例中,后处理器100可以按用于处理的数据量减少的顺序来改变处理顺序。在第三分支B3、第一分支B1、第四分支B4和第二分支B2按该顺序分别具有逐渐增加的用于处理的数据量的示例中,后处理器100可以按第二分支B2、第四分支B4、第一分支B1和第三分支B3的顺序改变处理顺序。
再次参考图3,后处理器100可以在运算处理图OPG中再次包括跳跃连接运算SC(S150),并且可以将处理完成后的运算处理图OPG输出到运算处理器200(S160)。
图5是示出了根据实施例的模块的图。将省略参考图4给出的重复描述。
参照图1和图5,第二模块M2可以包括第一分支B1至第四分支B4。运算处理器200可以通过使用模块输入特征图IFM_M作为输入,依次执行第一分支运算OP21_1至OP21_3(以该顺序)来生成第一分支输出特征图OFM_B1,并且可以通过使用模块输入特征图IFM_M作为输入,依次执行第二分支运算OP22_1至OP22_4(以该顺序)来生成第二分支输出特征图OFM_B2。
另外,运算处理器200可以通过使用模块输入特征图IFM_M作为输入,依次执行第三分支运算OP23_1和OP23_2(以该顺序)来生成第三分支输出特征图OFM_B3,并且可以通过使用模块输入特征图IFM_M作为输入,依次执行第四分支运算OP24_1至OP24_3(以该顺序)来生成第四分支输出特征图OFM_B4。
在一个示例中,运算处理器200可以通过使用模块输入特征图IFM_M作为输入执行第一运算OP22_1来生成第一特征图FM1,并且可以通过使用该第一特征图FM1作为输入执行第二运算OP22_2来生成第二特征图FM2。另外,运算处理器200可以通过使用该第二特征图FM2作为输入执行第三运算OP22_3来生成第三特征图FM3,并且可以通过使用该第三特征图FM3作为输入执行第四运算OP22_4来生成第二分支输出特征图OFM_B2。
运算处理器200可以通过使用第一分支输出特征图OFM_B1至第四分支输出特征图OFM_B4来生成模块输出特征图OFM_M。在一个示例中,运算处理器200可以通过使用级联函数将第一分支输出特征图OFM_B1至第四分支输出特征图OFM_B4进行级联来生成模块输出特征图OFM_M。
图6是示出了根据实施例的操作运算处理器的方法的流程图。图6示出了通过使用重用策略来操作运算处理器的方法的实施例。
参照图1、图5和图6,运算处理器200可以将模块输入特征图IFM_M存储在内部存储器240中(S210)。运算处理器200可以通过使用内部存储器240中存储的模块输入特征图IFM_M连续地执行第一分支B1中包括的运算OP21_1至OP21_3(S220)。运算处理器200可以将作为连续执行第一分支B1中包括的运算OP21_1至OP21_3的结果而生成的第一分支输出特征图OFM_B1存储在外部存储器300中(S230)。
运算处理器200可以通过重用内部存储器240中存储的模块输入特征图IFM_M连续地执行第二分支B2中包括的运算OP22_1至OP22_4(S240)。运算处理器200可以将作为连续执行第二分支B2中包括的运算OP22_1至OP22_4的结果而生成的第二分支输出特征图OFM_B2存储在外部存储器300中(S250)。
在此,如上所述,使用内部存储器240以使得通过重用该内部存储器240中存储的模块输入特征图IFM_M来执行多个分支B1至B4中包括的运算的策略被称为重用策略。
以类似的方式,运算处理器200可以执行模块中所有分支中包括的运算(例如,第三分支B3和第四分支B4中包括的运算),并且当该模块中所有分支的计算完成时,可以通过使用外部存储器300中存储的多个分支输出特征图OFM_B1至OFM_B4来生成模块输出特征图OFM_M(S260)。运算处理器200可以通过使用从外部存储器300加载的模块输出特征图OFM_M来执行后续模块中包括的一个或多个运算(例如,图4的第四运算OP4)(S270)。
根据实施例的运算处理器200可以基于重用策略,在对多个分支B1至B4执行计算的情况下,使用内部存储器240中存储的模块输入特征图IFM_M,从而减少输入到外部存储器300和从外部存储器300输出的数据量,并提高运算处理速度。
图7是示出了根据实施例的根据重用策略的神经网络处理方法的图。
参照图1和图7,在第一时间点t1,运算处理器200可以将模块输入特征图IFM_M存储在内部存储器240中,并且可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第一分支B1中包括的运算。当处理第一分支B1中包括的运算时,运算处理器200可以使用除存储有模块输入特征图IFM_M的区域之外的剩余处理区域PA。在一个示例中,该处理区域PA可以包括用于处理从由工作存储器、权重值和作为运算结果而生成的输出特征图的组中选择的至少一个的存储区域。运算处理器200可以通过直接存储器存取(DMA)将第一分支输出特征图OFM_B1存储在外部存储器300中,该第一分支输出特征图OFM_B1是通过处理第一分支B1中包括的运算而生成的。
在第二时间点t2,运算处理器200可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第二分支B2中包括的运算,并且可以将作为其结果生成的第二分支输出特征图OFM_B2存储在外部存储器300中。在第三时间点t3,运算处理器200可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第三分支B3中包括的运算,并且可以将作为其结果生成的第三分支输出特征图OFM_B3存储在外部存储器300中。另外,在第四时间点t4,运算处理器200可以通过使用存储在内部存储器240中的模块输入特征图IFM_M来处理第四分支B4中包括的运算,并且可以将作为其结果生成的第四分支输出特征图OFM_B4存储在外部存储器300中。
在第五时间点t5,运算处理器200可以加载外部存储器300中存储的第一分支输出特征图OFM_B1至第四分支输出特征图OFM_B4,并且可以通过使用加载的第一分支输出特征图OFM_B1至第四分支输出特征图OFM_B4来生成模块输出特征图OFM M。运算处理器200可以将所生成的模块输出特征图OFM_M存储在内部存储器240中,并且可以将该模块输出特征图OFM_M用作后续模块或运算的输入。
图8是示出了根据实施例的操作运算处理器的方法的流程图。图8示出了通过使用重用策略和模块转发策略来操作运算处理器的方法的实施例。
参照图1、图5和图8,运算处理器200可以将模块输入特征图IFM_M存储在内部存储器240中(S310)。运算处理器200可以通过使用内部存储器240中存储的模块输入特征图IFM_M连续地执行第一分支B1中包括的运算OP21_1至OP21_3(S320)。运算处理器200可以将作为连续执行第一分支B1中包括的运算OP21_1至OP21_3的结果而生成的第一分支输出特征图OFM_B1存储在内部存储器240中(S330)。
运算处理器200可以通过重用内部存储器240中存储的模块输入特征图IFM_M连续地执行第二分支B2中包括的运算OP22_1至OP22_4(S340)。运算处理器200可以将作为连续执行第二分支B2中包括的运算OP22_1至OP22_4的结果而生成的第二分支输出特征图OFM_B2存储在内部存储器240中(S350)。
以类似的方式,运算处理器200可以执行模块中所有分支中包括的运算(例如,第三分支B3和第四分支B4中包括的运算),并且当该模块中所有分支的计算完成时,可以通过使用内部存储器240中存储的多个分支输出特征图OFM_B1至OFM_B4来生成模块输出特征图OFM_M(S360)。运算处理器200可以通过使用内部存储器240中存储的模块输出特征图OFM_M来执行后续模块中包括的一个或多个运算(例如,图4的第四运算OP4)(S370)。
在此,使用内部存储器240以使得(如在运算S360和S370中那样)模块输出特征图OFM_M被存储在内部存储器240中,并且将存储在内部存储器240中的模块输出特征图OFM_M用作后续模块或运算的输入的策略可以被称为模块转发策略。
根据实施例的运算处理器200可以基于模块转发策略,使用内部存储器240中存储的模块输出特征图OFM_M作为后续模块或运算的输入,从而减少输入到外部存储器300和从外部存储器300输出的数据量,并提高运算处理速度。
尽管图8示出了一起使用重用策略和模块转发策略的实施例,但是这是示例,并且在实施例中,运算处理器200可以仅通过使用模块转发策略使用内部存储器240来执行神经网络处理方法。即,在一个示例中,运算处理器200可以通过使用外部存储器300中存储的模块输入特征图IFM_M将模块输出特征图OFM_M存储在内部存储器240中,并且可以将内部存储器240中存储的模块输出特征图OFM_M用作后续模块或运算的输入。
图9是示出了根据实施例的根据重用策略和模块转发策略的神经网络处理方法的图。
参照图1和图9,在第一时间点t1,运算处理器200可以将模块输入特征图IFM_M存储在内部存储器240中,并且可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第一分支B1中包括的运算。运算处理器200可以将通过处理第一分支B1中包括的运算而生成的第一分支输出特征图OFM_B1存储在内部存储器240中。
在第二时间点t2,运算处理器200可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第二分支B2中包括的运算,并且可以将作为其结果生成的第二分支输出特征图OFM_B2存储在内部存储器240中。在第三时间点t3,运算处理器200可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第三分支B3中包括的运算,并且可以将作为其结果生成的第三分支输出特征图OFM_B3存储在内部存储器240中。另外,在第四时间点t4,运算处理器200可以通过使用存储在内部存储器240中的模块输入特征图IFM_M来处理第四分支B4中包括的运算,并且可以将作为其结果生成的第四分支输出特征图OFM_B4存储在内部存储器240中。
在第五时间点t5,运算处理器200可以通过使用存储在内部存储器240中的第一分支输出特征图OFM_B1至第四分支输出特征图OFM_B4来生成模块输出特征图OFM_M,并且可以将该模块输出特征图OFM_M存储在内部存储器240中。在第六时间点t6,运算处理器200可以通过使用模块输出特征图OFM_M来执行后续模块M_sub中包括的运算。在实施例中,因为模块输入特征图IFM_M不再用于后续模块M_sub,所以运算处理器200可以通过将直到第五时间点t5为止已经存储了模块输入特征图IFM_M的区域用作处理区域PA来执行后续模块M_sub中包括的运算。
图10是示出了根据实施例的根据重用策略和模块转发策略的神经网络处理方法的图。由于在图10的第一时间点t1至第三时间点t3处的运算处理器的运算可以与上述参考图9描述的运算相同或相似,所以将省略其描述。
参照图1和图10,在第四时间点t4,运算处理器200可以通过使用存储在内部存储器240中的模块输入特征图IFM_M来处理第四分支B4中包括的运算,并且可以将作为其结果生成的第四分支输出特征图OFM_B4存储在内部存储器240中。根据实施例,运算处理器200可以用第四分支输出特征图OFM_B4覆写存储了模块输入特征图IFM_M的区域的至少一部分。
在第五时间点t5,运算处理器200可以通过使用存储在内部存储器240中的第一分支输出特征图OFM_B1至第四分支输出特征图OFM_B4来生成模块输出特征图OFM_M。在第六时间点t6,运算处理器200可以通过使用模块输出特征图OFM_M来执行后续模块M_sub中包括的运算。
在实施例中,由于在生成多个分支B1至B4中的最后运算的结果之后不再使用模块输入特征图IFM_M,因此运算处理器200可以将直到第四时间点t4为止至少已经存储了模块输入特征图IFM_M的区域的一部分用作用于第四分支输出特征图OFM_B4(其为最后运算的结果)的区域,并且可以通过将存储了模块输入特征图IFM_M的剩余区域用作处理区域PA来执行后续模块M_sub中包括的运算。
图11是示出了根据实施例的操作运算处理器的方法的流程图。图8示出了通过使用重用策略和运算转发策略来操作运算处理器的方法的实施例。
参照图1、图5和图11,运算处理器200可以将模块输入特征图IFM_M存储在内部存储器240中(S410)。运算处理器200可以通过使用内部存储器240中存储的模块输入特征图IFM_M来执行第二分支B2中包括的第一运算OP22_1(S420)。运算处理器200可以将作为执行第一运算OP22_1的结果而生成的第一特征图FM1存储在内部存储器240中(S430)。
运算处理器200可以通过使用内部存储器240中存储的第一特征图FM1来执行第二运算OP22_2(S440)。运算处理器200可以将作为执行第二运算OP222的结果而生成的第二特征图FM2存储在内部存储器240中(S450)。
以类似的方式,运算处理器200可以在分支中执行所有运算(例如,第三运算OP22_3和第四运算OP22_4),并且可以生成第二分支输出特征图OFM_B2作为执行分支中的运算中最后运算(例如,第四运算OP22_4)的结果(S460)。运算处理器200可以将生成的第二分支输出特征图OFM_B2存储在内部存储器240中(S470),并且可以通过使用所存储的第二分支输出特征图OFM_B2来执行后续模块或运算(例如,图4的第四运算OP4)。
在此,使用内部存储器240以使得(如在运算S430至S460中那样)作为运算OP22_1至OP22_4的结果而生成的特征图FM1至FM3被存储在内部存储器240中,并且将存储在内部存储器240中的特征图FM1至FM3中的每一个用作每个后续运算的输入的策略可以被称为运算转发策略。
根据实施例的运算处理器200可以基于运算转发策略,使用内部存储器240中存储的特征图FM1至FM3中的每一个作为每个后续运算的输入,从而减少输入到外部存储器300和从外部存储器300输出的数据量,并提高运算处理速度。
尽管图11示出了一起使用重用策略和运算转发策略的实施例,但是这是示例,并且在实施例中,运算处理器200可以仅通过使用运算转发策略使用内部存储器240来执行神经网络处理方法。即,在一个示例中,运算处理器200可以通过使用存储在外部存储器300中的模块输入特征图IFM_M执行运算来生成特征图FM1至FM3,可以将生成的特征图FM1至FM3存储在内部存储器240中,,并且可以将存储在内部存储器240中的特征图FM1到FM3的每一个用作每个后续运算的输入。
图12是示出了根据实施例的根据重用策略和运算转发策略的神经网络处理方法的图。
参照图1、图5和图12,在第一时间点t1,运算处理器200可以将第一分支输出特征图OFM_B1存储在内部存储器240中,并可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第一运算OP22_1,其中该第一分支输出特征图OFM_B1是作为处理模块输入特征图IFM_M和第一分支B1的结果而生成的。在第一运算OP22_1的处理期间,运算处理器200可以通过使用除了存储了模块输入特征图IFM_M和第一分支输出特征图OFM_B1的区域之外的处理区域PA来处理第一运算OP22_1。运算处理器200可以将通过处理第一运算OP22_1中包括的运算而生成的第一特征图FM1存储在内部存储器240中。
在第二时间点t2,运算处理器200可以通过使用内部存储器240中存储的第一特征图FM1来处理第二运算OP22_2,并且可以将作为其结果而生成的第二特征图FM2存储在内部存储器240中。在第二运算OP22_2的处理期间,运算处理器200可以通过使用除了存储了模块输入特征图IFM_M、第一分支输出特征图OFM_B1和第一特征图FM1的区域之外的剩余处理区域PA来处理第二运算OP22_2。
在第三时间点t3,运算处理器200可以通过使用内部存储器240中存储的第二特征图FM2来处理第三运算OP22_3,并且可以将作为其结果而生成的第三特征图FM3存储在内部存储器240中。在实施例中,由于第一特征图FM1不再用于计算运算处理图OPG,因此运算处理器200可以用第三特征图FM3覆写内部存储器240的存储了第一特征图FM1的区域。在第三运算OP22_3的处理期间,运算处理器200可通过使用除了存储了模块输入特征图IFM_M、第一分支输出特征图OFM_B1、第一特征图FM1和第二特征图FM2的区域之外的剩余处理区域PA来处理第三运算OP22_3。
在第四时间点t4,运算处理器200可以通过使用内部存储器240中存储的第三特征图FM3来处理第四运算OP22_4,并且可以将作为其结果而生成的第二分支输出特征图OFM_B2存储在内部存储器240中。在实施例中,由于第二特征图FM2和第三特征图FM3不再用于计算运算处理图OPG,所以运算处理器200可以用第二分支输出特征图OFM_B2覆写内部存储器240的存储了第二特征图FM2和第三特征图FM3的区域。在第四运算OP22_4的处理期间,运算处理器200可以通过使用除了存储了模块输入特征图IFM_M、第一分支输出特征图OFM_B1、第二特征图FM2和第三特征图FM3的区域之外的剩余处理区域PA来处理第四运算OP22_4。
图13是示出了根据实施例的操作运算处理器的方法的流程图。
参照图1和图13,运算处理器200可以将输入特征图存储在内部存储器240中(S510)。运算处理器200可以通过使用内部存储器240中存储的输入特征图执行至少一个运算来生成输出特征图(S520)。运算处理器200可以基于输出特征图的数据量和内部存储器240的空闲存储量来确定输出特征图是否能够被存储在内部存储器240中(S530)。在此,空闲存储量可以指代除了已经存储在内部存储器240中的用于运算处理的其他数据(例如,模块输入特征图等)、权重和工作存储器之外的剩余存储区域的数据量。
当输出特征图能够被存储在内部存储器240中时,即,当输出特征图的数据量小于内部存储器240的空闲存储量时,运算处理器200可以将输出特征图存储在内部存储器240中(S540)。运算处理器200可以通过使用内部存储器240中存储的输出特征图来执行后续运算(S545)。
当输出特征图不能被存储在内部存储器240中时,即,当输出特征图的数据量大于内部存储器240的空闲存储量时,运算处理器200可以将输出特征图存储在外部存储器300中(S550)。运算处理器200可以通过使用外部存储器300中存储的输出特征图来执行后续运算(S555)。
图14是示出了根据实施例的神经网络处理方法的图。
参照图1、图5和图14,在第一时间点t1,运算处理器200可以将作为处理模块输入特征图IFM_M和第一分支B1的结果而生成的第一分支输出特征图OFM_B1存储在内部存储器240中,并且可以通过使用内部存储器240中存储的模块输入特征图IFM_M来处理第一运算OP22_1。在第一运算OP22_1的处理期间,运算处理器200可以通过使用除了存储了模块输入特征图IFM_M和第一分支输出特征图OFM_B1的区域之外的剩余处理区域PA来处理第一运算OP22_1。运算处理器200可以基于第一特征图FM1的数据量和内部存储器240的空闲存储量,确定作为第一运算OP22_1的结果而生成的第一特征图FM1能够被存储在内部存储器240中,并且运算处理器200可以将第一特征图FM1存储在内部存储器240中。
在第二时间点t2,运算处理器200可以通过使用内部存储器240中存储的第一特征图FM1来处理第二运算OP22_2,并且可以生成第二特征图FM2。运算处理器200可以基于第二特征图FM2的数据量和内部存储器240的空闲存储量,确定作为第二运算OP22_2的结果而生成的第二特征图FM2不能被存储在内部存储器240中,并且运算处理器200可以通过DMA将第二特征图FM2存储在外部存储器300中。
在第三时间点t3,运算处理器200可以通过使用外部存储器300中存储的第二特征图FM2来处理第三运算OP22_3,并且可以生成第三特征图FM3。运算处理器200可以基于第三特征图FM3的数据量和内部存储器240的空闲存储量,确定作为第三运算OP22_3的结果而生成的第三特征图FM3能够被存储在内部存储器240中,并且运算处理器200可以将第三特征图FM3存储在内部存储器240中。在一个示例中,运算处理器200可以用第三特征图FM3覆写存储了不再用于后续运算的第一特征图FM1的区域。
在第四时间点t4,运算处理器200可以通过使用内部存储器240中存储的第三特征图FM3来处理第四运算OP22_4,并且可以生成第二分支输出特征图OFM_B2。运算处理器200可以基于第二分支输出特征图OFM_B2的数据量和内部存储器240的空闲存储量,确定作为第四运算OP22_4的结果而生成的第二分支输出特征图OFM_B2不能被存储在内部存储器240中,并且运算处理器200可以通过DMA将第二分支输出特征图OFM_B2存储在外部存储器300中。
图15是示出了根据实施例的操作运算处理器的方法的流程图。
参照图1和图15,存储器管理器220可以计算用于执行模块中包括的运算的存储量(S610)。存储器管理器220可以基于计算出的存储量来建立内部存储器使用策略(S620)。
在实施例中,当计算出的存储量等于或小于第一参考值时,存储器管理器220可以基于重用策略来处理运算处理图OPG。存储器管理器220可以基于重用策略使用内部存储器240中存储的模块输入特征图来对多个分支执行计算。
在实施例中,当计算出的存储量等于或小于第二参考值时,存储器管理器220可以基于模块转发策略来处理运算处理图OPG。存储器管理器220可以基于模块转发策略将内部存储器240中存储的模块输出特征图用作后续模块或运算的输入。
在实施例中,当计算出的存储量等于或小于第三参考值时,存储器管理器220可以基于运算转发策略将内部存储器240中存储的特征图用作后续运算的输入。
图16是示出了根据实施例的运算处理器的框图。图16示出了多个资源根据重用策略来执行神经网络处理运算的实施例。将省略参考图1给出的重复描述。
参照图16,运算处理器200a可以包括第一资源210a、第二资源230a和内部存储器240a。第一资源210a和第二资源230a中的每一个可以包括神经网络运算处理设备,例如,中央处理单元(CPU)、图形处理单元(GPU)、应用处理器(AP)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、神经网络处理单元(NPU)、电子控制单元(ECU)或图像信号处理器(ISP),并且第一资源210a和第二资源230a可以分别是不同的资源。
第一资源210a可以从内部存储器240a接收模块输入特征图IFM_M,并且可以通过执行第一分支中包括的至少一个运算来生成第一分支输出特征图OFM_B1。第一资源210a可以将生成的第一分支输出特征图OFM_B1存储在内部存储器240a中。
第二资源230a可以从内部存储器240a接收模块输入特征图IFM_M,并且可以通过执行第二分支中包括的至少一个运算来生成第二分支输出特征图OFM_B2。第二资源230a可以将生成的第二分支输出特征图OFM_B2存储在内部存储器240a中。
根据实施例,多个资源(即,第一和第二资源210a和230a)可以共享内部存储器240a,可以重用模块输入特征图IFM_M,因此可以提高神经网络运算处理速度。
图17是示出了根据实施例的运算处理器的框图。图17示出了多个资源根据模块转发策略或运算转发策略执行神经网络处理运算的实施例。将省略参考图1和图16给出的重复描述。
参照图17,运算处理器200b可以包括第一资源210b、第二资源230b和内部存储器240b。第一资源210b可以基于输入特征图执行第一运算,并且可以生成第一特征图FM1作为第一运算的结果。在实施例中,第一运算可以是由第一资源210b有效地执行的运算。第一资源210b可以将生成的第一特征图FM1存储在内部存储器240b中。另外,第一资源210b可以将内部存储器240b上的第一特征图地址ADDR_FM1输出到第二资源230b。
第二资源230b可以基于第一特征图地址ADDR_FM1从内部存储器240b接收第一特征图FM1,并且可以通过基于第一特征图FM1执行第二运算来生成第二特征图FM2。在实施例中,第二运算可以是由第二资源230b有效地执行的运算。第二资源230b可以将生成的第二特征图FM2存储在内部存储器240b中,并且可以将内部存储器240b上的第二特征图地址ADDR_FM2输出到第一资源210b。
第一资源210b可以基于第二特征图地址ADDR_FM2从内部存储器240b接收第二特征图FM2,并且可以基于第二特征图FM2执行后续运算。
根据实施例,多个资源(即,第一资源210b和第二资源230b)可以共享内部存储器240b,可以分别转发特征图,因此可以提高神经网络运算处理速度。
图18是示出了根据实施例的电子系统的框图。
参照图18,电子系统1000可以通过基于神经网络实时地分析输入数据来提取有效信息,并且可以基于所提取的信息来确定状况,或者可以控制安装了电子系统1000的电子设备的组件。例如,电子系统1000可以应用于机器人设备(例如,无人机或高级驾驶员辅助系统(ADAS))、智能TV、智能电话、医疗设备、移动设备、图像显示设备、测量设备、IoT设备等,并且除此之外,电子系统1000可以安装在各种电子设备的任何一种或任何组合中。
电子系统1000可以包括处理器1010、RAM 1020、神经网络设备1030、存储器1040、传感器1050和发射机/接收机(Tx/Rx)1060。电子系统1000的组件可以经由总线以可通信的方式相互连接。处理器1010可以控制电子系统1000的整体操作。例如,处理器1010可以通过执行RAM 1020中存储的程序来控制神经网络设备1030的功能。另外,处理器1010可以通过控制RAM 1020、存储器1040等将要基于神经网络进行深度学习的输入模型输出到神经网络设备1030。在实施例中,处理器1010可以将运算处理图划分为模块,并且可以在模块中包括的多个分支之间调整该运算处理图。RAM 1020可以临时存储程序、数据、应用或指令。
神经网络设备1030可以包括SRAM,并且可以通过使用SRAM执行用于神经网络处理的各种运算。在一个示例中,神经网络设备1030可以用存储在系统存储器(例如,只读存储器(ROM))中的软件来实现,并且可以基于处理器1010的控制来操作。
存储器1040是用于存储数据的存储位置,并且可以存储例如在由神经网络设备1030执行运算的过程中生成的各种数据。传感器1050可以从电子系统1000外部感测或接收信号(例如,图像信号、音频信号、磁信号、生物信号、触摸信号等),并且可以将该信号转换为数据。Tx/Rx 1060可以包括用于执行基于神经网络的大量运算的运算资源,或者包括通过可以与电子系统1000外部的设备进行通信的各种有线或无线接口实现的通信资源。
在实施例中,神经网络设备1030可以基于重用策略来处理运算处理图。神经网络设备1030可以基于重用策略,在对多个分支执行计算时使用存储在SRAM中的模块输入特征图。
在实施例中,神经网络设备1030可以基于模块转发策略来处理运算处理图。神经网络设备1030可以基于模块转发策略将SRAM中存储的模块输出特征图用作后续模块或运算的输入。
在实施例中,神经网络设备1030可以基于运算转发策略将SRAM中存储的特征图用作后续运算的输入。
上文描述的示例实施例可以被写在计算机上可执行的程序中,并且可以在通过使用计算机可读记录介质运行该程序的通用数字计算机中实现。另外,在上述示例实施例中使用的数据结构可以通过各种方式记录在计算机可读记录介质中。计算机可读记录介质可以包括诸如磁存储介质(例如,ROM、软盘、硬盘等)或光学读取介质(例如,光盘-ROM(CD-ROM)、数字多功能磁盘(DVD)等)的存储介质。
尽管已经参考本发明构思的实施例示出和描述了本发明构思,但应理解,在不脱离所附权利要求的精神和范围的情况下,可以在其中做出形式和细节上的各种改变。

Claims (25)

1.一种用于处理包括运算处理图在内的神经网络模型的神经网络系统,其中所述运算处理图包括多个运算,所述神经网络系统包括:
运算处理器,包括内部存储器,所述内部存储器存储第一模块输入特征图,
其中,所述运算处理器被配置为:
基于所存储的第一模块输入特征图,通过执行所述多个运算中的第一运算来获得第一分支输出特征图;以及
基于所存储的第一模块输入特征图,通过在执行所述第一运算之后执行所述多个运算中的第二运算来获得第二分支输出特征图,并且
其中,所述内部存储器在所述第一运算被执行时保持对所述第一模块输入特征图的存储。
2.根据权利要求1所述的神经网络系统,还包括后处理器,所述后处理器被配置为将所述运算处理图划分为多个模块,
其中,所述多个模块中的每一个模块包括多个分支,所述多个分支被配置为经由一个节点接收一个输入特征图。
3.根据权利要求2所述的神经网络系统,其中,所述多个分支包括:包括所述第一运算的第一分支,以及包括所述第二运算的第二分支,并且
其中,所述运算处理器还被配置为:
基于所存储的第一模块输入特征图,通过执行所述第一分支中包含的所述第一运算来获得所述第一分支输出特征图;以及
基于所存储的第一模块输入特征图,通过执行所述第二分支中包含的所述第二运算来获得所述第二分支输出特征图。
4.根据权利要求2所述的神经网络系统,其中,所述后处理器还被配置为:基于用于处理所述多个分支中的每一个分支的存储区域来获得所述多个分支的处理顺序。
5.根据权利要求4所述的神经网络系统,其中,所述多个分支包括:使用第一存储区域来处理的第一分支和使用大于所述第一存储区域的第二存储区域来处理的第二分支,并且
其中,所述后处理器还被配置为获得所述多个分支的处理顺序,使得所述第二分支比所述第一分支更早地被处理。
6.根据权利要求2所述的神经网络系统,还包括通过直接存储器存取“DMA”连接到所述运算处理器的外部存储器,
其中,所述多个模块包括第一模块和第二模块,
其中,所述运算处理图包括跳跃连接运算,所述跳跃连接运算连接在所述第一模块中包括的第一运算节点与所述第二模块中包括的第二运算节点之间,并且
其中,所述后处理器还被配置为从所述运算处理图中排除所述跳跃连接运算,从而使用所述外部存储器来处理所述跳跃连接运算。
7.根据权利要求1所述的神经网络系统,其中,所述运算处理图包括多个模块,并且
其中,所述运算处理器还被配置为:
基于所存储的第一模块输入特征图,通过执行所述多个模块中的第一模块所包括的第三运算来获得第一模块输出特征图;
将所获得的第一模块输出特征图存储在所述内部存储器中;以及
基于所存储的第一模块输出特征图,通过执行所述多个模块中的第二模块所包括的第四运算来获得第二模块输出特征图。
8.根据权利要求1所述的神经网络系统,其中,所述运算处理器还被配置为:
基于第一特征图,通过执行所述多个运算中的第三运算来获得第二特征图;
将所获得的第二特征图存储在所述内部存储器中;以及
基于所存储的第二特征图,通过执行所述多个运算中的第四运算来获得第三特征图。
9.根据权利要求1所述的神经网络系统,其中,所述运算处理图包括共享第一输入节点和第一输出节点的多个分支,
其中,所述多个分支包括所述多个分支中被最后处理的最后分支,并且
其中,所述运算处理器还被配置为:
基于所存储的第一模块输入特征图,通过执行所述最后分支中包括的第三运算来获得第三分支输出特征图;以及
用所获得的第三分支输出特征图覆写所述内部存储器的存储了所述第一模块输入特征图的区域。
10.根据权利要求1所述的神经网络系统,其中,所述运算处理图包括共享第一输入节点和第一输出节点的多个分支,
其中,所述多个分支中的每一个分支接收所述第一模块输入特征图,
其中,所述多个分支包括第一分支和第二分支,所述第一分支包括所述第一运算,所述第二分支包括所述第二运算,并且
其中,所述运算处理器还被配置为:
通过使用所述内部存储器的第一剩余区域执行所述第一分支中包括的所述第一运算来获得所述第一分支输出特征图,其中所述第一剩余区域不包括所述内部存储器的存储了所述第一模块输入特征图的第一区域;以及
将所获得的第一分支输出特征图存储在所述内部存储器的第二区域中;
通过使用所述内部存储器的第二剩余区域执行所述第二分支中包括的所述第二运算来获得所述第二分支输出特征图,其中所述第二剩余区域不包括所述第一区域和存储了所述第一分支输出特征图的所述第二区域;以及
将所获得的第二分支输出特征图存储在所述内部存储器的第三区域中。
11.根据权利要求1所述的神经网络系统,还包括通过直接存储器存取“DMA”连接到所述运算处理器的动态随机存取存储器“DRAM”,
其中,所述内部存储器包括静态随机存取存储器“SRAM”。
12.一种使用包括内部存储器的运算处理器来处理包括运算处理图在内的神经网络模型的方法,其中所述运算处理图包括多个运算,所述方法包括:
在所述内部存储器中存储第一模块输入特征图;
基于所存储的第一模块输入特征图,通过执行所述多个运算中的第一运算来获得第一分支输出特征图;
基于所存储的第一模块输入特征图,通过执行所述多个运算中的第二运算来获得第二分支输出特征图;以及
在执行所述第一运算时,在所述内部存储器中保持对所述第一模块输入特征图的存储。
13.根据权利要求12所述的方法,还包括将所述运算处理图划分为多个模块,
其中,所述多个模块中的每一个模块包括共享一个输入节点和一个输出节点的多个分支。
14.根据权利要求13所述的方法,还包括:基于用于处理所述多个分支中的每一个分支的存储区域来获得所述多个分支的处理顺序。
15.根据权利要求14所述的方法,其中,所述多个分支包括:使用第一存储区域来处理的第一分支、和使用大于所述第一存储区域的第二存储区域来处理的第二分支,并且
其中,获得所述多个分支的处理顺序包括:获得所述多个分支的处理顺序,使得所述第二分支比所述第一分支更早地被处理。
16.根据权利要求13所述的方法,其中,所述多个模块包括第一模块和第二模块,
其中,所述运算处理图包括跳跃连接运算,所述跳跃连接运算连接在所述第一模块中包括的第一运算节点与所述第二模块中包括的第二运算节点之间,
其中,所述方法还包括从所述运算处理图中排除所述跳跃连接运算,并且
其中,划分所述运算处理图包括将排除了所述跳跃连接运算的运算处理图划分为所述多个模块。
17.根据权利要求16所述的方法,还包括:经由通过直接存储器存取“DMA”连接到所述运算处理器的外部存储器来处理所述跳跃连接运算。
18.根据权利要求12所述的方法,其中,所述运算处理图包括多个模块,并且
其中,所述方法还包括:
基于所存储的第一模块输入特征图,通过执行所述多个模块中的第一模块所包括的第三运算来获得第一模块输出特征图;
将所获得的第一模块输出特征图存储在所述内部存储器中;以及
基于所存储的第一模块输出特征图,通过执行所述多个模块中的第二模块所包括的第四运算来获得第二模块输出特征图。
19.根据权利要求12所述的方法,其中,所述方法还包括:
基于第一特征图,通过执行所述多个运算中的第三运算来获得第二特征图;
将所获得的第二特征图存储在所述内部存储器中;以及
基于所存储的第二特征图,通过执行所述多个运算中的第四运算来获得第三特征图。
20.根据权利要求12所述的方法,其中,所述运算处理图包括共享第一输入节点和第一输出节点的多个分支,
其中,所述多个分支包括所述多个分支中被最后处理的最后分支,并且
其中,所述方法还包括:
基于所存储的第一模块输入特征图,通过执行所述最后分支中包括的第三运算来获得第三分支输出特征图;以及
用所获得的第三分支输出特征图覆写所述内部存储器的存储了所述第一模块输入特征图的区域。
21.根据权利要求12所述的方法,其中,所述运算处理图包括共享第一输入节点和第一输出节点的多个分支,
其中,所述多个分支中的每一个分支接收所述第一模块输入特征图,
其中,所述多个分支包括第一分支和第二分支,所述第一分支包括所述第一运算,所述第二分支包括所述第二运算,并且
其中,所述方法还包括:
通过使用所述内部存储器的第一剩余区域执行所述第一分支中包括的所述第一运算来获得所述第一分支输出特征图,其中所述第一剩余区域不包括所述内部存储器的存储了所述第一模块输入特征图的第一区域;
将所获得的第一分支输出特征图存储在所述内部存储器的第二区域中;
通过使用所述内部存储器的第二剩余区域执行所述第二分支中包括的所述第二运算来获得所述第二分支输出特征图,其中所述第二剩余区域不包括所述第一区域和存储了所述第一分支输出特征图的所述第二区域;以及
将所获得的第二分支输出特征图存储在所述内部存储器的第三区域中。
22.根据权利要求12所述的方法,其中,所述运算处理图包括第一模块,并且
其中,所述方法还包括:
获得用于执行所述多个运算中的包括在所述第一模块中的第一运算的存储量;
比较所获得的存储量与所述内部存储器的空闲存储量;以及
基于所述存储量与所述空闲存储量进行比较,建立所述内部存储器的使用策略。
23.根据权利要求12所述的方法,还包括:
基于输入特征图,通过执行所述多个运算中的至少一个运算来获得输出特征图;
基于所获得的输出特征图的数据量和所述内部存储器的空闲存储量,识别是否将所获得的输出特征图存储在所述内部存储器中;
基于所述输出特征图被识别为要被存储在所述内部存储器中,将所述输出特征图存储在所述内部存储器中;以及
基于所述输出特征图被识别为不被存储在所述内部存储器中,将所述输出特征图存储在通过直接存储器存取“DMA”连接到所述运算处理器的外部存储器中。
24.一种用于处理运算处理图的神经网络设备,所述运算处理图包括多个运算,所述神经网络设备包括:
内部存储器,存储第一特征图;以及
至少一个资源,被配置为:
基于所存储的第一特征图,通过执行所述多个运算中的第一运算来获得第二特征图;
将所获得的第二特征图存储在所述内部存储器中;以及
基于所存储的第二特征图,通过执行所述多个运算中的第二运算来获得第三特征图。
25.根据权利要求24所述的神经网络设备,其中,所述至少一个资源包括:
第一资源,被配置为:
基于所存储的第一特征图,通过执行所述第一运算来获得所述第二特征图;以及
将所获得的第二特征图存储在所述内部存储器的第一地址处;以及
第二资源,被配置为:基于存储在所述第一地址处的所述第二特征图,通过执行所述第二运算来获得所述第三特征图。
CN202010068165.8A 2019-01-21 2020-01-20 处理神经网络模型的神经网络设备、神经网络系统和方法 Pending CN111461310A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20190007583 2019-01-21
KR10-2019-0007583 2019-01-21
KR10-2019-0088529 2019-07-22
KR1020190088529A KR20200090600A (ko) 2019-01-21 2019-07-22 뉴럴 네트워크 장치, 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법

Publications (1)

Publication Number Publication Date
CN111461310A true CN111461310A (zh) 2020-07-28

Family

ID=71402997

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010068165.8A Pending CN111461310A (zh) 2019-01-21 2020-01-20 处理神经网络模型的神经网络设备、神经网络系统和方法

Country Status (3)

Country Link
US (1) US11900262B2 (zh)
CN (1) CN111461310A (zh)
DE (1) DE102020100209A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB202112936D0 (en) * 2021-09-10 2021-10-27 Graphcore Ltd A network computer with external memory

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
US20170337468A1 (en) * 2016-05-07 2017-11-23 1026 Labs, Inc. Multicast network and memory transfer optimizations for neural network hardware acceleration
CN107657316A (zh) * 2016-08-12 2018-02-02 北京深鉴科技有限公司 通用处理器与神经网络处理器的协同系统设计
CN107704923A (zh) * 2017-10-19 2018-02-16 珠海格力电器股份有限公司 卷积神经网络运算电路
US20180189229A1 (en) * 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Deep convolutional network heterogeneous architecture
CN108280514A (zh) * 2018-01-05 2018-07-13 中国科学技术大学 基于fpga的稀疏神经网络加速系统和设计方法
CN108351984A (zh) * 2015-11-05 2018-07-31 微软技术许可有限责任公司 硬件高效的深度卷积神经网络
US20180253636A1 (en) * 2017-03-06 2018-09-06 Samsung Electronics Co., Ltd. Neural network apparatus, neural network processor, and method of operating neural network processor
CN108647773A (zh) * 2018-04-20 2018-10-12 复旦大学 一种可重构卷积神经网络的硬件互连架构
CN108765247A (zh) * 2018-05-15 2018-11-06 腾讯科技(深圳)有限公司 图像处理方法、装置、存储介质及设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9202144B2 (en) 2013-10-30 2015-12-01 Nec Laboratories America, Inc. Regionlets with shift invariant neural patterns for object detection
WO2016095117A1 (en) 2014-12-17 2016-06-23 Nokia Technologies Oy Object detection with neural network
US20160358069A1 (en) 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
US9424494B1 (en) 2016-01-28 2016-08-23 International Business Machines Corporation Pure convolutional neural network localization
US10726326B2 (en) 2016-02-24 2020-07-28 International Business Machines Corporation Learning of neural network
GB2549554A (en) 2016-04-21 2017-10-25 Ramot At Tel-Aviv Univ Ltd Method and system for detecting an object in an image
CN110235066B (zh) 2016-11-29 2022-02-25 因艾伯尔株式会社 时刻同步系统和发送装置
KR102390379B1 (ko) 2017-03-06 2022-04-26 삼성전자주식회사 뉴럴 네트워크 프로세서, 뉴럴 네트워크 프로세서의 동작 방법, 및 뉴럴 네트워크 장치
KR20190007583A (ko) 2017-07-13 2019-01-23 주식회사 트레이드링크 식물 성장에 사용되는 인조 광원의 pwm 제어와 빛 감지센서를 이용한 식물 성장 단계 구별 방법

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108351984A (zh) * 2015-11-05 2018-07-31 微软技术许可有限责任公司 硬件高效的深度卷积神经网络
US20170337468A1 (en) * 2016-05-07 2017-11-23 1026 Labs, Inc. Multicast network and memory transfer optimizations for neural network hardware acceleration
CN107657316A (zh) * 2016-08-12 2018-02-02 北京深鉴科技有限公司 通用处理器与神经网络处理器的协同系统设计
US20180189229A1 (en) * 2017-01-04 2018-07-05 Stmicroelectronics S.R.L. Deep convolutional network heterogeneous architecture
CN106875012A (zh) * 2017-02-09 2017-06-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
US20180253636A1 (en) * 2017-03-06 2018-09-06 Samsung Electronics Co., Ltd. Neural network apparatus, neural network processor, and method of operating neural network processor
CN107704923A (zh) * 2017-10-19 2018-02-16 珠海格力电器股份有限公司 卷积神经网络运算电路
CN108280514A (zh) * 2018-01-05 2018-07-13 中国科学技术大学 基于fpga的稀疏神经网络加速系统和设计方法
CN108647773A (zh) * 2018-04-20 2018-10-12 复旦大学 一种可重构卷积神经网络的硬件互连架构
CN108765247A (zh) * 2018-05-15 2018-11-06 腾讯科技(深圳)有限公司 图像处理方法、装置、存储介质及设备

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
AIMAR等: "NullHop:A Flexible Convolutional Neural Network Accelerator Based on Sparse Representation of Feature Maps", 《ARXIV》, 6 March 2018 (2018-03-06) *
YI WANG等: "Towards Memory-Efficient Allocation of CNNs on Processing-in-Memory Architecture", 《IEEE TRANSACTIONS ON PARALLEL AND DISTRIBUTED SYSTEMS》, vol. 29, no. 06, 30 June 2018 (2018-06-30), pages 2 - 3 *
YUFEI MA: "Hardware Acceleration of Deep Convolutional Neural Networks on FPGA", 《ARIZONA STATE UNIVERSITY_PHD DISSERTATION》, 31 December 2018 (2018-12-31), pages 4 - 4 *
王开宇等: "卷积神经网络的FPGA实现及优化", 《实验室科学》, vol. 21, no. 04, 28 August 2018 (2018-08-28), pages 79 - 84 *
邱宇: "基于FPGA的Alexnet前向网络加速", 《中国优秀硕士学位论文全文数据库 信息科技辑》, vol. 2018, no. 11, 15 November 2018 (2018-11-15), pages 140 - 24 *

Also Published As

Publication number Publication date
DE102020100209A1 (de) 2020-07-23
US20200234147A1 (en) 2020-07-23
US11900262B2 (en) 2024-02-13

Similar Documents

Publication Publication Date Title
CN110506260B (zh) 用于神经网络环境中的增强数据处理的方法、系统和介质
JP2022052773A (ja) 畳み込み効率を向上させる方法、システム、及び装置
KR20200088475A (ko) 신경망의 기능적 부분망의 동시 훈련
JP2016126801A (ja) 学習メカニズムを有する電子システム及びその動作方法並びに不揮発性コンピュータ読取可能ストレージ媒体
US20210295168A1 (en) Gradient compression for distributed training
US11915149B2 (en) System for managing calculation processing graph of artificial neural network and method of managing calculation processing graph by using the same
US10732694B2 (en) Power state control of a mobile device
US11775807B2 (en) Artificial neural network and method of controlling fixed point in the same
CN115098412B (zh) 外设访问控制器、数据访问装置及对应方法、介质和芯片
CN113011553A (zh) 加速器、操作加速器的方法和包括加速器的装置
US11941528B2 (en) Neural network training in a distributed system
CN114610475A (zh) 一种智能资源编排模型的训练方法
CN114430838A (zh) 使用神经网络加速器来处理连续输入
CN111461310A (zh) 处理神经网络模型的神经网络设备、神经网络系统和方法
US20230229914A1 (en) Method of processing a neural network model
US20210365212A1 (en) Computation of solution to sparse matrix
CN114118389A (zh) 神经网络数据处理方法、设备及存储介质
US11314517B2 (en) Method and apparatus for updating pipeline operations for data processing
KR20200090600A (ko) 뉴럴 네트워크 장치, 뉴럴 네트워크 시스템 및 이를 이용한 뉴럴 네트워크 모델 처리 방법
CN102063308A (zh) 一种用于地震勘探资料处理流程控制的方法
KR20200051278A (ko) 인공 신경망에서의 작업 관리 방법 및 이를 포함하는 시스템
US20240020510A1 (en) System and method for execution of inference models across multiple data processing systems
US11797280B1 (en) Balanced partitioning of neural network based on execution latencies
US20240020550A1 (en) System and method for inference generation via optimization of inference model portions
US12008469B1 (en) Acceleration of neural networks with stacks of convolutional layers

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