本发明属于新型人工智能软件体系结构领域,具体涉及神经元计算机操作系统的snn模型动态映射方法及装置。
背景技术:
1、传统的冯诺依曼体系结构的计算机难以满足目前高速发展的人工智能计算性能需求,尤其是面对低功耗高性能计算领域,如边缘计算。因此,脉冲神经网络为寻求更低功耗和更高效计算性能提供了一条可行的路径,但在冯诺依曼体系结构计算机上仿真脉冲神经网络较困难,为了解决这一难题,出现了类脑计算芯片,类脑计算芯片通过对生物大脑结构的模仿来运行脉冲神经网络;相对于现有的计算体系结构,类脑计算是借鉴了生物大脑中信息处理的基本规律,在硬件实现与软件算法等多层面做出了本质变革,从而实现在功耗和计算能力等诸多方面的大幅改进。类脑计算机是由多个类脑计算芯片采用水平扩展的方式构建而成,具有运行超大规模脉冲神经任务能力的新型计算机模型。神经元计算机操作系统为用户提供透明的计算资源管理及snn模型映射到类脑计算资源的能力。snn(spiking neural network,脉冲神经网络)模型是指经由类脑编译器编译输出的可部署到类脑硬件的脉冲神经网络及其依赖的编解码算法。
2、在类脑应用的软硬件生态系统中,在编译阶段完成基于硬件约束的snn模型神经元簇到神经元拟态核的映射。为了实现神经网络模型和类脑硬件的解耦合,大部分生态系统在编译阶段完成的模型映射是映射到逻辑神经元计算核,在映射阶段只考虑基于核心约束的模型映射方案,但不考虑全局的物理神经元计算核的运行现状,如输入/输出路由、资源碎片、路由拥塞等。
3、类脑计算芯片是由m*n的二维网格结构组成,多个芯片通过互联线级联,实现更大规模的二维网格结构,每个网格包括一个路由模块和一个神经拟态核,神经拟态核可以模拟神经元和突触的行为。由于类脑计算芯片的特性,神经元计算机操作系统只能与类脑计算芯片的边缘核心交互,输入路由是指为了将脉冲源从芯片外输入到物理神经元拟态核的路由,输出路由是指模型的发放神经元发送脉冲到芯片外的路由。
4、神经元计算机操作系统负责将类脑计算资源抽象为一个大型的二维网格,并负责类脑计算资源的管理,如为snn模型分配物理神经元计算核,资源释放和状态更新等。神经元计算机操作系统支持多个snn模型的并行部署,统一为多个snn模型分配资源,在分配资源时结合降低类脑计算资源的碎片化以及片上网络脉冲路由拥塞情况等策略统一为多个snn模型动态分配资源。神经元计算机操作系统在为snn模型分配资源时,将逻辑神经元拟态核映射到物理神经元拟态核,当物理资源存在碎片时,那么snn模型将无法按照逻辑神经元拟态核的相对位置一一映射到物理神经元拟态核,神经元计算机操作系统将按照当下的物理资源重新映射逻辑神经元拟态核到空闲的物理神经元拟态核。
技术实现思路
1、为解决现有技术的不足,在重新映射神经元拟态核时,考虑输入输出神经元核心以及核心间的通信代价,实现snn模型运行时脉冲通信路由代价最小化的目的,本发明采用如下的技术方案:
2、神经元计算机操作系统的snn模型动态映射方法,神经元计算机操作系统资源管理模块为snn模型分配硬件资源块,硬件资源块是根据物理神经元拟态核的坐标分布的矩阵,根据神经元计算机操作系统与片上网络核心交互的通道设定输入输出方向,将脉冲源作为虚拟输入节点,脉冲目的作为虚拟输出节点,动态映射方法包括如下步骤:
3、步骤s1:设置节点映射之间的权重;设定虚拟输入节点到逻辑经元拟态核及逻辑经元拟态核到虚拟输出节点的权重,将编译器输出的神经元簇映射到一组逻辑神经元拟态核,获取一组逻辑神经元拟态核及其节点之间连接关系和权重信息;
4、步骤s2:初始解空间映射;将逻辑神经元拟态核的节点映射到物理神经元拟态核的核心,得到基于映射关系的初始解空间;
5、步骤s3:构建脉冲通信代价计算模型;根据节点之间连接关系、初始解空间,以及输入、输出虚拟节点相对物理神经元拟态核边缘核心的位置,计算前继节点与后继节点对应物理坐标间的距离,基于节点间的距离和对应的权重信息,得到脉冲通信代价;
6、步骤s4:基于初始解空间,通过贪心算法遍历逻辑神经元拟态核在不同空闲物理神经元拟态核时的脉冲通信代价,得到最小脉冲通信代价时,逻辑神经元拟态核与物理神经元拟态核的映射关系,从而最小化核心间脉冲通信距离和最小化输入输出。
7、进一步地,所述步骤s1中,脉冲源和脉冲目的是位于物理神经元拟态核之外的节点,基于硬件封包协议,为了最小化脉冲输入输出为目标,即尽量将脉冲输入和脉冲输出的逻辑神经元拟态核分配到离输入输出方向较近的物理神经元拟态核上,因此,为了使虚拟输入节点到物理神经拟态核心之间的路由步长最短,当逻辑神经元拟态核映射到物理神经元拟态核后,如果此物理神经元拟态核的入度是虚拟输入节点,则此物理神经元拟态核的虚拟输入节点为距离此物理神经元拟态核最近的位置,如果此物理神经元拟态核的出度是虚拟输出节点,则此物理神经元拟态核的虚拟输出节点为距离此物理神经元拟态核最近的位置,根据位置设定虚拟输入节点到逻辑经元拟态核及逻辑经元拟态核到虚拟输出节点的权重。
8、进一步地,所述步骤s3的脉冲通信代价计算模型,公式如下:
9、
10、说明:m表示节点之间连接关系和权重信息node_graph_and_weight中前继节点个数,n表示前继节点所有连接的后继节点个数,表示节点映射的物理神经元拟态核core,和分别表示物理神经元拟态核core的横、纵坐标值,表示节点到节点的连接的权重;芯片内路由采用xy策略,物理神经元拟态核到的路由步长为两个核心之间的曼哈顿距离:step()=|[x]- [x]|+|[y]-[y]|。
11、进一步地,输入、输出方向是神经元计算机操作系统与片上网络核心交互的通道,基于输入、输出方向,则设置对应的输入、输出核心。
12、进一步地,基于硬件限制输入、输出方向一共有四个方向,包括左west、右east、上north、下sourth,基于输入、输出方向direct=west、east,设置对应的输入、输出核心为(-1,[y])、(-1,[y]),-1表示硬件资源块以外的左侧位置,[y]表示第i个作为前继节点的核心,其入度是虚拟输入节点,[y]表示第j个作为后继节点的核心,其出度是虚拟输出节点。
13、进一步地,设置逻辑神经元拟态核连接关系和权重字典的变量node_graph_and_weight;根据硬件资源分配情况,构建全局变量cores,包括物理神经元拟态核坐标和占用情况,步骤s4包括如下步骤:
14、步骤s4.1:基于初始解空间node_and_map_to_core,计算脉冲通信代价,并作为当前最小脉冲通信代价cost_min;
15、步骤s4.2:设置临时变量core_map_node记录当前的初始解空间node_and_map_to_core,基于当前初始解空间node_and_map_to_core得到物理神经元拟态核到逻辑神经元拟态核的映射字典;
16、步骤s4.3:设置临时变量node_a_tmp、node_b_tmp、core_a_tmp、core_b_tmp,记录此次迭代中脉冲通信代价最小的一次核心交换;
17、步骤s4.4:遍历逻辑神经元拟态核nodes中的第一节点node_a,以第一节点node_a为基础,遍历逻辑神经元拟态核cores中的每个物理神经元拟态核坐标,即遍历第二核心core_b及其占用情况;将临时变量mapping_in_iter的初始值设为当前初始解空node_and_map_to_core,表示在cores的循环内,都从此次迭代的最优映射方案为基础,从临时变量mapping_in_iter中查询第一节点node_a当前映射的物理神经元拟态核,即第一核心core_a,从临时变量core_map_node中查询当前循环的物理神经元拟态核中已被映射的逻辑神经元拟态核,即第二核心core_b对应的第二节点node_b,若未被映射,则第二节点node_b为空;若node_b为空,则更新临时变量mapping_in_iter,将第一节点node_a映射的物理神经元拟态核,改为第二核心core_b;
18、若第一核心core_a等于第二核心core_b,则跳过本次基于全局变量cores的遍历,直接进入下一个物理神经元拟态核的遍历;
19、若第二核心core_b已经被其他节点映射,即node_b不为空,则交换第一节点node_a与第二节点node_b映射的核心,即更新临时变量mapping_in_iter中第一节点node_a映射第二核心core_b,第二节点node_b映射第一核心core_a;
20、重新计算脉冲通信代价cost,并比较cost和最小脉冲通信代价cost_min;若cost<cost_min,则更新cost_min为cost;将临时节点node_a_tmp赋值为第一节点node_a,临时节点core_a_tmp赋值为第二核心core_b,临时节点node_b_tmp赋值为第二节点node_b,临时节点core_b_tmp赋值为第一核心core_a;
21、步骤s4.5:本次所有节点遍历结束后,即单次迭代结束,搜索到脉冲通信代价最小的一次映射方案;更新初始解空间node_and_map_to_core,即若临时节点node_a_tmp不为空,则更新临时节点node_a_tmp映射的物理神经元拟态核为临时节点core_a_tmp的值,若临时节点node_b_tmp不为空,则更新临时节点node_b_tmp映射的物理神经元拟态核为临时节点core_b_tmp的值;
22、步骤s4.6:基于步骤s4.4至步骤s4.5进行迭代,直至收敛,得到脉冲通信代价最优值对应的逻辑神经元拟态核与物理神经元拟态核映射关系。
23、进一步地,所述步骤s2中,物理神经元拟态核包括大核和小核,基于大小核规则,为逻辑神经元拟态核nodes中的大小节点按顺序映射物理神经元拟态核;所述步骤s4.4中,若第一节点node_a的大小核与第二核心core_b的大小核不一致,则跳过本地基于全局变量cores的此次遍历,直接进入下一个核心的遍历。
24、进一步地,所述步骤s4.6中,根据步骤s4.4至步骤s4.5迭代times次,当times足够大时,脉冲通信代价总会收敛到最优值,而本发明中times的选取基于平衡时间性能和收敛情况,其中总的时间复杂度o为times*m*n,m表示cores中核心数,n表示nodes节点数。
25、神经元计算机操作系统的snn模型动态映射装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现所述的神经元计算机操作系统的snn模型动态映射方法。
26、本发明的优势和有益效果在于:
27、本发明提出的神经元计算机操作系统的snn模型动态映射方法及装置,结合硬件资源区域中边缘核心的现有脉冲流量,以最小化核心间脉冲通信代价、最小化脉冲输入输出通信代价、类脑任务间的脉冲流量均衡为目标,采用在解空间内的贪心算法将逻辑神经元拟态核动态分配到物理神经元拟态核,解决了类脑硬件资源因碎片化而无法直接将模型的逻辑神经元拟态核相对位置一一映射到物理神经元拟态核的问题。