CN116070682B - 神经元计算机操作系统的snn模型动态映射方法及装置 - Google Patents
神经元计算机操作系统的snn模型动态映射方法及装置 Download PDFInfo
- Publication number
- CN116070682B CN116070682B CN202310354756.5A CN202310354756A CN116070682B CN 116070682 B CN116070682 B CN 116070682B CN 202310354756 A CN202310354756 A CN 202310354756A CN 116070682 B CN116070682 B CN 116070682B
- Authority
- CN
- China
- Prior art keywords
- core
- node
- mimicry
- neuron
- physical
- 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.)
- Active
Links
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了神经元计算机操作系统的SNN模型动态映射方法及装置,通过根据节点之间连接关系、设置的初始解空间映射,以及输入、输出虚拟节点相对物理神经元拟态核边缘核心的位置,构建脉冲通信代价计算模型,计算前继节点与后继节点对应物理坐标间的距离,基于节点间的距离和对应的权重信息,得到脉冲通信代价;同时,基于初始解空间,通过贪心算法遍历逻辑神经元拟态核在不同空闲物理神经元拟态核时的脉冲通信代价,得到最小脉冲通信代价时,逻辑神经元拟态核与物理神经元拟态核的映射关系。从而解决了类脑硬件资源因碎片化而无法直接将模型的逻辑神经元拟态核相对位置一一映射到物理神经元拟态核的问题。
Description
技术领域
本发明属于新型人工智能软件体系结构领域,具体涉及神经元计算机操作系统的SNN模型动态映射方法及装置。
背景技术
传统的冯诺依曼体系结构的计算机难以满足目前高速发展的人工智能计算性能需求,尤其是面对低功耗高性能计算领域,如边缘计算。因此,脉冲神经网络为寻求更低功耗和更高效计算性能提供了一条可行的路径,但在冯诺依曼体系结构计算机上仿真脉冲神经网络较困难,为了解决这一难题,出现了类脑计算芯片,类脑计算芯片通过对生物大脑结构的模仿来运行脉冲神经网络;相对于现有的计算体系结构,类脑计算是借鉴了生物大脑中信息处理的基本规律,在硬件实现与软件算法等多层面做出了本质变革,从而实现在功耗和计算能力等诸多方面的大幅改进。类脑计算机是由多个类脑计算芯片采用水平扩展的方式构建而成,具有运行超大规模脉冲神经任务能力的新型计算机模型。神经元计算机操作系统为用户提供透明的计算资源管理及SNN模型映射到类脑计算资源的能力。SNN(Spiking Neural Network,脉冲神经网络)模型是指经由类脑编译器编译输出的可部署到类脑硬件的脉冲神经网络及其依赖的编解码算法。
在类脑应用的软硬件生态系统中,在编译阶段完成基于硬件约束的SNN模型神经元簇到神经元拟态核的映射。为了实现神经网络模型和类脑硬件的解耦合,大部分生态系统在编译阶段完成的模型映射是映射到逻辑神经元计算核,在映射阶段只考虑基于核心约束的模型映射方案,但不考虑全局的物理神经元计算核的运行现状,如输入/输出路由、资源碎片、路由拥塞等。
类脑计算芯片是由m*n的二维网格结构组成,多个芯片通过互联线级联,实现更大规模的二维网格结构,每个网格包括一个路由模块和一个神经拟态核,神经拟态核可以模拟神经元和突触的行为。由于类脑计算芯片的特性,神经元计算机操作系统只能与类脑计算芯片的边缘核心交互,输入路由是指为了将脉冲源从芯片外输入到物理神经元拟态核的路由,输出路由是指模型的发放神经元发送脉冲到芯片外的路由。
神经元计算机操作系统负责将类脑计算资源抽象为一个大型的二维网格,并负责类脑计算资源的管理,如为SNN模型分配物理神经元计算核,资源释放和状态更新等。神经元计算机操作系统支持多个SNN模型的并行部署,统一为多个SNN模型分配资源,在分配资源时结合降低类脑计算资源的碎片化以及片上网络脉冲路由拥塞情况等策略统一为多个SNN模型动态分配资源。神经元计算机操作系统在为SNN模型分配资源时,将逻辑神经元拟态核映射到物理神经元拟态核,当物理资源存在碎片时,那么SNN模型将无法按照逻辑神经元拟态核的相对位置一一映射到物理神经元拟态核,神经元计算机操作系统将按照当下的物理资源重新映射逻辑神经元拟态核到空闲的物理神经元拟态核。
发明内容
为解决现有技术的不足,在重新映射神经元拟态核时,考虑输入输出神经元核心以及核心间的通信代价,实现SNN模型运行时脉冲通信路由代价最小化的目的,本发明采用如下的技术方案:
神经元计算机操作系统的SNN模型动态映射方法,神经元计算机操作系统资源管理模块为SNN模型分配硬件资源块,硬件资源块是根据物理神经元拟态核的坐标分布的矩阵,根据神经元计算机操作系统与片上网络核心交互的通道设定输入输出方向,将脉冲源作为虚拟输入节点,脉冲目的作为虚拟输出节点,动态映射方法包括如下步骤:
步骤S1:设置节点映射之间的权重;设定虚拟输入节点到逻辑经元拟态核及逻辑经元拟态核到虚拟输出节点的权重,将编译器输出的神经元簇映射到一组逻辑神经元拟态核,获取一组逻辑神经元拟态核及其节点之间连接关系和权重信息;
步骤S2:初始解空间映射;将逻辑神经元拟态核的节点映射到物理神经元拟态核的核心,得到基于映射关系的初始解空间;
步骤S3:构建脉冲通信代价计算模型;根据节点之间连接关系、初始解空间,以及输入、输出虚拟节点相对物理神经元拟态核边缘核心的位置,计算前继节点与后继节点对应物理坐标间的距离,基于节点间的距离和对应的权重信息,得到脉冲通信代价;
步骤S4:基于初始解空间,通过贪心算法遍历逻辑神经元拟态核在不同空闲物理神经元拟态核时的脉冲通信代价,得到最小脉冲通信代价时,逻辑神经元拟态核与物理神经元拟态核的映射关系,从而最小化核心间脉冲通信距离和最小化输入输出。
进一步地,所述步骤S1中,脉冲源和脉冲目的是位于物理神经元拟态核之外的节点,基于硬件封包协议,为了最小化脉冲输入输出为目标,即尽量将脉冲输入和脉冲输出的逻辑神经元拟态核分配到离输入输出方向较近的物理神经元拟态核上,因此,为了使虚拟输入节点到物理神经拟态核心之间的路由步长最短,当逻辑神经元拟态核映射到物理神经元拟态核后,如果此物理神经元拟态核的入度是虚拟输入节点,则此物理神经元拟态核的虚拟输入节点为距离此物理神经元拟态核最近的位置,如果此物理神经元拟态核的出度是虚拟输出节点,则此物理神经元拟态核的虚拟输出节点为距离此物理神经元拟态核最近的位置,根据位置设定虚拟输入节点到逻辑经元拟态核及逻辑经元拟态核到虚拟输出节点的权重。
进一步地,所述步骤S3的脉冲通信代价计算模型,公式如下:
说明:m表示节点之间连接关系和权重信息node_graph_and_weight中前继节点个数,n表示前继节点所有连接的后继节点个数,表示节点/>映射的物理神经元拟态核core,/>和/>分别表示物理神经元拟态核core的横、纵坐标值,/>表示节点/>到节点/>的连接的权重;芯片内路由采用XY策略,物理神经元拟态核/>到/>的路由步长为两个核心之间的曼哈顿距离:step()=|/>[x]- />[x]|+|/>[y]-/>[y]|。
进一步地,输入、输出方向是神经元计算机操作系统与片上网络核心交互的通道,基于输入、输出方向,则设置对应的输入、输出核心。
进一步地,基于硬件限制输入、输出方向一共有四个方向,包括左WEST、右EAST、上NORTH、下SOURTH,基于输入、输出方向Direct=WEST、EAST,设置对应的输入、输出核心为(-1,[y])、(-1,/>[y]),-1表示硬件资源块以外的左侧位置,/>[y]表示第i个作为前继节点的核心,其入度是虚拟输入节点,/>[y]表示第j个作为后继节点的核心,其出度是虚拟输出节点。
进一步地,设置逻辑神经元拟态核连接关系和权重字典的变量node_graph_and_weight;根据硬件资源分配情况,构建全局变量cores,包括物理神经元拟态核坐标和占用情况,步骤S4包括如下步骤:
步骤S4.1:基于初始解空间node_and_map_to_core,计算脉冲通信代价,并作为当前最小脉冲通信代价cost_min;
步骤S4.2:设置临时变量core_map_node记录当前的初始解空间node_and_map_to_core,基于当前初始解空间node_and_map_to_core得到物理神经元拟态核到逻辑神经元拟态核的映射字典;
步骤S4.3:设置临时变量node_A_tmp、node_B_tmp、core_A_tmp、core_B_tmp,记录此次迭代中脉冲通信代价最小的一次核心交换;
步骤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;
若第一核心core_A等于第二核心core_B,则跳过本次基于全局变量cores的遍历,直接进入下一个物理神经元拟态核的遍历;
若第二核心core_B已经被其他节点映射,即node_B不为空,则交换第一节点node_A与第二节点node_B映射的核心,即更新临时变量mapping_in_iter中第一节点node_A映射第二核心core_B,第二节点node_B映射第一核心core_A;
重新计算脉冲通信代价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;
步骤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的值;
步骤S4.6:基于步骤S4.4至步骤S4.5进行迭代,直至收敛,得到脉冲通信代价最优值对应的逻辑神经元拟态核与物理神经元拟态核映射关系。
进一步地,所述步骤S2中,物理神经元拟态核包括大核和小核,基于大小核规则,为逻辑神经元拟态核nodes中的大小节点按顺序映射物理神经元拟态核;所述步骤S4.4中,若第一节点node_A的大小核与第二核心core_B的大小核不一致,则跳过本地基于全局变量cores的此次遍历,直接进入下一个核心的遍历。
进一步地,所述步骤S4.6中,根据步骤S4.4至步骤S4.5迭代times次,当times足够大时,脉冲通信代价总会收敛到最优值,而本发明中times的选取基于平衡时间性能和收敛情况,其中总的时间复杂度O为times*M*N,M表示cores中核心数,N表示nodes节点数。
神经元计算机操作系统的SNN模型动态映射装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现所述的神经元计算机操作系统的SNN模型动态映射方法。
本发明的优势和有益效果在于:
本发明提出的神经元计算机操作系统的SNN模型动态映射方法及装置,结合硬件资源区域中边缘核心的现有脉冲流量,以最小化核心间脉冲通信代价、最小化脉冲输入输出通信代价、类脑任务间的脉冲流量均衡为目标,采用在解空间内的贪心算法将逻辑神经元拟态核动态分配到物理神经元拟态核,解决了类脑硬件资源因碎片化而无法直接将模型的逻辑神经元拟态核相对位置一一映射到物理神经元拟态核的问题。
附图说明
图1是本发明实施例中分配的硬件资源区域示意图。
图2是本发明实施例中手写体模型逻辑神经元拟态核映射示意图。
图3是本发明实施例中初始解空间示意图。
图4是本发明实施例中贪心映射后的结果示意图。
图5是本发明实施例中装置的结构示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
一个类脑应用开发完成后,经过编译器生成可以运行于类脑硬件的SNN模型实现;神经元计算机操作系统接收到SNN模型后,根据SNN模型实现中的逻辑核心映射到类脑硬件的物理核心上;映射方法如下:
(1)解析SNN模型中逻辑神经元拟态核的映射关系nodes_graph,nodes_graph是前继节点坐标到所有后继节点坐标的映射字典,包括虚拟输入节点到逻辑神经元拟态核的连接、逻辑神经元拟态核到虚拟输出节点的连接、逻辑神经元拟态核之间的连接关系;
(2)神经元计算机操作系统资源管理模块,按照一定策略为SNN模型申请硬件资源,如果在左右或者上下平移后可以按照逻辑神经元拟态核的相对位置一一映射到物理神经元拟态核,则直接映射并返回映射的物理神经元拟态核和输入输出方向;如果硬件资源块存在碎片,导致逻辑神经元拟态核无法按照相对位置一一映射到物理神经元拟态核,则按照硬件分配策略为模型分配存在碎片的资源块R、输入方向和核心占用情况;资源块R中的空闲物理神经元拟态核心数量大于等于SNN模型中逻辑神经元拟态核数量且路由可达,且资源块R中包含的物理神经元拟态大核数量大于等于SNN模型中逻辑神经元拟态大核数量,物理神经元拟态小核数量大于等于SNN模型中逻辑神经元拟态小核数量;资源块R是按照物理神经元拟态核心XY坐标分布的二维矩阵,其二维坐标区域R(x_min,y_min,x_max,y_max),即硬件资源形成的长方形区域,(x_min,y_min)表示左上角坐标,(x_max,y_max)表示右下角坐标,如图1所示,每个实线圆圈表示核心,其中,粗线表示的核心为大核,即X坐标对4取模后值为0或1的坐标,细线圆圈表示的核心为小核,即X坐标对4取模后值为2或3的坐标;输入输出方向是指神经元计算机操作系统与片上网络核心交互的通道,基于硬件限制一共有四个方向,分别为左(WEST)、右(EAST)、上(NORTH)、下(SOURTH),图1中左侧箭头表示输入方向为WEST;把脉冲源定义为输入虚拟节点,脉冲目的定义为输出虚拟节点,脉冲源和脉冲目的是位于物理神经元拟态核之外的节点,基于硬件封包协议,将输入输出虚拟节点定义为离物理神经元拟态核边缘核心最近的位置,图1中虚线圆圈表示WEST方向的输入输出虚拟节点,此处了4个输入输出虚拟节点;占用情况表示硬件核心是否已分配给其他模型,如图1中带X的细线圆圈表示被占用的物理神经元拟态小核;
本发明以一个全连接的手写体网络为例,网络包含784个神经元的输入层、576个神经元的隐藏层和10个神经元的输出层,如图2所示是编译器输出的神经元簇映射到的逻辑神经元拟态核,解析SNN模型得到nodes_graph={(1, 7): [(-1, 7)], (1, 11): [(1,7)], (3, 7): [(1, 7)], (5, 7): [(1, 7)], (7, 7): [(1, 7)], (9, 7): [(1, 7)],(-1, 15): [(7, 7), (1, 11), (3, 7), (5, 7), (9, 7)], (-1, 7): [(-1, 7)]},其中,(-1, 15)为虚拟的输入节点,(-1, 7)为虚拟的输出节点。去除输入输出节点后,得到逻辑神经元拟态核nodes=[(1, 7), (1, 11), (3, 7), (5, 7), (7, 7), (9, 7)]。
如图1所示,是神经元计算机操作系统资源管理模块为模型分配的硬件资源区域,图2中的模型无法直接映射到图1的硬件资源上;图1中的箭头表示输入方向为WEST,X坐标为-1的虚线圆圈表示虚拟输入输出节点;硬件神经元拟态核中带X的圆圈表示已被占用,无法再被分配,如坐标(1,0)、(6,1);分配的硬件资源区域按照字典存储在全局变量cores中,以核心坐标(x,y)为key,核心占用情况为value,其中1表示被占用,0表示空闲,针对图1分配的核心资源cores={(0, 0): 0, (1, 0): 1, (2, 0): 1, (3, 0): 0, (4, 0): 0, (5,0): 0, (6, 0): 0, (7, 0): 0, (8, 0): 0, (9, 0): 0, (10, 0): 0, (11, 0): 1,(12, 0): 0, (13, 0): 1, (14, 0): 0, (15, 0): 0, (16, 0): 1, (17, 0): 0, (18,0): 1, (19, 0): 0, (20, 0): 1, (21, 0): 0, (22, 0): 0, (23, 0): 1, (0, 1): 0,(1, 1): 0, (2, 1): 0, (3, 1): 0, (4, 1): 0, (5, 1): 0, (6, 1): 1, (7, 1): 1,(8, 1): 1, (9, 1): 0, (10, 1): 1, (11, 1): 0, (12, 1): 0, (13, 1): 0, (14,1): 0, (15, 1): 1, (16, 1): 0, (17, 1): 0, (18, 1): 0, (19, 1): 0, (20, 1):0, (21, 1): 0, (22, 1): 0, (23, 1): 0, (0, 2): 0, (1, 2): 0, (2, 2): 0, (3,2): 0, (4, 2): 0, (5, 2): 1, (6, 2): 0, (7, 2): 1, (8, 2): 0, (9, 2): 1, (10,2): 1, (11, 2): 1, (12, 2): 1, (13, 2): 1, (14, 2): 1, (15, 2): 1, (16, 2):1, (17, 2): 1, (18, 2): 1, (19, 2): 1, (20, 2): 1, (21, 2): 1, (22, 2): 1,(23, 2): 1, (0, 3): 0, (1, 3): 0, (2, 3): 0, (3, 3): 0, (4, 3): 0, (5, 3): 1,(6, 3): 0, (7, 3): 1, (8, 3): 0, (9, 3): 1, (10, 3): 1, (11, 3): 1, (12, 3):1, (13, 3): 1, (14, 3): 1, (15, 3): 1, (16, 3): 1, (17, 3): 1, (18, 3): 1,(19, 3): 1, (20, 3): 1, (21, 3): 1, (22, 3): 1, (23, 3): 1}。
神经元计算机操作系统的SNN模型动态映射方法,根据SNN模型实现和资源管理模块分配的硬件资源区域,结合硬件资源区域中边缘核心的现有脉冲流量,以最小化核心间脉冲通信代价、最小化脉冲输入输出通信代价、类脑任务间的脉冲流量均衡为目标,采用在解空间内的贪心算法将逻辑神经元拟态核动态分配到物理神经元拟态核,包括如下步骤:
步骤S1:设置节点映射之间的权重。查询节点轴突表中到下一个节点的轴突末端数量作为两个节点之间连接的权重。节点之间权重包括三种:1.神经元拟态核之间有脉冲通信的;2.输入节点到神经元拟态核;3.神经元拟态核到输出节点。为了最小化脉冲输入输出为目标,即尽量将脉冲输入和脉冲输出的逻辑神经元拟态核分配到离输入输出方向较近的物理神经元拟态核上,将虚拟输入节点到神经元拟态核的权重乘以输入系数INPUT_WT,即,神经元拟态核到虚拟输出节点的权重乘以输出系数OUTPUT_WT,即/>=/>。
神经元计算机操作系统维护逻辑神经元拟态核连接关系和权重字典的变量node_graph_and_weight,以key为前继核,value由前继核连接的所有后继核坐标及其连接的权重组成的列表。设置权重的目的是在逻辑神经元拟态核分配到物理神经元拟态核时,使用核心之间的路由步长*权重来评估核心之间的代价cost:,i表示前继核,j表示后继核,x、y表示核心的横、纵坐标。
例如,针对图2中的模型,解析到的节点之间连接关系和权重信息如下:node_graph_and_weight={(1, 7): [[(-1, 7), 10]], (1, 11): [[(1, 7), 144]], (3, 7):[[(1, 7), 20]], (5, 7): [[(1, 7), 196]], (7, 7): [[(1, 7), 20]], (9, 7):[[(1, 7), 196]], (-1, 15): [[(7, 7), 784], [(1, 11), 784], [(3, 7), 784],[(5, 7), 784], [(9, 7), 784]]};其中,(-1, 15)表示虚拟输入节点,(-1, 7)表示虚拟输出节点;本发明实施例中,设置和/>均为1。
步骤S2:初始解空间映射。循环cores,根据大小核规则,为逻辑神经元拟态核nodes中的大小节点按顺序映射物理神经元拟态核心,作为初始解空间node_and_map_to_core,其中key为节点,value为映射的物理神经元拟态核坐标。
如图3的硬件资源为图2中的模型映射的结果:node_and_map_to_core={(1, 7):(0, 0), (1, 11): (4, 0), (3, 7): (6, 0), (5, 7): (8, 0), (7, 7): (10, 0), (9,7): (12, 0)}。
步骤S3:构建脉冲通信代价计算模型。脉冲通信代价为前继核心到所有后继核心的步长乘于权重之和。以node_graph_and_weight和node_and_map_to_core作为输入,循环遍历node_graph_and_weight,计算模型映射后的脉冲通信代价,公式如下:
说明:m为node_graph_and_weight中前继节点个数,n为前继节点所有连接的后继节点个数,表示节点/>映射的物理神经元拟态核心core,/>和分别表示核心core的X坐标和Y坐标值,/>表示节点到节点/>的连接的权重;
芯片内路由采用XY策略,核心到核心/>的路由步长为两个核心之间的曼哈顿距离:step(/>)=|/>[x]-/>[x]|+|/>[y]-/>[y]|。
为了使虚拟输入节点到物理神经拟态核心之间的路由步长最短,当逻辑神经元拟态核映射到物理神经拟态核心后,如果此物理神经元核心的入度是虚拟输入节点,则此物理神经拟态核心的虚拟输入节点为距离此物理神经元拟态核心最近的节点,即如果输入方向为Direct=WEST,则对应的输入核心为(-1,/>[y])。
步骤S4:在解空间的基础上基于贪心算法映射方案。此方案的好处是最小化核心间脉冲通信距离和最小化输入输出。
步骤S4.1:以node_and_map_to_core作为初始解空间,按照步骤S3以node_graph_and_weight和node_and_map_to_core作为输入计算脉冲通信代价,并作为当前最小代价cost_min;
例如:初始解空间node_and_map_to_core={(1, 7): (0, 0), (1, 11): (4, 0),(3, 7): (6, 0), (5, 7): (8, 0), (7, 7): (10, 0), (9, 7): (12, 0)}计算的脉冲通信代价为40106。
步骤S4.2:维护一个临时变量core_map_node,基于当前node_and_map_to_core变量得到物理神经元拟态核到逻辑神经元拟态核的映射字典,以物理神经元拟态核坐标为key,以被映射的逻辑神经元拟态核坐标为value;
例如,在初始解空间node_and_map_to_core={(1, 7): (0, 0), (1, 11): (4,0), (3, 7): (6, 0), (5, 7): (8, 0), (7, 7): (10, 0), (9, 7): (12, 0)}的基础上,得到core_map_node={(0, 0): (1, 7), (4, 0): (1, 11), (6, 0): (3, 7), (8,0): (5, 7), (10, 0): (7, 7), (12, 0): (9, 7)}。
步骤S4.3:维护4个临时变量node_A_tmp,node_B_tmp,core_A_tmp,core_B_tmp,均初始化为0;用于记录此次迭代中脉冲通信代价最小的一次核心交换记录。
步骤S4.4:遍历“nodes”节点node_A,以node_A为基础,遍历“cores”中的每个物理神经元拟态核坐标core_B和物理神经元拟态核心被占用情况is_use;记录临时变量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。
进一步的,如果core_A等于core_B,则跳过“cores”的此次遍历,直接进入下一个核心的遍历;
进一步的,如果node_A的大小核与core_B的大小核不一致,则跳过“cores”的此次遍历,直接进入下一个核心的遍历;
进一步的,如果core_B已经被其他节点映射,即node_B不为空,则交换node_A与node_B映射的核心,即更新mapping_in_iter字典中node_A映射的核心为core_B,node_B映射的核心为core_A;
按照步骤S3,以node_graph_and_weight和mapping_in_iter作为输入计算模型的脉冲通信代价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;
步骤S4.5:步骤S4.4将所有节点遍历结束后,即单次迭代结束,搜索到脉冲通信代价最小的一次映射方案;更新node_and_map_to_core词典,即如果node_A_tmp不为0,更新node_A_tmp节点映射的物理神经元拟态核心为core_A_tmp,如果node_B_tmp不为0,更新node_B_tmp映射的物理神经元拟态核心为core_B_tmp;
步骤S4.6:按照步骤S4.4至步骤S4.5迭代times次,times的选择需平衡时间性能和收敛情况,当times足够大时,脉冲通信代价总会收敛到最优值。假设“cores”中核心数为M,“nodes”节点数为N,则总的时间复杂度为O(times*M*N);
例如:当times为5时,映射结果node_and_map_to_core={(1, 7): (0, 0), (1,11): (1, 3), (3, 7): (2, 2), (5, 7): (0, 2), (7, 7): (2, 3), (9, 7): (0, 3)},脉冲通信代价cost=30040;当times为7时,node_and_map_to_core={(1, 7): (1, 2), (1,11): (0, 3), (3, 7): (2, 2), (5, 7): (0, 2), (7, 7): (2, 3), (9, 7): (1, 3)},脉冲通信代价cost=29034;当times为10时,node_and_map_to_core={(1, 7): (1, 2),(1, 11): (0, 3), (3, 7): (2, 2), (5, 7): (1, 3), (7, 7): (2, 3), (9, 7): (0,2)},脉冲通信代价cost=29034。说明在第7次迭代时,映射已经收敛到最优方案,如图4所示为迭代10次后映射的结果。
与前述神经元计算机操作系统的SNN模型动态映射方法的实施例相对应,本发明还提供了神经元计算机操作系统的SNN模型动态映射装置的实施例。
参见图5,本发明实施例提供的神经元计算机操作系统的SNN模型动态映射装置,包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的神经元计算机操作系统的SNN模型动态映射方法。
本发明神经元计算机操作系统的SNN模型动态映射装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本发明神经元计算机操作系统的SNN模型动态映射装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的神经元计算机操作系统的SNN模型动态映射方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。
Claims (8)
1.神经元计算机操作系统的SNN模型动态映射方法,神经元计算机操作系统为SNN模型分配硬件资源块,硬件资源块是根据物理神经元拟态核的坐标分布的矩阵,将脉冲源作为虚拟输入节点,脉冲目的作为虚拟输出节点,脉冲源和脉冲目的是位于物理神经元拟态核之外的节点,其特征在于动态映射方法包括如下步骤:
步骤S1:设置节点映射之间的权重;设定虚拟输入节点到逻辑神经元拟态核及逻辑神经元拟态核到虚拟输出节点的权重,获取一组逻辑神经元拟态核及其节点之间连接关系和权重信息;
步骤S2:初始解空间映射;将逻辑神经元拟态核所在节点映射到物理神经元拟态核的核心,得到基于映射关系的初始解空间;
步骤S3:构建脉冲通信代价计算模型;根据节点之间连接关系、初始解空间,以及虚拟输入、输出节点相对物理神经元拟态核边缘核心的位置,计算前继节点与后继节点对应物理坐标间的距离,基于节点间的距离和对应的权重信息,得到脉冲通信代价;脉冲通信代价计算模型,公式如下:
说明:m表示节点之间连接关系和权重信息node_graph_and_weight中前继节点个数,n表示前继节点所有连接的后继节点个数,core(nodei)表示节点nodei映射的物理神经元拟态核core,core(nodei)[x]和core(nodei)[y]分别表示物理神经元拟态核core的横、纵坐标值,weight(nodei,nodej)表示节点nodei到节点nodej的连接的权重;物理神经元拟态核corei到corej的路由步长为两个核心之间的曼哈顿距离;
步骤S4:基于初始解空间,通过贪心算法遍历逻辑神经元拟态核在不同空闲物理神经元拟态核时的脉冲通信代价,得到最小脉冲通信代价时,逻辑神经元拟态核与物理神经元拟态核的映射关系。
2.根据权利要求1所述的神经元计算机操作系统的SNN模型动态映射方法,其特征在于:所述步骤S1中,当逻辑神经元拟态核映射到物理神经元拟态核后,如果此物理神经元拟态核的入度是虚拟输入节点,则此物理神经元拟态核的虚拟输入节点为距离此物理神经元拟态核最近的位置,如果此物理神经元拟态核的出度是虚拟输出节点,则此物理神经元拟态核的虚拟输出节点为距离此物理神经元拟态核最近的位置,根据位置设定虚拟输入节点到逻辑神经元拟态核及逻辑神经元拟态核到虚拟输出节点的权重。
3.根据权利要求1所述的神经元计算机操作系统的SNN模型动态映射方法,其特征在于:输入、输出方向是神经元计算机操作系统与片上网络核心交互的通道,基于输入、输出方向,则设置对应的输入、输出核心。
4.根据权利要求3所述的神经元计算机操作系统的SNN模型动态映射方法,其特征在于:输入、输出方向包括左WEST、右EAST、上NORTH、下SOURTH,基于输入、输出方向Direct=WEST、EAST,设置对应的输入、输出核心为(-1,corei[y])、(-1,corej[y]),-1表示硬件资源块以外的左侧位置,corei[y]表示第i个作为前继节点的核心,其入度是虚拟输入节点,corej[y]表示第j个作为后继节点的核心,其出度是虚拟输出节点。
5.根据权利要求1所述的神经元计算机操作系统的SNN模型动态映射方法,其特征在于:设置逻辑神经元拟态核连接关系和权重字典的变量node_graph_and_weight;根据硬件资源分配情况,构建全局变量cores,包括物理神经元拟态核坐标和占用情况,步骤S4包括如下步骤:
步骤S4.1:基于初始解空间node_and_map_to_core,计算脉冲通信代价,并作为当前最小脉冲通信代价cost_min;
步骤S4.2:设置临时变量core_map_node记录当前的初始解空间node_and_map_to_core,基于当前初始解空间node_and_map_to_core得到物理神经元拟态核到逻辑神经元拟态核的映射字典;
步骤S4.3:设置临时变量node_A_tmp、node_B_tmp、core_A_tmp、core_B_tmp,记录此次迭代中脉冲通信代价最小的一次核心交换;
步骤S4.4:遍历逻辑神经元拟态核nodes中的第一节点node_A,以第一节点node_A为基础,遍历逻辑神经元拟态核cores中的每个物理神经元拟态核坐标,即遍历第二核心core_B及其占用情况;将临时变量mapping_in_iter的初始值设为当前初始解空node_and_map_to_core,从临时变量mapping_in_iter中查询第一节点node_A当前映射的物理神经元拟态核,即第一核心core_A,从临时变量core_map_node中查询当前循环的物理神经元拟态核中已被映射的逻辑神经元拟态核,即第二核心core_B对应的第二节点node_B,若未被映射,则更新临时变量mapping_in_iter,将第一节点node_A映射的物理神经元拟态核,改为第二核心core_B;
若第一核心core_A等于第二核心core_B,则跳过本次基于全局变量cores的遍历,直接进入下一个物理神经元拟态核的遍历;
若第二核心core_B已经被其他节点映射,则交换第一节点node_A与第二节点node_B映射的核心,即更新临时变量mapping_in_iter中第一节点node_A映射第二核心core_B,第二节点node_B映射第一核心core_A;
重新计算脉冲通信代价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;
步骤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的值;
步骤S4.6:基于步骤S4.4至步骤S4.5进行迭代,直至收敛,得到脉冲通信代价最优值对应的逻辑神经元拟态核与物理神经元拟态核映射关系。
6.根据权利要求5所述的神经元计算机操作系统的SNN模型动态映射方法,其特征在于:所述步骤S2中,物理神经元拟态核包括大核和小核,基于大小核规则,为逻辑神经元拟态核nodes中的大小节点映射物理神经元拟态核;所述步骤S4.4中,若第一节点node_A的大小核与第二核心core_B的大小核不一致,则跳过本地基于全局变量cores的此次遍历,直接进入下一个核心的遍历。
7.根据权利要求5所述的神经元计算机操作系统的SNN模型动态映射方法,其特征在于:所述步骤S4.6中,根据步骤S4.4至步骤S4.5迭代times次,times的选取基于平衡时间性能和收敛情况,其中总的时间复杂度O为times*M*N,M表示cores中核心数,N表示nodes节点数。
8.神经元计算机操作系统的SNN模型动态映射装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-7中任一项所述的神经元计算机操作系统的SNN模型动态映射方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310354756.5A CN116070682B (zh) | 2023-04-06 | 2023-04-06 | 神经元计算机操作系统的snn模型动态映射方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310354756.5A CN116070682B (zh) | 2023-04-06 | 2023-04-06 | 神经元计算机操作系统的snn模型动态映射方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116070682A CN116070682A (zh) | 2023-05-05 |
CN116070682B true CN116070682B (zh) | 2023-08-15 |
Family
ID=86182311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310354756.5A Active CN116070682B (zh) | 2023-04-06 | 2023-04-06 | 神经元计算机操作系统的snn模型动态映射方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116070682B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648956B (zh) * | 2024-01-29 | 2024-06-04 | 之江实验室 | 脉冲神经网络模型资源映射方法、装置和存储介质 |
CN117688992B (zh) * | 2024-02-01 | 2024-06-04 | 之江实验室 | 神经元计算机操作系统的资源映射方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105469143A (zh) * | 2015-11-13 | 2016-04-06 | 清华大学 | 基于神经网络动态特征的片上网络资源映射方法 |
CN111291861A (zh) * | 2020-01-13 | 2020-06-16 | 浙江大学 | 一种应用于脉冲神经网络的输入脉冲编码方法 |
CN111882065A (zh) * | 2020-08-03 | 2020-11-03 | 中国人民解放军国防科技大学 | 映射脉冲神经网络到类脑计算平台的方法、系统及介质 |
CN113988283A (zh) * | 2021-10-28 | 2022-01-28 | 清华大学 | 逻辑节点的映射方法、装置、电子设备及存储介质 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
CN114492782A (zh) * | 2022-04-19 | 2022-05-13 | 之江实验室 | 基于强化学习的神经网络的片上核心编译映射方法及装置 |
CN114492770A (zh) * | 2022-01-28 | 2022-05-13 | 浙江大学 | 一种面向循环脉冲神经网络的类脑计算芯片映射方法 |
CN114548384A (zh) * | 2022-04-28 | 2022-05-27 | 之江实验室 | 具有抽象资源约束的脉冲神经网络模型构建方法和装置 |
CN114611686A (zh) * | 2022-05-12 | 2022-06-10 | 之江实验室 | 基于可编程神经拟态核的突触延时实现系统及方法 |
CN115081587A (zh) * | 2022-05-27 | 2022-09-20 | 浙江大学 | 类脑计算机中脉冲神经网络在硬件上的运行部署方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360496B2 (en) * | 2016-04-01 | 2019-07-23 | Intel Corporation | Apparatus and method for a digital neuromorphic processor |
US10885425B2 (en) * | 2016-12-20 | 2021-01-05 | Intel Corporation | Network traversal using neuromorphic instantiations of spike-time-dependent plasticity |
-
2023
- 2023-04-06 CN CN202310354756.5A patent/CN116070682B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105469143A (zh) * | 2015-11-13 | 2016-04-06 | 清华大学 | 基于神经网络动态特征的片上网络资源映射方法 |
CN111291861A (zh) * | 2020-01-13 | 2020-06-16 | 浙江大学 | 一种应用于脉冲神经网络的输入脉冲编码方法 |
CN111882065A (zh) * | 2020-08-03 | 2020-11-03 | 中国人民解放军国防科技大学 | 映射脉冲神经网络到类脑计算平台的方法、系统及介质 |
CN113988283A (zh) * | 2021-10-28 | 2022-01-28 | 清华大学 | 逻辑节点的映射方法、装置、电子设备及存储介质 |
CN114492770A (zh) * | 2022-01-28 | 2022-05-13 | 浙江大学 | 一种面向循环脉冲神经网络的类脑计算芯片映射方法 |
CN114461351A (zh) * | 2022-04-13 | 2022-05-10 | 之江实验室 | 一种用于神经网络计算的动态图执行方法及装置 |
CN114492782A (zh) * | 2022-04-19 | 2022-05-13 | 之江实验室 | 基于强化学习的神经网络的片上核心编译映射方法及装置 |
CN114548384A (zh) * | 2022-04-28 | 2022-05-27 | 之江实验室 | 具有抽象资源约束的脉冲神经网络模型构建方法和装置 |
CN114611686A (zh) * | 2022-05-12 | 2022-06-10 | 之江实验室 | 基于可编程神经拟态核的突触延时实现系统及方法 |
CN115081587A (zh) * | 2022-05-27 | 2022-09-20 | 浙江大学 | 类脑计算机中脉冲神经网络在硬件上的运行部署方法 |
Non-Patent Citations (1)
Title |
---|
基于脉冲序列核的脉冲神经元监督学习算法;蔺想红;王向文;党小超;;电子学报(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116070682A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116070682B (zh) | 神经元计算机操作系统的snn模型动态映射方法及装置 | |
Cai et al. | DGCL: An efficient communication library for distributed GNN training | |
Choi et al. | On-chip communication network for efficient training of deep convolutional networks on heterogeneous manycore systems | |
Ooi et al. | SINGA: A distributed deep learning platform | |
WO2022068663A1 (zh) | 内存分配方法、相关设备及计算机可读存储介质 | |
KR101747966B1 (ko) | 자율 서브시스템 아키텍처 | |
WO2022171066A1 (zh) | 基于物联网设备的任务分配方法、网络训练方法及装置 | |
KR101793890B1 (ko) | 자율 메모리 아키텍처 | |
CN111630505B (zh) | 深度学习加速器系统及其方法 | |
CN114492782B (zh) | 基于强化学习的神经网络的片上核心编译映射方法及装置 | |
WO2024051388A1 (zh) | 一种基于禁忌搜索算法的神经网络片上映射方法和装置 | |
CN113986816B (zh) | 可重构计算芯片 | |
CN111860806A (zh) | 分形计算装置、方法、集成电路及板卡 | |
CN114338506B (zh) | 一种类脑计算机操作系统的神经任务片内路由方法及装置 | |
Lee et al. | Task parallelism-aware deep neural network scheduling on multiple hybrid memory cube-based processing-in-memory | |
CN109814927B (zh) | 一种机器学习推理协处理器 | |
CN117093538A (zh) | 稀疏Cholesky分解硬件加速系统及其求解方法 | |
Leathrum Jr | Parallelization of the fast multipole algorithm: Algorithm and architecture design | |
Kazemi et al. | Optimum scheduling in fog computing using the Divisible Load Theory (DLT) with linear and nonlinear loads | |
US20220058468A1 (en) | Field Programmable Neural Array | |
Ghosh et al. | Critical issues in mapping neural networks on message-passing multicomputers | |
Singh et al. | Module Allocation Model in Distributed Computing System by Implementing Fuzzy C-means Clustering Technique | |
CN117688992B (zh) | 神经元计算机操作系统的资源映射方法和装置 | |
Mysore et al. | Hierarchical network partitioning for reconfigurable large-scale neuromorphic systems | |
Yang et al. | Network Group Partition and Core Placement Optimization for Neuromorphic Multi-Core and Multi-Chip Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |