CN110766135A - 一种对任意深度神经网络优化其运行功能时所需存储的方法 - Google Patents
一种对任意深度神经网络优化其运行功能时所需存储的方法 Download PDFInfo
- Publication number
- CN110766135A CN110766135A CN201910980066.4A CN201910980066A CN110766135A CN 110766135 A CN110766135 A CN 110766135A CN 201910980066 A CN201910980066 A CN 201910980066A CN 110766135 A CN110766135 A CN 110766135A
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- layer
- read
- description
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
提供一种对任意深度神经网络优化其运行时所需存储的方法。将AutoML探索得到的任意网络转化为有向图,对有向图分析后,将每个神经网络层输入、输出所需要的内存管理,都转化为简单的对偏移地址的管理,从而达到静态分配、高效复用、灵活操作的目的。
Description
技术领域
本发明属于计算机软件、人工神经网络算法部署软件存储优化的领域,具体涉及一种对任意深度神经网络优化其运行功能时所需存储的设计方法。
背景技术
深度卷积神经网络算法由多层具体的神经元算法层、隐藏层组成,主要包含有卷积层,主要算子为矩阵或向量的卷积计算。该计算任务的主要特点为输入的数据量大、输入数据具有空间特征信息的耦合。层计算所需算力巨大,所需要的数据量更大,存储瓶颈成为了主要的制约因素。
近年来在嵌入式端侧部署人工神经算法已经成为广泛需求,但在相关场景下,数据存储的容量、性能和成本因素成为制约需求的主要因素。
在嵌入式端侧部署人工神经算法,其需求特征为,由于存储的硬件容量有限,必需要将数据进行复用,减少数据的膨胀;而对于不同领域和产业场景所常用的人工神经网络算法不同,需要存储容量不同,动态分配带来的风险需要一种静态分配方法,防止存储空间分配失败的风险。这样,我们就需要一种方法,能够静态分配神经网络数据存储,复用神经网络存储区存储神经网络数据,灵活快速定位神经网络数据地址。
发明内容
本发明提供一种对任意深度神经网络优化其运行功能时所需存储的方法。针对嵌入式端侧部署场景,解决对数据存储静态分配问题,突破过去动态管理内存的技术限制;解决存储数据的复用问题,大大降低过去所需要的存储规模所带来的成本限制;还对静态分配办法进行了优化,使数据定位以及操作仍具有灵活性。
本发明所述一种对任意深度神经网络优化其运行功能时所需存储的方法,包括一套数据结构设计方法,一套编译神经网络算法中进行存储区间参数初始化的方法,以及一套可供运行支持本发明方法的软件的硬件平台实施例。
本发明的效果在于:
1、提供了一种面向嵌入式智能端侧部署的存储优化方法
2、降低了软硬件系统的整体成本
3、提高了嵌入式系统的性能
4、适合于低成本嵌入式ASIC上应用
附图说明
图1为深度神经网络优化其运行功能时所需存储的方法框图;
图2为本发明所述神经网络存储区描述和层数据描述区根据网络配置静态分配的主流程图;
图3为本发明所述人工智能神经网络算法数据处理过程图;
图4为本发明所述数据宏块的可能的内存地址分布示意图;
图5为本发明所述可部署所述人工智能算法推理软件的硬件平台;
图6为本发明所述神经网络存储区描述和层数据描述区根据网络配置静态分配的初始化层只读数据描述项流程图;
图7为本发明所述神经网络存储区描述和层数据描述区根据网络配置静态分配的初始化不复用层读写数据存储区描述流程图;
图8为本发明所述神经网络存储区描述和层数据描述区根据网络配置静态分配的初始化层读写数据描述项流程图.
附图标记说明
layer 神经网络层
ro Read only,神经网络只读存储区
rw Read Write,神经网络可读可写存储区
buffer 神经网络存储区
stack 神经网络存储区描述的栈描述
data 神经网络数据描述区
content 神经网络数据项描述
CPU 一般处理器,用于进行软件指令的执行,以调度与配置各种硬件装置。
AIoC 智能处理硬件子系统,包括CPU以及专用于智能硬件处理的功能硬件装置、存储装置、调试装置以及其他系统辅助装置。
MOA 张量、矩阵类数据操作加速器,专用于该数据类型的特定运算的硬件算子装置。
VOA 矢量数据操作加速器,专用于该数据类型的特定运算的硬件算子装置。
SOA 标量数据操作加速器,专用于该数据类型的特定运算的硬件算子装置。
DMA 动态随机存储访问装置,专用于各种数据类型的搬运。
DDR 双速率动态随机存储器,一种优选的系统内存
具体实施方式
下面通过附图和实施例,对本发明做进一步的详细描述。
结合类似图像处理的算法特点与软件开发工程方法,对数据管理与内存划分做以下基本定义,其特征为,数据帧分为channel(r/g/b,y/u/v…数目或标签为n)每个channel对应的是一张图(map),图分割宏块(Macro Block,MB),宏块分割为片(Tile),片分为块(Block)。输出map也有多组,对应多个输出channel(数目或标签为m),输入MB会累加到输出MB上去。宏块MB表示从主要的大块存储区域填充一次计算缓存的数据区域。输入数据的MB尺寸根据硬件计算缓存的规模和简化控制计算需要、并通过软件定义,其尺寸设定支持如图4所示3种:图4左侧所示为line型数据,其物理地址按照整行排列;图4中间所示为raw型数据,其物理地址的排列,在主存储区的物理拓补实现空间中存在换行顺序排列的情况;图4右侧所示为super raw型数据。以上三种尺寸设定都可以用{起始地址,数据高度,数据长度}的描述来定义,只有在考虑主存储区的物理拓补实现空间及其访问效率时,还需要增加特定的有关参数,例如在某个实施例中的{line尺寸,page尺寸或bank参数}来描述。
图3为本发明所述人工智能神经网络算法数据处理过程图。对于一个任意的神经网络算法,都可以拆分为神经节点层,每层都有相应的输入数据和输出数据,同时上一层的输出数据往往是下一层的输入数据,从而构成整体神经网络。图3所示就是其中一层从输入数据到输出数据的处理过程。在图3一侧是输入层数据(一组二维map构成的张量数据),其下方是参数输入层数据(高维的张量数据,按照特定的维度进行排布)。在map中划分数据宏块区域(MB),宏块中划分数据片区域(tile),数据片中划分数据块区域(block)。数据宏块会从存储中装填到靠近硬件算子的数据缓存中,针对宏块内的算子计算均由硬件算子加速完成;硬件处理输出的数据构成输出数据宏块,也会先存储在数据缓存中,然后再搬运回到存储中,排布成输出map。以上过程中,初始化map的存储区域由本发明所述的自动分析神经网络算法来配置初始化数据分配的软件过程来完成,是在神经网络算法编译的过程中就完成的;输入、输出数据宏块的搬运则是部署软件根据编译的结果所生成的代码指令来调度硬件DMA单元来自动完成的。
根据本发明所述以上定义,对于任意卷积神经网络,其参数规模为m*n个块(每个块为一个卷积核,其中实际包括K*K个数据),其数据初始化排布为m/tm个参数输入map图,其中划分为tm个参数输入数据宏块。卷积计算的部分结果(partial)与输出数据分割概念完全相同。所有宏块级的搬运也是部署软件根据编译的结果所生成的代码指令来调度硬件DMA单元来自动完成的。
图1为深度神经网络优化其运行功能时所需存储的方法框图。图1分为上下两个框,分别标为:上边的1框,面向存储区域进行描述;下边的2框,面向神经网络算法每一层需要管理的数据进行描述。在图1的方框描述区左侧,是一列内存调度与控制的描述维度,根据这些维度,一方面在图3描述框中列出相应的描述关系,另一方面构成了基本数据类和数据结构设计的框架。
如图1所示,在编译初始化时起初,存储空间总体上分为只读(layer_ro_buffer)和读写(layer_rwN_buffer)两种属性。其中所述只读属性由神经网络算法本身决定,读写属性需要通过编译后分析其静态分配。在较细的维度,框图1给出了存储区域的具体描述,这些描述作为相关区域的一个管理索引表,在存储区域中占据很少的空间。区域被划分直到MB层级,本发明所述优化存储的方法需要用到map层级,即图3所示的层或栈,在这个层级上完成对存储区域的分配和复用。更具体的颗粒度分割如图3最下边的图例所示。
在对神经网络算法进行编译时,编译软件根据特定的方法,静态的将层数据描述的相关地址指向存储区地址,存在两种情形:层数据的基地址指向上一层的读写数据区域的基地址;层数据的基地址指向上一层的读写数据区域的基地址加上一个特定的偏移地址。本发明所述的自动分析神经网络算法来配置初始化数据分配的方法,其特征为,自动处理上述两种情形,其软件过程如图2所述。
图2为本发明所述神经网络存储区描述和层数据描述区根据网络配置静态分配的主流程图,在这个过程中完成根据网络配置,并获取网络层数。首先初始化所有神经网络数据的数据存储区,数据存储区描述,层数据描述区数据为0,并且设置设置数据存储区描述的数据存储区的基地址和长度信息,之后对每一层完成初始化层只读数据描述项、初始化不复用层读写数据存储区描述和初始化层读写数据描述项。初始化层只读数据描述项功能如图6所示,根据网络配置,获取层只读数据项数和每个只读数据项长度信息,由于只读数据项不复用,设置栈的层偏移为栈的上一层偏移加上只读数据存储区描述的偏移,重新设置只读存储区描述的偏移为0,对每一个数据项设置只读数据描述的长度,偏移,基地址和层号,增加只读数据存储区描述的偏移加上只读数据项的长度,并且设置只读数据存储区描述的层栈的层长度为已处理的只读数据项的总长度。初始化不复用层读写数据存储区描述如图7表示,根据网络配置获取保留层数和每个保留层号信息,对每一个保留层,如果保留层为偶数层,该层数据在数据存储区0,否则该层数据在数据存储区1,设置数据在保留层的后一层和当前处理层之间的所有层保留,计算新的数据存储区描述的栈描述的层偏移,对从保留层下一层到当前层的每一个层设置新的数据存储区的栈描述的层偏移。初始化层读写数据描述项如图8所示,根据网络配置信息获取层读写数据项数和每个读写数据项长度,如果层为偶数层,该层数据在数据存储区0,否则该层数据在数据存储区1,重新设置读写存储区描述的偏移为0,对每一个数据项设置读写数据描述的长度,偏移,基地址和层号,增加读写数据存储区描述的偏移加上读写数据项的长度,并且设置读写数据存储区描述的层栈的层长度为已处理的读写数据项的总长度。
在一个实施例中,神经网络存储区描述的栈描述数据结构如下:
在一个实施例中,神经网络存储区描述的数据结构如下:
在一个实施例中,神经网络层数据描述区的数据描述项的数据结构如下:
在一个实施例中,神经网络层数据描述区的一层数据描述区的数据结构如下:
在一个实施例中,深度神经网络优化其运行功能时所需存储的数据结构描述如下:
在一个实施例中,根据以上定义,神经网络所需存储的数据实例化如下:
AI_NET_LAYER_DATA g_ai_layer_data;
根据神经网络配置初始化神经网络所需存储的数据的方法,如图2过程所述,部分关键伪代码表示如下:
在一个实施例中,神经网络数据存储区及存储区描述初始化方法,伪代码表示如下:
本发明定义只读数据在神经网络各层之间不能复用,所以只读数据存储区的只读数据存储区描述的栈描述的偏移增加,在一个实施例中,该步骤伪代码表示如下:
作为本发明所述方法的必要步骤,由于数据复用,初始化一层神经网络数据存储后,清除数据存储区的数据存储区描述的偏移,在一个实施例中,该步骤的伪代码表示如下:
初始化神经网络一层数据描述区的数据项的方法,在一个实施例中,伪代码表示如下:
获取非前一层的数据不复用起始层和结束层,通过设置数据存储区描述的栈描述的偏移实现不复用数据,在一个实施例中,所述方法伪代码形式表示如下:
初始化数据描述区的数据描述项的方法,在一个实施例中,伪代码表示如下:
获取神经网络数据项在神经网络数据存储区中的数据起始地址的方法,伪代码表示如下:
在一个实施例中,如图5所示的硬件平台,可部署应用了本发明所述优化内存方法的人工智能算法推理软件。该硬件系统由支持特定指令的CPU、子系统互联总线、DDR存储、一系列经过针对应用领域定制的算子加速器硬件设备以及子系统辅助外部设备组成。在该实施例中,所述一系列经过针对应用领域定制的算子加速器硬件设备包括MOA、VOA、SOA和DMA等硬件设备。在该实施例中,其中CPU负责执行应用了本发明所述优化内存方法的人工智能算法推理软件中的指令;本发明所述的数据存储及优化方法针对的就是其中的DDR存储。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种专用于深度卷积神经网络优化其运行功能时所需内存的方法,其特征包括:
静态分配:在神经网络运行前,就根据神经网络的配置静态分配内存空间;
高效复用:在神经网络运行中,直接复用相同的存储空间用于可复用的层之间的数据存放;
灵活操作:在神经网络运行前,就根据神经网络的配置初始化了存储区描述和数据描述的指针,偏移量,长度,层编号;在神经网络运行中,根据存储区描述和数据描述值,通过简单计算就可以获取神经网络层数据项的在存储区地址,完成读写操作。
2.根据权利要求1所述的数据区,其特征在于,该存储区分配只读和读写两种。只读数据静态分配,只能初始化和读取,不能更新,不能复用。可读写数据静态分配,可以读写和复用。
3.根据权利要求2所述的层数据描述区,其特征在于,该数据区将神经网络的每层数据的每项数据根据神经网络的配置进行只读,读写的数据描述初始化;对于一层数据输出作为后面一层输入的读写数据进行layer_rw0,layer_rw1的可复用分配;对于神经网络某层输出要作为后面一层之后某层输入或对于神经网络某层输出要作为神经网络最后输出结果的数据,在layer_rw0,layer_rw1中进行保留,不会被后面其它层输出改写。
4.根据权利要求1所述的所支持的存储空间静态分配及复用的功能,其特征在于,在神经网络进行部署推断之前,先行进行算法编译,在这种编译的过程中,会根据对算法的特定自动化分析,对数据区间进行复用;在编译结束后,所有的数据区间都将得到静态的分配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910980066.4A CN110766135A (zh) | 2019-10-15 | 2019-10-15 | 一种对任意深度神经网络优化其运行功能时所需存储的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910980066.4A CN110766135A (zh) | 2019-10-15 | 2019-10-15 | 一种对任意深度神经网络优化其运行功能时所需存储的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110766135A true CN110766135A (zh) | 2020-02-07 |
Family
ID=69331266
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910980066.4A Withdrawn CN110766135A (zh) | 2019-10-15 | 2019-10-15 | 一种对任意深度神经网络优化其运行功能时所需存储的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110766135A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099943A (zh) * | 2020-08-13 | 2020-12-18 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN112306675A (zh) * | 2020-10-12 | 2021-02-02 | 网络通信与安全紫金山实验室 | 数据处理方法、相关设备以及计算机可读存储介质 |
CN112346877A (zh) * | 2021-01-11 | 2021-02-09 | 瀚博半导体(上海)有限公司 | 一种有效加速深度学习计算的内存分配方法及系统 |
WO2022198636A1 (zh) * | 2021-03-26 | 2022-09-29 | 珠海全志科技股份有限公司 | Ai处理器的内存分配方法、计算机装置及计算机可读存储介质 |
WO2022263997A1 (en) * | 2021-06-17 | 2022-12-22 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
CN117950645A (zh) * | 2024-03-25 | 2024-04-30 | 之江实验室 | 一种基于硬件特征的算子调度方案自动搜索方法与系统 |
CN112306675B (zh) * | 2020-10-12 | 2024-06-04 | 网络通信与安全紫金山实验室 | 数据处理方法、相关设备以及计算机可读存储介质 |
-
2019
- 2019-10-15 CN CN201910980066.4A patent/CN110766135A/zh not_active Withdrawn
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099943A (zh) * | 2020-08-13 | 2020-12-18 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN112099943B (zh) * | 2020-08-13 | 2024-05-03 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN112306675A (zh) * | 2020-10-12 | 2021-02-02 | 网络通信与安全紫金山实验室 | 数据处理方法、相关设备以及计算机可读存储介质 |
CN112306675B (zh) * | 2020-10-12 | 2024-06-04 | 网络通信与安全紫金山实验室 | 数据处理方法、相关设备以及计算机可读存储介质 |
CN112346877A (zh) * | 2021-01-11 | 2021-02-09 | 瀚博半导体(上海)有限公司 | 一种有效加速深度学习计算的内存分配方法及系统 |
CN112346877B (zh) * | 2021-01-11 | 2021-04-16 | 瀚博半导体(上海)有限公司 | 一种有效加速深度学习计算的内存分配方法及系统 |
WO2022198636A1 (zh) * | 2021-03-26 | 2022-09-29 | 珠海全志科技股份有限公司 | Ai处理器的内存分配方法、计算机装置及计算机可读存储介质 |
WO2022263997A1 (en) * | 2021-06-17 | 2022-12-22 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
US11693692B2 (en) | 2021-06-17 | 2023-07-04 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
GB2622349A (en) * | 2021-06-17 | 2024-03-13 | Ibm | Program event recording storage alteration processing for a neural network accelerator instruction |
US12008395B2 (en) | 2023-04-28 | 2024-06-11 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
CN117950645A (zh) * | 2024-03-25 | 2024-04-30 | 之江实验室 | 一种基于硬件特征的算子调度方案自动搜索方法与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110766135A (zh) | 一种对任意深度神经网络优化其运行功能时所需存储的方法 | |
CN110704360B (zh) | 一种基于异构fpga数据流的图计算优化方法 | |
JP6376865B2 (ja) | 並列ツリー・ベースの予測のための、コンピュータにより実行される方法、ストレージ媒体、およびコンピュータ・システム | |
US8813091B2 (en) | Distribution data structures for locality-guided work stealing | |
CN109799991B (zh) | 基于MapReduce框架分布式计算环境的源代码编译方法及系统 | |
Cecilia et al. | Enhancing GPU parallelism in nature-inspired algorithms | |
US20140282594A1 (en) | Distributing processing of array block tasks | |
CN114328315A (zh) | 基于dma的数据预处理方法、dma部件及芯片结构 | |
US9852079B2 (en) | EXtreme virtual memory | |
US20130159372A1 (en) | Matrix-based dynamic programming | |
WO2021219211A1 (en) | Memory allocation in a neural network | |
KR102657104B1 (ko) | 합성곱 연산 장치, 합성곱 연산 방법 및 합성곱 연산 방법을 실행시키도록 기록매체에 저장된 컴퓨터 프로그램 | |
Fresno et al. | Extending a hierarchical tiling arrays library to support sparse data partitioning | |
US8090762B2 (en) | Efficient super cluster implementation for solving connected problems in a distributed environment | |
CN113139649A (zh) | 一种神经网络计算的内存管理方法 | |
CN115756870A (zh) | 基于GeoSOT网格算力的组织模型构建方法及空时数据存储方法 | |
US20170364809A1 (en) | Parallelization techniques for variable selection and predictive models generation and its applications | |
JPH0844577A (ja) | データ分割方法及びマルチプロセッサシステム | |
Lombardi et al. | Graph contraction on attribute-based coloring | |
Giordano et al. | Exploiting distributed discrete-event simulation techniques for parallel execution of cellular automata | |
CN113282382B (zh) | 任务处理方法、装置、计算机设备和存储介质 | |
KR100912114B1 (ko) | 디지털 신호처리 프로세서에서 효과적인 데이터 전송을위한 메모리 운용 방법 | |
CN100449490C (zh) | 使计算存储器适合存储设备的方法和处理计算任务的方法 | |
CN109923527A (zh) | 可变类型建立器 | |
US20230121052A1 (en) | Resource resettable deep neural network accelerator, system, and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200207 |