面向神经网络处理器的自动化设计方法、装置及优化方法与流程

文档序号:11432352阅读:297来源:国知局
面向神经网络处理器的自动化设计方法、装置及优化方法与流程

本发明涉及神经网络处理器体系结构技术领域,特别涉及面向神经网络处理器的自动化设计方法、装置及优化方法。



背景技术:

深度学习及神经网络技术的飞速发展为大规模数据处理任务提供了新的解决途径,各种新型神经网络模型在处理复杂抽象问题上有着出色表现,其在视觉图像处理、语音识别及智能机器人等领域的新型应用层出不穷。

目前利用深度神经网络进行实时任务分析大多依靠大规模高性能处理器或通用图形处理器,这些设备成本高功耗大,面向便携式智能设备应用时,存在电路规模大、能量消耗高和产品价格昂贵等一系列问题。因此,针对嵌入式设备及小型低成本数据中心等应用领域中高能效实时处理的应用,采用专用神经网络处理器加速而不是软件的方式进行神经网络模型计算成为一种更有效的解决方案,然而神经网络模型的拓扑结构及参数设计会根据不同的应用场景而改变,另外神经网络模型的发展更迭速度很快,提供一种可以面向各种应用场景并覆盖各种神经网络模型的通用高效神经网络处理器非常困难,这为高层应用开发者针对不同应用需求设计硬件加速解决方案带来了极大不变。

目前现有的神经网络硬件加速技术包括专用集成电路(applicationspecificintegratedcircuit,asic)芯片和现场可编程门阵列(fieldprogrammablegatearray,fpga)两种方式。在同等工艺条件下,asic芯片运行速度快且功耗低,但设计流程复杂、投片周期长、开发成本高,无法适应神经网络模型快速更新的特点;fpga具有电路配置灵活、开发周期短的特点,但运行速度相对低,硬件开销及功耗相对较大。无论采用上述哪种硬件加速技术,均需要神经网络模型及算法开发人员在了解网络拓扑和数据流模式的同时掌握硬件开发技术,包括处理器架构设计、硬件代码编写、仿真验证及布局布线等环节,这些技术对专注于研究神经网络模型及结构设计、而不具备硬件设计能力的高层应用开发人员而言开发难度较高。因此,为了使高层开发者高效地进行神经网络技术应用开发,提供一种面向多种神经网络模型的神经网络处理器自动化设计方法及工具是非常迫切的。



技术实现要素:

针对现有技术的不足,本发明提出面向神经网络处理器的自动化设计方法、装置及优化方法。

本发明提出一种面向神经网络处理器的自动化设计方法,包括:

步骤1,获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;

步骤2,根据所述神经网络模型描述文件与所述硬件资源约束参数,从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;

步骤3,将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。

所述神经网络处理器包括存储结构、控制结构、计算结构。

所述神经网络模型描述文件包括基本属性、参数描述与连接信息三部分,其中所述基本属性包括层名称与层类型,所述参数描述包括输出层数、卷积核大小与步进大小,所述连接信息包括连接名称、连接方向、连接类型。

所述神经网络可复用单元库包括硬件描述文件及配置脚本两部分。

所述神经网络可复用单元库包括神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元。

所述神经网络处理器包括主地址生成单元、数据地址生成单元与权重地址生成单元。

还包括根据用户指定的神经网络模型与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;

根据硬件配置与网络特征生成存储器的地址访问流,所述地址访问流通过有限状态机的方式描述;

生成硬件描述语言代码,进而转化为所述神经网络处理器的硬件电路。

还包括根据所述神经网络模型、所述硬件资源约束参数、所述硬件描述语言代码,生成数据存储映射与控制指令流。

本发明还包括一种面向神经网络处理器的自动化设计装置,包括:

获取数据模块,用于获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;

生成硬件描述语言代码模块,用于根据所述神经网络模型描述文件与所述硬件资源约束参数,从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;

生成硬件电路模块,用于将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。

所述神经网络处理器包括存储结构、控制结构、计算结构。

所述神经网络模型描述文件包括基本属性、参数描述与连接信息三部分,其中所述基本属性包括层名称与层类型,所述参数描述包括输出层数、卷积核大小与步进大小,所述连接信息包括连接名称、连接方向、连接类型。

所述神经网络可复用单元库包括硬件描述文件及配置脚本两部分。

所述神经网络可复用单元库包括神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元。

所述神经网络处理器包括主地址生成单元、数据地址生成单元与权重地址生成单元。

还包括根据用户指定的神经网络模型与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;

根据硬件配置与网络特征生成存储器的地址访问流,所述地址访问流通过有限状态机的方式描述;

生成硬件描述语言代码,进而转化为所述神经网络处理器的硬件电路。

还包括根据所述神经网络模型、所述硬件资源约束参数、所述硬件描述语言代码,生成数据存储映射与控制指令流。

本发明还提出一种基于如所述的一种面向神经网络处理器的自动化设计方法的优化方法,包括:

步骤1,定义卷积核大小为k*k,步进为s,存储器宽度为d,数据图张数为t,如果k^2=d^2,将数据划分为k*k大小的数据块,数据宽度与存储器宽度一致,保证数据在存储器中连续存储;

步骤2,如果k^2!=d^2,并且步进s是k与存储器宽度d的最大公约数,将数据划分为s*s大小的数据块,保证在一张数据图中数据在存储器中连续存储;

步骤3,若以上两项都不满足,则求出步进s、k、存储器宽度d的最大公约数f,将数据分割为大小为f*f的数据块,t张数据图交替存储。

由以上方案可知,本发明的优点在于:

本发明可以将神经网络模型映射为硬件电路并根据硬件资源约束和网络特征自动优化电路结构及数据存储方式,同时生成相应的控制指令流,实现了神经网络硬件加速器的硬件及软件自动化协同设计,在缩短神经网络处理器设计周期的同时提高了神经网络处理器运算能效。

附图说明

图1是本发明提供的神经网络处理器的fpga自动实现工具工作流程图;

图2是本发明本发明可自动生成的神经网络处理器系统示意图;

图3是本发明采用的神经网络可复用单元库示意图;

图4是本发明采用的地址生成电路接口示意图。

具体实施方式

为了使本发明的目的、技术方案、设计方法及优点更加清楚明了,以下结合附图通过具体实施例对本发明进一步详细说明,应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明旨在提供面向神经网络处理器的自动化设计方法、装置及优化方法,该装置包括一硬件生成器和一编译器,所述硬件生成器可根据神经网络类型及硬件资源约束自动生成神经网络处理器的硬件描述语言代码,随后设计人员利用已有硬件电路设计方法通过硬件描述语言生成处理器硬件电路;所述编译器可根据神经网络处理器电路结构生成控制和数据调度指令流。

图1为本发明提供的神经网络处理器自动化生成技术示意图,具体步骤为:

步骤1,本发明装置读取神经网络模型描述文件,描述文件内包括网络拓扑结构和各个运算层定义;

步骤2,本发明装置读入硬件资源约束参数,硬件约束参数包括硬件资源大小及目标运行速度等,本发明装置可根据硬件约束参数生成相应的电路结构;

步骤3,本发明装置根据所述神经网络模型描述脚本和硬件资源约束从已经构建好的神经网络组件库中索引适合的单元库,该工具所包含的硬件电路生成器利用上述单元库生成对应该神经网络模型的神经网络处理器硬件描述语言代码;

步骤4,本发明装置所包含的编译器根据神经网络模型、逻辑资源约束及生成的硬件描述语言代码生成数据存储映射和控制指令流;

步骤5,通过已有硬件设计方法将硬件描述语言转化为硬件电路。

本发明可自动生成的神经网络处理器基于存储-控制-计算的结构;

存储结构用于存储参与计算的数据、神经网络权重及处理器操作指令;

控制结构包括译码电路与控制逻辑电路,用于解析操作指令,生成控制信号,该信号用于控制片上数据的调度与存储以及神经网络计算过程;

计算结构包括计算单元,用于参与该处理器中的神经网络计算操作。

图2为本发明可自动生成的神经网络处理器系统101示意图,该神经网络处理器系统101架构由七个部分构成,包括输入数据存储单元102、控制单元103、输出数据存储单元104、权重存储单元105、指令存储单元106、计算单元107。

输入数据存储单元102用于存储参与计算的数据,该数据包括原始特征图数据和参与中间层计算的数据;输出数据存储单元104存储计算得到的神经元响应值;指令存储单元106存储参与计算的指令信息,指令被解析为控制流来调度神经网络计算;权重存储单元105用于存储已经训练好的神经网络权重;

控制单元103分别与输出数据存储单元104、权重存储单元105、指令存储单元106、计算单元107相连,控制单元103获得保存在指令存储单元106中的指令并且解析该指令,控制单元103可根据解析指令得到的控制信号控制计算单元进行神经网络计算。

计算单元107用于根据控制单元103产生的控制信号来执行相应的神经网络计算。计算单元107与一个或多个存储单元相关联,计算单元107可以从与其相关联的输入数据存储单元102中的数据存储部件获得数据以进行计算,并且可以向与其相关联的输出数据存储单元104写入数据。计算单元107完成神经网络算法中的大部分运算,即向量乘加操作等。

本发明通过提供所述神经网络描述文件格式描述神经网络模型特征,该描述文件内容包括基本属性、参数描述和连接信息三部分,其中基本属性包括层名称和层类型,参数描述包括,输出层数、卷积核大小和步进大小,连接信息包括连接名称、连接方向、连接类型。

为了适应各种神经网络模型的硬件实现设计,本发明提供的神经网络可复用单元库如图3,单元库包括硬件描述文件及配置脚本两部分。本发明提供的可复用单元库包括但不局限于:神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元等。

本发明在利用上述可复用单元库构成神经网络处理器系统时,通过读取神经网络模型描述文件及硬件资源约束合理优化调用单元库。

在神经网络处理器工作过程中,处理器需要自动获取片上和片外存储器数据的地址流,在本发明中,存储器地址流由编译器确定生成,由存储器地址流确定的存储器访问模式通过文本交互至硬件生成器,存储器访问模式包括主访问模式、数据访问模式和权重访问模式等。

硬件生成器依据所述存储器访问模式地址生成单元(agu)。

利用本发明提供的神经网络处理器自动设计工具设计的神经网络处理器电路包括三种类型的地址生成单元,包括:主地址生成单元、数据地址生成单元和权重地址生成单元,其中,主地址生成单元负责片内存储器与片外存储器之间的数据交换,数据地址生成单元负责从片上存储器读取数据至计算单元以及将计算单元中间计算结果和最终计算结果存储至存储单元这两部分数据交换,权重地址生成单元负责从片上存储器读取权重数据至计算单元。

在本发明中,硬件电路生成器与编译器协同工作实现地址生成电路的设计,具体设计算法步骤为:

步骤1,本发明装置根据设计人员指定的神经网络模型和硬件约束确定数据路径,并依据神经网络中间层特征确定数据资源共享方式;

步骤2,编译器根据硬件配置和网络特征生成存储器地址访问流,所述地址访问流由编译器通过有限状态机的方式描述;

步骤3,所述有限状态机由硬件生成器映射为地址生成电路硬件描述语言,进而通过硬件电路设计方法映射为硬件电路。

图4为本发明提供的地址生成电路通用结构示意图。本发明所述地址生成电路具有通用信号接口,该接口包含的接口信号有:

起始地址信号,即数据首地址;

数据块尺寸信号,取一次数据的数据量;

存储器标志位信号,确定将数据存放的存储器编号;

工作模式信号,分为大卷积核取数据模式、小卷积核取数据模式、池化模式、全卷积模式等;

卷积核尺寸信号,定义卷积核大小;

长度信号,定义输出图片大小;

输入层数目信号,标记输入层数目;

输出层数目信号,标记输出层数目;

复位信号,该信号为1时,初始化地址生成电路;

写使能信号,指定被访问存储器进行写操作;

读使能信号,指定被访问存储器进行读操作;

地址信号,给出访问存储器地址;

结束信号,访问结束信号。

所述参数确保agu支持多种工作模式并保证在不同工作模式及神经网络传播过程中能够生成正确的读写地址流。

针对不同的目标网络,工具从所述模板中选取必要的参数构建地址发生器并提供片上及片外存储器访问模式。

本发明提供的神经网路处理器使用数据驱动的方式构建处理器架构,因此所述地址生成电路不仅提供访问地址而且驱动不同神经层和及层数据块的执行。

由于资源约束的限制,神经网络模型在映射为硬件电路时无法按照其模型描述形式完整展开,因此本发明提出的自动设计工具采用软硬件协同工作的方式优化数据存储及访问机制,包括两部分内容:首先,编译器分析神经网络处理器的计算吞吐量和片上存储器大小,将神经网络特征数据和权重数据划分为适当的数据块集中存储和访问;其次,依据计算单元规模、存储器及数据位宽在数据块内进行数据分割。

本发明基于上述优化机制提出一种数据存储及访问的优化方法,具体实施步骤为:

步骤1,定义卷积核大小为k*k,步进为s,存储器宽度为d,数据图张数为t,如果k^2=d^2,将数据划分为k*k大小的数据块,数据宽度和存储器宽度一致,保证数据在存储器中连续存储;

步骤2,如果k^2!=d^2,并且s是k和d的最大公约数,将数据划分为s*s大小的数据块,保证在一张数据图中数据可在存储器中连续存储;

步骤3,若以上两项都不满足,则求出s、k、d的最大公约数f,将数据分割为大小为f*f的数据块,t张数据图交替存储。

神经网络的计算数据包括输入特征数据和训练好的权重数据,通过良好的数据存储布局可以减小处理器内部数据带宽并提高存储空间利用效率。本发明提供的自动设计工具通过增加处理器数据存储局部性提高处理器的计算效率。

综上所述,本发明提供一款面向神经网络处理器的自动化设计工具,该工具具有从神经网络模型映射为描述神经网络处理器的硬件代码、依据硬件资源约束优化处理器架构和自动生成控制流指令等功能,实现了神经网络处理器的自动化设计,降低了神经网络处理器的设计周期,适应了神经网络技术网络模型更新快、运算速度要求块、能量效率要求高的应用特点。

应当理解,虽然本说明书是按照各个实施例描述的,但并非每个实施例仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

本发明还提出一种面向神经网络处理器的自动化设计装置,包括:

获取数据模块,用于获取神经网络模型描述文件、硬件资源约束参数,其中所述硬件资源约束参数包括硬件资源大小及目标运行速度;

生成硬件描述语言代码模块,用于根据所述神经网络模型描述文件与所述硬件资源约束参数,从已构建的神经网络组件库中查找单元库,并根据所述单元库生成对应于所述神经网络模型的神经网络处理器的硬件描述语言代码;

生成硬件电路模块,用于将所述硬件描述语言代码转化为所述神经网络处理器的硬件电路。

所述神经网络处理器包括存储结构、控制结构、计算结构。

所述神经网络模型描述文件包括基本属性、参数描述与连接信息三部分,其中所述基本属性包括层名称与层类型,所述参数描述包括输出层数、卷积核大小与步进大小,所述连接信息包括连接名称、连接方向、连接类型。

所述神经网络处理器包括主地址生成单元、数据地址生成单元与权重地址生成单元。

还包括根据用户指定的神经网络模型与硬件资源约束参数确定数据路径,并根据神经网络中间层特征确定数据资源共享方式;

根据硬件配置与网络特征生成存储器的地址访问流,所述地址访问流通过有限状态机的方式描述;

所述神经网络可复用单元库包括硬件描述文件及配置脚本两部分。

所述神经网络可复用单元库包括神经元单元、累加器单元、池化单元、分类器单元、局部响应归一化单元、查找表单元、地址生成单元、控制单元。

将所述有限状态机映射为地址,并生成硬件描述语言代码,进而转化为所述神经网络处理器的硬件电路。

还包括根据所述神经网络模型、所述硬件资源约束参数、所述硬件描述语言代码,生成数据存储映射与控制指令流。

以上所述仅为本发明示意性的具体实施方式,并非用以限定本发明的范围。任何本领域的技术人员,在不脱离本发明的构思和原则的前提下所作的等同变化、修改与结合,均应属于本发明保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1