实现软硬件解耦合的类脑计算硬件设计方法

2021-06-17 14:01陈嘉杰张悠慧郑纬民
计算机研究与发展 2021年6期
关键词:层次结构类脑图灵

渠 鹏 陈嘉杰 张悠慧 郑纬民

1(清华大学计算机科学与技术系,北京信息科学与技术国家研究中心 北京 100084)

2(数学工程与先进计算国家重点实验室 江苏无锡 214125)

(shen_yhx@163.com)

类脑计算通常用来指借鉴人脑信息处理模式和/或生物生理结构的计算理论、体系结构、硬件设计乃至模型和算法设计的总称.目前,基于类脑计算的数值模拟方法已经成为了继实验研究和理论研究之后,神经科学最重要的研究方法之一[1].在人工智能领域,类脑计算也被认为是实现下一代人工智能的重要技术路径之一[2-8].受脑启发的体系结构设计则是后摩尔定律时代的计算机体系结构主要发展方向之一[9].

类脑计算也被称为神经形态计算[6,10],其目前采用的主要计算模型是脉冲神经网络(spiking neural network,SNN)[11].脉冲神经网络在传统神经网络(深度神经网络等)的基础上,引入了更高的生物真实性,具有实现更高计算能力和能效的潜力.这一特性吸引了众多软硬件相关的研究兴趣[6,12-18],而充分利用脉冲神经网络特性的神经形态芯片也逐渐成为类脑计算相关研究领域的重点之一[6,12-14].

神经形态芯片的设计方案根据设计目的、着眼角度的不同而差别较大,目前尚没有统一、公认的设计方案.但当前的芯片设计方案,往往都采用了端到端的软硬件协同设计方案[6,12-14],采用这样的设计方案的芯片往往具有定制化的工具链、开发软件乃至应用模型[10,19-21],这就导致了类脑计算系统领域所面临的一个重要问题——软硬件紧耦合.

部分工作[22-23]尝试通过构建连接软硬件的领域专用语言或者开发框架来解决这一问题.但是,这些工作没有触及软硬件紧耦合设计的核心问题——缺乏相应的完备性概念来明确软硬件系统计算能力的边界,以及它们是否相互兼容.相关工作往往隐式地依赖图灵完备性.由于类脑计算系统往往并不面向通用计算领域,因此它们是否需要是图灵完备的,或者图灵完备性是否是恰到好处的,仍然是一个开放性问题.

针对这一情况,受图灵完备性和传统计算机层次结构启发,近期工作[24]提出了更加适合类脑计算的完备性——神经形态完备性(也称类脑计算完备性),并在此基础上设计了类脑计算层次结构.为实现类脑计算系统领域的软硬件解耦合提供了理论支持,使得实现软件硬件解耦合的类脑计算系统成为了可能.

本文首先对神经形态完备性和类脑计算层次结构中的部分关键概念进行了讨论;之后,我们描述了层次结构中抽象神经形态架构的设计与实现,并介绍了其与软件层间的接口——执行原语图的设计.在此基础上,进一步提出了基于该抽象架构和原语图实现软硬件解耦合的类脑计算硬件的设计方法以及正在展开的相应工作.

本文的主要贡献为:

1)对神经形态完备性和类脑计算层次结构中的部分关键概念进行了阐述与讨论;

2)详细描述了抽象神经形态架构及其与软件层的接口——执行原语图;

3)提出了实现软硬件解耦合的类脑计算硬件设计的一条有希望的技术路径,并介绍正在进行的工作.

1 相关工作

1.1 神经形态芯片

通过借鉴神经系统信息处理模式以取得高性能和低功耗的神经形态芯片是类脑计算领域的重要研究方向之一.现有神经形态芯片可以分为2个类别:1)使用定制的硬件单元来对突触和神经元的工作模式进行仿真;2)使用通用或定制处理器内核以软件形式来模拟神经基元.两者分别以TrueNorth[12]和SpiNNaker[25]为代表.

TrueNorth[12]是由IBM公司设计的数字电路神经形态芯片,单个芯片含有4 096个神经突触核心,核心之间通过2D-mesh结构连接.TrueNorth采用了典型的紧耦合设计,通过使用定制化的编程范式Corelet[21]以及对应的编译工具和框架来进行应用的开发[19].很多其他的芯片设计方案,如Neurogrid[26],BrainScaleS[27]等,都采用了类似的紧耦合设计模式,尽管后两者部分或者全部采用了模拟电路设计.

SpiNNaker[25]项目与上述研究不同,其采用了片上多处理器(CMP)设计,基于ARM核心主要以软件方式模拟神经基元的工作方式,并通过定制化的片上网络(NoC)实现核心间的高效脉冲信号通信.因为其采用了软件模拟模式,可以直接支持现有的模型和网络,但相对的,性能和效率会受到影响.

除此之外,部分工作[28-32]尝试使用新型神经形态器件(如忆阻器)辅助数字电路设计,部分工作[28]甚至直接使用忆阻器模拟神经元和突触计算,但此类研究尚处于原理验证阶段,缺乏成熟的软硬件设计.

1.2 类脑计算软硬件解耦合

随着神经形态芯片的发展与应用,部分工作[23,33]开始尝试探讨设计面向更加通用的应用的类脑计算开发框架.

Fugu[23]尝试建立一种高层次抽象并构建硬件独立的软件开发方法,以使得类脑计算系统的配置、部署和开发更加便利.另一项类似的工作是STICK[33],其尝试通过建立基于支持精确时间表示、突触多样性和时间延迟的类脑计算单元的计算框架,以推进通用类脑计算机的构建和探索.

然而,上述工作往往停留在计算框架层次,并不考虑完备性或者隐式地依赖图灵完备性.针对这一情况,文献[24]的工作受传统计算机层次结构启发,提出了更加适合类脑计算的完备性——神经形态完备性,并在此基础上设计了类脑计算层次结构.为类脑计算软硬件解耦合提供了理论基础和参考架构设计.但是,文献[24]的相关实现以可行性验证为主要目的,因此需要在此基础上进一步探讨适用于复杂情况下的设计方法,特别是软硬件解耦合的类脑计算硬件设计方法.

2 神经形态完备性和类脑计算层次结构

本节主要介绍了神经形态完备性和类脑计算层次结构的定义,并对部分关键概念进行了讨论.

2.1 基本定义

神经形态完备性在传统图灵机依据给定算法对计算过程精确执行的基础上,兼容了源自神经网络这一计算形式的结果近似能力.其具体定义参见文献[24].和图灵完备性类似,神经形态完备性仅适用于描述系统的计算能力,对系统的具体实现方法和设计思路没有要求.而类脑计算层次结构[24]作为软硬件设计的参考模型,则可以作为实际软硬件实现的指导.

类脑计算层次结构包含3个层次:1)软件层.统一软件描述与执行模型——编程原语图(programming operator graph,POG),基于图灵完备性实现对不同编程语言和计算框架的兼容性.2)硬件层.通过抽象神经形态架构(abstract neuromorphic architecture,ANA)及其和上层的接口——执行原语图(execution primitive graph,EPG),实现对硬件架构设计的抽象以及面向硬件的计算描述.3)编译层.作为两者的中间层,实现将软件程序转换为硬件支持的神经形态等价的描述.类脑计算层次结构通过图灵完备性和神经形态完备性,保证了通用编程语言编写的任何程序都可以转换为任意类脑硬件上的“类脑等价”的执行模型,这也意味着由软件层、编译层、硬件层组成的类脑计算层次结构能够确保应用软件、操作原语集合、硬件设计在独立发展的同时相互兼容,从而实现软硬件去耦合.

2.2 一些关键问题的讨论

完备性本质上是对系统计算能力的描述,因此其往往是脱离于系统的具体实现形式的.正如图灵完备性能够应用于所有的通用计算领域而非仅仅是图灵机模型一样,神经形态完备性同样可以应用于所有存在结果近似能力的计算系统①近似计算是实现类脑计算完备系统的一种方式,但类脑计算完备的系统不仅限于以近似计算的方式实现..此外,神经形态完备性可以视为对硬件完备性要求的一种放松,其与图灵完备性并不对立:简单来说,在目前的定义下,图灵完备的系统一定是神经形态完备的.

神经形态完备性的核心是在图灵完备性的基础上,进一步兼容了对计算结果的近似能力,从而放松了对计算过程和计算精度的要求,即放松了对硬件完备性的要求.这样,一方面神经形态完备性兼容了源自类脑计算领域典型计算范式——神经网络的结果近似能力,另一方面也能作为类脑计算软硬件解耦合的完备性基础.

需要注意的是,神经形态完备性引入的近似概念是抽象的近似能力,而不是单纯的数值近似方法.其可以有多种不同具体实现形式:1)直接通过神经网络或者查找表等直接近似最终计算结果;2)通过对一些具体的计算过程中的步骤进行重组或者近似,实现结果近似和过程模拟的结合;3)数值算法中常用的数值近似;4)1)~3)所述常见方法之外的其他近似方法以及1)~3)中一种或者多种方法的结合.

神经形态完备性仅适用于描述计算系统的计算能力,如果一个计算系统是神经形态完备的,则其可以执行所有的神经形态应用.但是,神经形态完备性不用于衡量系统的具体实现,即一个神经形态的系统并不一定必须是神经形态完备的.当然,类脑计算领域是一个不断发展的交叉领域,类脑计算系统的实现方法也是不断变化的,因此,在类脑计算层次结构设计中,我们对实现细节并没有具体的要求.由于不论是图灵完备性或者神经形态完备性,均不限制系统的具体实现,因此,随着类脑计算的发展,相关的研究人员可以添加更多神经形态的特征到类脑计算层次结构设计中,从而指导和影响类脑计算相关软硬件的实现细节.

3 抽象神经形态架构和执行原语图

本节介绍了抽象神经形态架构的设计以及其对软件的接口——执行原语图.

3.1 抽象神经形态架构

如图1所示,抽象神经形态架构包含4个部分:用于计算原语执行的处理单元、用于控制流和调度的调度单元、用于储存参数和中间数据的存储单元,以及连接上述单元的连接网络.

Fig.1 Abstract neuromorphic architecture图1 抽象神经形态架构

抽象神经形态架构是对具体硬件设计的抽象,具体到硬件设计阶段,抽象神经形态架构可以对应多种不同的硬件实现.

处理单元用于执行具体的计算(表示为执行原语),多个处理单元之间可以完全并行地执行计算任务,其具体实现方法没有限制(同步/异步、数字电路/模拟电路、是否事件驱动等).考虑到存算一体是类脑计算的主要优势之一,在抽象神经形态架构中,处理单元具有自己私有的存储单元,该存储单元仅该处理单元可以访问.即抽象神经形态架构倾向于采用存算一体的计算模式.另一方面,非存算一体硬件实现可以通过控制对存储的访问来模拟存算一体硬件实现(比如将数据访问限制于私有的存储单元),从而使抽象神经形态架构获得更好的兼容性.

调度单元则是一个可以通过多种方式实现的逻辑概念.例如,调度单元可以是负责给所有处理单元发送任务的中央调度器;也可以是负责一个或者数个处理单元的分布式调度器,每个调度器仅处理整体计算任务中的一部分.简单情况下,调度策略可以通过静态任务分配实现.

连接网络是对处理单元、控制单元和存储单元之间通信连接的抽象,其具体实现方式可以是总线、片上网络、芯片间连接等.

3.2 执行原语图

如图2所示,执行原语图是针对硬件设计的计算描述方法,执行原语图在体现硬件实现的基础上保留了一定的抽象性,其可以视作硬件实现与软件描述之间的接口或中间表示.在本节我们将具体描述执行原语图的设计.

执行原语图的基本描述单元是执行原语,执行原语是与硬件计算对应的基本计算原语,类似于传统计算机中的指令.执行原语图进一步通过双层的图结构来表示执行原语之间的关系.

执行原语图的2层结构分别为控制流图和数据流图,二者均为有向图.控制流图中的每个节点都是一张数据流图,称之为计算块,而节点间的边则表示计算块之间的控制流转换(跳转等).每个计算块执行完后,会根据控制流选择执行后续的计算块.

数据流图中每个节点都是一个执行原语,每个计算原语可以有多个输入、输出、参数数据,数据流图中的边表示执行原语之间的数据传输,源节点的输出会作为目的节点的输入.执行原语之间的数据传输采用广播模式,即节点的所有后续节点都会接收到该节点的输出.

通常情况下,在执行原语图中,程序中的主要控制流与执行顺序由控制流图决定,即一般情况下只有一个计算块可以执行.在执行的计算块中,取得了所有输入数据的计算原语进入可执行的状态.如果有多个可执行的计算原语,则其可以被并行地执行.如果计算块内的所有执行原语均执行结束,则该计算块执行结束,控制流转交给后续执行块.

具体执行过程如图3所示,调度单元依据可执行的计算块和块内可执行的计算原语的实际情况,将计算原语调度到对应的执行单元进行执行,计算原语间的数据传输则通过连接单元传输.

Fig.2 A sample of the execution primitive graph for LIF model图2 LIF模型的执行原语图示例

Fig.3 The execution of EPG图3 执行原语图的具体执行过程

4 实现软硬件解耦合的类脑计算硬件设计

本节提出了在神经形态完备性的支撑下,基于执行原语集合和抽象神经形态架构实现软硬件解耦合的类脑计算硬件设计方法.

4.1 软硬件解耦合设计

在类脑计算层次结构设计中,统一软件描述与执行模型编程原语图是图灵完备的.因此图灵可计算的类脑计算应用和其他的通用计算应用可以直接转换为基于编程原语图的表示.

使用执行原语图作为计算描述接口,抽象神经形态架构可以通过神经形态完备的原语集合实现神经形态完备性.并在神经形态完备性的支持下,将基于编程原语图的表示转换为神经形态完备性“等价”的执行原语描述.

类脑计算层次结构设计使得各个领域的研究人员可以专注于自己的专业领域.例如,神经科学领域的人员可以专注于模型设计,硬件开发人员可以专注于设计高效的硬件,软硬件之间的接口和转换则由体系结构和编译器领域的研究人员负责,从而实现软硬件的解耦合,推动整个领域的协同发展.

因此,通过设计合适的执行原语集合,即可实现软硬件设计的解耦合.文献[24]提出了基础执行原语集——由加权求和与Re LU(rectified linear unit)两个基础执行原语组成,并证明了其神经形态完备性.但是,该设计主要用于证明类脑计算层次结构的理论可行性与完备性,而实际硬件设计要考虑更多的问题(如实现代价、运行效率等),因此需要进一步探索软硬解耦合的类脑计算硬件设计.

4.2 执行原语集合设计

执行原语集合是对硬件计算单元的抽象,其设计会在很大程度上影响后续的硬件设计与实现工作.因此,在设计早期对不同执行原语集合进行评估与比较,可以为后续设计与优化提供方向与指导.所以,在设计早期对不同执行原语集合进行评估,具有重要的意义.

由于类脑计算是一个不断变化发展的交叉领域,新的计算模型和算法不断被提出,很难像已经成熟的传统领域一样抽象出非常具有代表性的标杆应用.因此,无法直接应用传统计算机领域中基于基准程序(benchmark)的共同设计(codesign)方法.此外,在设计早期,对应的硬件实现往往并不存在,这意味着无法直接基于程序的执行时间/效能进行执行原语集合评估.

针对这一情况,我们认为,可以通过分析类脑计算领域的典型计算范式(如SNN)和具有代表性的类脑计算系统设计,建立类脑计算执行原语集合——尽管类脑计算领域中的模型和应用仍在不断发展和变化之中,可能尚不足以提出被广为接受的基准程序,但不同的设计模型之间仍然存在一些典型的计算范式,以广泛使用的脉冲神经网络为例,其通常具备存算融合、事件驱动、稀疏性等特点.因此,可以构建基础的类脑计算执行原语集合——由基本数值计算算子、控制流(control flow)算子、学习/训练相关算子等构成,而且具体算子设计要考虑3方面因素:1)执行原语集合需要满足神经形态完备性;2)体现存算融合、事件驱动(例如,设计针对性的执行原语、利用执行原语图中的数据流图描述等)等特征;3)因为这一领域发展很快,算子需要具有可扩展、可组合特性.

通过调整不同类型原语的占比、原语的具体设计,并评估典型计算范式在上述原语集合中的计算复杂度,即可在设计早期对执行原语集合进行评估.需要注意的是,由于神经形态完备性引入的近似能力,诸如步骤调整、数值近似等近似能力的影响也需要纳入考虑,融合空间网络(FSN)[24]是处理此类情况的一个初步尝试.

4.3 硬件实现方法设计

执行原语集合是对硬件计算单元的抽象,在完成计算原语集合设计之后,具体的硬件实现也具有复杂的设计空间,因此,需要进一步进行硬件设计评估.

在具体硬件实现过程中,需要综合考虑不同的设计实现,如控制流/数据流设计、是否事件驱动、是否存算一体等.此外,由于神经形态完备性引入的结果近似能力,在硬件设计的过程中,需要额外考虑如何利用类脑计算层次结构引入新的优化维度——近似粒度.尽管相关的转换、重组等工作可以在编译阶段通过类似FSN等技术完成,但在硬件设计的过程中,也需要考虑诸如执行单元的数目调整、硬件计算精度等设计选择.

这样,在完成执行原语集合设计后,需要进一步测试不同设计实现对最终硬件设计的影响,可以利用FPGA的可重构特性,设计实现可扩展的、可灵活配置的仿真原型,对不同的硬件设计选项进行测试与评估.

由于执行原语集合是神经形态完备的,无需再考虑应用的具体模型和算法,只需要通过执行原语集合设计和硬件设计使得抽象计算范式集合在仿真原型上的效能最大化即可.

5 硬件实现方法评估

软硬件解耦合的类脑计算硬件设计方法的具体流程如图4所示.首先,设计执行原语集合,并基于设计空间评估结果进行迭代,直至获得适合应用需求的、满足神经形态完备性的执行原语集合.其次,针对执行原语集合,测试不同的硬件设计选项,并基于硬件评估平台的结果进行迭代修改,直至获得最优硬件设计选项.在这一方法流程中,执行原语集合设计可以基于软件或者模拟器评估结果进行,其关键在于设计高效可配置的硬件评估平台.本节以正在进行的基于Meta ANA架构的硬件评估平台工作为例,展示如何利用FPGA的可重构特性,评估不同硬件设计方法以及原语实现的性能数据和资源开销.

Fig.4 The workflow of software-hardware decoupled hardware design method for brain-inspired computing图4 软硬件解耦合的类脑计算硬件设计流程

5.1 基于FPGA的评估平台

我们基于Xilinx VCU128实现了Meta ANA架构作为硬件评估平台.Meta ANA架构如图5所示,由3个部分构成:1)原语单元,用于完成计算任务,内部有自己的存储;2)控制单元,从内存读取配置,设置各个原语的控制寄存器;3)总线,把原语、控制单元和内存连接在一起.

Fig.5 Meta ANA design图5 Meta ANA架构图

Meta ANA架构中,原语的数目、每个原语的种类和参数均可以自由配置.在实现过程中,允许屏蔽部分原语,使其不参与任何计算流程.例如,可以屏蔽Crossbar原语,通过组合ALU中的原语实现;可以屏蔽Spike原语,通过FPU和ALU中原语实现等价功能;可以屏蔽ALU中部分原语实现和参数配置,通过数值计算算法近似等.通过调节MetaANA架构中的原语数目和参数,可以评估不同配置(不同计算单元比例、不同精度等)下的性能参数,例如面积和最大频率,同时屏蔽部分原语也有助于减少逻辑综合的时间,加速测试迭代.

本文中的Meta ANA实现采用Scala上的Spinal HDL库编写,具有可复用、可重构的特点.利用Scala的语言特性,可以通过相应参数对各个原语进行自定义,并且按需生成Verilog代码用于综合.此外,由于各个原语单元之间通过总线互联,故在编写新的原语时,不需要改变其他原语单元,降低了扩展新功能的成本.

5.2 执行原语集合

本文采用的执行原语集合目前主要由4类原语组成(可根据类脑计算硬件设计流程进行扩展),即Crossbar,ALU,FPU和Spike,如表1所示.Crossbar原语用于实现矩阵 向量乘法;ALU原语子集用于实现向量 向量整形运算;FPU原语子集用于实现向量 向量浮点运算;Spike原语子集则用于实现SNN专用的加速原语,其包含2条针对SNN计算特性设计的原语:索引选择和稀疏累加,其中索引选择原语用于依据神经元动作电位值并行获得所有满足条件的神经元编号;稀疏累加原语用于依据细粒度脉冲神经网络表示[18],实现高效率的脉冲传输.

Table 1 Theprimitive Set表1 执行原语集合

如表2所示,每个计算原语都具有独立的控制寄存器和输入输出缓存.其中,控制寄存器配置原语何时计算、如何计算、计算之后做什么操作,输入输出缓存用于缓存原语的输入输出.

Table 2 Control Register表2 控制寄存器

5.3 资源开销

为评估每个原语的具体资源开销,我们评估了其在FPGA上的性能和面积.以xc7a200t为目标设备单独综合模块,并设置400 MHz的时钟.在综合结果中,取最大的时钟slack计算出对应的最大频率;此时的占用面积为输出信息中Slice LUTs和Slice Registers两个数据,结果如表3所示.以FPGA上的性能参数为基础,可以作为具体硬件设计实现过程中选择每个原语对应的器件的数目、参数、实现方法的参考与依据.

Table 3 Performance and Area表3 性能和面积开销

6 总结和未来计划

类脑计算作为一个不断发展的交叉学科,在神经科学、体系结构和人工智能领域都具有重要的发展前景.在这一背景下,实现类脑计算系统的软硬件解耦合可以使研究人员专注于自己的专业领域,从而降低领域内的合作成本,提高研究效率,有利于促进领域的协同发展.本文尝试基于神经形态完备性和类脑计算层次结构实现软硬件解耦合的类脑计算硬件设计方法,提出了其基本的设计流程并展示了初步进展.

在这一基础框架下,仍然有许多工作可以进一步展开.执行原语集合设计和硬件方法设计需要多次迭代与选择,如果每次迭代都需要实际测试,即使基于可配置、可重构的评估平台,其开销仍然不可忽视,我们尝试建立相应设计空间与实际效能之间的性能模型,从而节约硬件设计的迭代开销,加速设计效率.基于神经形态完备性引入的近似能力,如何实现其高效利用,也是值得研究的方向.相应地,我们计划进一步展开支持近似能力的编译器与优化方法的研究,构建更为高效的软硬件设计实现.此外,基于FPGA的评估平台工作尚处于初期,会进一步完善,为软硬件解耦合的类脑计算芯片设计打下硬件评估基础.

致谢感谢清华大学未来芯片技术高精尖创新中心对本文执行原语集合设计的帮助!

猜你喜欢
层次结构类脑图灵
哈啰电动车发布智能新品哈啰B70 PRO,推出智能平台图灵T30
神经元规模最大类脑计算机问世
我科学家首次提出“类脑计算完备性”
人工智能之父:图灵
新英镑
中国成立“类脑国家实验室”“借鉴人脑”攻关人工智能
基于层次分析法的电子设备结构方案评价研究
基于部件替换的三维模型生成方法
人工智能简史
基于计算机防火墙防护技术探究分析