CN110389910A - 用于管理级联神经网络中的存储器的方法和安排 - Google Patents

用于管理级联神经网络中的存储器的方法和安排 Download PDF

Info

Publication number
CN110389910A
CN110389910A CN201910201161.XA CN201910201161A CN110389910A CN 110389910 A CN110389910 A CN 110389910A CN 201910201161 A CN201910201161 A CN 201910201161A CN 110389910 A CN110389910 A CN 110389910A
Authority
CN
China
Prior art keywords
shared memory
size
grade
neural network
logic circuitry
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
CN201910201161.XA
Other languages
English (en)
Inventor
B·崔
K·朴
S·卞
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN110389910A publication Critical patent/CN110389910A/zh
Pending legal-status Critical Current

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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons

Landscapes

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

Abstract

描述了用于管理级联神经网络中的存储器的方法和安排。逻辑可以减小用于深度神经网络推断计算的运行时间存储器的大小。逻辑可以为神经网络的两个或更多个级确定在执行所述两个或更多个级期间同时存在的共享块分配或共享存储器块分配的计数。逻辑可以比较所述共享块分配的计数以确定所述计数中的最大计数。逻辑可以减小用于深度神经网络推断计算的推断计算时间。逻辑可以确定所述计数的共享存储器块分配中的所述共享块分配的每一个的大小,以容纳用于在执行所述级联神经网络的所述两个或更多个级期间存储在共享存储器中的数据。逻辑可以基于输入数据之间缺乏相互依赖性来确定级联神经网络的所述两个或更多个级的每级批大小。

Description

用于管理级联神经网络中的存储器的方法和安排
技术领域
本文描述的实施例涉及存储器管理领域。更具体地,实施例涉及用于管理级联神经网络中的存储器分配的方法和安排。
背景技术
在海量数据的可用性和处理数据的计算能力的驱动下,深度学习是解决跨如图像识别、语音处理、自然语言处理、语言翻译和自主车辆等广泛领域的复杂问题的关键工具。卷积神经网络(CNN)已经成为用于对这些领域中的许多领域进行深度学习的最流行算法方式。高性能和最大程度的能源效率对于CNN在宽范围情况下,特别是如自主车辆、相机、和电子个人助理等移动平台下的部署至关重要。
附图说明
图1A至图1B描绘了包括处理器、存储器、神经计算引擎和神经网络流水线的系统的实施例;
图1C至图1D描绘了如图1A至图1B中所展示的存储器管理逻辑电路系统等存储器管理逻辑电路系统优化共享存储器块分配的过程的实施例;
图1E描绘了用于将其他实施方式的存储器使用率与如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统的存储器使用率进行比较的表的实施例;
图1F描绘了用于将其他实施方式的推断速度与如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统的推断速度进行比较的表的实施例;
图1G描绘了深度神经网络和共享存储器的级的实施例,以展示由如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统进行批处理的过程;
图2描绘了如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统的实施例;
图3A至图3C描绘了用于由如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统优化存储器分配和实施批处理的实施例的流程图;以及
图4描绘了包括多个处理器平台、芯片组、总线和附件的系统的实施例;
图5至图6描绘了存储介质和计算平台的实施例。
具体实施方式
以下是附图中所描绘的实施例的详细描述。详细描述涵盖落在所附权利要求内的所有修改、等效物和替代物。
深度神经网络(DNN)在处置许多计算机视觉任务时变得流行,但它们太重而无法在嵌入式装置上运行,这主要是因为有限的存储器资源和小的计算功率。许多DNN包括用于面部检测、对象检测、或姿势检测的级联结构,其中,后续网络级处理前一网络级产生的(多个)输出。然而,这种级联网络在推断时可能需要更多的运行时间存储器并且使其在嵌入式装置上部署更加困难。
神经网络存在两种主要状态,包括训练和推断。在训练过程中,深度学习专家将通常构造网络,在神经网络中建立多个层、由每层执行的操作、以及层之间的连接。许多层具有参数,通常是滤波器权重,所述滤波器权重确定由层执行的精确计算。训练过程的目的是通常通过权重空间经由基于随机梯度下降的偏移学习滤波器权重。一旦训练过程完成,基于所训练的神经网络的推断通常采用对输入数据的正向传播计算来生成输出数据。
输入数据可以采用张量数据的形式。张量是描述几何向量、标量、和其他张量之间的线性关系的几何对象。数值或张量数据的有组织多维数组可以表示张量。张量的阶(也称为度或秩)是数组的维数,或等效地标记此数组分量的索引数。例如,线性映射在基中由矩阵(2维数组)表示,并且因此是2阶张量。作为输入和输出的张量可以从1阶到5阶或更大。然而,在许多应用中,张量可以是2阶或3阶。
尽管已经多次尝试在具有有限计算和存储器资源的小型嵌入式装置上部署深度学习,但大多数先前的方法都侧重于在推断期间减少计算资源。本文的实施例解决了用于推断计算的存储器管理,以提高存储器资源的使用效率,这可以促进在小型嵌入式装置上的实施。
若干实施例系统地分析级联深度神经网络以找到用于运行深度学习推断的最小存储器大小。此外,许多实施例批处理神经网络的每个级联级以获得具有最小存储器使用率的最佳速度。其结果是,许多实施例提供了在不需要服务器级存储器资源的情况下在嵌入式装置上实现深度学习的方法。
为了优化存储器使用率,许多实施例利用通过神经网络的推断计算流。与训练过程不同,许多推断计算都是非循环的,这意味着结果通常会反馈后续计算,而不是循环回至先前的计算。实施例可以将神经网络的用于推断计算的每个级视为用于分析的有向无环图。因此,神经网络的级接收输入并产生影响神经网络中后续层的输出。
许多实施例分析级联网络的每个级以从需要最大运行时间存储器的最大子网中找到最佳存储器大小。若干实施例引入了有效的存储器分配优化器代替用于将张量数据分配给共享块的简单循环的方法。一些像Caffe一样的深度学习推断运行时间可以使用共享块来最小化存储器分配和重新分配的数量。
处理用于面部检测和对象检测的图像的神经网络通常级联神经网络的若干级并且在每个级执行相同推断计算的若干次迭代。许多实施例利用每个级的多种推断计算、计算的非循环性质、以及通过尽可能地在级中的一个或多个级处批量地进行推断计算而优化的存储器使用率。换句话说,先前的实施例在级处连续地执行用于此级的每个输入(例如,每个图像)的推断计算。本文中的许多实施例在固定存储器大小内批处理输入或并联处理这些输入,以提高处理输入数据的速度。
许多实施例分析批处理是否可以应用于级联的每个级中。然后,对于有资格进行批处理的每个级,许多实施例计算固定共享块大小中批大小的最大数量。因此,许多实施例通过在使用最小存储器大小的同时在批处理模式下运行若干级来减少用于推断计算的计算时间。许多实施例在具有有限计算能力和存储器的嵌入式装置上运行复杂的深度神经网络(DNN)级联。
各个实施例可以被设计用于解决与用于级联神经网络的推断计算的存储器分配相关联的不同技术问题,如在具有有限存储器资源的嵌入式装置中。其他技术问题可以包括在执行用于推断计算的级联神经网络期间减小共享存储器中的存储器使用率;级联神经网络中每个级的连续推断计算;嵌入式装置中有限的存储器和计算资源;确定用于批处理推断计算的级的批大小;确定输入数据是否可以在级联神经网络的每个级处被批处理以进行推断计算;等等。
如以上所讨论的不同技术问题可以通过一个或多个不同的实施例来解决。例如,解决与用于级联神经网络的推断计算的存储器分配相关联的问题的一些实施例可以通过一种或多种不同技术手段来实现,所述技术手段如确定级联神经网络的两个或更多个级、在执行所述两个或更多个级期间同时存在的共享存储器块分配的计数;确定所述计数的共享存储器块分配中的所述共享存储器块分配的每一个的大小,以适应用于在执行所述级联神经网络的所述两个或更多个级期间存储在共享存储器中的数据;生成在执行所述两个或更多个级期间同时存在的所述存储器块分配的列表和所述共享存储器块分配中的每一个的大小信息;确定级联神经网络的所述两个或更多个级的每级批大小;确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数;基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批大小;基于最大计数、为每个共享存储器块分配确定的大小和输入的所述计数来确定所述批大小;确定针对用于存储在所述共享存储器中的张量数据的共享存储器块分配的计数和所述张量数据的大小信息;基于所述两个或更多个级的第一级的输入数据大小与所述两个或更多个级的另一个级的输入数据大小的比率来计算批大小;比较在执行所述级联神经网络的所述两个或更多个级中的每一个期间同时存在的所述共享存储器块分配的计数,以确定所述共享存储器块分配的所述计数中的最大计数;等。
若干实施例包括具有如中央服务器、接入点和/或站(STA)等多个处理器核的系统,所述站如调制解调器、路由器、交换器、服务器、工作站、上网本、移动装置(膝上型计算机、智能电话、平板电脑等)、传感器、仪表、控件、仪器、监测器、家庭或办公电器、物联网(IoT)装置(手表、眼镜、耳机等)等等。一些实施例可以提供例如室内和/或室外“智能”网格和传感器服务。在各个实施例中,这些装置涉及如医疗卫生、家庭、商业办公和零售、安全、以及工业自动化和监测应用、以及车辆应用(汽车、自动驾驶车辆、飞机、无人机等)等特定应用。
现在转到附图,图1A展示了系统1000的实施例。系统1000可以是如深度学习加速器卡、具有深度学习加速的处理器、神经计算棒等的嵌入式系统。系统1000包括接口(I/F)1015、(多个)处理器1020、存储器1030、神经计算引擎1040、神经网络流水线1050、和(多个)向量处理器1060。在一些实施例中,系统1000包括芯片上系统(SoC),并且在其他实施例中,系统1000包括印刷电路板或具有两个或更多个分立部件的芯片封装体。
I/F 1015可以包括通用串行总线(USB)端口、外围部件互连增强(PCIe)总线接口、点对点接口、无线通信接口等。I/F 1015可以与主机系统耦合以接收驻留在存储器1030、(多个)处理器1020和/或(多个)向量处理器1060中的系统1000上的预先训练的神经网络的输入数据。在进一步实施例中,I/F 1015可以与主机系统耦合以接收用于在系统1000上执行的预先训练的神经网络。
(多个)处理器1020可以包括用于系统1000的主处理器,并且可以执行驻留在存储器1030中的代码1032中的操作系统。操作系统可以经由硬件加速器、神经计算引擎1040、神经网络流水线1050、和(多个)向量处理器1060来接收、存储和执行预先训练的深度神经网络(DNN)。例如,主机系统可以训练具有用于面部检测的级联级的DNN,并且可以将DNN传输至系统1000以进行推断计算。此后,主机系统可以以张量数据的形式向DNN提供如图像等输入数据作为输入数据。在完成对图像的推断计算之后,系统1000可以将DNN的输出传输到主机系统。
在当前实施例中,(多个)处理器1020和存储器1030分别包括存储器管理逻辑电路系统1022和1034。存储器管理逻辑电路系统1022可以包括(多个)处理器1020的处理器电路系统,所述处理器存储和/或正执行中间件代码以在执行DNN期间由DNN管理共享存储器的存储器使用率。
存储器管理逻辑电路系统1022和/或1034可以包括存储器分配优化器,以执行所述DNN的级期间优化共享存储器的使用率,并且可以识别标识具有DNN的级的一个或多个机会以执行对所述级中的一个或多个的输入数据的批处理。存储器分配优化器可以计算级联DNN的所有层或子级的所需数量的共享存储器块分配和每个共享块分配大小。
现在参考图1A和图1C,图1C描绘了由存储器管理逻辑电路系统进行的可以优化共享存储器块分配的过程的实施例,如图1A至图1B中所展示的存储器管理逻辑电路系统。图1C展示了DNN的一个级的DNN结构1110、共享存储器块分配的寿命1130、以及同时存在的块分配的列表1150。在一些实施例中,DNN结构1110可以包括一系列一个或多个卷积和卷积整流器对或修正线性单元(ReLU)层。
DNN结构1110示出了DNN结构的接收来自先前前一层的一个或多个输入但不包括循环输入的一个级的层。存储器管理逻辑电路系统1022和/或1034可以搜索DNN结构1110以标识或确定每个存储器块分配和块分配的寿命1130。例如,第一块分配(MB1)1132开始于输入层1102并且寿命跨越到层31106。第二块分配(MB2)1134开始于输入层21104并且跨越到层X 1112。第三块分配(MB3)1136开始于层21104并且寿命跨越到层21106的结束。第四块分配(MB4)1138开始于层31106并且寿命跨越到层X 1112的结束。第五块分配(MB5)1140在层31106之后和层X 1112之前开始并且寿命跨越到层X 1112的结束。然后第六块分配(MB6)1142开始于输出层1114并且寿命跨越到输出层1114的结束。
存储器管理逻辑电路系统1022的共享块计数器可以基于对类似于有向无环图(DAG)的DNN结构1110的搜索生成列表,以对这些层中的每一个期间的共享存储器块分配的数量进行计数从而确定同时存在的共享存储器块分配的计数。在许多实施例中,共享块计数器可以包括大小信息,如同时存在的块分配1150的列表中的大小1到4。例如,在层11102处,块分配(MB1)不与其他块分配同时存在,因此共享块计数器不在同时存在的块分配1150的列表中添加条目。然而,同时存在的块分配发生在层31104(MB1、MB2、MB3)处,层31106(MB2、MB4)处,在层31106与层X 1112之间(MB5、MB2、MB4),以及层X 1112(MB5、MB4)处。
基于同时存在的块分配的列表1150,存储器管理逻辑电路系统1022的最大块分配计数器可以确定块分配的最大计数1160为三,这通过在推断计算期间同时存在块分配MB1、MB2、MB3和MB5、MB2、MB4来证明。换句话说,DNN 1110的级一次最多需要三个存储器块分配。
现在参考图1A和图1D,图1D描绘了针对存储器管理逻辑电路系统的用于优化共享存储器块分配的过程的实施例,如图1A至图1B中所展示的存储器管理逻辑电路系统。在确定在图1C中所示出的DNN结构1110的级中同时存在的块分配的最大数量之后,存储器管理逻辑电路系统1022可以与DNN中的剩余级中的每一个执行同一过程并且然后确定所有级的最大计数。假设存储器管理逻辑电路系统1022确定共享存储器的三个块分配是所有级的最大计数,存储器管理逻辑电路系统1022可以继续为共享存储器块分配中的每一个确定最佳大小。
然后,存储器管理逻辑电路系统1022可以基于最大计数为共享存储器块分配中的每一个确定最佳大小,所述最大计数可以是张量的生命周期,以及共享存储器块分配的预期总共享块大小。例如,对于网络生命周期来说,如果网络中最多有三个活跃张量,则在不考虑预期的总块大小的情况下,共享块的所需数量为三。但是,如果我们还考虑预期的总块大小,则最佳共享块大小可能大于三个张量的大小。因此,存储器管理逻辑电路系统1022的共享存储器块分派器可以在考虑活跃张量的最大数量和预期总块大小的情况下计算共享存储器块分配的最佳数量。
为了展示,存储器管理逻辑电路系统1022可以在DNN结构1110中搜索DNN的所有级,类似于针对图1D中DNN结构1110的一个级所示出的过程。图1D展示了与图1C中所展示的DNN结构1110的一个级相同的层、经优化块分配的寿命1230、以及经优化块分配的列表1240。基于确定DNN的所有级的同时存在的块分配的最大计数是三,存储器管理逻辑电路系统1022可以基于DNN结构1110确定优化块分配MB1、MB2和MB3。如果这是第一级,则存储器管理逻辑电路系统1022可以将块分配MB1、MB2和MB3的大小设置为零,将块分配MB1 1202分配给输入层1102,并且将块分配MB31212分配给输出层1114。此后,存储器管理逻辑电路系统1022可以标识输入层1102之后的每个后续分配,分配MB1、MB2和MB3中可用并适应后续分配的大小的最小可用块分配,并且在必要时调整块分配MB1、MB2和MB3的大小以容纳DNN层在块分配中存储的数据。此外,如果共享存储器块分配MB1、MB2和MB3都不可用并且都没有大到足以容纳后续分配,则存储器管理逻辑电路系统1022可以选择MB1、MB2和MB3中的最小可用存储器块分配并增加大小以适应后续分配。
例如,假设存储器管理逻辑电路系统1022将MB1 1202设置为90千字节(KB)以容纳输入层1102中的输入张量数据。假设存储器管理逻辑电路系统1022将MB31212设置为40KB以容纳输出层1114输出张量数据并且假设尚未分配MB2,因此MB2处于零KB的复位值。存储器管理逻辑电路系统1022可以从输入层1102前进到层21104,以确定输入层的输出具有30KB的后续分配。容纳30KB的最小可用共享块分配是MB3,因此存储器管理逻辑电路系统1022可以将30KB分配给MB3 1212。
存储器管理逻辑电路系统1022可以从输入层1102前进到层21104,以确定层2处的推断计算具有140KB的后续分配。在层2处,MB1 1202保持被分配,并且MB3保持被分配。由于可用的最小块分配是MB2,因此存储器管理逻辑电路系统1022可以从层21104选择MB2用于分配,并且将MB2的大小增大到140KB。
在层21104之后,层31106处的推断计算可以呈现60KB的下一个后续分配。在层31106处,MB1未被分配,MB2保持被分配,并且MB3太小而无法容纳60KB。MB1是90KB分配,因此存储器管理逻辑电路系统1022可以将60KB后续分配分配给MB1 1208。
在层31106与层X 1110之间,存储器管理逻辑电路系统1022可以标识40KB的后续分配。MB1保持被分配,MB2保持被分配,并且MB3可以容纳60KB。因此,存储器管理逻辑电路系统1022可以选择MB31212用于40KB的后续分配。此外,在输出层1114处,不分配共享存储器块分配MB1、MB2和MB3,并且输出层1114具有40KB的后续分配,其在设定此级的共享存储器的大小的过程开始时被分配给MB3 1212。
一旦存储器管理逻辑电路系统1022完成设定此级的共享存储器块分配的大小的过程,存储器管理逻辑电路系统1022就可以用剩余级的相同存储器块分配来完成所述过程,直到存储器管理逻辑电路系统1022通过级的层将每个分配分派给如结合图1C所讨论的被确定为同时存在的块分配的最大计数的三个共享存储器块分配中的一个。
假设存储器管理逻辑电路系统1022完成对DNN的所有级的分配,并且其他级没有增加来自图1D中所示出的级的分配,如关于图1D所讨论的,经优化块分配1240是MB1设置成90KB、MB2设置成140KB、以及MB3设置成40KB。应注意,经优化块分配还将图1C的原始分配与图1D中最大限度地重用相同的块分配并且增加批处理的可能性的新分配关联起来。
现在参考图1A和图1G,图1G描绘了深度神经网络(DNN)1510和共享存储器1540的级的实施例1500,以展示由如图1A和图1B中所示出的存储器管理逻辑电路系统1022和1032等存储器管理逻辑电路系统进行批处理的过程。在若干实施例中,DNN 1510的每个级可以包括卷积神经网络(CNN)以形成级联深度神经网络并且输入可以包括单一图像。在一些实施例中,存储器管理逻辑电路系统1022可以在执行图1C和图1D中的存储器分配优化之后确定批处理的适用性。在进一步实施例中,这些过程可以同时发生。
在典型的级联DNN中,第一级网络采用单一全尺寸输入图像,并且后续网络接收多个小尺寸输出图像或前一级网络的特征作为输入数据。由于输入数据或张量数据大小的收缩,批处理成为提高端到端性能的重要候选项。在许多实施例中,存储器管理逻辑电路系统1022可以实施批处理,同时将总存储器需求保持在DNN 1510中的推断计算的第一级的存储器大小内。
为了实施批处理,存储器管理逻辑电路系统1022可以检查批处理的先决条件,计算最大可能批数或批大小,并用所选号设置批处理。存储器管理逻辑电路系统1022可以检查DNN 1510的每个级的输入数据的相互依赖性。例如,如果在第一输入数据上的级期间的计算确定或影响第二输入数据上的同一级期间的计算,则第二输入数据取决于第一输入数据、时间依赖性,并且因此无法使用第一输入数据进行批处理。然而,如果第一输入数据和第三输入数据不具有任何相互依赖性,则所述第一输入数据和第三输入数据是批处理的候选项。
在确定DNN 1510的级的哪个输入数据有资格进行批处理之后,存储器管理逻辑电路系统1022可以基于级1的输入数据大小(输入数据1542的大小)与其他级的输入数据大小的比率来计算批数或批大小。换句话说,在一些实施例中,存储器管理逻辑电路系统1022可以自动确定用于执行批处理的批大小,所述批处理不需要比执行级1推断计算更多的存储器。这是通过确定级1的输入数据1542与级2的输入数据(级1结果1544)以及与级3的输入数据(级2结果1546)的比率来完成的。例如,实施例1500将输入数据1542示出为对[级1]DNN处理层1512的输入。DNN 1510将级1的输出存储在共享存储器1540中作为级1结果1544,所述级1结果也是DNN 1510的级2的输入数据。[级2]输入数据连结层1516可以连结如可以采用2阶张量或3阶张量形式的输入张量数据等输入数据,使得[级2]DNN批处理1516可以同时处理多个输入数据或张量数据。例如,如果第一级的输入数据1542与第二级的输入数据1544的比率是10∶1,意味着级1输入的张量数据是输入级2的张量数据的10倍,则[级2]输入数据连结可以连结10个张量数据输入以供[级2]DNN批处理层1516进行批处理,有利地不增加执行推断计算所需的共享存储器的量。
类似地,级3的输入数据的级2结果1546和级3输入数据连结层1518可以基于级3的输入数据1546的大小与级1的输入数据1542的大小的比率自动连结输入数据(所述输入数据通过相互依赖性检查)。[级3]DNN批处理层1520可以同时执行对经连结张量数据的处理以产生输出数据1548。
在其他实施例中,存储器管理逻辑电路系统1022可以基于存储器的固定量,如可用于执行DNN 1510的共享存储器的量而不是基于在级1DNN推断计算期间使用的存储器的量来执行批大小设定。例如,存储器管理逻辑电路系统1022可以确定存储器的固定量与级1中针对一个输入数据的存储器使用率的比率,以确定级1推断计算的批大小。此后,将级1的输入数据与如级2等另一个级的输入数据的比率乘以存储器的固定量与级1中的存储器使用率的比率,以确定其他级的自动批大小。
图1E描绘了用于将其他实施方式的存储器使用率与如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统的存储器使用率进行比较的表1300的实施例。表1300示出了DNN级联中的实施例的应用的用于面部检测的实验结果。表1300示出了来自默认Caffe实施方式的存储器大小与来自级联面部检测网络的我们的实施例的显著经优化存储器大小的比较。如表1300中所示出的,默认Caffe实施方式为DNN分配超过2千兆字节的存储器用于面部检测。循环存储器分配方案中跨子级的共享块重用使用240MB。并且本文所描述的实施例使用176.25MB,这表明对于用于推断计算的这些其他当前存储器分配方法的显著改进。生产DNN解决方案的实验结果清楚地表明显著的存储器减少和性能改进。
图1F描绘了用于将其他实施方式的推断速度与如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统的推断速度进行比较的表1400的实施例。表1400示出了DNN级联中的实施例的应用的用于面部检测的实验结果。表1400示出了处理级联面部检测时的深度学习推断性能与不进行批处理(136.59ms)、以批量16批处理级2和级3(120.19ms)、以批量32批处理级2和级3(103.81ms)、以及使用自动批大小批处理级2和级3(97.42ms)的比较。自动批大小设定显著提高了默认非批模式的性能。实施例的生产DNN解决方案的实验结果清楚地表明显著的存储器减少和性能改进。
图1B描绘了系统1100的替代性实施例。根据实施例,系统1100可以控制可移动物体。系统1100可以与本文公开的系统、装置和方法的任何适合的实施例组合。系统1100可以包括感测模块1102、(多个)处理器1104、非暂态存储介质1106、控制模块1108和通信模块1110。这些模块中的每一个都包括用于实施如代码等逻辑的电路系统,并且还可以被称为逻辑电路系统。
感测模块1102可以使用以若干方式收集与可移动物体有关的信息的若干类型的传感器。不同类型的传感器可以感测若干种信号或来自不同源的信号。例如,传感器可以包括惯性传感器、GPS传感器、接近度传感器(例如,激光雷达)、或视觉/图像传感器(例如,相机)。感测模块1102可以可操作地耦合至(多个)处理器1104。在一些实施例中,感测模块1102可以可操作地耦合至传输模块1112(例如,Wi-Fi图像传输模块)以将感测数据直接传输至合适的外部装置或系统。例如,传输模块1112可以将感测模块1102的相机捕获的图像传输至远程终端。
(多个)处理器1104可以包括一个或多个处理器,如可编程处理器(例如,中央处理单元(CPU))。(多个)处理器1104可以包括处理器电路系统,所述处理器电路系统用于实施如图1A中的存储器管理逻辑电路系统1022等存储器管理逻辑电路系统1022。
(多个)处理器1104可以可操作地与非暂态存储介质1106耦合。非暂态存储介质1106可以存储可由(多个)处理器1104执行的逻辑、代码和/或程序指令,用于执行包括如图1A中的存储器管理逻辑电路系统1034等存储器管理逻辑电路系统1034的一个或多个指令。非暂态存储介质可以包括一个或多个存储器单元(例如,如安全数字(SD)卡或随机存取存储器(RAM)等可移动介质或外部存储装置)。在一些实施例中,来自感测模块1102的数据直接传输至非暂态存储介质1106的存储器单元并存储在其中。非暂态存储介质1106的存储器单元可以存储可由(多个)处理器1104执行的逻辑、代码和/或程序指令,以执行本文所描述的方法的任何合适的实施例。例如,(多个)处理器1104可以执行指令,所述指令使(多个)处理器1104中的一个或多个处理器分析由感测模块产生的感测数据。存储器单元可以存储来自感测模块1102的感测数据,以供(多个)处理器1104处理。在一些实施例中,非暂态存储介质1106的存储器单元可以存储由(多个)处理器1104产生的处理结果。
在一些实施例中,(多个)处理器1104可以可操作地耦合至控制模块1108以控制可移动物体的状态。例如,控制模块1108可以控制可移动物体的推进机制,以调整可移动物体相对于六个自由度的空间排布、速度和/或加速度。替代性地或组合地,控制模块1108可以控制载体、有效载荷或感测模块的状态中的一个或多个。
(多个)处理器1104可以耦合至通信模块1110以从一个或多个外部装置(例如,终端、显示装置或其他远程控制器)发射和/或接收数据。例如,通信模块1110可以实施局域网(LAN)、广域网(WAN)、红外线、无线电、Wi-Fi、点对点(P2P)网络、电信网络、云通信等中的一个或多个。在一些实施例中,通信可以或可以不需要视线。通信模块1110可以发射和/或接收来自感测模块1102的感测数据中的一个或多个、来自(多个)处理器1104的处理结果、预定控制数据、来自终端或远程控制器的用户命令等。
系统1100的部件可以以任何合适的配置来布置。例如,系统1100的部件中的一个或多个可以定位在可移动物体、载体、有效载荷、终端、感测系统、或与以上一个或多个通信的附加外部装置上。
图2描绘了如图1A中的存储器管理逻辑电路系统1022和/或1034等存储器管理逻辑电路系统2000的实施例。存储器管理逻辑电路系统2000可以执行一个或多个操作以管理在级联神经网络2060中的推断计算期间如高速缓存或其他存储器等共享存储器2050中的存储器块分配。存储器管理逻辑电路系统2000可以包括存储器分配优化器2010和批逻辑电路系统2030。
存储器分配优化器2010可以搜索级联神经网络2060的有向无环图(DAG)。DAG是通过级联神经网络2060的用于推断计算的每个级的层的计算顺序。存储器分配优化器2010可以包括共享存储器块计数器2012、最大计数确定器2014和共享存储器块分派器2016。
共享存储器块计数器2012可以在执行级联神经网络2060的级中的每一个期间确定同时存在的共享存储器块分配的计数,并且生成这些同时存在的共享存储器块分配的列表连同与共享存储器块分配中的每一个中的张量的大小有关的大小信息。
在共享存储器块计数器2012确定共享存储器块分配的计数之后,最大计数确定器2014可以确定在级联神经网络2060的所有级中同时存在的共享存储器块分配的最大数量。在最大数量的同时存在的共享存储器块分配的情况下,共享存储器块分派器2016可以确定所述最大计数的共享存储器块分配中的每一个的大小。首先,开始于将所述最大计数的共享存储器块分配中的每一个的大小设置为零或另一个小的大小,共享存储器块分派器2016可以通过级联神经网络2060的级中的每一个的层中的每一个中的共享存储器块分配进行以确定可以如何分配最大计数的每个块分配以最大化在整个级联神经网络2060中的推断计算中的重用。例如,共享存储器块分派器2016可以确定级联神经网络2060的每个级中的每个层的输入数据和输出数据,并分配容纳所述输入数据和输出数据的最小共享存储器块分配。此后,共享存储器块分派器2016可以为层中的每个分配需求选择最小可用块分配。如果没有可用块分配适应层的需求,则共享存储器块分派器2016可以选择可用块分配的最小块分配并增大此块分配的大小以适应层的需求。
共享存储器块分派器2016可以对级联神经网络2060的每个级中的每个层重复此过程,直到所述最大计数的共享存储器块分配的组合可以容纳在级联神经网络2060的整个推断计算中存储在共享存储器2050中的所有数据。
在一些实施例中,批逻辑电路系统2030可以自动判定是否可能对级联神经网络2060的每个级进行输入数据的批处理。此后,批逻辑电路系统2030可以同时批处理如张量数据等多个输入数据,这有利地增大级联神经网络2060的推断计算的速度。批逻辑电路系统2030可以包括输入检查器2032、批大小设定器2034、批连结器2036和批处理器2038。输入检查器2032可以判定是否可能进行批处理以及批处理的可能程度。具体地,批逻辑电路系统2030可以并行处理输入数据的若干实例,只要一个实例的处理不依赖于同一级中的输入数据的另一个实例的处理。因此,输入检查器2032可以检查级联神经网络2060中的预先训练的级的推断计算,以判定在级中的每一个的输入数据之间是否存在任何相互依赖性。如果不存在相互依赖性,则级联神经网络可以批处理所有输入数据直到最大批大小,这可能会对推断计算施加最大存储器大小。如果输入数据中的一些依赖于对其他输入数据的处理,则批逻辑电路系统2030可以实施一系列用于处理的批,以说明输入数据实例之间的相互依赖性。
批大小设定器2034可以基于用于推断计算的可用共享存储器2050来确定最大批大小。在一些实施例中,最大批处理大小基于第一阶段的输入数据与后续阶段的输入数据的比率。例如,如果第一级的输入数据是第二级的输入数据的五倍,则第二级的最大批大小可以是五。换句话说,批连接器2036可以连结级联神经网络2060的第二级的五个输入,而不增加用于第一级与第二级之间推断计算的共享存储器需求。类似地,批大小设定器2034可以确定第一级与第三级的输入数据的比率是15∶1,因此批连结器2036可以级联级联神经网络2060的第三级的十五个输入而不增加用于第一级与第三级之间推断计算的共享存储器需求。
批连结器2036可以结合级的输入数据的实例以作为单一输入呈现给级联神经网络从而批处理这些输入。批处理器2038可以将神经网络2060的每个适用级的经连结输入数据呈现为输入数据以执行批处理。
图3A至图3C描绘了用于由如图1A和图1B中所示出的存储器管理逻辑电路系统等存储器管理逻辑电路系统优化存储器分配和实施批处理的实施例的流程图。图3A展示了用于确定预先训练的神经网络的经优化共享存储器块分配的流程图。流程图开始于为级联神经网络的两个或更多个级确定在执行所述两个或更多个级期间同时存在的共享存储器块分配的计数(要素3010)。在许多实施例中,如图1A至图1B中的存储器管理逻辑电路系统1022和/或1034以及图2中的存储器管理逻辑电路系统2000等存储器管理逻辑电路系统可以搜索级联神经网络的DNN结构以便标识共享存储器需求或分配。存储器管理逻辑电路系统可以进一步标识在一个或多个其他共享存储器块分配的寿命期间发生的共享存储器块分配以便确定在执行推断计算期间在相同情况下存在的共享存储器块分配的计数。共享存储器块分配的这些计数中的最大计数将通知具有最小数量的共享存储器块分配的存储器管理逻辑电路系统预先训练的级联神经网络将在推断计算期间需要级联神经网络的所有级。
在确定共享存储器块分配的最大计数之后,存储器管理逻辑电路系统可以确定所述计数的共享存储器块分配中的共享存储器块分配中的每一个的大小,以便容纳在执行级联神经网络的两个或更多个级期间存储在共享存储器中的数据(要素3015)。在若干实施例中,存储器管理逻辑电路系统可以通过以下方式确定共享存储器块分配的大小:通过神经网络逐层且逐级地步进通过推断计算,从而确定共享存储器块分配中的每一个的大小直到最大计数中的每个分配具有大小并且最大计数中的至少一个分配将以推断计算在输入数据上执行神经网络期间存储在共享存储器中的数据的每个实例的适当大小可用。
图3B展示了用于批处理输入数据的流程图。流程图开始于确定两个或更多个级中的级的缺乏相互依赖性的输入的计数(要素3110)。如图2中的存储器管理逻辑电路系统2000等存储器管理逻辑电路系统可以在每一级或者至少第一级之后的每一级的输入处检查输入数据的多个实例并且判定输入数据的实例是否可以批量处理。换言之,存储器管理逻辑电路系统可以通过搜索神经网络的DNN结构来判定基于特定级处的输入的推断计算是否依赖于同一级中的输入数据的任何其他实例的任何计算。如果输入数据的实例具有相互依赖性,则输入数据的实例的批处理或其他方式的处理顺序可以根据依赖性继续进行。在一些实施例中,存储器管理逻辑电路系统可以通过以基于相互依赖性的顺序准备输入数据的多于一个批次来解决这种相互依赖性。如果不存在相互依赖性,则最大批大小的输入数据可以通过级并行处理。
在检查输入数据的相互依赖性之后,存储器管理逻辑电路系统可以基于可用的共享存储器的固定量经由神经网络的第一级的输入数据大小与其他级的输入数据大小的比率确定批大小(要素3115)。在许多实施例中,存储器管理逻辑电路系统可以对级一之后的级的合适的输入数据执行自动批处理。自动批处理可以大大增加级联神经网络的针对推断计算的性能,而不增加超过级联神经网络的第一级的存储器需求的共享存储器需求。
在适合于批处理的输入数据以及针对至少第一级之后的级的已知批大小的情况下,存储器管理逻辑电路系统可以连结每一级处的合适的输入数据(要素3120)并且批处理级联神经网络的级中的一个或多个级中的经连结输入数据(要素3125)。
图3C展示了用于使用如图2中所展示的存储器管理逻辑电路系统2000和图1A至图1B中的存储器管理逻辑电路系统1022和1034等存储器管理逻辑电路系统确定共享存储器块分配的流程图。所述流程图开始于指向深度神经网络的第一级(要素3205)。以第一级开始,存储器管理逻辑电路系统可以搜索神经网络的有向无环图以确定针对推断计算同时存在的共享存储器块分配的计数(要素3210)并且生成具有关于共享存储器块分配的大小信息的同时存在的共享存储器块分配组的列表(要素3215)。换言之,存储器管理逻辑电路系统可以确定共享存储器块分配的重叠寿命并且确定在推断计算期间重叠的共享存储器块分配的数量的计数以便确定执行推断计算需要多少共享存储器块分配。
在确定第一级中同时存在的共享存储器块分配的计数之后,存储器管理逻辑电路系统可以判定是否存在附加级(要素3230)。由于这是深度神经网络,因此存在至少第二级,使得存储器管理逻辑电路系统可以指向深度神经网络的下一级(要素3225)并且从要素3210开始重复所述过程以便确定深度神经网络的级中的每一级中的共享存储器块分配的重叠寿命的计数。
一旦存储器管理逻辑电路系统执行对深度神经网络的最后一级的计数,存储器管理逻辑电路系统就可以比较所述计数以便确定最大计数(要素3235)。换言之,存储器管理逻辑电路系统从同时存在的共享存储器块分配的所有计数中确定在贯穿整个神经网络的推断计算期间同时存在的共享存储器块分配的最大计数。此最大计数可以是执行推断计算所需要的共享存储器块分配的最小数量。
在确定最大计数之后,存储器管理逻辑电路系统可以将共享存储器块分配的大小设置为零(要素3240),以便准备确定共享存储器块分配中的每一个的最小大小从而适应通过深度神经网络的所有级的推断计算的所有共享存储器需求的过程。对于此过程中的第一步,存储器管理逻辑电路系统可以再次指向深度神经网络的第一级(要素3245)并且开始将数据从推断计算分配到共享存储器块分配的过程。
所述过程可以开始于将输入张量数据和输出张量数据分配给共享存储器块分配并且将块分配分别设置为输入张量和输出张量的大小(要素3250)。一旦存储器管理逻辑电路系统将共享存储器块分配指派给级的输入和输出数据,存储器管理逻辑电路系统就可以步进通过级中的每个推断计算以便确定每个附加存储器分配需求并且将所述需求指派给共享存储器块分配之一。如果没有块分配足够大,则选择最小空闲共享块分配并且增加大小以便容纳张量数据(要素3255)。
在确定第一级的共享存储器块分配中的每一个的适当大小之后,存储器管理逻辑电路系统可以判定是否存在附加级(要素3260)。如果是,则存储器管理逻辑电路系统可以指向深度神经网络中的下一级并且在要素3250处重复所述过程。然后,所述过程结束。
图4展示了系统4000的实施例。系统4000是具有多个处理器核的计算机系统,如分布式计算系统、超级计算机、高性能计算系统、计算集群、大型计算机、小型计算机、客户端-服务器系统、个人计算机(PC)、工作站、服务器、便携式计算机、膝上型计算机、平板计算机、如个人数字助理(PDA)等手持式装置、或用于处理、显示或传输信息的其他装置。类似实施例可以包括例如娱乐装置,如便携式音乐播放器或便携式视频播放器、智能电话或其他蜂窝电话、电话、数字视频相机、数字静止相机、外部存储装置等。进一步实施例实施更大规模服务器配置。在其他实施例中,系统4000可以具有带有一个核的单个处理器或多于一个处理器。应注意,术语“处理器”是指具有单个核的处理器或具有多个处理器核的处理器封装体。
如图4中所示出的,系统4000包括用于安装平台部件的母板4005。母板4005是点对点互连平台,所述点对点互连平台包括经由如超路径互连(UPI)等点对点互连4056耦合的第一处理器4010和第二处理器4030。在其他实施例中,系统4000可以具有另一种总线架构,如多点分支总线。此外,处理器4010和4030中的每一个可以是具有分别包括(多个)处理器核4020和4040的多个处理器核的处理器封装体。尽管系统4000是两插槽(2S)平台的示例,但是其他实施例可以包括多于两个插槽或一个插槽。例如,一些实施例可以包括四插槽(4S)平台或八插槽(8S)平台。每个插槽是处理器的底座并且可以具有插槽标识符。应注意,术语平台是指安装有如处理器4010和芯片组4060等某些部件的母板。一些平台可以包括附加部件,并且一些平台可以仅包括用于安装处理器和/或芯片组的插槽。
第一处理器4010包括集成存储器控制器(IMC)4014以及点对点(P-P)接口4018和4052。类似地,第二处理器4030包括IMC 4034和P-P接口4038和4054。IMC 4014和4034分别将处理器4010和4030耦合至对应存储器,即存储器4012和存储器4032。存储器4012和4032可以是平台的主存储器(例如,动态随机存取存储器(DRAM))的部分,如双数据速率类型3(DDR3)或类型4(DDR4)同步DRAM(SDRAM)。在当前实施例中,存储器4012和4032本地地附接至对应处理器4010和4030。在其他实施例中,主存储器可以经由总线和共享存储器中枢与处理器耦合。
处理器4010和4030包括分别与(多个)处理器核4020和4040中的每一个耦合的高速缓存。在当前实施例中,处理器4010的(多个)处理器核4020包括存储器管理逻辑电路系统4026,如图1A至图1B中所示出的存储器管理逻辑电路系统1022。存储器管理逻辑电路系统4026可以表示被配置成实施神经网络的在(多个)处理器核4020内支持的存储器管理功能的电路系统,或者可以表示处理器内的电路系统与用于将存储器管理逻辑电路系统4026的功能中的所有或部分存储在如高速缓存、存储器4012、缓冲器、寄存器等存储器中的介质的组合。在若干实施例中,存储器管理逻辑电路系统4026的功能整体地或部分地作为代码驻留在存储器中,如经由芯片组4060附接至处理器4010的数据存储装置4088中的存储器管理4096,如图1A至图1B中所示出的存储器管理逻辑电路系统4034。存储器管理逻辑电路系统4026的功能还可以整体地或部分地驻留在存储器中,如存储器4012和/或处理器的高速缓存。此外,存储器管理逻辑电路系统4026的功能还可以整体地或部分地作为电路系统驻留在处理器4010内并且可以执行例如如处理器4010内的寄存器4016等寄存器或缓冲器内或处理器4010的指令流水线内的操作。
在其他实施例中,处理器4010和4030中的多于一个处理器可以包括存储器管理逻辑电路系统4026的功能,如处理器4030和/或经由接口(I/F)4066与芯片组4060耦合的深度学习加速器4067内的处理器。I/F 4066可以是例如增强的外围部件互连(PCI-e)。
第一处理器4010经由P-P互连4052和4062耦合至芯片组4060,并且第二处理器4030经由P-P互连4054和4064耦合至芯片组4060。直接媒体接口(DMI)4057和4058可以将P-P互连4052和4062与P-P互连4054和4064分别耦合。DMI可以是帮助例如每秒传输八千兆(GT/s)的高速互连,如DMI 3.0。在其他实施例中,处理器4010和4030可以经由总线互连。
芯片组4060可以包括控制器中枢,如平台控制器中枢(PCH)。芯片组4060可以包括用于执行计时功能的系统时钟,并且包括I/O总线的接口,如通用串行总线(USB)、外围部件互连(PCI)、串行外围互连(SPI)、集成互连(I2C)等,以便促进外围装置在平台上的互连。在其他实施例中,芯片组4060可以包括多于一个控制器中枢,如具有存储器控制器中枢、图形控制器中枢和输入/输出(I/O)控制器中枢的芯片组。
在当前实施例中,芯片组4060经由接口(I/F)4070与可信平台模块(TPM)4072和UEFI、BIOS、闪存部件4074耦合。TPM 4072是被设计用于通过将密码密钥集成到装置中来保护硬件的专用微控制器。UEFI、BIOS、闪存部件4074可以提供预引导代码。
此外,芯片组4060包括用于将芯片组4060与高性能图形引擎、图形卡4065耦合的I/F 4066。在其他实施例中,系统4000可以包括处理器4010和4030与芯片组4060之间的柔性显示界面(FDI)。FDI将处理器中的图形处理器与芯片组4060互连。
各种I/O装置4092连同将总线4081耦合至第二总线4091的总线桥接器4080以及将总线4081与芯片组4060连接的I/F 4068一起耦合至总线4081。在一个实施例中,第二总线4091可以是低引脚数(LPC)总线。各种装置可以耦合至第二总线4091,所述第二总线包括例如键盘4082、鼠标4084、通信装置4086和可以存储代码的数据存储单元4088,如编译器4096。此外,音频I/O 4090可以耦合至第二总线4091。I/O装置4092、通信装置4086和数据存储单元4088中的许多可以驻留在母板4005上,而键盘4082和鼠标4084可以是插入式外围设备。在其他实施例中,I/O装置4092、通信装置4086和数据存储单元4088中的一些或所有是插入式外围设备并且不驻留在母板4005上。
图5展示了用于存储处理器数据结构的存储介质5000的示例。存储介质5000可以包括制品。在一些示例中,存储介质5000可以包括任何非暂态计算机可读介质或机器可读介质,如光学、磁性或半导体存储装置。存储介质5000可存储各种类型的计算机可执行指令,如用于实施本文描述的逻辑流程和/或技术的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移除存储器或不可移除存储器、可擦除存储器或不可擦除存储器、可写存储器或可重写存储器等。计算机可执行指令的示例可以包括任何适当类型的代码,比如,源代码、编译代码、翻译码、可执行代码、静态代码、动态代码、面向对象代码、可视代码等。示例并不局限于本上下文中。
图6展示了示例计算平台6000。在某些示例中,如图6中所示,计算平台6000可以包括处理部件6010、其他平台部件或通信接口6030。根据一些示例,可以在如上所提及的支持管理器或控制器管理可配置计算资源的系统(如数据中心或服务器群)中的计算装置(如服务器)中实施计算平台6000。此外,通信接口6030可以包括唤醒无线电(WUR)并且可以能够唤醒计算平台6000的主无线电。
根据一些示例,处理部件6010可以对本文描述的如图1A和图1B中所展示的存储器管理逻辑电路系统1034等设备6015执行处理操作或逻辑。处理部件6010可以包括各种硬件元件、软件元件、或两者的组合。硬件元件的示例可以包括:装置、逻辑装置、部件、处理器、微处理器、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。可以驻留在存储介质6020上的软件元件的示例可以包括:软件组件、程序、应用、计算机程序、应用程序、设备驱动程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。确定是否是使用硬件元件和/或软件元件来实施示例可以根据多个因数而变化,如针对给定的示例所预期的,如预期的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。
在一些示例中,其他平台部件6025可以包括通用计算元件,如,一个或多个处理器、多核处理器、协处理器、存储单元、芯片组、控制器、外围设备、接口、振荡器、定时装置、视频卡、音频卡,多媒体输入/输出(I/O)部件(例如,数字显示器)、电源等。存储器单元的示例可以包括但不限于各种类型的一个或多个更高速存储器单元形式的计算机可读和机器可读存储介质,如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双倍数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存存储器、聚合物存储器(如铁电聚合物存储器)、双向存储器、相变或铁电存储器、硅氧氮氧硅(SONOS)存储器、磁性或光学卡、装置阵列(如独立磁盘冗余阵列(RAID))驱动器、固态存储器装置(例如,USB存储器)、固态驱动器(SSD)和适用于存储信息的任何其他类型的存储介质。
在一些示例中,通信接口6030可以包括用于支持通信接口的逻辑和/或特征。针对这些示例,通信接口6030可以包括一个或多个通信接口,所述一个或多个通信接口根据各通信协议或标准运行从而通过直接或网络通信链路通信。通过使用一个或多个工业标准(包括子孙和变体)中所描述的通信协议或标准而发生,如与PCI Express规范相关联的标准,可以发生直接通信。通过使用如在电气与电子工程师协会(IEEE)所颁布的一条或多条以太网标准中所描述的那些通信协议或标准可以发生网络通信。例如,一种这样的以太网标准可以包括在2012年12月发表的具有冲突检测的载波侦听多路访问(CSMA/CD)访问方法和物理层规范IEEE 802.3-2012(以下简称“IEEE 802.3”)。网络通信还可以根据一种或多种OpenFlow规范(如OpenFlow硬件抽象API规范)而产生。网络通信还可以根据2015年3月公开的无限宽带技术架构规范发行版本1.3,卷1(“无限宽带技术架构规范”)而产生。
计算平台6000可以是计算装置的一部分,所述计算装置可以是例如服务器、服务器阵列或服务器农场、web服务器、网络服务器、互联网服务器、工作站、小型计算机、主机计算机、超级计算机、网络电器、web电器、分布式计算系统、多处理器系统、基于处理器的系统、或其组合。相应地,在计算平台6000的各个实施例中可以包括或者省略在此所描述的计算系统6000的功能和/或特定配置,如适当预期的。
可以使用分立电路系统、ASIC、逻辑门和/或单个芯片架构的任何组合来实施计算平台6000的部件和特征。进一步地,在适当的情况下,可以使用微型控制器、可编程逻辑阵列和/或微型处理器或前述的任何组合实施计算平台6000的特征。应注意,硬件、固件和/或软件元件在此可以被共同地或单独地称为“逻辑”。
应当理解的是,图6的框图中所示的示例性计算平台6000可以代表许多潜在实施方式的一个功能描述性示例。相应地,对附图中所描绘的框功能的划分、省略或包括并不意味着在实施例中将必须划分、省略、或包括用于实施这些功能的硬件部件、电路、软件和/或元件。
可以由至少一个机器可读介质上所存储的代表性指令实施至少一个示例的一个或多个方面,所述指令代表处理器内的各种逻辑,当被机器、计算装置或系统读取时所述指令使所述机器、计算装置或系统制造用于实施在此所描述的技术的逻辑。此类表示(称为“IP核”)可以被存储在有形的机器可读介质上并提供给各顾客或制造设施以加载至实际制作所述逻辑或处理器的制作机器中。
可以使用硬件元件、软件元件、或两者的组合来实施各个示例。在一些示例中,硬件元件可以包括:装置、部件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑器件(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括:软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用程序接口(API)、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任意组合。确定是否使用硬件元件和/或软件元件来实施示例可以根据多个因数而变化,如针对给定的实施方式所预期的,如预期的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。
一些示例可以包括制品或者至少一种计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂态存储介质。在一些示例中,非暂态存储介质可以包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,所述逻辑可以包括各种软件元件,如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或其任何组合。
根据一些示例,计算机可读介质可以包括用于存储或保持指令的非暂态存储介质,所述指令当被机器、计算装置或系统执行时使所述机器、计算装置或系统执行根据所描述的示例的方法和/或操作。所述指令可以包括任何合适类型的代码,如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。可以根据预先定义的计算机语言、形式或语法实施所述指令,用于指导机器、计算装置或系统执行某种功能。可以使用任何合适的高级、低级、面向对象、可视、编译和/或解释性编程语言实施所述指令。
一些示例可使用表述“在一个示例中”或“一个示例”及其派生词来描述。这些术语意味着与示例相联系地描述的具体特征、结构或者特性被包含在至少一个示例中。短语“在一个示例中”在本说明书中各地方的出现不一定全都指代同一示例。
可以使用表述“耦合”和“连接”及其派生词来描述一些示例。这些术语并不必旨在作为彼此的同义词。例如,使用术语“连接”和/或“耦合”描述可以表明两个或更多个元件以直接物理的或电气的方式与彼此接触。然而,术语“耦合”还可意指两个或更多个元件彼此不直接接触,但仍彼此协作或交互。
另外,在前述具体实施方式中,可以看到,出于简化本公开的目的而将各种特征一起组合在单个示例中。本公开的方法并不被解释为反映以下意图:所要求保护的示例需要比每项权利要求中明确表述的特征更多的特征。而是被解释为:以下的权利要求书反映了本发明的主题在于比单个公开的示例的全部特征少。因此,以下权利要求由此并入具体实施方式中,其中,每项权利要求独立自主地作为单独的示例。在所附权利要求书中,术语“包括(including)”和“其中(in which)”分别用作对应术语“包括(comprising)”和“其中(wherein,)”的易懂的英文等价词。此外,术语“第一”、“第二”、“第三”等仅用作标签,且不旨在对其对象强加数字要求。
虽然已经以特定于结构特征和/或方法动作的语言描述了主题,但将理解的是,所附权利要求书中所限定的主题不一定限于以上所述的特定特征或动作。相反,以上所述的特定特征和动作作为实施权利要求书的示例形式而被公开。
适合于存储和/或执行程序代码的数据处理系统将包括通过系统总线被直接或间接地耦合至存储器元件的至少一个处理器。存储器元件可以包括在程序代码的实际执行期间使用的本地存储器、大容量存储装置和高速缓存存储器,所述高速缓存存储器提供至少一些存储代码的临时存储从而减低代码在执行期间必须从大容量存储装置中检索的次数。术语“代码”覆盖宽范围的软件组件和构造,包括应用、驱动程序、进程、例程、方法、模块、固件、微代码和子程序。因此,术语“代码”可以用于指当由处理系统执行时执行一个或多个所期望的操作的任何指令集合。
本文描述的逻辑电路系统、装置和接口可以执行在硬件中实施的并且还用在一个或多个处理器上执行的代码实施的功能。逻辑电路系统指实施一个或多个逻辑功能的硬件或硬件和代码。电路系统是硬件并且可以指一个或多个电路。每个电路可以执行特定功能。电路系统的电路可以包括分立电气部件,所述分立电气部件与一个或多个导体、集成电路、芯片封装体、芯片组、存储器等互连。集成电路包括在如硅晶片等基板上创建的电路并且可以包括部件。并且集成电路、处理器封装体、芯片封装体和芯片组可以包括一个或多个处理器。
处理器可以在(多个)输入端处接收如指令和/或数据等信号并且处理所述信号以便生成至少一个输出。当执行代码时,所述代码改变构成处理器流水线的晶体管的物理状态和特性。晶体管的物理状态转换成存储在处理器内的寄存器中的逻辑位一和零。处理器可以将晶体管的物理状态传递至寄存器中并且将晶体管的物理状态传递至另一个存储介质。
处理器可以包括用于执行一个或多个子功能的电路,所述一个或多个子功能被实施用于执行处理器的整个功能。处理器的一个示例是包括至少一个输入和至少一个输出的状态机或专用集成电路(ASIC)。状态机可以通过对至少一个输入执行预定系列的串行和/或并行操纵或变换来操纵所述至少一个输入以生成所述至少一个输出。
如上所述的逻辑可以是集成电路芯片设计的一部分。芯片设计是以图形计算机编程语言来创建的并且被存储在计算机存储介质或数据存储介质(如磁盘、磁带、物理硬盘驱动器、或者如在存储存取网络中的虚拟硬盘驱动器)中。如果设计者未制造芯片或者用于制造芯片的光刻掩膜,则设计者直接地或间接地通过物理的方式(例如,通过提供存储设计的存储介质的副本)或者电子地(例如,通过互联网)将所得到的设计传输至这样的实体。所存储的设计然后被转化为用于制造的适当格式(例如,GDSII)。
所得到的集成电路芯片可以由制造者以原始晶片形式(就是说,作为具有多个未封装芯片的单个晶片)作为裸片进行分发,或者以经封装的形式进行分发。在后者的情形中,芯片被安装在单芯片封装体(如塑料载体,具有固定至母板或另一更高级载体的导线)或者多芯片封装体(如具有表面互连或掩埋互连中的一者或二者的陶瓷载体)中。在任一情形中,芯片然后与其他芯片、分立电路元件、和/或作为(a)中间产品(如处理器板、服务器平台或母板)或(b)终端产品中的一部分的其他信号处理装置相集成。
若干实施例具有一种或多种潜在有利效果。例如,优化存储器使用率有利地降低存储器资源需求,如嵌入式系统中的高速缓存需求,并且在同时执行若干处理(如多处理器系统)时降低存储器使用率。最小化可共享块分配有利地降低存储器资源需求,如嵌入式系统中的高速缓存需求,并且在同时执行若干处理(如多处理器系统)时降低存储器使用率。分析在DNN处理中的推断计算中使用的存储器时间序列有利地促进批处理或并行处理。在不增加总存储器大小的情况下自动批处理神经网络的用于推断计算的级有利地降低存储器资源需求,如嵌入式系统中的高速缓存需求,并且在同时执行若干处理(如多处理器系统)时降低存储器使用率。减小用于DNN推断计算的运行时间存储器大小有利地降低存储器资源需求,如嵌入式系统中的高速缓存需求,并且在同时执行若干处理(如多处理器系统)时降低存储器使用率。执行批处理有利地提高在预先训练的神经网络的推断计算速度方面的性能。
进一步实施例的示例
以下示例涉及进一步实施例。可在一个或多个实施例中的任何地方使用示例中的细节。
示例1是一种用于管理存储器资源的设备,所述设备包括:存储器;以及逻辑电路系统,所述逻辑电路系统与所述存储器耦合以便为级联神经网络的两个或更多个级确定在执行所述两个或更多个级期间同时存在的共享存储器块分配的计数;并且确定所述计数的共享存储器块分配中的所述共享存储器块分配中的每一个的大小,以容纳用于在执行所述级联神经网络的用于推断计算的所述两个或更多个级期间存储在共享存储器中的数据。在示例2中,如权利要求1所述的设备,其中,所述逻辑电路系统被配置成生成在执行所述两个或更多个级期间同时存在的所述共享存储器块分配的列表和所述共享存储器块分配中的每一个的大小信息。在示例3中,如权利要求1所述的设备,其中,所述逻辑电路系统被配置成确定级联神经网络的所述两个或更多个级的每级批大小。在示例4中,如权利要求1所述的设备,其中,所述逻辑电路系统被配置成确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数。在示例5中,如权利要求4所述的设备,其中,所述逻辑电路系统被配置成基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批大小。在示例6中,如权利要求5所述的设备,其中,所述逻辑电路系统被配置成基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的所述固定量,基于最大计数、为每个共享存储器块分配确定的所述大小以及输入的所述计数来确定所述批大小。在示例7中,如权利要求1所述的设备,其中,所述逻辑电路系统被配置成确定针对用于存储在所述共享存储器中的张量数据的共享存储器块分配的计数和所述张量数据的大小信息。在示例8中,如权利要求1所述的设备,其中,所述逻辑电路系统被配置成比较在执行所述级联神经网络的所述两个或更多个级中的每一个期间同时存在的所述共享存储器块分配的计数,以确定所述共享存储器块分配的所述计数中的最大计数。在示例9中,如权利要求1所述的设备,其中,所述逻辑电路系统被配置成基于所述两个或更多个级的第一级的输入数据大小与所述两个或更多个级的另一个级的输入数据大小的比率来计算批大小。
示例10是一种用于管理存储器资源的方法,所述方法包括:由存储器管理逻辑电路系统为级联神经网络的两个或更多个级确定在执行所述两个或更多个级期间同时存在的共享存储器块分配的计数;以及由所述存储器管理逻辑电路系统确定所述计数的共享存储器块分配中的所述共享存储器块分配中的每一个的大小,以容纳用于在执行所述所述级联神经网络的用于推断计算的所述两个或更多个级期间存储在共享存储器中的数据。在示例11中,如权利要求10所述的方法,进一步包括由所述存储器管理逻辑电路系统生成在执行所述两个或更多个级期间同时存在的所述共享存储器块分配的列表和所述共享存储器块分配中的每一个的大小信息。在示例12中,如权利要求10所述的方法,进一步包括确定级联神经网络的所述两个或更多个级的每级批大小。在示例13中,如权利要求10所述的方法,其中,确定每级批大小包括确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数。在示例14中,如权利要求13所述的方法,其中,确定每级批大小包括基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批大小。在示例15中,如权利要求14所述的方法,其中,基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量基于最大计数确定所述批大小包括基于最大计数、为每个共享存储器块分配确定的所述大小以及输入的所述计数来确定所述批大小。在示例16中,如权利要求10所述的方法,其中,确定所述共享存储器块分配的计数包括确定针对用于存储在所述共享存储器中的张量数据的共享存储器块分配的所述计数和所述张量数据的大小信息。在示例17中,如权利要求10所述的方法,其中,确定所述共享存储器块分配中的每一个的大小包括比较在执行所述级联神经网络的所述两个或更多个级中的每一个期间同时存在的所述共享存储器块分配的计数,以确定所述共享存储器块分配的所述计数中的最大计数。在示例18中,如权利要求10所述的方法,其中,所述逻辑电路系统被配置成基于所述两个或更多个级的第一级的输入数据大小与所述两个或更多个级的另一个级的输入数据大小的比率来计算批大小。
示例19是一种具有存储在其上的指令的计算机可读介质,所述指令当被执行时使计算机执行包括如权利要求8至14中任一项所述的操作的操作。示例20是一种用于管理存储器资源的设备,所述设备包括用于执行权利要求10至18中任一项的装置。示例21是一种用于使计算机执行包括如权利要求10至18中任一项所述的操作的操作的程序。示例22是一种用于存储如权利要求21所述的程序的计算机可读存储介质。
示例23是一种用于管理存储器资源的系统,所述系统包括:存储器,所述存储器包括动态DRAM;逻辑电路系统,所述逻辑电路系统与所述存储器耦合以便为级联神经网络的两个或更多个级确定在执行所述两个或更多个级期间同时存在的共享存储器块分配的计数;并且确定所述计数的共享存储器块分配中的所述共享存储器块分配中的每一个的大小,以容纳用于在执行所述级联神经网络的用于推断计算的所述两个或更多个级期间存储在共享存储器中的数据。在示例24中,如权利要求23所述的系统,其中,所述逻辑电路系统被配置成生成在执行所述两个或更多个级期间同时存在的所述共享存储器块分配的列表和所述共享存储器块分配中的每一个的大小信息。在示例25中,如权利要求23所述的系统,其中,所述逻辑电路系统被配置成确定级联神经网络的所述两个或更多个级的每级批大小。在示例26中,如权利要求23所述的系统,其中,所述逻辑电路系统被配置成确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数并且基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批大小。在示例27中,如权利要求26所述的系统,其中,所述逻辑电路系统被配置成确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数并且基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批大小。在示例28中,如权利要求27所述的系统,其中,所述逻辑电路系统被配置成基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的所述固定量,基于最大计数、为每个共享存储器块分配确定的所述大小以及输入的所述计数来确定所述批大小。在示例29中,如权利要求23所述的系统,其中,所述逻辑电路系统被配置成确定针对用于存储在所述共享存储器中的张量数据的共享存储器块分配的计数和所述张量数据的大小信息。在示例30中,如权利要求23所述的系统,其中,所述逻辑电路系统被配置成比较在执行所述级联神经网络的所述两个或更多个级中的每一个期间同时存在的所述共享存储器块分配的计数,以确定所述共享存储器块分配的所述计数中的最大计数。在示例31中,如权利要求23所述的系统,其中,所述逻辑电路系统被配置成基于所述两个或更多个级的第一级的输入数据大小与所述两个或更多个级的另一个级的输入数据大小的比率来计算批大小。
示例32是一种包含指令的非暂态机器可读介质,所述指令当被处理器执行时使所述处理器执行操作,所述操作包括:由存储器管理逻辑电路系统为级联神经网络的两个或更多个级确定在执行所述两个或更多个级期间同时存在的共享存储器块分配的计数;以及由所述存储器管理逻辑电路系统确定所述计数的共享存储器块分配中的所述共享存储器块分配中的每一个的大小,以容纳用于在执行所述所述级联神经网络的用于推断计算的所述两个或更多个级期间存储在共享存储器中的数据。在示例33中,如权利要求32所述的机器可读介质,其中,所述操作进一步包括由所述存储器管理逻辑电路系统生成在执行所述两个或更多个级期间同时存在的所述共享存储器块分配的列表和所述共享存储器块分配中的每一个的大小信息。在示例34中,如权利要求32所述的机器可读介质,其中,所述操作进一步包括确定级联神经网络的所述两个或更多个级的每级批大小。在示例35中,如权利要求32所述的机器可读介质,其中,确定每级批大小包括确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数。在示例36中,如权利要求35所述的机器可读介质,其中,基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批处理大小。在示例37中,如权利要求36所述的机器可读介质,其中,基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量基于最大计数确定所述批大小包括基于最大计数、为每个共享存储器块分配确定的所述大小以及输入的所述计数来确定所述批大小。在示例38中,如权利要求32所述的机器可读介质,其中,确定所述共享存储器块分配的计数包括确定针对用于存储在所述共享存储器中的张量数据的共享存储器块分配的所述计数和所述张量数据的大小信息。在示例39中,如权利要求32所述的机器可读介质,其中,确定所述共享存储器块分配中的每一个的大小包括比较在执行所述级联神经网络的所述两个或更多个级中的每一个期间同时存在的所述共享存储器块分配的计数,以确定所述共享存储器块分配的所述计数中的最大计数。在示例40中,如权利要求32所述的机器可读介质,其中,所述逻辑电路系统被配置成基于所述两个或更多个级的第一级的输入数据大小与所述两个或更多个级的另一个级的输入数据大小的比率来计算批大小。
示例41是一种用于管理存储器资源的设备,所述设备包括:用于由存储器管理逻辑电路系统为级联神经网络的两个或更多个级确定在执行所述两个或更多个级期间同时存在的共享存储器块分配的计数的装置;以及用于由所述存储器管理逻辑电路系统确定所述计数的共享存储器块分配中的所述共享存储器块分配中的每一个的大小以容纳用于在执行所述所述级联神经网络的用于推断计算的所述两个或更多个级期间存储在共享存储器中的数据的装置。在示例42中,如权利要求41所述的设备,进一步包括由所述存储器管理逻辑电路系统生成在执行所述两个或更多个级期间同时存在的所述共享存储器块分配的列表和所述共享存储器块分配中的每一个的大小信息。在示例43中,如权利要求41所述的设备,进一步包括确定级联神经网络的所述两个或更多个级的每级批大小。在示例44中,如权利要求41所述的设备,其中,确定每级批大小包括确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数。在示例45中,如权利要求44所述的设备,其中,确定所述批大小是基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量进行的。在示例46中,如权利要求45所述的设备,其中,基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量基于最大计数确定所述批大小包括基于最大计数、为每个共享存储器块分配确定的所述大小以及输入的所述计数来确定所述批大小。在示例47中,如权利要求41所述的设备,其中,确定所述共享存储器块分配的计数包括确定针对用于存储在所述共享存储器中的张量数据的共享存储器块分配的所述计数和所述张量数据的大小信息。在示例48中,如权利要求41所述的设备,其中,确定所述共享存储器块分配中的每一个的大小包括比较在执行所述级联神经网络的所述两个或更多个级中的每一个期间同时存在的所述共享存储器块分配的计数,以确定所述共享存储器块分配的所述计数中的最大计数。在示例49中,如权利要求41所述的设备,其中,所述逻辑电路系统被配置成基于所述两个或更多个级的第一级的输入数据大小与所述两个或更多个级的另一个级的输入数据大小的比率来计算批大小。

Claims (25)

1.一种用于管理存储器资源的设备,所述设备包括:
存储器;
与所述存储器耦合的逻辑电路系统,用于为级联神经网络的两个或更多个级确定并发共享存储器块分配的计数,以及确定所述计数个并发共享存储器块分配中的每个共享存储器块分配的大小,以容纳用于存储在所述级联神经网络的用于推断计算的所述两个或更多个级的共享存储器中的数据。
2.如权利要求1所述的设备,其特征在于,所述逻辑电路系统被配置成生成所述并发共享存储器块分配的列表以及每个所述共享存储器块分配的大小信息。
3.如权利要求1所述的设备,其特征在于,所述逻辑电路系统被配置成确定所述级联神经网络的所述两个或更多个级的每级批大小。
4.如权利要求1所述的设备,其特征在于,所述逻辑电路系统被配置成确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数。
5.如权利要求4所述的设备,其特征在于,所述逻辑电路系统被配置成基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批大小。
6.如权利要求5所述的设备,其特征在于,所述逻辑电路系统被配置成基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的所述固定量,基于最大计数、为每个共享存储器块分配确定的大小以及输入的所述计数来确定所述批大小。
7.如权利要求1所述的设备,其特征在于,所述逻辑电路系统被配置成确定针对用于存储在所述共享存储器中的张量数据的并发共享存储器块分配的计数以及所述张量数据的大小信息。
8.如权利要求1所述的设备,其特征在于,所述逻辑电路系统被配置成比较所述级联神经网络的所述并发共享存储器块分配的计数以确定所述共享存储器块分配的所述计数中的最大计数。
9.如权利要求1所述的设备,其特征在于,所述逻辑电路系统被配置成基于所述两个或更多个级中的第一级的输入数据大小与所述两个或更多个级中的另一个级的输入数据大小的比率来计算批大小。
10.一种用于管理存储器资源的方法,所述方法包括:
由存储器管理逻辑电路系统为级联神经网络的两个或更多个级确定并发共享存储器块分配的计数;以及
由所述存储器管理逻辑电路系统确定所述计数个并发共享存储器块分配中的每个共享存储器块分配的大小,以容纳用于存储在所述级联神经网络的用于推断计算的所述两个或更多个级的共享存储器中的数据。
11.如权利要求10所述的方法,其特征在于,进一步包括由所述存储器管理逻辑电路系统生成所述并发共享存储器块分配的列表以及每个所述共享存储器块分配的大小信息。
12.如权利要求10所述的方法,其特征在于,进一步包括确定级联神经网络的所述两个或更多个级的每级批大小。
13.如权利要求10所述的方法,其特征在于,确定每级批大小包括确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数。
14.如权利要求13所述的方法,其特征在于,确定每级批大小包括基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量来确定所述批大小。
15.如权利要求14所述的方法,其特征在于,基于可用于执行所述级联神经网络的所述两个或更多个级的共享存储器的固定量、基于最大计数来确定所述批大小包括基于最大计数、为每个共享存储器块分配确定的大小以及输入的所述计数来确定所述批大小。
16.如权利要求10所述的方法,其特征在于,确定所述共享存储器块分配的计数包括确定针对用于存储在所述共享存储器中的张量数据的并发共享存储器块分配的所述计数以及所述张量数据的大小信息。
17.如权利要求10所述的方法,其特征在于,确定每个所述共享存储器块分配的大小包括比较所述级联神经网络的所述并发共享存储器块分配的计数以确定所述共享存储器块分配的所述计数中的最大计数。
18.如权利要求10所述的方法,其特征在于,所述逻辑电路系统被配置成基于所述两个或更多个级中的第一级的输入数据大小与所述两个或更多个级中的另一个级的输入数据大小的比率来计算批大小。
19.一种用于管理存储器资源的系统,所述系统包括:
存储器,所述存储器包括动态随机存取存储器;
与所述存储器耦合的逻辑电路系统,用于为级联神经网络的两个或更多个级确定并发共享存储器块分配的计数,以及确定所述计数个并发共享存储器块分配中的每个共享存储器块分配的大小,以容纳用于存储在所述级联神经网络的用于推断计算的所述两个或更多个级的共享存储器中的数据。
20.如权利要求19所述的系统,其特征在于,所述逻辑电路系统被配置成生成所述并发共享存储器块分配的列表以及每个所述共享存储器块分配的大小信息。
21.如权利要求19所述的系统,其特征在于,所述逻辑电路系统被配置成确定级联神经网络的所述两个或更多个级的每级批大小。
22.一种包含指令的计算机可读介质,所述指令在被处理器执行时使所述处理器执行操作,所述操作包括:
由存储器管理逻辑电路系统为级联神经网络的两个或更多个级确定并发共享存储器块分配的计数;以及
由所述存储器管理逻辑电路系统确定所述计数个并发共享存储器块分配中的每个共享存储器块分配的大小,以容纳用于存储在所述级联神经网络的用于推断计算的所述两个或更多个级的共享存储器中的数据。
23.如权利要求22所述的计算机可读介质,其特征在于,所述操作进一步包括由所述存储器管理逻辑电路系统生成所述并发共享存储器块分配的列表以及每个所述共享存储器块分配的大小信息。
24.如权利要求22所述的计算机可读介质,其特征在于,所述操作进一步包括确定级联神经网络的所述两个或更多个级的每级批大小。
25.如权利要求22所述的计算机可读介质,其特征在于,确定每级批大小包括确定所述两个或更多个级中的级的缺乏相互依赖性的输入的计数。
CN201910201161.XA 2018-04-17 2019-03-15 用于管理级联神经网络中的存储器的方法和安排 Pending CN110389910A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/954,767 2018-04-17
US15/954,767 US11562213B2 (en) 2018-04-17 2018-04-17 Methods and arrangements to manage memory in cascaded neural networks

Publications (1)

Publication Number Publication Date
CN110389910A true CN110389910A (zh) 2019-10-29

Family

ID=65231687

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910201161.XA Pending CN110389910A (zh) 2018-04-17 2019-03-15 用于管理级联神经网络中的存储器的方法和安排

Country Status (3)

Country Link
US (1) US11562213B2 (zh)
CN (1) CN110389910A (zh)
DE (1) DE102019106669A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021244045A1 (zh) * 2020-05-30 2021-12-09 华为技术有限公司 一种神经网络的数据处理方法及装置
WO2023070655A1 (en) * 2021-11-01 2023-05-04 Huawei Technologies Co., Ltd. Interfacing with coded inference networks
CN116529818A (zh) * 2020-12-09 2023-08-01 美光科技公司 双端口、双功能存储器装置

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11397579B2 (en) 2018-02-13 2022-07-26 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
KR102148110B1 (ko) 2018-02-13 2020-08-25 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 계산 장치 및 방법
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN116991226A (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
EP3798850A4 (en) 2018-06-27 2022-03-23 Shanghai Cambricon Information Technology Co., Ltd ON-CHIP CODE BREAKPOINT DEBUG METHOD, ON-CHIP PROCESSOR AND CHIP BREAKPOINT DEBUG SYSTEM
EP3757896B1 (en) * 2018-08-28 2023-01-11 Cambricon Technologies Corporation Limited Method and device for pre-processing data in a neural network
US10467503B1 (en) * 2018-09-05 2019-11-05 StradVision, Inc. Method and device for generating image data set to be used for learning CNN capable of detecting obstruction in autonomous driving circumstance
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
CN111383638A (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 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11551147B2 (en) 2019-06-05 2023-01-10 Koninklijke Philips N.V. Evaluating resources used by machine learning model for implementation on resource-constrained device
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN112085181B (zh) 2019-06-12 2024-03-29 上海寒武纪信息科技有限公司 神经网络量化方法及装置以及相关产品
IT201900012609A1 (it) * 2019-07-22 2021-01-22 St Microelectronics Srl Procedimento automatico di gestione della memoria, unità microcontrollore e prodotto informatico corrispondenti
US20210110249A1 (en) * 2019-10-14 2021-04-15 Micron Technology, Inc. Memory component with internal logic to perform a machine learning operation
CN112783640B (zh) * 2019-11-11 2023-04-04 上海肇观电子科技有限公司 预先分配内存的方法与设备、电路、电子设备及介质
US20220012635A1 (en) * 2020-06-18 2022-01-13 Texas Instruments Incorporated Analytic techniques for improved super tiling machine learning processing
KR20220027500A (ko) * 2020-08-27 2022-03-08 에스케이하이닉스 주식회사 가속 장치, 데이터 저장 장치, 데이터 처리 시스템 및 가속 장치의 동작방법
CN112669852B (zh) * 2020-12-15 2023-01-31 北京百度网讯科技有限公司 内存分配方法、装置及电子设备
CN115145846A (zh) * 2021-03-31 2022-10-04 广东高云半导体科技股份有限公司 姿态识别人工智能系统及方法
US11995472B2 (en) * 2021-07-19 2024-05-28 Texas Instruments Incorporated Memory sharing for machine learning processing
US20240104395A1 (en) * 2022-09-27 2024-03-28 Zhejiang Lab Memory optimization method and device oriented to neural network computing

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10019668B1 (en) * 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021244045A1 (zh) * 2020-05-30 2021-12-09 华为技术有限公司 一种神经网络的数据处理方法及装置
WO2021243489A1 (zh) * 2020-05-30 2021-12-09 华为技术有限公司 一种神经网络的数据处理方法及装置
CN116529818A (zh) * 2020-12-09 2023-08-01 美光科技公司 双端口、双功能存储器装置
WO2023070655A1 (en) * 2021-11-01 2023-05-04 Huawei Technologies Co., Ltd. Interfacing with coded inference networks

Also Published As

Publication number Publication date
US20190042925A1 (en) 2019-02-07
DE102019106669A1 (de) 2019-10-17
US11562213B2 (en) 2023-01-24

Similar Documents

Publication Publication Date Title
CN110389910A (zh) 用于管理级联神经网络中的存储器的方法和安排
CN110582785B (zh) 配置用于执行层描述符列表的具有功率效率的深度神经网络模块
US20230023101A1 (en) Data processing method and device
US9886418B2 (en) Matrix operands for linear algebra operations
US20190095796A1 (en) Methods and arrangements to determine physical resource assignments
CN112292667B (zh) 选择处理器的方法和装置
CN107239324A (zh) 业务流转处理方法、装置及系统
US10120717B2 (en) Method for optimizing the size of a data subset of a processing space for improved execution performance
US11961001B2 (en) Parallel forward and backward propagation
KR20190029515A (ko) 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치
CN104035747B (zh) 用于并行计算的方法和装置
CN107016604A (zh) 缓冲记账的方法、装置及设备
CN103778017B (zh) 改进虚拟处理器调度的亲和性
US11561833B1 (en) Allocation and placement of resources for network computation
CN106095563B (zh) 灵活的物理功能和虚拟功能映射
CN108694089A (zh) 使用非贪婪调度算法的并行计算架构
EP4004826A1 (en) Vector reductions using shared scratchpad memory
CN107957965A (zh) 服务质量序数修改
EP3857384B1 (en) Processing sequential inputs using neural network accelerators
CN110825514A (zh) 人工智能芯片以及用于人工智能芯片的指令执行方法
WO2023113969A1 (en) Methods and apparatus for performing a machine learning operation using storage element pointers
KR102642333B1 (ko) 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치
Tsog et al. Intelligent data processing using in-orbit advanced algorithms on heterogeneous system architecture
CN109683917A (zh) 用于将应用部署于应用服务器的方法、设备以及介质
Zhang et al. Enabling highly efficient capsule networks processing through software-hardware co-design

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