CN111052149B - 用于确定网络中的内存需求的方法和装置 - Google Patents

用于确定网络中的内存需求的方法和装置 Download PDF

Info

Publication number
CN111052149B
CN111052149B CN201880050995.9A CN201880050995A CN111052149B CN 111052149 B CN111052149 B CN 111052149B CN 201880050995 A CN201880050995 A CN 201880050995A CN 111052149 B CN111052149 B CN 111052149B
Authority
CN
China
Prior art keywords
memory
buffer
color
processing
edges
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
CN201880050995.9A
Other languages
English (en)
Other versions
CN111052149A (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.)
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
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN111052149A publication Critical patent/CN111052149A/zh
Application granted granted Critical
Publication of CN111052149B publication Critical patent/CN111052149B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • 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)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Image Input (AREA)
  • Image Generation (AREA)

Abstract

本公开公开了用于确定用于在设备上处理DNN模型的内存需求的方法和装置,该方法包括接收针对输入的DNN模型,其中DNN模型包括多个处理层。该方法包括生成DNN模型的网络图。该方法包括基于所识别的多个处理层的执行顺序来创建DNN模型的着色网络图。着色网络图指示对至少一个内存缓冲区的指派,至少一个内存缓冲区用于存储至少一个处理层的至少一个输出。该方法包括确定跨多个处理层的至少一个缓冲区重用重叠可能性。基于确定的至少一个缓冲区重用重叠可能性,该方法包括确定和指派用于处理DNN模型所需的内存。

Description

用于确定网络中的内存需求的方法和装置
技术领域
本公开涉及嵌入式设备上的神经网络应用领域。更具体地,本公开涉及确定和分配用于在嵌入式设备上处理深度神经网络(DNN)模型所需的内存。
背景技术
目前,在计算机视觉任务(目标检测/分类/分割)、话音、自然语言处理(NLP)等中,深度神经网络(DNN)已经越来越接近人类准确度。然而,准确度的提高是以增加内存带宽和计算量为代价的。DNN的内存带宽和计算量的增加使得难以在低功耗嵌入式设备上部署DNN。
图1是示出了传统的DNN的推断级的示例图。传统的DNN包括至少两个阶段,即推断/处理阶段和训练阶段。训练阶段可以利用计算资源生成DNN模型。推断阶段使用通过训练阶段所生成的DNN模型根据给定输入推断标签。经训练的DNN模型可以包括多个处理层,所述多个处理层可以被执行以对输入进行推断。
如图1所示,传统的DNN获取具有三个特征图/通道(RGB)的图像。特征图是具有输入图像的特征(例如,颜色、边等)的二维图像。输入图像的三个特征图需要存储在嵌入式设备的动态随机存取存储器(DRAM)中(例如,分配618KB的内存来存储三个特征图)。传统的DNN通过对经训练的DNN模型进行处理来预测输入图像。对经训练的DNN模型进行处理包括:对输入图像应用多个处理层以生成多个特征图,减小输入图像的大小,并生成输入图像的预测/推断。例如,DNN模型的层1输出96个特征图。输出的96个特征图可以是需要存储在DRAM中的中间特征图(指派19MB的内存来存储96个特征图)。DNN模型的层2输出256个特征图(中间特征图),所述256个特征图需要存储在DRAM中(指派746MB的内存来存储256个特征图)。因此,在传统的DNN的推断阶段中,中间特征图(每个层的输出)需要存储在DRAM中。然而,在推断阶段中,后续的连续层并不能消耗所存储的中间特征图。因此,这导致内存带宽和计算需求的增加。
图2a和图2b是示出了用于在嵌入式设备上处理顺序DNN模型和复合DNN模型的常规缓冲区分配方法的示例图。顺序DNN模型依赖于单输入单输出拓扑结构,该拓扑结构描绘了顺序DNN模型处理层的顺序依赖度。顺序DNN模型的网络结构可以描绘为如图2a所示的网络图。该网络图包括节点和边。节点描绘了顺序DNN模型的处理层,并且层描绘了处理层之间的数据流(特征图数据流)。例如,该网络图包括描绘顺序DNN模型的四个层(层1、层2、层3和层4)的四个节点和描绘五个层之间的数据流的五个边(E1、E2、E3、E4和E5)。此外,每个处理层都需要自己的独立缓冲区。因此,在网络图中,与每一层相关联的每一个边被指派了与唯一内存位置相对应的唯一内存缓冲区(内存/同步动态随机存取存储器(SDRAM)的区域)。例如,可以将0.6MB的内存缓冲区B1指派给边E1,可以将1.1MB的内存缓冲区B1、B2和B3分别指派给边E2、E3和E4,并且可以将0.2MB的内存缓冲区B5指派给边E5。所需的总内存可以相当于所有缓冲区的总和,该总和可以等于4.1MB。这对于顺序DNN的推断阶段可能导致对SDRAM内存占用的巨大需求。
复合DNN模型依赖于复合的拓扑结构,该拓扑结构描绘了单输入多输出、多输入单输出、多输入多输出等。复合DNN模型的网络图如图2b所示。例如,复合DNN模型的网络图包括描绘五个处理层(层1、层2、层3、层4和层5)的五个节点和描绘五个处理层之间的数据流的六个边。此外,3.1Mb的内存缓冲区B1、B4、B5和B6可以分别指派给边E1、E4、E5和E6,并且0.8Mb的内存缓冲区B2和B3可以分别指派给边E2和E3。用于执行复合DNN的六个层的总内存需求可以等于14MB。因此,这导致在推断阶段中用于执行复合DNN的处理层的内存需求增加。
图3是示出了与用于在嵌入式设备上处理DNN模型的传统DNN推断框架相关联的内存分配方法的示例图。传统的DNN推断框架使用非重叠缓冲区,传统的DNN推断框架例如是Caffe、Tensorflow和Qualcomm骁龙神经处理引擎(SNPE),其中,可以针对每个处理层指派唯一缓冲区来处理DNN模型(Caffe、Tensorflow和Qualcomm SNPE DNN模型)。在这些传统的框架中,内存缓冲区的重用不可能跨越DNN模型的处理层。因此,总的缓冲区需求可以等于所有内存缓冲区的总和。
此外,传统的DNN推断框架(例如,Tensorflow-Lite、Tencent-NCNN等)使用系统malloc来分配层IO,并在每个处理层执行之后释放层IO。然而,由于malloc的开销和碎片化,使用系统malloc来进行内存分配会导致次优结果。此外,虽然网络图是可用的,但是系统malloc并不知道DNN缓冲区的活跃度。此外,在这些传统的框架中,针对动态缓冲区请求的内存不可用会导致分割错误。
传统的DNN推断框架(例如,MXNet推断框架)利用跨MXNet DNN模型的处理层的内存缓冲区重用,这是因为其采用在编译器中使用的寄存器分配方法。在MXNet推断框架中,内存缓冲区用作寄存器。然而,在MXNet框架中,不考虑缓冲区的大小。
图4a是示出了用于使用传统DNN推断框架处理DNN模型的内存缓冲区需求的示例表。图4a示出了用于使用传统DNN推断框架(例如,AlexNet、VGG16、GoogLeNet等)处理DNN模型所需的内存缓冲区。用于使用传统DNN推断框架处理DNN模型的最大缓冲区需求可以是4.5GB。
图4b和图4c示出了传统DNN推断框架关于高速缓存利用率的性能。在传统的DNN推断框架中,当处理层写特征图时,由于处理层使用完全不同的缓冲区,因此可能会导致二级/三级高速缓存未命中,从而导致更多的强制缓存未命中。此外,高速缓存未命中可能使总执行时间增加,如图4b所示。因此,由于总执行时间增加,因此传统DNN推断框架的性能可能降低。图4c中所示的示例表示出了传统DNN推断框架的性能。
图4d是示出了与在嵌入式设备上启动传统DNN相关应用相关联的频繁内存交换过程的示例图。例如,考虑一个场景,在该场景中,新的DNN应用(3D Avatar)请求内存。响应于该请求,内存管理器检查DRAM是否有足够的可用内存。如果DRAM有足够的可用内存,则内存管理器可以直接分配内存。否则,内存管理器可能需要通过将与现有应用(视频播放器应用)相关联的现有内存内容写入到辅助存储器上的交换分区来释放内存,然后在需要时再取回该内容。此外,重新启动换出的应用(视频播放器应用)较慢,这是因为需要从辅助存储器上的交换分区读取相应的内存内容。此外,频繁的应用交换会增加应用执行时间并且降低吞吐量。例如,执行3D Avatar应用所花费的时间可以是15秒,并且视频播放器应用的吞吐量可以降低到10fps。
图4e是示出了在重新启动嵌入式设备之后启动传统DNN相关应用的示例图。在重新启动嵌入式设备之后,可以运行多个应用。考虑一个示例场景,在该场景中,在重新启动嵌入式设备之后,传统DNN相关应用可以请求和等待内存区域。响应于该内存请求,可以将另一个应用移动到交换分区,以便针对DNN相关应用分配内存区域。启动传统DNN相关应用所需的时间可以包括:内存中的应用加载时间和针对内存区域的等待时间。例如,在重新启动嵌入式设备之后,传统方法花费250毫秒来启动DNN相关应用。因此,在重新启动嵌入式设备之后启动DNN相关应用的过程可能会变慢。
上述信息仅作为背景信息呈现,以帮助理解本公开。对于上述任何一项是否可作为适用于本公开的现有技术,尚未作出任何决定,也未作出任何断言。
发明内容
技术问题
提出本公开以至少解决上述问题和/或缺点,并提供至少下述优点。因此,本公开的一个方面是提供用于确定用于在嵌入式设备上处理DNN模型的内存需求的方法和装置。
本公开的另一个方面是提供一种用于识别跨DNN模型的处理层的可重用内存缓冲区的方法和装置。
本公开的再一个方面是提供一种用于确定跨DNN模型的处理层重用缓冲区重叠的可能性的方法和装置。
问题的解决方案
根据本公开的一个方面,提供了用于确定用于在设备上处理DNN的内存需求的方法和装置。本文公开的方法接收针对输入的至少一个DNN模型,其中,所述至少一个DNN模型包括多个处理层。此外,该方法包括:生成所述至少一个DNN模型的网络图,其中,所述至少一个网络图的多个节点指示DNN模型的多个处理层,并且网络图的多个边指示多个处理层之间的数据流。此外,该方法包括:基于生成的网络图识别多个处理层的至少一个执行顺序。基于所识别的执行顺序,该方法包括:使用着色网络图确定跨多个处理层的至少一个重用缓冲区重叠可能性。基于确定的至少一个重用缓冲区重叠可能性,该方法包括:确定和指派用于处理至少一个DNN模型的内存需求。
根据本公开的另一方面,提供了一种设备,其中该设备包括存储器和至少一个处理器,其中该存储器包括多个内存缓冲区,并且该至少一个可通信地耦合到该存储器。所述至少一个处理器被配置为接收针对输入的至少一个DNN模型,其中所述至少一个DNN模型包括多个处理层。所述至少一个处理器进一步被配置为生成所述至少一个DNN模型的网络图,其中,至少一个网络图的多个节点指示DNN模型的多个处理层,并且网络图的多个边指示多个处理层之间的数据流。所述至少一个处理器进一步被配置为基于所生成的网络图识别所述多个处理层的至少一个执行顺序。所述至少一个处理器进一步被配置为使用所识别的至少一个执行顺序创建至少一个DNN模型的着色网络图。所述至少一个处理器进一步被配置为使用所述着色网络图确定跨多个处理层的至少一个重用缓冲区重叠可能性。所述至少一个处理器进一步被配置为基于所确定的至少一个重用缓冲区重叠可能性来确定并指派用于处理所述至少一个DNN模型的内存需求。
当结合以下描述和附图考虑时,将更好地了解和理解本文的示例实施例的这些和其他方面。然而,应当理解,在指示示例实施例及其许多具体细节时,以下描述是以图解的方式给出的,而不是以限制的方式给出的。可以在本文的示例实施例的范围内进行许多改变和修改,而不脱离其精神,并且本文的示例实施例包括所有这些修改。
附图说明
根据结合附图的以下详细描述,本公开的某些实施例的上述和其他方面、特征和优点将更加明显,在附图中:
图1是示出了传统深度神经网络(DNN)的推断级的示例图;
图2a和图2b是示出了用于在嵌入式设备上处理顺序DNN模型和复合DNN模型的常规缓冲区分配方法的示例图;
图3是示出了与用于在嵌入式设备上处理DNN模型的传统DNN推断框架相关联的内存分配方法的示例图;
图4a是示出了用于使用传统DNN推断框架处理DNN模型的内存缓冲区需求的示例表;
图4b和图4c示出了传统DNN推断框架关于高速缓存利用率的性能;
图4d是示出了与在嵌入式设备上启动传统DNN相关应用相关联的频繁内存交换过程的示例图;
图4e是示出了在重新启动嵌入式设备之后启动传统DNN相关应用的示例图;
图5是根据本公开的实施例的用于执行深度神经网络(DNN)的推断阶段的示例嵌入式设备;
图6是示出了根据本公开的实施例的用于分配用于在嵌入式设备上处理DNN模型的内存的内存分配模块的单元的框图;
图7是示出了根据本公开的实施例的用于确定用于在嵌入式设备上处理DNN模型所需的内存的方法的流程图;
图8是示出了根据本公开的实施例的用于确定跨DNN模型的处理层的重用缓冲区重叠可能性的方法的流程图;
图9是根据本公开的实施例的示例嵌入式设备,其中可以分配最佳内存以用于处理DNN模型;
图10a和图10b是示出了根据本公开的实施例的创建DNN模型的着色网络图的示例图;
图10c是示出了根据本公开的实施例的用于创建DNN模型的着色网络图的方法的示例流程图;
图11a是示出了根据本公开的实施例的识别跨DNN模型的处理层的重用缓冲区重叠可能性的示例图;
图11b是示出了根据本公开的实施例的在确定内存缓冲区的重用以及重用缓冲区重叠可能性之后分配内存缓冲区的示例图;
图11c是示出了根据本公开的实施例的用于识别跨DNN模型的处理层的重用缓冲区重叠可能性的方法的示例流程图;
图12a和图12b是示出了根据本公开的实施例的分配用于处理DNN模型的内存的示例图;
图13a和图13b是示出了根据本公开的实施例的用于在嵌入式设备上处理DNN模型的总内存需求的示例图;
图14a是示出了根据本公开的实施例的基于最佳内存缓冲区指派的嵌入式设备上的多个输入推断的批处理的示例图;
图14b是示出了根据本公开的实施例的用于执行多个输入推断的批处理的内存需求的示例表;
图15a和图15b是示出了根据本公开的实施例的针对推断阶段基于最佳内存缓冲区分配的DNN推断性能的示例图;以及
图16a和图16b是示出了根据本公开的实施例的基于最佳内存缓冲区分配在嵌入式设备上启动DNN相关应用的示例图。
在整个附图中,类似的附图标记将被理解为是指类似的部件、组件和结构。
具体实施方式
参照附图中示出的并在以下描述中详述的非限制性实施例来更充分地解释本文的示例实施例及其各种特征和优点细节。省略了对已知组件和处理技术的描述,以便不会不必要地模糊本文中的实施例。本文的描述仅仅是为了便于理解实践本文的示例实施例的方式,并且进一步使得本领域技术人员能够实践本文的示例实施例。因此,本公开不应被解释为限制本文中的示例实施例的范围。
本文的实施例公开了用于确定用于在嵌入式设备上处理深度神经网络(DNN)模型的内存需求的方法和系统。本文公开的方法识别用于存储DNN模型的多个处理层中的至少两个处理层的至少一个输出的至少一种颜色的至少一个内存缓冲区的重用。此外,该方法包括确定跨多个处理层的重用缓冲区重叠可能性。基于所确定的至少一个内存缓冲区的重用和重用缓冲区重叠可能性,该方法包括:确定用于在嵌入式设备上处理DNN模型的内存需求。现在参考附图,并且更具体地参考图5至图16b(其中类似的参考字符贯穿附图一致地表示对应特征),示出了示例实施例。
图5是根据本公开的实施例的用于执行深度神经网络(DNN)的推断阶段的示例嵌入式设备500。DNN使用数学建模来处理给定的输入数据。DNN可以用于各种应用,例如但不限于:机器学习应用、计算机视觉、话音学习、语言建模和自动驾驶汽车。DNN包括训练阶段和推断/处理阶段。训练阶段包括使用大型数据集生成DNN模型。DNN模型的例子可以是但不限于:深度信念网络(DBN)、堆叠式自动编码器(SAE)和深度卷积神经网络(DCNN)。可以在云、服务器、嵌入式设备500等中的至少一个上执行训练阶段。推断阶段包括:处理在训练阶段期间生成的DNN模型,以推断/预测给定的输入。可以在嵌入式设备500、云(未示出)、服务器等中的至少一个上执行推断阶段/处理阶段。考虑在嵌入式设备500上处理DNN模型来进一步解释本文中的实施例,但是对于本领域普通技术人员而言显而易见的是,可以在任何其他平台/设备上执行DNN模型的处理。嵌入式设备500可以是包括专用计算系统的设备。嵌入式设备500的示例可以是但不限于:移动电话、智能手机、平板电脑、平板电话、个人数字助理(PDA)、膝上型计算机、可穿戴设备、物联网(IoT)设备、车辆信息娱乐系统、医疗设备、媒体播放器、游戏机、数码相机、家用电器(微波炉烤箱、冰箱、洗衣机、洗碗机等)、汽车或其上可以部署DNN模型的任何其他设备。
嵌入式设备500包括:处理引擎502、存储器504和显示单元506。处理引擎502可以被配置为在嵌入式设备500上执行DNN的推断阶段。推断阶段涉及在嵌入式设备500上处理DNN模型(经训练的模型)。在一个实施例中,处理引擎502可以是但不限于用于处理DNN模型的单个处理器、多个处理器、多个同构核、多个异构核、不同类型的多个中央处理单元(CPU)、加速器(图形处理单元(GPU))等。在另一实施例中,处理引擎502可以位于单个芯片或多个芯片上。在又一实施例中,处理引擎502可以与至少一个DNN推断框架集成在一起以用于处理DNN模型从而预测给定的输入。处理引擎502可以通信地耦合到存储器504和显示单元506。存储器504可以是包括存储区域和多个内存缓冲区的易失性存储器。存储区域和多个内存缓冲区包括多个存储单元。多个内存缓冲区可以用于在执行推断阶段期间存储DNN模型的多个处理层的至少一个输出。考虑将同步动态随机存取存储器(SDRAM)作为有效地存储DNN模型的处理层的输出的内存的示例来进一步解释本文中的实施例,但是对于本领域普通技术人员而言显而易见的是,可以考虑任何其他形式的动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。
此外,处理引擎502包括接收单元508、调度模块510、内存分配模块512和执行模块514。接收单元508可以被配置为接收用于推断的输入。输入的示例可以是但不限于以下至少一项:音频、话音、文本、图像、视频等。在一个实施例中,输入可以存在于嵌入式设备500的内存504中。在另一实施例中,接收单元508可以通过通信网络从其他设备(移动电话、传感器、相机等)接收输入。通信网络的示例可以是但不限于以下至少一项:因特网、有线网络、无线网络(Wi-Fi网络、蜂窝网络、Wi-Fi热点、蓝牙、Zigbee等)等。
调度模块510可以被配置为接收DNN模型以预测从接收单元508接收的输入(推断输入的标签)。在一个实施例中,调度模块510通过通信网络从云、服务器或任何其他设备等中的至少一个接收DNN模型。DNN模型可以是包括多个处理层和相应的初始内存需求在内的经训练的模型。
调度模块510可以被配置为创建DNN模型的网络图。网络图包括节点和边。节点表示DNN模型的处理层,并且边表示处理层之间的特征图数据流。调度模块510可以进一步被配置为使用网络图来识别DNN模型的处理层的执行顺序。在一个实施例中,调度模块510基于至少一个调度要求来识别处理层的执行顺序。调度要求可以是但不限于:深度优先搜索、广度优先搜索或任何调度算法中定义的要求。在另一实施例中,调度模块510可以进一步调度以下各项中的至少一项的执行:处理层中的单个处理层、以及单核和多处理器中的至少一个上的处理层。
内存分配模块512可以被配置为确定和分配用于处理DNN模型(推断/处理阶段)所需的内存缓冲区(SDRAM存储单元)。在从调度模块510接收到网络图时,内存分配模块512创建DNN模型的着色网络图。为了创建着色网络图,内存分配模块512将颜色指派给DNN模型的网络图中存在的边。将颜色指派给边指示将至少一种颜色的内存缓冲区指派给与每个处理层相关联的边。基于着色网络图,内存分配模块512针对至少两个边识别对至少一种颜色的内存缓冲区的重用。因此,根据着色网络图,内存分配模块识别处理层所需的多个内存缓冲区和相应的大小。
在识别出对内存缓冲区的重用之后,内存分配模块512可以进一步被配置为确定跨处理层的重用缓冲区重叠可能性。在一个实施例中,内存分配模块512使用二维(2D)平面布局来确定重用缓冲区重叠可能性。基于所识别的内存缓冲区的重用和重用缓冲区重叠可能性,内存分配模块512确定用于处理DNN模型所需的内存缓冲区的大小。分配引擎512针对用于处理DNN模型所需的内存缓冲区指派相对地址空间。因此,基于所识别的内存缓冲区的重用和重用缓冲区重叠可能性所分配的内存可以是用于处理DNN模型所需的最佳内存大小。
执行模块514可以被配置为处理DNN模型以预测输入。执行模块514执行/处理DNN模型的处理层以预测输入。可以通过将每个处理层的输出存储在分配的内存缓冲区中来执行处理层。显示单元506可以被配置为显示输入的预测。预测的输入可以存储在存储器504中。因此,可以嵌入式设备500上执行DNN的推断阶段(处理DNN模型)同时减少内存带宽和计算需求。
图5示出了嵌入式设备500的示例单元,但应当理解,其他实施例不限于此。在其他实施例中,嵌入式设备500可以包括更少或更多数量的单元。此外,单元的标签或名称仅用于说明的目的,而不限制本文的实施例的范围。一个或多个单元可以组合在一起,以在嵌入式设备500中执行相同或基本上相似的功能。
图6是示出了根据本公开的实施例的用于分配用于在嵌入式设备500上处理DNN模型的内存的内存分配模块512的单元的框图。内存分配模块512包括:图着色单元602、缓冲区重叠探测单元604和地址指派单元606。
图着色单元602可以被配置为形成DNN模型的着色网络图。当从调度单元510接收到DNN模型的网络图时,图着色单元602将颜色指派给DNN模型的网络图中存在的边。在一个实施例中,将颜色指派给边指示将至少一种颜色的内存缓冲区指派给边。本文的实施例可互换地使用术语“颜色”、“至少一种颜色的内存缓冲区”等,并且可以指将至少有一种颜色的内存缓冲区指派给与每个处理层相关联的每一个边。
图着色单元602遍历节点中的经调度的节点(被调度处理层)的每一个边,并挑选“可用颜色列表(FreeColorList)”中可用于指派给经调度的节点的每一个边的颜色。在一个实施例中,将颜色指派给每一个边指示将内存缓冲区以及对应的颜色指派给每一个边。“FreeColorList”是表,该表包括与内存缓冲区相关联的颜色的列表/条目。在“FreeColorList”中的颜色(内存缓冲区)不可用的情况下,图着色单元602在“FreeColorList”中创建新的颜色条目。在一个实施例中,图着色单元602将颜色指派给每个处理层的至少一个输入边和至少一个输出边。指派给至少一个输入边和至少一个不同边的颜色不同。在将颜色指派给至少一个输出边之后,图着色单元602释放指派给至少一个输入边的颜色,并将其添加到“FreeColorList”。释放的颜色可以指派给连续处理层的输出边。
在一个实施例中,图着色单元602创建着色网络图,使得可以向至少两个相邻边指派不同的颜色/内存缓冲区。在另一实施例中,图着色单元602可以基于释放的颜色/内存缓冲区将相同的颜色/内存缓冲区指派给至少两个边(非相邻边)。本文的实施例意味着将相同颜色指派给至少两个边指示针对至少两个边重用相同的内存缓冲区。
缓冲区重叠探测单元604可以被配置为确定跨处理层的重用缓冲区重叠可能性。在接收到DNN模型的着色网络图时,缓冲重叠探测单元604识别着色网络图的至少两个边对内存缓冲区的重用。缓冲区重叠探测单元604基于将相同颜色指派给着色网络图的至少两个边来识别内存缓冲区的重用。在识别内存缓冲区的重用之后,缓冲区重叠探测单元604确定(针对边指派的内存缓冲区中的)针对每一个边指派的至少一种颜色的每个内存缓冲区的大小。至少一种颜色的内存缓冲区的总大小可以等于被指派了所述至少一种颜色的内存缓冲区的至少两个边的最大缓冲区大小要求。基于确定的内存缓冲区的大小,缓冲区重叠探测单元604针对内存缓冲区指派非重叠的起始虚拟地址和结束虚拟地址。此外,缓冲区重叠探测单元604向每一个边指派起始层索引和结束层索引。
在针对每个内存缓冲区指派虚拟地址之后,缓冲区重叠探测单元604生成2D平面布局以探测重用缓冲区重叠可能性。在2D平面布局中,X轴和Y轴分别表示层索引(DNN模型的每个处理层的编号)和地址空间。此外,在2D平面布局中,可以针对与处理层相关联的边生成矩形框。矩形框中的一个矩形框指示指派给边的至少一种颜色的内存缓冲区。可以向矩形框指派相应内存缓冲区的颜色。矩形框的起始地址指示至少一种颜色的相应的内存缓冲区的虚拟起始地址。矩形框的结束地址可以基于对应边所需的内存缓冲区的大小。此外,矩形框的高度指示内存缓冲区的大小,并且矩形框的宽度指示跨处理层的内存缓冲区的活跃度/依赖度。
缓冲区重叠探测单元604可以进一步被配置为基于诸如但不限于以下各项的因素对与内存缓冲区相对应的(与边相关联的)矩形框进行排序:起始地址、与每个内存缓冲区相对应的每个矩形框的大小、层索引等。基于排序后的矩形框,缓冲区重叠探测单元604通过识别跨2D平面布局上的矩形框的重叠可能性来确定缓冲区重叠可能性。此外,响应于识别出不同颜色的矩形框之间的至少一个间隙,缓冲区重叠探测单元604朝向Y轴压缩小/压缩矩形框。在一个实施例中,缓冲区重叠探测单元604基于诸如但不限于内存缓冲区的活跃度和层依赖度等约束来压缩小矩形框。缓冲区重叠探测单元604通过使矩形框适应(fitin)所识别的不同颜色的矩形框之间的间隙来压缩小矩形框。可以用较低地址值对经压缩小的矩形框的起始地址进行调整。压缩小矩形框指示针对与经压缩小的矩形框相对应的内存缓冲区的地址指派发生变化。
地址指派单元606可以被配置为确定用于处理DNN模型所需的内存缓冲区的大小。此外,地址指派单元606基于所探测的重用内存缓冲区重叠可能性针对内存缓冲区指派相对偏移/地址空间。地址指派单元606基于2D平面布局中的对应矩形框的起始地址来指派相对地址空间,其中2D平面布局包括至少一个经压缩小的矩形框。因此,可以分配最佳内存带宽以在嵌入式设备上执行DNN模型的推断阶段。
图6示出了内存分配模块512的示例单元,但应当理解,其他实施例不限于此。在其他实施例中,内存分配模块512可以包括更少或更多数量的单元。此外,单元的标签或名称仅用于说明的目的,而不限制本文的实施例的范围。一个或多个单元可以组合在一起以在内存分配模块512中执行相同或基本相似的功能。
图7是示出了根据本公开的实施例的用于确定用于在嵌入式设备500上处理DNN模型所需的内存的方法的流程图700。
在操作702,该方法包括:由调度模块510接收针对输入的DNN模型。DNN模型可以是包括处理层的经训练的模型。在操作704,该方法包括:由调度模块510生成DNN模型的网络图。该网络图包括表示DNN模型的处理层的节点和指示处理层之间的特征图数据流的边。
在操作706,该方法包括:由调度模块510识别处理层的执行顺序。在操作708,该方法包括:由内存分配模块512的图着色单元602使用识别的执行顺序创建着色网络图。图着色单元602将颜色指派给网络图的边。图着色单元602基于DNN模型的多个处理层的执行顺序和边的活跃度将颜色指派给边。将颜色指派给边表示将至少一种颜色的内存缓冲区指派给与处理层相关联的边。
在操作710,该方法包括:由内存分配模块512的缓冲区重叠探测单元604使用着色网络图确定跨DNN模型的处理层的重用缓冲区重叠可能性。缓冲区重叠探测单元604从图着色单元602接收DNN模型的着色网络图,并确定至少两个边对内存缓冲区的重用。基于确定的重用,缓冲区重叠探测单元604确定针对与处理层相关联的边指派的内存缓冲区的大小。此外,缓冲区重叠探测单元604生成针对边的2D平面布局。基于2D平面布局,缓冲区重叠探测单元604确定跨DNN模型的处理层的重用缓冲区重叠可能性。
在操作712,该方法包括:由内存分配模块512的地址指派单元606基于重用缓冲区重叠可能性确定用于处理DNN模型的内存需求。地址指派单元606基于确定的重用缓冲区重叠可能性计算用于处理DNN模型所需的内存缓冲区的大小。地址指派单元606还使用2D平面布局针对指派给与处理层相关联的边的内存缓冲区指派相对地址空间。因此,可以利用最佳内存带宽以在嵌入式设备500上处理DNN模型。
可以按照所呈现的顺序、以不同的顺序或同时执行该方法和流程图700中的各种行为、动作、框、操作等。此外,在一些实施例中,在不脱离本发明的范围的情况下,可以省略、添加、修改、跳过等所述行为、动作、框、操作等中的一些。
图8是示出了根据本公开的实施例的用于确定跨DNN模型的处理层的重用缓冲区重叠可能性的方法的流程图800。
在操作802,该方法包括:由内存分配模块512的缓冲区重叠探测单元604针对至少两个边识别对至少一种颜色的内存缓冲区的重用。在从图着色单元602接收到着色网络图时,缓冲区重叠探测单元604识别将相同颜色向至少两个边的指派。将相同颜色指派给至少两个边指示内存缓冲区的重用。
在操作804,该方法包括:响应于针对至少两个边确定对至少一种颜色的内存缓冲区的重用,由缓冲区重叠探测单元604确定内存缓冲区的大小。所确定的每个内存缓冲区的大小指示被指派了至少一种相同颜色的内存缓冲区的至少两个边所需的最大内存。
在操作806,该方法包括:由缓冲区重叠探测单元604针对内存缓冲区指派非重叠的虚拟起始地址和虚拟结束地址。缓冲区重叠探测单元604在识别出至少一个内存缓冲区的重用之后,基于所确定的至少一个内存缓冲区的大小来指派非重叠的虚拟地址。
在操作808,该方法包括:在确定至少一种颜色的内存缓冲区的重用之后,由缓冲区重叠探测单元604生成2D平面布局以确定内存缓冲区的使用。2D平面布局包括针对DNN模型的着色网络图的边的矩形框。2D平面布局中存在的每个矩形框对应于指派给每一个边的至少一种颜色的内存缓冲区。此外,缓冲区重叠探测单元604向每个矩形框指派相应的内存缓冲区的颜色。
在操作810,该方法包括:由缓冲区重叠探测单元604使用2D平面布局确定跨处理层的重用缓冲区重叠可能性。缓冲区重叠探测单元604基于以下至少一项来对与指派给边的内存缓冲区相对应的矩形框进行排序:至少一种颜色的内存缓冲区的大小、与内存缓冲区相对应的矩形框的起始地址、层索引等。基于排序后的矩形框,缓冲区重叠探测单元604确定跨不同颜色的矩形框的重叠可能性,以确定跨处理层的重用缓冲区重叠可能性。可以针对以下至少一项来确定重用缓冲区重叠可能性:与至少一个内存缓冲区相关联的活跃度约束、与多个处理层相关联的至少一个依赖度约束等。此外,缓冲区重叠探测单元604响应于确定跨不同颜色的矩形框的零重叠可能性,压缩2D平面布局上的至少一个矩形框。缓冲区重叠探测单元604将较低值地址指派给经压缩的至少一个矩形框,其中,将较低的值指派给经压缩的至少一个矩形框指示针对与经压缩的至少一个矩形框相对应的至少一种颜色的至少一个内存缓冲区指派新的起始地址和新的结束地址。
可以按照所呈现的顺序、以不同的顺序或同时执行该方法和流程图800中的各种行为、动作、框、操作等。此外,在一些实施例中,在不脱离本发明的范围的情况下,可以省略、添加、修改、跳过等所述行为、动作、框、操作等中的一些。
图9是根据本公开的实施例的示例嵌入式设备500,在该嵌入式设备500中,可以分配最佳内存以用于处理DNN模型。如图9所示,嵌入式设备的接收单元508接收输入。例如,输入可以是图像。一旦接收到输入,调度模块510就接收针对给定输入的DNN模型。所接收的DNN模型可以是包括多个处理层的经训练的模型。例如,所接收的DNN模型可以包括五个处理层(层A、层B、层C、层D和层E)。调度模块510生成DNN模型的网络图。该网络图包括用于表示五个处理层的五个节点和用于表示五个处理层之间的数据流的六个边(E1、E2、E3、E4、E5和E6)。调度模块510确定五个处理层的执行顺序。调度模块510将DNN模型的网络图馈送给内存分配模块512。
内存分配模块512的图着色单元602创建DNN模型的着色网络图。在接收到网络图时,图着色单元602将颜色指派给六个边。将颜色指派给边指示将至少一个内存缓冲区指派给每一个边。图着色单元602将颜色指派给每一个边,使得不会向任何两个相邻边指派相同颜色。例如,图着色单元602将绿色指派给边E1、E3和E6,这表示将绿色的同一内存缓冲区B1指派给边E1、E3和E6。类似地,图着色单元602将红色指派给边E2和E4,这表示将红色的同一内存缓冲区B2指派给边E2和E4。类似地,图着色单元602将蓝色指派给边E5,这表示将蓝色的内存缓冲区B3指派给边E5。此外,图着色单元602将着色网络图馈送给缓冲区重叠探测单元604。
在接收到DNN模型的着色网络图时,缓冲区重叠探测单元604确定至少两个边对至少一个内存缓冲区的重用。着色网络图确定边E1、E3和E6对内存缓冲区B1的重用以及边E2和E4对内存缓冲区B2的重用。在确定至少一个内存缓冲区的重用之后,缓冲区重叠探测单元604识别每个内存缓冲区(B1、B2和B3)的大小。内存缓冲区B1的大小可以等于边E1、E3和E6所需的最大内存。内存缓冲区B2的大小可以等于边E2和E4所需的最大缓冲区。内存缓冲区B3的大小可以等于边E5所需的最大缓冲区。基于每个内存缓冲区的大小,缓冲区重叠探测单元604针对内存缓冲区B1、B2和B3指派虚拟起始地址和虚拟结束地址。在一个实施例中,由至少两个边重用同一内存缓冲区导致用于处理DNN模型的内存带宽减少35%。
此外,缓冲区重叠探测单元604生成2D平面布局,以用于探测跨不同颜色的内存缓冲区的重用缓冲区重叠可能性。可以基于诸如(但不限于)每个内存缓冲区的活跃度和跨处理层的依赖度等约束来确定重用缓冲区重叠可能性。此外,缓冲区重叠探测单元604基于所探测的重用缓冲区重叠可能性来调整至少一个内存缓冲区(例如,对应于内存缓冲区B2的矩形框E4和对应于内存缓冲区B3的矩形框E5)的地址空间。此后,内存分配模块512的地址指派单元608针对与六个边相对应的内存缓冲区B1、B2、B3指派相对地址空间。执行模块514执行五个处理层以预测输入图像的标签。每个处理层的输出(中间特征图)可以存储在分配的内存缓冲区中。因此,可以在最小的带宽需求下执行DNN模型的用于执行给定输入的标签的推断阶段。
图10a和图10b是示出了根据本公开的实施例的创建DNN模型的着色网络图的示例图。本文的实施例使图着色单元602能够基于DNN模型的多个处理层的执行顺序来创建DNN模型的着色网络图。例如,接收到的DNN模型可以包括五个处理层(层A、层B、层C、层D和层E)。DNN模型的网络图包括用于表示五个处理层的五个节点和用于表示五个处理层之间的数据流的六个边(E1、E2、E3、E4、E5和E6)。此外,网络图提供与针对每一个边的(用于存储每个处理层的输出的)初始内存需求有关的信息。例如,边E1可能需要3.1MB,边E2可能需要0.8MB,边E3可能需要0.8MB,边E4可能需要3.1MB,边E5可能需要3.1MB,边E6可能需要3.1MB。
基于DNN模型的网络图,图着色单元602基于执行顺序和每一个边的活跃度将颜色指派给六个边。指派颜色指示针对每一个边指派与该颜色相对应的至少一个内存缓冲区。在一个实施例中,不会向六个边中的两个相邻边指派相同的颜色。此外,将相同的颜色指派给至少两个边表示对与指派的颜色相对应的同一内存缓冲区的重用。例如,如图10a所示,图着色单元602将绿色的内存缓冲区B1指派给边E1、E3和E6,将红色的内存缓冲区B2指派给边E2和E4,并将内存缓冲区B3指派给边E5。
每个内存缓冲区的大小可以等于被指派了同一内存缓冲区的至少两个边的最大内存需求。如图10b所示,内存缓冲区的大小可以等于3.1MB,这是因为E1、E3和E6(被指派了同一内存缓冲区B1的边)中的边E1需要最大内存需求3.1MB。同样,内存缓冲区的大小可以等于3.1MB,这是因为E2和E4中的边E4需要最大内存需求3.1MB。内存缓冲区的大小可以等于边E5的内存需求,其可以等于3.1MB。因此,通过创建着色网络图来重用缓冲区导致在嵌入式设备500上处理DNN模型的总内存需求减少了35%。
图10c是示出了根据本公开的实施例的用于创建DNN模型的着色网络图的方法的示例流程图。如图10c所示,图着色单元602从调度模块510接收网络图和与多个处理层的执行顺序有关的信息。
例如,网络图可以包括用于表示五个处理层的五个节点和用于表示五个处理层(层A、层B、层C、层D、层E)之间的数据流的六个边(E1、E2、E3、E4、E5和E6)。图着色单元602遍历每个经调度的节点和经调度的节点的每个输出边,以选择“FreeColorList”中可用的颜色(内存缓冲区)以指派给与经调度的节点相关联的每个输出边。可以向每个经调度的节点的输入边和输出边指派最小的颜色数,使得按执行顺序没有两个相邻边具有相同的颜色和缓冲区活跃度。
在一个实施例中,如果任一处理层需要内存缓冲区/内部缓冲区,则图着色单元602从“FreeColorList”中选择颜色。此外,在向经调度的节点的所有输出边指派颜色之后,图着色单元释放指派给经调度的节点的输入边的颜色。因此,释放的颜色(内存缓冲区)可以添加到“FreeColorList”中,并可以重新用于接续处理层的边。
考虑一个场景,在该场景中,经调度的节点可以是层A,并且层A的输入边和输出边可以分别是边E1和边E2。图着色单元602选择绿色以指派给层A的输入边E1,并选择红色以指派给输出边E2。在将红色指派给层A的输出边E2之后,图着色单元释放指派给层A的输入边的颜色。绿色可以被释放并添加到“FreeColorList”中。因此,可以将绿色指派给层B和层E的输出边E3。
图11a是示出了根据本公开的实施例的识别跨DNN模型的处理层的重用缓冲区重叠可能性的示例图。本文的实施例使缓冲区重叠探测单元604能够确定跨DNN模型的处理层的重用缓冲区重叠可能性。缓冲区重叠探测单元从图着色单元602接收着色网络图,并确定网络图的至少两个边对至少一个缓冲区的重用。缓冲区重叠探测单元604可以基于将相同颜色指派给至少两个边来确定至少一个缓冲区的重用。如图11a所示,缓冲区重叠探测单元604针对边E1、E3和E6确定对绿色的内存缓冲区B1的重用,并且针对边E2和E4确定对红色的内存缓冲区B2的重用。在确定内存缓冲区B1和B2的重用之后,缓冲区重叠探测单元604确定内存缓冲区B1、B2和B3的大小。每个内存缓冲区的大小可以等于被指派了相同的内存缓冲区的至少两个边中的边的最大内存需求。内存缓冲区B1的大小可以等于边E1所需的内存的大小,内存缓冲区B2的大小可以等于边E4所需的内存的大小,内存缓冲区B3的大小可以等于边E5所需的内存的大小。
在确定内存缓冲区B1、B2、B3的大小之后,缓冲区重叠探测单元604针对内存缓冲区B1、B2和B3指派非重叠的虚拟地址。指派给内存缓冲区B1、B2和B3的虚拟地址可以分别为0x0、0x319999和0x633332。
此外,缓冲区重叠探测单元604生成2D平面布局,以确定跨越五个处理层的缓冲区重叠可能性。在2D平面布局中,X轴表示针对与每一个边相对应的内存缓冲区指派的地址空间,Y轴表示层索引。此外,在2D平面布局中,与边E1、E2、E3、E4、E5和E6相对应的内存缓冲区分别被定位为矩形框E1、E2、E3、E4、E5和E6。可以向矩形框指派对应内存缓冲区的颜色。可以向矩形框E1、E3和E6指派绿色,这是因为向与矩形框相关联的对应边指派了绿色的内存缓冲区B1。类似地,可以向矩形框E2和E4指派红色,这是因为向与矩形框(E2和E4)相关联的对应边(E2和E4)指派了红色的内存缓冲区B2。可以向矩形框E5指派蓝色,这是因为向与矩形框E5相关联的对应边指派了蓝色的内存缓冲区B3。矩形框的高度表示针对相应边指派的内存缓冲区(B1、B2或B3)的大小,矩形框的宽度表示内存缓冲区的活跃度。此外,缓冲区重叠探测单元604基于诸如每个内存缓冲区的颜色、每个内存缓冲区的大小、起始地址等因素对矩形框E1、E2、E3、E4、E5和E6进行排序。基于排序后的矩形框,缓冲区重叠探测单元604基于诸如但不限于内存缓冲区(B1/B2/B3)的活跃度和跨处理层(层A至层E)的依赖度等约束来确定不同颜色的矩形框之间的重叠。响应于确定不同颜色的矩形框之间的非重叠可能性和矩形框E3和E4之间的间隙,缓冲区重叠探测单元604沿Y轴向下压缩小/压缩矩形框E4,以适应所识别的间隙。可以使用较低地址值来调整矩形框E4的地址,该较低地址值指示对向指派给边E4的内存缓冲区B2指派的地址的调整。因此,基于所探测的缓冲区重叠可能性使用较低地址值来调整内存缓冲区的地址进一步降低了用于在嵌入式设备500上处理DNN模型所需的内存带宽。
图11b是示出了根据本公开的实施例的在确定内存缓冲区的重用以及重用缓冲区重叠可能性之后分配内存缓冲区的示例图。本文的实施例使缓冲区重叠探测单元604能够确定内存缓冲区的重用,并生成2D平面布局。通过在X轴上表示地址空间并且在Y轴上表示层索引,可以在2D平面布局上实现绿色的内存缓冲区B1、红色的内存缓冲区B2、以及蓝色的内存缓冲区B3。此外,用于在确定内存缓冲区B1和B2的重用之后处理DNN模型所需的总内存的大小可以是9.29MB。
基于所探测的不同颜色的矩形框之间的重叠可能性,缓冲区重叠探测单元604将矩形框E4(对应于指派给边E4的红色的内存缓冲区B2)压缩/压缩小到矩形框E3(对应于指派给边E3的绿色的内存缓冲区B1)与矩形框E5(对应于指派给边E5的绿色的内存缓冲区B1)之间。在推矩形框E4之后,与红色的内存缓冲区B2相对应的矩形框E4的地址空间与指派给边E1的绿色的矩形框E1的地址空间重叠。然而,地址空间的重叠与相应的层依赖度和其他内存缓冲区不冲突。
在压缩矩形框E4之后,与指派给边E5的蓝色的内存缓冲区B3相对应的矩形框E5可以在Y轴上往下推。在压缩矩形框E5之后,处理DNN模型所需的总内存大小可以等于6.1MB。因此,压缩与一种或多种颜色的内存缓冲区相对应的一个或多个矩形框可以进一步将处理DNN模型的总内存需求减少25%。
图11c是示出了根据本公开的实施例的用于识别DNN模型的处理层之间的重用缓冲区重叠可能性的方法的示例流程图。如图11c所示,缓冲区重叠探测单元604从图着色单元602接收着色网络图,并在识别多个内存缓冲区中的至少一个内存缓冲区的重用之后确定每个内存缓冲区的大小。基于每个内存缓冲区的最大大小,缓冲区重叠探测单元604针对每种颜色的内存缓冲区指派起始可重定位(虚拟)地址和结束可重定位(虚拟)地址。此外,缓冲区重叠探测单元604在2D平面布局上针对多个边创建矩形框,其中2D平面布局在Y轴上具有层索引并且在X轴上具有地址空间。多个矩形框中的每个矩形框对应于指派给每一个边的至少一个内存缓冲区。每个矩形框的起始地址可以等于相应内存缓冲区的起始地址。可以基于针对每一个边所需的内存大小指派每个矩形框的结束地址。
此外,缓冲区重叠探测单元604基于内存缓冲区的大小、起始地址、层索引等中的至少一个对矩形框进行排序。缓冲区重叠探测单元604遍历每个排序后的矩形框。此外,缓冲区重叠探测单元604将矩形框中的至少一个矩形框沿Y轴向下推,以适应在不同颜色的至少两个矩形框之间识别的任何间隙。可以使用较低地址值调整被推的矩形框的地址。因此,在重用至少一个内存缓冲区之后,压缩与内存缓冲区相对应的至少一个矩形框可以在降低内存带宽方面提供30%的增益。
图12a和图12b是示出了根据本公开的实施例的分配用于处理DNN模型的内存的示例图。
图12a是示出了基于所识别的至少一个内存缓冲区的重用来分配用于处理DNN模型的内存的示例图。本文的实施例使用着色网络图来确定用于存储DNN模型的至少两个非相邻处理层的输出的至少一个内存缓冲区的重用。基于确定的至少一个内存缓冲区的重用,所确定的用于处理DNN模型的内存大小可以是9.1MB。
图12b是示出了基于所识别的重用缓冲区重叠可能性来分配用于处理DNN模型的内存的示例图。本文的实施例在识别至少一个内存缓冲区的重用之后确定跨处理层的重用缓冲区重叠可能性。在确定重用缓冲区重叠可能性之后所确定的用于处理DNN模型的内存大小可以是6.1MB。因此,与传统的DNN推断框架相比,处理DNN模型所需的内存可以减少6倍。
图13a和图13b是示出了根据本公开的实施例的用于在嵌入式设备500上处理DNN模型的总内存需求的示例图。与传统的DNN推断框架(如Alexnet、GoogleNet、ResNet,Inception等)相比,基于确定的至少一个内存缓冲区的重用(使用图着色(GC))和缓冲区重叠可能性(重用缓冲区重叠探测(OE))计算出的用于处理DNN模型的总内存可以减少(如图13a和图13b所示)。例如,与传统的Cafee/TensorFlow相比,处理DNN模型的总内存需求可以减少3.5倍至26倍。此外,与传统MXNet/TenCent相比,处理DNN模型的总内存需求可以减少30%。
图14a是示出了根据本公开的实施例的基于最佳内存缓冲区分配的嵌入式设备500上的多个输入推断的批处理的示例图。本文的实施例使内存分配模块512能够基于所确定的内存缓冲区的重用和所确定的重用缓冲区重叠可能性来确定用于处理DNN模型的最佳内存缓冲区需求。此外,根据最佳内存缓冲区需求,执行模块514可以在嵌入式设备500上执行多个输入推断的批处理。因此,计算出的最佳内存缓冲区需求降低了批处理所需的内存带宽。
图14b是示出了根据本公开的实施例的用于执行多个输入推断的批处理的内存需求的示例表。计算出的用于执行批处理的最大内存缓冲区需求可以是247MB。可以基于确定的内存缓冲区的重用和确定的重用缓冲区重叠可能性来计算最大内存缓冲区需求。
图15a和图15b是示出了根据本公开的实施例的针对推断阶段基于最佳内存缓冲区分配的DNN推断性能的示例图。本文的实施例使内存分配模块512能够重用用于存储DNN模型的至少两个处理层的输出的至少一个内存缓冲区。此外,当层写入特征图输出时,由于至少一个内存缓冲区的重用,特征图输出驻留在二级/三级缓存中。因此,可以避免缓存未命中,从而进一步减少总执行时间并提高DNN推断性能。在一个实施例中,总执行时间可以是50ms。图15b示出了由于重用至少一个缓冲区而增加的DNN推断性能。
图16a和图16b是示出了根据本公开的实施例的基于最佳内存缓冲区分配在嵌入式设备500上启动DNN相关应用的示例图。本文的实施例基于所确定的内存缓冲区的重用和所确定的重用缓冲区重叠可能性减少了用于处理DNN模型的总内存需求。因此,减少的总内存需求使内存可用于任何新的DNN相关应用。如图16a所示,当3D Avatar应用(新的DNN相关应用)请求内存时,内存分配模块514可以直接针对DNN相关应用指派内存,而不是通过交换使内存可用。因此,新的DNN相关应用的启动可以更快,并且现有应用的性能不会受到影响。在一个实施例中,启动3D Avatar所花费的时间可以是3秒,并且退出的应用(例如视频播放器)的性能保持不变(30fps)。
本文的实施例使得在重新启动嵌入式设备500之后能够立即快速启动DNN相关应用。如图16b所示,由于DNN相关应用需要较少的内存带宽,因此DNN相关应用可以适应随机存取存储器(RAM),并且更多的可用空间可以用于将来的应用。因此,可以在不引入任何等待时间的情况下启动DNN相关应用。在一个实施例中,在重新启动嵌入式设备之后立即启动DNN相关应用所花费的时间可以是200ms。
可以通过在至少一个硬件设备上运行并执行网络管理功能以控制元件的至少一个软件程序来实现本文公开的实施例。图5和图6所示的元件可以是硬件设备中的至少一个、或者硬件设备和软件模块的组合。
本文公开的实施例描述了用于确定用于在嵌入式设备上处理DNN模型的内存需求的方法和系统。因此,应当理解,保护范围扩展到这样的程序,并且除了其中具有消息的计算机可读装置之外,这样的计算机可读存储装置还包含用于以下操作的程序代码装置:当程序在服务器或移动设备或任何合适的可编程设备上运行时,实现该方法的一个或多个操作。在优选实施例中,该方法通过以下项来实现或与以下项一起来实现:以例如超高速集成电路硬件描述语言(VHDL)或另一种编程语言编写的软件程序,或该方法通过一个或多个VHDL或在至少一个硬件设备上执行的多个软件模块实现。硬件设备可以是任何一种可编程的便携式设备。该设备还可以包括装置(其可以是诸如ASIC之类的硬件装置)、或者硬件和软件装置(例如ASIC和FPGA)的组合、或者至少一个微处理器和具有软件模块的至少一个存储器。本文描述的方法实施例可以部分地在硬件中实现,并且部分地在软件中实现。备选地,本发明可以在不同的硬件设备上(例如使用多个CPU)实现。
对具体实施例的上述描述将充分揭示本文的实施例的一般性质,其他人可以通过应用当前的知识,在不脱离一般概念的情况下容易地修改和/或适应这些具体实施例以用于各种应用,因此这种适应和修改应当并旨在被理解为在所公开的实施例的等价物的含义和范围内。应理解,本文使用的措辞或术语是为了说明而非限制的目的。因此,本公开已经参照其各种实施例来示出和描述,本领域技术人员应当理解,在不脱离本公开的由所附权利要求及其等同物限定的精神和范围情况下,可以在其中进行形式和细节的各种改变。

Claims (11)

1.一种用于确定用于在设备上处理深度神经网络DNN模型的内存需求的方法,所述方法包括:
接收针对输入的至少一个DNN模型,其中,所述至少一个DNN模型包括多个处理层;
生成所述至少一个DNN模型的着色网络图,其中,所述着色网络图包括多个节点和多个边,所述多个节点指示所述DNN模型的多个处理层,所述多个边指示所述多个处理层之间的数据流,并且其中,基于所述多个处理层的至少一个执行顺序,向所述多个边指派多种颜色,使得向所述多个边中的每个相邻边指派不同颜色;
使用所述着色网络图确定跨所述多个处理层的至少一个重用缓冲区重叠可能性;以及
基于所确定的至少一个重用缓冲区重叠可能性,确定用于处理所述至少一个DNN模型的内存需求。
2.根据权利要求1所述的方法,其中,生成所述至少一个DNN模型的着色网络图包括:
响应于针对至少一个处理层确定至少一个内存缓冲区的需求,从表中选择至少一种颜色,其中,所述表包括多个内存缓冲区和所选择的至少一种颜色;以及
将所选择的至少一种颜色指派给所述多个边中的与所述多个处理层中的至少一个处理层相关联的至少一个边,其中,将至少一种颜色指派给所述至少一个边指示将所述多个内存缓冲区中的至少一个内存缓冲区指派给与所述至少一个处理层相关联的至少一个边,并且其中,基于所述多个处理层的所述至少一个执行顺序和所述多个边中的至少一个边的活跃度,将所述至少一种颜色指派给所述至少一个边。
3.根据权利要求1所述的方法,其中,确定所述至少一个重用缓冲区重叠可能性包括:
针对所述着色网络图中的至少两个边识别对至少一种颜色的至少一个内存缓冲区的重用,其中,使用着色网络图标识所述至少一个内存缓冲区的重用;
响应于针对所述着色网络图中的至少两个边确定对所述至少一种颜色的至少一个内存缓冲区的重用,确定所述至少一种颜色的至少一个内存缓冲区的大小,其中,所确定的所述至少一个内存缓冲区的大小是所述着色网络图中的至少两个边的最大内存需求;
针对所述至少一种颜色的至少一个内存缓冲区指派非重叠的虚拟起始地址和虚拟结束地址;
在确定对所述至少一种颜色的至少一个内存缓冲区的重用之后,生成二维2D平面布局以确定对所述至少一个内存缓冲区的使用,其中,所述2D平面布局包括针对所述DNN模型的着色网络图的多个边的多个矩形框;以及
基于将所述至少一种颜色的至少一个内存缓冲区分配给所述着色网络图中的至少两个边,使用所述2D平面布局确定跨所述多个处理层的至少一个重用缓冲区重叠可能性。
4.根据权利要求3所述的方法,其中,所述2D平面布局中存在的多个矩形框中的至少一个矩形框对应于所述至少一种颜色的至少一个内存缓冲区。
5.根据权利要求4所述的方法,其中,向所述多个矩形框中的至少一个矩形框指派所述至少一个内存缓冲区的至少一种颜色。
6.根据权利要求5所述的方法,其中,所述至少一个矩形框的高度指示所述至少一种颜色的至少一个内存缓冲区的大小,并且所述至少一个矩形框的宽度指示跨所述多个处理层的所述至少一个内存缓冲区的活跃度。
7.根据权利要求3所述的方法,其中,确定所述至少一个重用缓冲区重叠可能性包括:
基于所述至少一种颜色的至少一个内存缓冲区的大小、与所述至少一个内存缓冲区相对应的至少一个矩形框的起始地址、以及层索引中的至少一项,对所述多个矩形框中的与所述至少一种颜色的至少一个内存缓冲区相对应的至少一个矩形框进行排序;
针对与至少一个内存缓冲区相关联的至少一个活跃度约束和与所述多个处理层相关联的至少一个依赖度约束中的至少一项,来确定跨至少一种不同颜色的所述多个矩形框的所述至少一个重叠可能性,以确定所述至少一个重用缓冲区重叠可能性;
响应于确定跨所述至少一种不同颜色的多个矩形框的零重叠可能性,压缩所述2D平面布局上与所述至少一种颜色的至少一个内存缓冲区相对应的至少一个矩形框;以及
向经压缩的至少一个矩形框指派较低值地址,其中,向经压缩的至少一个矩形框指派较低值地址指示针对与经压缩的至少一个矩形框相对应的至少一种颜色的至少一个内存缓冲区指派新的起始地址和新的结束地址。
8.根据权利要求1所述的方法,还包括:
通过针对至少一种颜色的至少一个内存缓冲区指派相对地址空间来指派所确定的用于处理DNN模型的内存需求,其中,基于与所述至少一个内存缓冲区相对应的二维2D平面布局的至少一个矩形框的起始地址,将所述相对地址空间指派给所述至少一个内存缓冲区,并且其中,所述2D平面布局包括经压缩的至少一个矩形框。
9.一种设备,包括:
存储器;以及
至少一个处理器,所述至少一个处理器可通信地耦合到所述存储器,其中,所述至少一个处理器被配置为:
接收针对输入的至少一个深度神经网络DNN模型,其中,所述至少一个DNN模型包括多个处理层;
生成所述至少一个DNN模型的着色网络图,其中,所述着色网络图包括多个节点和多个边,所述多个节点指示所述DNN模型的多个处理层,所述多个边指示所述多个处理层之间的数据流,并且其中,基于所述多个处理层的至少一个执行顺序,向所述多个边指派多种颜色,使得向所述多个边中的每个相邻边指派不同颜色;
使用所述着色网络图确定跨所述多个处理层的至少一个重用缓冲区重叠可能性;以及
基于所确定的至少一个重用缓冲区重叠可能性,确定用于处理所述至少一个DNN模型的内存需求。
10.根据权利要求9所述的设备,其中所述至少一个处理器进一步被配置为:
响应于针对至少一个处理层确定至少一个内存缓冲区的需求,从表中选择至少一种颜色,其中,所述表包括多个内存缓冲区和所选择的至少一种颜色;以及
将所选择的至少一种颜色指派给所述多个边中的与所述多个处理层中的至少一个处理层相关联的至少一个边,其中,将至少一种颜色指派给所述至少一个边指示将所述多个内存缓冲区中的至少一个内存缓冲区指派给与所述至少一个处理层相关联的至少一个边,并且其中,基于所识别的所述多个处理层的至少一个执行顺序和所述多个边中的至少一个边的活跃度,将所述至少一种颜色指派给所述至少一个边。
11.根据权利要求9所述的设备,其中,所述设备适用于根据权利要求3至8中任一项所述的方法。
CN201880050995.9A 2017-08-08 2018-08-08 用于确定网络中的内存需求的方法和装置 Active CN111052149B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN201741028087 2017-08-08
IN201741028087 2018-08-06
PCT/KR2018/009055 WO2019031858A1 (en) 2017-08-08 2018-08-08 METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK

Publications (2)

Publication Number Publication Date
CN111052149A CN111052149A (zh) 2020-04-21
CN111052149B true CN111052149B (zh) 2024-04-19

Family

ID=65278982

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880050995.9A Active CN111052149B (zh) 2017-08-08 2018-08-08 用于确定网络中的内存需求的方法和装置

Country Status (5)

Country Link
US (1) US11593644B2 (zh)
EP (1) EP3652681A4 (zh)
KR (1) KR20200029510A (zh)
CN (1) CN111052149B (zh)
WO (1) WO2019031858A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US12073215B2 (en) 2018-02-13 2024-08-27 Shanghai Cambricon Information Technology Co., Ltd Computing device with a conversion unit to convert data values between various sizes of fixed-point and floating-point data
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
EP3651079B1 (en) 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
CN116991225A (zh) 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
KR102470893B1 (ko) 2018-06-27 2022-11-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템
EP3640810A4 (en) * 2018-08-28 2021-05-05 Cambricon Technologies Corporation Limited DATA PRE-PROCESSING PROCESS AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
FR3089649A1 (fr) * 2018-12-06 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
FR3094104A1 (fr) 2019-03-20 2020-09-25 Stmicroelectronics (Rousset) Sas Procédé et dispositif de détermination de la taille mémoire globale d’une zone mémoire globale allouée aux données d’un réseau de neurones compte tenu de sa topologie
US20200334522A1 (en) 2019-04-18 2020-10-22 Cambricon Technologies Corporation Limited Data processing method and related products
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
CN112085191B (zh) 2019-06-12 2024-04-02 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
WO2020263065A1 (en) 2019-06-28 2020-12-30 Samsung Electronics Co., Ltd. Method and apparatus for managing neural network models
JP7146952B2 (ja) 2019-08-23 2022-10-04 安徽寒武紀信息科技有限公司 データ処理方法、装置、コンピュータデバイス、及び記憶媒体
WO2021036905A1 (zh) 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
FR3109833B1 (fr) * 2020-04-30 2022-05-13 St Microelectronics Rousset Procédé d’allocation de données intermédiaires d’un réseau de neurones artificiel
CN113742080B (zh) * 2020-09-10 2024-03-01 吕戈 一种高效的不可变对象执行环境的构建方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894044A (zh) * 2003-02-18 2010-11-24 微软公司 用于调度协处理器的处理的方法和系统
CN104598406A (zh) * 2015-02-03 2015-05-06 杭州士兰控股有限公司 扩展功能单元及计算设备扩展系统和扩展方法
CN104956671A (zh) * 2012-12-18 2015-09-30 英特尔公司 视频帧重建
CN106250981A (zh) * 2015-06-10 2016-12-21 三星电子株式会社 减少存储器访问和网络内带宽消耗的脉冲神经网络

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778245A (en) * 1994-03-01 1998-07-07 Intel Corporation Method and apparatus for dynamic allocation of multiple buffers in a processor
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US8108648B2 (en) * 2007-06-25 2012-01-31 Sonics, Inc. Various methods and apparatus for address tiling
US8280167B2 (en) * 2008-02-04 2012-10-02 Eyep, Inc. Connected component labeling system and method
US8249348B2 (en) * 2008-02-04 2012-08-21 Eyep Inc. Label reuse method and system for connected component labeling
US20090196504A1 (en) * 2008-02-04 2009-08-06 Craig Sullender Modified propagated last labeling system and method for connected components
US8762602B2 (en) 2008-07-22 2014-06-24 International Business Machines Corporation Variable-length code (VLC) bitstream parsing in a multi-core processor with buffer overlap regions
US10540588B2 (en) * 2015-06-29 2020-01-21 Microsoft Technology Licensing, Llc Deep neural network processing on hardware accelerators with stacked memory
US10452971B2 (en) * 2015-06-29 2019-10-22 Microsoft Technology Licensing, Llc Deep neural network partitioning on servers
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US10614356B2 (en) * 2017-04-24 2020-04-07 International Business Machines Corporation Local multicast in single-host multi-GPU machine for distributed deep learning systems
US10417731B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US12086705B2 (en) * 2017-12-29 2024-09-10 Intel Corporation Compute optimization mechanism for deep neural networks
CN110058936B (zh) * 2018-01-18 2023-04-18 伊姆西Ip控股有限责任公司 用于确定专用处理资源的资源量的方法、设备和计算机程序产品
US10782897B2 (en) * 2018-04-02 2020-09-22 International Business Machines Corporation Memory reduction for neural networks with fixed structures
US20190318229A1 (en) * 2018-04-12 2019-10-17 Advanced Micro Devices, Inc. Method and system for hardware mapping inference pipelines

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101894044A (zh) * 2003-02-18 2010-11-24 微软公司 用于调度协处理器的处理的方法和系统
CN104956671A (zh) * 2012-12-18 2015-09-30 英特尔公司 视频帧重建
CN104598406A (zh) * 2015-02-03 2015-05-06 杭州士兰控股有限公司 扩展功能单元及计算设备扩展系统和扩展方法
CN106250981A (zh) * 2015-06-10 2016-12-21 三星电子株式会社 减少存储器访问和网络内带宽消耗的脉冲神经网络

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Chen, T. , et al..Training Deep Nets with Sublinear Memory Cost.https://arxiv.org/abs/1604.06174.2016,第1页Abstract,第2页第3节至第5页第4节,图1-3. *

Also Published As

Publication number Publication date
US20200257972A1 (en) 2020-08-13
EP3652681A1 (en) 2020-05-20
WO2019031858A1 (en) 2019-02-14
KR20200029510A (ko) 2020-03-18
US11593644B2 (en) 2023-02-28
EP3652681A4 (en) 2020-07-29
CN111052149A (zh) 2020-04-21

Similar Documents

Publication Publication Date Title
CN111052149B (zh) 用于确定网络中的内存需求的方法和装置
US9361416B2 (en) Dynamic reconfiguration of programmable hardware
CN105893126B (zh) 一种任务调度方法及装置
US20220292163A1 (en) Dilated convolution using systolic array
CN104008013B (zh) 一种核资源分配方法、装置及众核系统
US20210191765A1 (en) Method for static scheduling of artificial neural networks for a processor
US11003429B1 (en) Compile-time scheduling
CN109447253B (zh) 显存分配的方法、装置、计算设备及计算机存储介质
US9612867B2 (en) Apparatus and method for data partition and allocation in heterogeneous multi-processor environment
CN110554913A (zh) 神经网络系统及其操作方法以及应用处理器
US11983564B2 (en) Scheduling of a plurality of graphic processing units
US20210158131A1 (en) Hierarchical partitioning of operators
CN113127203B (zh) 面向云边计算的深度学习分布式编译器及构造方法
CN105824705A (zh) 一种任务分配方法和电子设备
US9417878B2 (en) Instruction scheduling for reducing register usage based on dependence depth and presence of sequencing edge in data dependence graph
CN113377529A (zh) 一种智能加速卡及基于智能加速卡的数据处理方法
CN112052083A (zh) 云端gpu的显存调度方法、装置、电子设备及存储介质
CN114003238B (zh) 一种基于转码卡的容器部署方法、装置、设备及存储介质
CN114995950A (zh) 重新分配节点的方法、装置、电子设备及存储介质
JP2006099579A (ja) 情報処理装置及び情報処理方法
KR101558807B1 (ko) 호스트 프로세서와 협업 프로세서 간에 협업 처리를 위한 프로세서 스케줄링 방법 및 그 방법을 수행하는 호스트 프로세서
US11442794B1 (en) Event assignment for synchronization of concurrent execution engines
KR20220090475A (ko) 뉴럴 네트워크 가속을 위한 우선순위가 지정된 선형 스캔을 이용한 시스템 캐시에 피쳐 맵들을 할당하는 방법 및 시스템
CN114911566A (zh) 虚拟机调度方法和装置
KR101669555B1 (ko) 어플리케이션에 자원을 할당하는 장치 및 방법

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