一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种面向众核架构的神经网络拓扑结构映射方法

2022-11-16 14:49:52 来源:中国专利 TAG:


1.本发明涉及高性能计算机编译技术领域,尤其是涉及一种面向众核架构的神经网络拓扑结构映射方法。


背景技术:

2.神经网络为了达到更高的性能,一般具有复杂的拓扑结构和海量的可学习参数。在神经网络中,每个神经元与数十乃至数千神经元相连,形成庞大复杂的连接关系。神经网络的学习和推理过程中,计算量较为均匀地分布在每个神经元。针对这种特性设计的神经计算芯片由同构核心的二维阵列组成,每个核心具有一定的计算和存储能力,并且通过片上网络进行通信。神经网络拓扑结构的编译过程,也就是把神经网络的拓扑结构切分为数个子拓扑结构,得到子拓扑结构与神经计算芯片核心之间的一对一映射关系,最终输出神经元与核心之间的多对一映射关系,从而实现神经网络在神经计算芯片上的部署。
3.神经元之间的数据传递最终是通过神经计算芯片的片上网络完成的,因此需要考虑网络拥塞、时延等问题。数据在神经计算芯片上的传输距离与传输时间、传输能耗是正相关的。减少传输距离可以降低时延和能耗,从而使神经网络在神经计算芯片上以更高的效率执行。
4.研究者们设计了多种神经网络拓扑结构的编译技术。shiming li等人提出的sneap和adarsha balaji等人提出的spinemap等编译技术,都可以解决小规模神经网络的拓扑结构映射问题。这些编译技术把编译过程分为两个阶段,分别是切分阶段和映射阶段。在切分阶段中,先利用matching概念对神经网络拓扑结构的规模进行缩减,然后利用kernighan-lin算法或其变体对拓扑结构进行切分,形成数个子拓扑结构。最后,再将神经网络恢复到缩减前的拓扑结构,并在此过程中应用优化方法,对切分方案进行优化。经过切分阶段后,神经网络中的神经元集合被切分为数个子集。在映射阶段,利用粒子群优化等通用的启发式算法,每个子集分配一个神经计算芯片核心,最终得到神经元到核心的多对一映射关系。
5.由于神经网络拓扑结构映射技术需要在神经网络的拓扑结构进行上进行操作,一般需要处理上百万神经元和数亿连接关系。上述编译技术尽管对神经网络的规模进行缩减,但相关论文中只给出了针对由数千神经元组成的小规模神经网络的实验结果,难以完成对较大规模的神经网络的处理。其次,映射关系是通过通用的启发式算法得到的,这些算法对于映射问题的缺乏特异性,性能和效率不佳。综上,有必要设计一种能够处理大规模神经网络,同时对映射中的优化问题具有特异性的神经网络拓扑结构映射技术。


技术实现要素:

6.为了解决现有技术的不足,本发明提供了一种面向众核架构的神经网络拓扑结构映射方法,能够处理大规模的神经网络,实现更好的编译性能,扩展神经计算芯片可运行的神经网络范围。
7.一种面向众核架构的神经网络拓扑结构映射方法,包括:
8.步骤s1,将神经网络的拓扑结构保存为特定数据结构的二进制文件,后续步骤中生成的拓扑结构均以该格式保存在文件系统中,借助特定数据结构进行读取和写入;
9.步骤s2-1,对神经网络拓扑结构的规模进行缩减;随机顺序遍历当前拓扑结构中的所有顶点,选择出符合条件的所有顶点对,每个顶点对中的两个顶点被合成为一个新顶点,生成缩减后的新拓扑结构;
10.步骤s2-2,对于新拓扑结构,重复进行步骤s2-1,直到缩减后顶点的数量较缩减之前的减少率低于设定比例;
11.步骤s3-1,对拓扑结构进行二分,形成两个顶点数量相近的两个子拓扑结构;
12.步骤s3-2,重复对新生成的子拓扑结构进行步骤s3-1的操作,直到所有子拓扑结构中的顶点尺寸之和不超过神经计算芯片核心的容量限制;
13.步骤s4,对所有子拓扑结构进行编号,得到顶点到子拓扑结构的多对一映射关系;
14.步骤s5-1,将得到的映射关系对应到缩减前的拓扑结构;定义跨子拓扑结构的边的权重和为c,按随机顺序遍历所有顶点,并将顶点转移到使c下降最多的子拓扑结构中;
15.步骤s5-2,重复步骤s5-1,直到获得原图上顶点序号到子拓扑结构的多对一映射关系;
16.步骤s6,将每个子拓扑结构中的神经元打包为一个神经元组,得到神经元序号到神经元组序号的映射;
17.步骤s7,在神经计算芯片或神经计算芯片阵列上寻找作为编译的目标区域;
18.步骤s8-1,将目标区域切分为两个子区域,同时将神经元组切分为两个小组;切分时保证小组的尺寸不超过对应子区域的容量限制;
19.步骤s8-2,重复步骤s8-1,直到每个小组中只有一个神经元组,对应神经计算芯片上的一个核心,得到初步映射方案;
20.步骤s9-1:计算每个神经元组受到的假想力,并将受力最大的一部分神经元组向受力方向移动;
21.步骤s9-2:重复步骤s9-1,直到达到最大迭代次数;
22.步骤s10:解构神经元组,得到神经网络神经元到神经计算芯片核心的多对一映射关系,即拓扑结构映射的最终结果。
23.进一步地,步骤s1中,将神经网络的拓扑结构保存为特定数据结构的二进制文件具体为:
24.顶点的序号、权重、尺寸信息都使用变长类型来保存;每个字节的八位中,最高位表示本字节是否是最后一个字节,0代表最后一个字节,1表示不是最后一个字节;
25.拓扑结构的所有连接按顶点来组织,每个顶点相邻的连接被写入同一个文件中;在该文件中,首先是本文件中连接的数量,然后按照标记信息、该连接的另一个顶点的序号、尺寸、权重的顺序,把每条连接的相关信息依次保存下来;最后使用deflate压缩算法,将所有文件保存至zip文件中。
26.步骤s2-1中,选择出符合条件的所有顶点对具体条件为:
27.两个顶点没有被其他顶点对标记,且两个顶点合并后的尺寸没有超过神经计算芯片核心容量限制的1/15。
28.对神经网络拓扑结构的规模进行缩减时,需计算原拓扑结构所有连接的权重之和、新拓扑结构中所有连接的权重之和,得到权重和的减少量;由于遍历顶点时使用了随机顺序,故而需要重复该过程4到8次,选择出权重和减少量最大的新拓扑结构作为最终的输出。
29.步骤s2-2中,直到缩减后顶点的数量较缩减之前的减少率低于20%。
30.步骤s3-1和s3-2的具体过程为:
31.切分过程开始时,所有顶点都处于未选择集合中,选择集合为空;首先,从未选择集合中随机选择一个顶点,加入选择集合;对于未选择集合中的每一个顶点,需要计算其选择成本;顶点的选择成本是与其相邻的所有连接中,连接未选择集合中顶点的连接的权重之和,与连接选择集合中顶点的连接的权重之和的差值;
32.每一次迭代时,将选择成本最小的顶点从未选择集合中移动到选择集合中,然后更新与该顶点相邻的顶点的选择成本;使用最小优先队列维护顶点的选择成本数据,避免每次迭代中排序或遍历所有顶点;
33.重复迭代直到选择集合的大小达到原拓扑结构中顶点数量的一半;此时,所有同时与未选择集合和选择集合中顶点相邻的连接的权重之和,就是该切分方案的切分成本;
34.由于选择集合的初始值是通过随机选择的方式构造的,所以需要重复上述步骤4到8次,选择出切分成本最低的切分方案;对于切分得到的两个新的子拓扑结构来说,如果其中顶点的尺寸之和超过了神经计算芯片核心的容量限制,那么递归地执行上述切分步骤,最终得到的所有子拓扑结构都满足神经计算核心的容量限制。
35.步骤s7中,目标区域上的核心数量与切分方案中的子拓扑结构数量相等。
36.步骤s9-1的具体过程为:
37.对于初步映射方案中的每一条连接,假设其连接了子拓扑结构u和v,设w是这条连接的权重,(xu,yu)和(xv,yv)分别是u和v在芯片或芯片阵列上的坐标;那么子拓扑结构u受到的力为fu=(xv-xu,yv-yu),子拓扑结构v受到的力为fv=(xu-xv,yu-yv);对于每个子拓扑结构,用算法计算其受到的合力;根据子拓扑结构受到的合力大小进行排序,根据从大到小的顺序遍历受到合力最大的5%的子拓扑结构;
38.对于每个被遍历到的子拓扑结构,在其期望移动的方向上,寻找另一个子拓扑结构与其交换;本子拓扑结构所受合力的变化量与被交换的子拓扑结构所受合力的变化量之和,就是本次交换的交换成本;找到交换成本最低的交换方案并进行交换。
39.与现有技术相比,本发明具有以下有益效果:
40.本发明的面向众核架构的神经网络拓扑结构映射技术,使用基于缩减规模、初步切分、扩增规模、构造映射方案的四步算法框架,通过将拓扑结构保存至文件系统,通过图划分算法和力引导算法的应用,从而使得编译大规模神经网络的拓扑结构时的内存占用大幅减少,进而拓展了可部署至神经计算芯片的神经网络的范围。同时,通过使用对映射问题具有特异性的启发式算法,大幅减少了迭代次数和运行时间,提高编译效率,同时保证编译结果的质量。
附图说明
41.图1为本发明一种面向众核架构的神经网络拓扑结构映射方法的流程图;
42.图2为本发明中拓扑结构的二进制文件示意图;
43.图3为本发明中缩减拓扑结构的规模示意图;
44.图4为本发明中子拓扑结构受到的假想力示意图。
具体实施方式
45.下面结合附图和实施例对本发明做进一步详细描述,需要指出的是,以下所述实施例旨在便于对本发明的理解,而对其不起任何限定作用。
46.如图1所示,一种面向众核架构的神经网络拓扑结构映射方法,基于缩减规模、初步切分、扩增规模、构造映射方案的四步算法框架,具体包括如下步骤:
47.步骤s1:将神经网络的拓扑结构保存为特定结构的二进制文件,便于后续步骤中读取。以下步骤中生成的拓扑结构均以该格式保存在文件系统中,借助特定数据结构进行读取和写入。
48.步骤s2-1:对神经网络拓扑结构的规模进行缩减。选择出符合条件的所有顶点对,每个顶点对中的两个顶点被合成为一个新顶点,生成缩减后的新拓扑结构。
49.步骤s2-2:重复进行步骤s2-1,直到缩减后顶点的减少量低于一定比例。
50.步骤s3-1:对拓扑结构进行二分,形成两个顶点数量相近的两个子拓扑结构。
51.步骤s3-2:重复对新生成的子拓扑结构进行步骤s3.1的操作,直到所有子拓扑结构中的顶点尺寸之和不超过神经计算芯片核心的容量限制。
52.步骤s4:对所有子拓扑结构进行编号,得到顶点到子拓扑结构的多对一映射关系。
53.步骤s5-1:将得到的映射关系对应到缩减前的拓扑结构。定义跨子拓扑结构的边的权重和为c。按随机顺序遍历所有顶点,并将顶点转移到使c下降最多的子拓扑结构中。
54.步骤s5-2:重复步骤s5-1,直到获得原图上顶点序号到子拓扑结构的多对一映射关系。
55.步骤s6:将每个子拓扑结构中的神经元打包为一个神经元组,得到神经元序号到神经元组序号的映射。
56.步骤s7:在神经计算芯片或神经计算芯片阵列上寻找可用区域,作为编译的目标区域。
57.步骤s8-1:将目标区域切分为两个子区域,同时将神经元组切分为两个小组。切分时保证小组的尺寸不超过对应子区域的容量限制。
58.步骤s8-2:重复步骤s8-1,直到每个小组中只有一个神经元组,对应神经计算芯片上的一个核心。
59.步骤s9-1:计算每个神经元组受到的假想力,并将受力最大的一部分神经元组向受力方向移动。
60.步骤s9-2:重复步骤s9-1,直到达到最大迭代次数。
61.步骤s10:解构神经元组,得到神经网络神经元到神经计算芯片核心的多对一映射关系,即拓扑结构映射的最终结果。
62.下面对本发明每个步和优化方法进行详细说明。
63.拓扑结构的保存和读取
64.神经网络拓扑结构中可能包含数以亿计的连接关系,难以保存在内存中。为了降
低内存使用,拓扑结构会被保存在文件系统中。一个含有数亿连接关系的神经网络,保存为文件之后大小可达数gb。在拓扑结构映射过程中,还会生成大量拓扑结构中间结果。因此,保存为文件的方式也需要专门的设计。
65.为了节省空间,顶点序号、权重、尺寸等信息都使用变长类型来保存。每个字节的八位中,最高位表示本字节是否是最后一个字节。0代表最后一个字节,1表示不是最后一个字节。如图2所示,左图中表示的数据是000010010101010010101和0001101。拓扑结构的所有连接按顶点来组织,每个顶点相邻的连接被写入同一个文件中。在该文件中,首先是本文件中连接的数量,然后按照标记信息、该边连接的另一个顶点的序号、尺寸、权重的顺序,把每条连接的相关信息依次保存下来。最后使用deflate压缩算法,将所有文件保存至zip文件中,大幅减少拓扑文件占用的空间。
66.缩减拓扑结构的规模
67.为了缩减拓扑结构的规模,需要选出符合条件的顶点对,然后将每一个顶点对中的两个顶点合成为一个顶点,如图3所示。为了筛选顶点对,按随机顺序遍历拓扑结构中的所有顶点。对于每个顶点,找到与其相邻的权重最大的连接。满足以下条件时,可以将这条连接相邻的两个顶点标记为一个顶点对:
68.(1)两个顶点没有被其他顶点对标记。
69.(2)两个顶点合并后的尺寸没有超过神经计算芯片核心容量限制的1/15。
70.遍历完所有顶点后,将标记好的顶点对分别合并,得到新的拓扑结构。计算原拓扑结构所有连接的权重之和、新拓扑结构中所有连接的权重之和,得到权重和的减少量。由于遍历顶点对时使用了随机顺序,故而需要重复该过程4到8次,选择出权重和减少量最大的新拓扑结构作为输出,避免随机性对算法的影响。
71.重复执行以上过程,直到缩减后得到的新拓扑结构中顶点的数量较缩减之前的减少率低于20%。过低的减少率说明此时拓扑结构中的顶点尺寸接近神经计算芯片核心容量的1/15,无法得到符合条件的顶点对。
72.构造初步切分方案
73.缩减拓扑结构中的顶点和连接数量能够显著减少后续步骤的运行时间。本过程在缩减后的拓扑结构上构造初步的切分方案,即把拓扑结构中的顶点切分成一定数量的子集,并且保证每个子集中顶点的尺寸和不超过神经计算芯片核心的容量限制。
74.切分过程开始时,所有顶点都处于未选择集合中,选择集合为空。首先,从未选择集合中随机选择一个顶点,加入选择集合。对于未选择集合中的每一个顶点,需要计算其选择成本。顶点的选择成本是与其相邻的所有连接中,连接未选择集合中顶点的连接的权重之和,与连接选择集合中顶点的连接的权重之和的差值。每一次迭代时,将选择成本最小的顶点从未选择集合中移动到选择集合中,然后更新与该顶点相邻的顶点的选择成本。使用最小优先队列维护顶点的选择成本数据,可以避免每次迭代中排序或遍历所有顶点。
75.重复迭代直到选择集合的大小达到原拓扑结构中顶点数量的一半。此时,所有同时与未选择集合和选择集合中顶点相邻的连接的权重之和,就是该切分方案的切分成本。
76.由于选择集合的初始值是通过随机选择的方式构造的,所以需要重复上述步骤4到8次,选择出切分成本最低的切分方案。对于切分得到的两个新的子拓扑结构来说,如果其中顶点的尺寸之和超过了神经计算芯片核心的容量限制,那么递归地执行上述切分步
骤。最终得到的所有子拓扑结构都满足神经计算核心的容量限制。
77.将初步切分方案扩增到原拓扑结构
78.前一步骤得到的初步切分方案是在缩减后的拓扑结构上的,因此需要将缩减过程反向应用在初步切分方案上,得到原拓扑结构上的切分方案。在这一过程中,还需要对初步切分进行优化。从原拓扑结构到最终构造初步切分方案使用的拓扑结构之间,可能经过了数次缩减。本转换过程依次反向应用这些缩减方案,并且在每次反向应用之前使用优化算法,优化初步切分方案。
79.对于每个顶点,需要计算它相对于每个子拓扑结构的度。假设原拓扑结构经过前述步骤被切分为n个子拓扑结构,分别编号为v1到vn。对于位于vi的顶点v来说,分别计算连接v和n个子拓扑结构中顶点的所有连接的权重和。由于共有n个子拓扑结构,因此可以得到n个权重和,命名为w1到wn。其中第wi就是顶点v与其所在的子拓扑结构中的其他顶点间的所有连接的权重和。此时可以计算顶点i的转移代价,将顶点i转移到第k个子拓扑结构的转移成本就是cik=wi-wk,因为它使切分方案的切分成本增加了cik。
80.在优化过程中,算法按随机顺序遍历所有顶点,计算每个顶点能够得到的最低的转移成本,如果最低转移成本为负,那么尝试将该顶点转移到最低转移成本对应的子拓扑结构中。如果转移后该子拓扑结构的中所有顶点的尺寸之和不超过神经计算芯片核心的容量限制,那么可以成功进行转移;不能进行转移时,按照转移成本从低到高顺序,继续尝试将顶点转移到其他子拓扑结构。顶点的转移会影响到其他顶点的转移成本,因此顶点转移发生后,需要更新其他顶点的转移成本,
81.优化完成后,将本次缩减中合并为一个顶点的顶点对还原出来,就得到了上一层拓扑结构上的切分方案。持续对切分方案进行优化和转移,直到得到原拓扑结构上的切分方案
82.使用二分法构造初步映射方案
83.首先需要在神经计算芯片或者芯片阵列上规划出一块矩形区域作为目标区域,该目标区域上的核心数量与切分方案中的子拓扑结构数量应该相等。可以将矩形区域中的某些核心标记为不可用来满足数量相等的要求。
84.如果核心数量和子拓扑结构数量都是1,那么将二者绑定,即映射方案中该子拓扑结构会被映射至这一核心。否则,进行以下的二分算法。将目标区域从较长边的一半位置切分为两个子目标区域;利用构造初步切分方案步骤中的算法,将子拓扑结构的集合切分为两个子集。然后,对两个子目标区域和两个子集分别重复上述步骤。
85.上述过程完成后,每个子拓扑结构都将与一个神经计算芯片核心进行绑定,得到了初步映射方案。
86.使用力引导算法优化初步映射方案
87.力引导算法中子拓扑结构受到的假想力如图4所示。对于上述映射方案中的每一条连接,假设其连接了子拓扑结构u和v,设w是这条连接的权重,(xu,yu)和(xv,yv)分别是u和v在芯片或芯片阵列上的坐标。那么子拓扑结构u受到的力为fu=(xv-xu,yv-yu),子拓扑结构v受到的力为fv=(xu-xv,yu-yv)。对于每个子拓扑结构,算法计算其受到的合力。根据子拓扑结构受到的合力大小进行排序,根据从大到小的顺序遍历收到合力最大的5%的子拓扑结构。
88.对于每个被遍历到的子拓扑结构,在其期望移动的方向上,寻找另一个子拓扑结构与其交换。本子拓扑结构所受合力的变化量与被交换的子拓扑结构所受合力的变化量之和,就是本次交换的交换成本。找到交换成本最低的交换方案并进行交换。
89.重复上述步骤,直到没有可以实行的交换方案,或者达到了最大迭代次数。
90.生成编译结果
91.拓扑结构中的每一个顶点都对应一个神经元。根据优化后的映射方案,可以获得拓扑结构顶点到神经计算芯片核心的多对一映射,实际上就是神经网络神经元到神经计算芯片核心的多对一映射关系,也就是神经网络拓扑结构映射的目标输出结果。
92.以上所述的实施例对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的具体实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献