基于有向图表示的神经网络硬件加速调度算法
文献发布时间:2023-06-19 18:32:25
技术领域
本发明属于神经网络技术领域,具体涉及一种基于有向图表示的神经网络硬件加速调度算法。
背景技术
网络拓扑结构的演化一直是神经网络发展的驱动力,目前神经网络的新型连接架构已经成为研究的重点,从链状连接到残余块、初始结构和密集连接,由于这些很创新的拓扑结果,在很多任务上做到了很好的效果。近期,神经结构搜索(NAS)框架被提出,寻找具有更好表达效果或者更少网络参数的网络结构。但是NAS的自动搜索过程导致网络的拓扑结构不可预测,各层之间的连接更加不规则。这种不可预测性和不规则性给网络在加速器上的部署带来了巨大的难度。急需一种可以针对各种网络架构的调度策略,使加速器的专用计算阵列和片上内存资源能被更加高效的得到应用。
首先,新兴网络的连接复杂性不仅体现在连接上的长距离,多依赖等,还体现在计算层之间的时序依赖。有一些工作,已经实现了利用图表示卷积神经网络(CNN)层之间的连接,但是在循环神经网络(LSTM),循环门单元(GRU),注意力模块(Attention)等神经网络模块中,都具有很多时序上的依赖,这个目前还没有工作能进行统一和表达。
另外,由于专用加速器上的片上缓存资源有限,模型的特征映射通常需要在加速器的片上缓存和外部存储器之间传输,这带来了额外的延迟,降低了能源效率。
发明内容
本发明是为解决上述问题而进行的,目的在于提供一种基于有向图表示的神经网络硬件加速调度算法,本发明采用了如下技术方案:
本发明提供了一种基于有向图表示的神经网络硬件加速调度算法,其特征在于,包括:步骤S1,基于图论对目标神经网络进行建模,算子使用节点表示,算子依赖使用边表示,依赖的时序性通过边的权值表示,得到目标神经网络的有向图;步骤S2,以减少数据的片上传输为目的,基于有向图中节点的依赖性搜索有向图的图计算路径,得到搜索结果;步骤S3,以提高片上缓存的效率为目的,基于图计算路径以及有向图的依赖性,对片上缓存的资源进行动态分配。
本发明提供的基于有向图表示的神经网络硬件加速调度算法,还可以具有这样的技术特征,其中,算子具有算子输入以及算子输出,算子依赖用于描述算子输入以及算子输出的方向,方向使用有向边表示,算子输入的方向为入边,算子输出的方向为出边。
本发明提供的基于有向图表示的神经网络硬件加速调度算法,还可以具有这样的技术特征,其中,将搜索结果按顺序放入算子的处理队列,对于每个节点,判断该节点的前向节点是否已被添加到处理队列,当判断为是时,将节点添加到处理队列;当判断为否时,遍历前向节点并迭代进行前向节点的添加。
本发明提供的基于有向图表示的神经网络硬件加速调度算法,还可以具有这样的技术特征,其中,将搜索结果按顺序放入算子的处理队列,对于每个节点,判断该节点的条件是否满足以及该节点是否已被添加到处理队列,当判断为是时,检查并判断节点的后续节点是否有已满足条件的后处理节点,当判断为是时,将节点以及后续节点进行融合计算。
本发明提供的基于有向图表示的神经网络硬件加速调度算法,还可以具有这样的技术特征,其中,算子输入包括缓存的大小、目标神经网络的有向图以及目标神经网络输入单个数据的维度,算子输出包括可批处理进行的输入数据的大小以及计算过程中各个算子输出在缓存上存储的地址分配。
本发明提供的基于有向图表示的神经网络硬件加速调度算法,还可以具有这样的技术特征,其中,对每个节点,判断该节点是否与其他节点融合,当判断为是时,融合后的最后一个算子将节点的计算结果输出到片上缓存中进行临时存储;当判断为否时,将该节点的计算结果输出到片上缓存中进行临时存储。
本发明提供的基于有向图表示的神经网络硬件加速调度算法,还可以具有这样的技术特征,其中,当一个节点计算完成后,在有向图中进行搜索,将不再被后续待计算节点依赖的节点所占的片上缓存进行释放。
本发明提供的基于有向图表示的神经网络硬件加速调度算法,还可以具有这样的技术特征,其中,算子包括卷积、全连接、批归一化、偏置处理、向量乘、向量加以及激活函数。
发明作用与效果
根据本发明的基于有向图表示的神经网络硬件加速调度算法,基于图论对目标神经网络进行建模,得到该神经网络的有向图表示,这种新型的神经网络表示方法实现了对带有时序依赖的神经网络的统一表示,能很好地表示现有的各种神经网络,并且具有良好的拓展性,能兼容未来可能出现的各种新型神经网络结构。
进一步地,基于该有向图,通过图计算路径搜索算法,可以最大程度地减小计算模块和片上存储模块之间的数据搬运,不仅如此,基于图计算路径以及有向图的依赖性,可以动态释放片上缓存的非依赖性结果,也即可以对片上缓存资源进行动态分配,大大提高片上缓存的利用效率,从而可以批次进行更多数据的处理。两者结合能够提高神经网络加速器的普适性,提高其计算效率,并减少加速器硬件的功耗以及延时。
附图说明
图1是本发明实施例的基于有向图表示的神经网络硬件加速调度算法流程图;
图2是本发明实施例的图表示神经网络的示意图;
图3是本发明实施例的图计算路径搜索的示例图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明的基于有向图表示的神经网络硬件加速调度算法作具体阐述。
<实施例>
图1是本发明实施例的基于有向图表示的神经网络硬件加速调度算法流程图。
如图1所示,基于有向图表示的神经网络硬件加速调度算法包括以下步骤:
步骤S1,基于图论对目标神经网络进行建模,算子使用节点表示,算子依赖使用边表示,依赖的时序性通过边的权值表示,得到该目标神经网络的有向图。
图2是本发明实施例的图表示神经网络的示意图。
如图2所示,较佳地,神经网络的算子使用图节点表示,所述算子包括输入,全连接,卷积,归一化层,偏置层,激活函数层,向量乘,向量加等算子。
较佳地,神经网络的输入输出关系使用有向边表示:一个算子的入边表示其输入来源,出边表示其输出方向。一个算子可以有多个入边,也可以有多个出边。
步骤S2,以减少数据的片上传输为目的,基于有向图中节点的依赖性搜索有向图的图计算路径,得到搜索结果。
其中,片上传输是指神经网络加速器芯片内部的数据传输。在流行的神经网络加速器中,片上缓存是为了减少片上片外的数据交互而普遍设计的。而除此之外,片上的计算模块和缓存模块之间的数据传输也是功耗不可忽略的源头之一。为了减少该数据交互,我们在计算时候会将可以连续计算的单元尽可能不传出计算模块,进行连续计算后再将最后结果从计算模块传入到缓存模块。这种做法最大程度上减少了数据在计算和存储之间的搬运次数。
图3是本发明实施例的图计算路径搜索的示例图。
如图3所示,在步骤S1建好的有向图的基础上,根据节点的依赖关系对算子进行计算排序。按照以下排序原则来进行算子的计算排序:
如果当前节点的前向节点未完全加入计算队列,则先将其前向节点加入计算队列;
如果当前节点的后续节点中有后处理算子,将当前节点加入计算队列并将节点的结果设置为不输出到计算模块,然后将后处理算子紧接着当前节点加入计算队列;
如果当前节点的后续节点中没有后处理算子,将当前节点加入计算队列并将节点的结果设置为输出到缓存模块;
如果所有节点都已经加入了计算队列,则计算完成。
步骤S3,以提高片上缓存的效率为目的,基于图计算路径以及有向图的依赖性,结合部分硬件参数,对片上缓存的资源进行动态分配。
本实施例中,片上缓存的效率定义为在不与片外存储进行交互的情况下,片上缓存最多能处理的数据量。
在神经网络加速器中,片上缓存通常分为两个部分,负责进行神经网络权重存储的权重缓存模块;以及负责进行输入数据、网络计算中间结果、网络计算最终结果的存储的特征图缓存模块。
对于权重缓存模块,由于权重的数据量是固定的,所以只需要做一个静态的片上缓存的地址分配。
对于特征图缓存模块,由于需要缓存的中间结果是不断变化的,而且在一个由多个算子组成的神经网络计算图中,一些靠前的算子的计算结果在中间某个时间点之后就不再需要,这个时候完全可以将其所占用空间进行释放来存储更多的计算数据。这个过程叫做缓存空间的动态分配。
所以提高片上缓存的效率主要指提高特征图缓存模块的效率。
步骤S3中的片上缓存资源的动态分配算法分为三个步骤:
步骤S3-1,根据步骤S2中对计算节点的排序进行输出地址的动态分配;
步骤S3-2,判断当前计算节点的结果是否需要输出到缓存模块,当判断为是时,在特征图缓存模块寻找第一个符合该输出大小的地址进行分配,当判断为否时,则不需要进行地址分配;
步骤S3-3,当前计算节点的结果输出完成之后,在整个计算图中搜索,如果某个存储在缓存中的结果已经不再被后续未计算的节点需要,则可以在缓存中将其空间释放,从而实现片上缓存资源的动态分配。
如上所述,将目标神经网络用有向图来进行表示,并得到该神经网络的算子计算顺序以及计算过程中的中间结果动态,结合部分硬件参数,实现了片上数据搬运的减少以及对片上缓存资源的动态分配,从而提高了计算效率,减少了硬件的功耗和延时。
实施例作用与效果
根据本实施例提供的基于有向图表示的神经网络硬件加速调度算法,基于图论对目标神经网络进行建模,得到该神经网络的有向图表示,这种新型的神经网络表示方法实现了对带有时序依赖的神经网络的统一表示,能很好地表示现有的各种神经网络,并且具有良好的拓展性,能兼容未来可能出现的各种新型神经网络结构。
进一步地,基于该有向图,通过图计算路径搜索算法,可以最大程度地减小计算模块和片上存储模块之间的数据搬运,不仅如此,基于图计算路径以及有向图的依赖性,可以动态释放片上缓存的非依赖性结果,也即可以对片上缓存资源进行动态分配,大大提高片上缓存的利用效率,从而可以批次进行更多数据的处理。两者结合能够提高神经网络加速器的普适性,提高其计算效率,并减少加速器硬件的功耗以及延时。
上述实施例仅用于举例说明本发明的具体实施方式,而本发明不限于上述实施例的描述范围。
- 一种基于有向图的连接线表示方法
- 一种基于有向图的连接线表示方法