摘要: 神经形态计算是一种受大脑启发的硬件和算法设计方法,能够高效地实现人工神经网络。神经形态设计者运用神经科学家所发现的生物智能原理来设计高效的计算系统,通常应用于对体积、重量和功耗有限制的场景。随着这一研究领域处于关键转折点,为未来大规模神经形态系统的发展规划路线至关重要。我们描述了创建可扩展神经形态架构的方法,并明确了关键特性。我们讨论了可能从扩展中获益的潜在应用以及需要解决的主要挑战。此外,我们还探讨了维持这一增长所需的完整生态系统,以及在扩展神经形态系统时所面临的新机遇。我们的工作提炼了多个计算子领域的理念,为致力于推动神经形态计算前沿的研究人员和实践者提供了指导。
0. Intro
(神经模态计算)出现如此巨大增长的一个原因在于这类系统具有多功能性。举例来说,传统计算的进展往往聚焦于特定类型的体系结构——例如面向超级计算机的“百亿亿次级”(exascale)架构或面向嵌入式系统的小规模架构,并且很少有相同的架构可以同时对这两者产生影响。然而,神经形态计算有潜力通过在整个过程中使用同质化的计算技术,同时在这两种类型中带来颠覆性变化。是否能够推动该领域实现重大的计算突破(例如Box 1所描述的“AlexNet时刻”),以及如何理解某种方法的成熟度,不再仅仅是看单一的性能指标就能回答的。
Box1: AlexNet-Like moment for nueromorphic computing
在探索大规模神经形态计算潜力的过程中,我们从持续推进的深度学习革命及其通往可行性与影响力的路径中汲取灵感。二者都基于对神经机制不同层次的理解,并且都经历了很长一段时间的成果受限期。正如卷积神经网络在数字识别方面不断成熟一样,神经形态计算系统也正处于它们自身“AlexNet时刻”的边缘——一个潜力得以突破性实现的关键节点。本文概述了需要解决的开放性问题,这些问题一旦得到突破,就能催化这一关键进展,使神经形态计算能够产生与深度学习相当的影响。
神经形态计算的进步或许在很大程度上依赖于专用硬件,就像当初AlexNet是依托通用GPU的性能才得以实现一样。AlexNet引发了深度学习模型规模的激增,促使计算机性能更强大、模型规模更庞大,以及芯片性能显著提升。神经形态计算应当以类似方式,找出能释放其潜能的关键硬件需求。尽管当今的大规模深度学习系统使用了成千上万块加速芯片,神经形态计算的首个突破却可能来自一个相对小型的硬件配置——毕竟AlexNet当初只用了两块GPU。这样的“神经形态计算版AlexNet时刻”能够激发更加大规模系统的研发,类似于深度学习的发展轨迹。在小规模神经形态计算系统上取得的突破将为大规模的神经形态计算部署铺平道路。
神经形态计算系统相较于传统深度学习加速器,在计算方面具备显著优势:(1)存储与计算紧密耦合,避免了在计算单元和存储器件之间进行高成本数据传输;(2)通过脉冲或事件进行稀疏分布式信息编码,这些脉冲或事件携带时间信息;(3)动态且本地化的学习方式,避免了反向传播跨多层网络带来的高能耗;(4)为了通过学习达到稳定的感知,它们会对感官信号进行预测;(5)在多个时间尺度上使用动力学以实现实时学习和处理。然而,这些特性并非“灵丹妙药”。我们也可以通过自顶向下的工程方法来实现这些优化,但我们相信,如果参考进化已经产出的解决方案,可能会更快到达目标。神经形态计算系统为此提供了一个解决之道。其优势在于这一领域紧密贴合神经科学与生物学,而后两者已经通过自组织、动态重连、三维生长、模块化、高效信号编码、稀疏性以及事件驱动的计算等方式,找到了应对这些问题的途径。我们期待这些生物学原理能为大规模系统的设计带来启发。
下图是各种神经模态计算芯片随着时间scale up的示意图。
1. Progression of neuromorphic computing to scale
多年来,微电子产业一直通过“规模”这一指标来衡量创新的进步;其中包括底层硬件的密度(即众所周知的摩尔定律所体现的趋势)以及超级计算机以每秒浮点运算(FLOPS)来衡量的性能指标。这样一个统一的指标可以帮助我们洞察计算设备能够带来何种性能水平,从解决资源受限场景的最小型微控制器,到面向高性能计算需求的服务器级处理器。因此,使用类似且扩展后的指标来考量神经形态计算的规模似乎顺理成章。产生这种想法可能有多方面原因:它不仅延续了通过“能够进行多少计算操作”来衡量性能提升的传统,同时也有一套直观的工程衡量方法,把处理器或系统中的神经元数量与不同昆虫或动物的大脑规模相对应。这些直观的构想虽然与可量化的进展相得益彰,但却低估了神经形态计算的独特属性。扩展到更大规模时,在制造、测试和可靠性方面会引入各种新的挑战,特别是在不可控条件下的性能表现、基础设施以及易用性等方面。
Key neuromorphic computingn features
- Distributed and hierarchical: 让neuron在不同的结构、组织方式、尺度上处理信息,提高可解释性的同时减少冗余;
- Sparsity: 稀疏化可以是结构性的(例如对权重、神经元、注意力头等进行稀疏化)或即时性的(例如对激活、梯度、误差进行稀疏化),目标是降低能耗、提高表示能力,同时说不定还有利于芯片的scale up
- Neuronal scalability: 就是可以scale up
- Asynchronous communication: 基于AER的异步通信
- Dynamic reconfigurability: 研究表明,实现高级认知功能需要在脑区之间建立高度演变、不断重构的网络,并在复杂而短暂的通信模式下进行交互。针对这一点,很多神经形态系统都支持不同形式的动态可重构性。这种特性可以作用于原始构建块(例如突触、神经元、轴突、树突)或整个系统的可塑性。on chip learning?
- Redundancy and correlation: 抗噪声的能力
- Sensor and compute interfaces: 事件相机等,其他形式的传感器也需要引入一些“统一神经编码”
- Resource awareness: 对加速器进行资源感知(resource awareness)设计对于效率与多功能性至关重要。资源感知是指系统能够在运行周期内监测自身的能耗、计算能力和存储规模。系统应能在某种程度上根据动态变化的目标和功能需求来调整资源分配。我们可以从自感知(self-aware)架构和持续学习(continual learning)加速器中获取灵感来支持这些特性。
上述每个关键特性都可以根据其对功耗、性能、可扩展能力、自适应性以及集成多样性的影响进行更深入的探索。此外,我们也要注意到,一些神经形态系统所固有的特性,同样可以运用于传统大规模系统的设计。比如,极端并行(extreme parallelism)在大型超级计算机的设计中同样根本且常见,并非神经形态计算所独有。通过改变扩展曲线的斜率,可使模型规模远大于当下水平;另一方面,即便是针对较小的模型,也能在更大规模数据集上进行更长时间的训练。这样一来,便可更轻松地针对每个具体任务训练许多小型模型,而非延续目前只训练一个极其庞大模型并尝试将其应用于许多不同任务的做法(这往往导致在小众或长尾任务上的性能不足)。因此,尽管其中一些设计理念并不只属于神经形态计算,但它们在统一的计算模式下相互配合所展现的潜力,才是我们所关注的关键。
2. Challenges and opportunities
尽管神经形态系统已经取得了实质性进展,并且在为社会带来益处的广泛应用中,提供可持续且稳健的技术方面具有潜在的颠覆性影响,但仍存在显著的障碍和挑战。若要让这些系统获得广泛采用并产生实质影响,这些挑战亟待克服。这些挑战适用于神经形态硬件设计者、用户和算法开发者,既包括他们需要硬件与软件协同设计和开发(见 Box 2),也涵盖技术采纳方和初创者。
Box2: Hardware/software co-design
神经形态计算本质上是一个跨学科领域,横跨神经科学、计算机、工程学和人工智能系统。遵循这些领域各自的最佳实践和研究方法,会产生多种截然不同的思路来应对系统设计问题。设计神经形态系统的一种方式,是从大脑在各个抽象层面上的可塑性和学习能力中汲取灵感,并将其转化为模型,然后在实际部署之前,就机器所需的硬件和软件组件展开协作。自顶向下的方法是,研究人员在没有详细的神经元或突触模型的情况下,通过对分层皮层结构进行抽象,并利用这些模型来指导硬件与算法设计。在这种情形中,我们需要识别大脑内能够使系统实现规模化的关键架构与连接。另一种自底向上的方法则是,设计者利用底层器件的固有特性来推动新的算法进展,从而改进整体架构和系统。在这一背景下,诸如存内计算、新兴器件技术以及低精度算术等方面的创新都十分关键。然而,这两种方法都会因为算法设计者与系统架构师彼此对器件特性的认知不足而引入效率低下的问题,反之亦然。一个潜在的解决方案是采用软硬件协同设计,并且在整个设计过程中始终将可扩展性纳入考量,而不局限于哪一种设计思路。
开发者的角度上来讲,一是缺乏一种合适的硬件抽象,让开发者不需要考虑neuromorphic硬件的底层实现也可以写出高效的可部署的算法(但我认为这个在目前的神经模态计算发展情况下是不可能的,就像TVM日渐式微,现在神经模态计算硬件的底层实现不同的地方太多了,基于crossbar的非PIM的各种各样的,不同的硬件都有自己的特性,要靠一个中间层抽象支持这么多巨大差异的硬件还是不太可能的)。
设计者的角度上讲:
需要在系统堆栈的各个层面进行协同工作。器件、电路、架构、算法和应用等领域的进展应由设计者无缝整合到一个“神经形态系统”中。因此,在设计神经形态系统的过程中,要在该堆栈中保持高度的同步。尤其要强调的是,为了让这些系统能完成复杂任务,需要组件的模块化。由此引出一个问题:神经元和突触是否真的是神经形态系统的合适抽象层级——这是目前社区的主流实现方式。此外,神经形态算法通常强调生物合理性,但这种强调在追求可扩展性与能效的同时,并不一定总能获得最佳的任务性能。一方面原因在于神经形态与生物基质存在差异;另一方面,生物体系包含了许多层次的复杂度,而简化的生物模型并不能完整反映这些复杂度。眼下的难点在于,如何构建合适的算法抽象层级,让我们能在不必纠结于无关生物细节的情况下,对算法的效率和可扩展性进行清晰而集中的推理。若要让神经形态算法实现规模化,还需要对异步与分布式算法投入更多关注;而这在过去更多是另一个研究社区(而非主流深度学习和神经形态计算社区)的重点。最后,识别诸如高速传感器集成、多样化传感器兼容性等关键接口需求,也是设计阶段必须考虑的重要挑战。另一个尚未解决的挑战是如何继续吸引神经科学家参与到跨学科团队中,让神经形态研究者真正推动某些神经科学实验。
用户的角度上讲,现在的神经模态计算还没有一个“Killer Application”,没有一种“理论性证明”(如,量子计算的并行)它比现在的ANN更好,或者一个实际中的应用表明神经模态计算有远超当前其他范式的能力;
Cross-platform neuromorphic software
深度学习能够取得主流成功,还要归功于功能强大且相对易用的开源软件工具的出现。它们为用户和应用开发者提供了高度抽象,不需要对理论机器学习有太深入的了解。例如,TensorFlow、Keras 和 PyTorch 等工具隐藏了诸如自动微分之类的复杂数学过程,使用户能够专注于网络结构等高层抽象层面。而在这方面,神经形态计算目前还存在不足;能够“即插即用”的工具屈指可数,而且主要由少数领域研究者负责开发和维护(如 jAER)。虽然有社区驱动的支持和开源工具增长的潜力,但尚需要讨论究竟什么才是构建这些计算工具时最恰当的抽象层级。 面向神经形态硬件的神经网络建模工具目前相对不够成熟,往往相当于停留在“寄存器传输语言(RTL)”的层次,而不是更高层的综合。也可将这种不成熟度部分归咎于社区中分散的努力、多样化的算法以及不同类型的神经形态平台(模拟式、数字式或软件式),它们有各自独特的实现需求。近来的框架开始支持多种神经元模型、学习规则,以及部分更丰富的后端平台,还可从已有的深度学习框架中导入模型。不过,神经形态框架在社区内的使用度较低,并不是因为缺少工具,而是缺乏统一标准;这个标准不应受到某家商业实体的利益主导,而应由整个社区来引领。近来的举措试图建立开源框架与通用的中间表示层,为硬件厂商遵循标准、实现互联性提供了动机。 在社区仅接受少数几个软件框架的情况下,硬件公司就能够专注于研发前沿加速器,而无需为每一款新芯片都重头设计全套软件栈,从而提升新芯片的可采用性。展望未来,我们希望出现拥有更高抽象层级、具备通用中间表示层的工具,也许能通过将脉冲神经元组成的功能模块库进行组合来开发应用。但这些功能模块应具备怎样的功能,以及如何开发,依然是个有待探讨的问题。
3. Community readiness and ecosystem
- Research&Develop groups: 指向广泛的利益相关者提供硬件原型,以便他们测试该技术
- Easy, common and open-source software: 让主流用户在无需理解底层硬件的情况下,将模型部署到神经形态平台上
- Benchmarks:
社区所接受的软件栈会直接影响对统一进展指标的采用。然而,由于该领域仍在成长,且神经形态系统本质上存在异质性,要找到比较不同算法及硬件平台的通用指标和基准测试并不容易。更具体而言,不同的神经形态实现方式和硬件实例本身就需要不同的指标和基准测试。然而,若能对已经成熟的技术环节进行规范化(例如事件驱动的接口标准、输入/输出神经元等),再配合不依赖特定硬件的软件栈,就能为定义公平的基准提供一条可行之路。这方面的例子包括借鉴高性能计算(HPC)思路的系统级基准测试、针对脉冲系统的业界主导基准,以及评测概率系统的工具。也有一些数据集专门用于脉冲系统的基准测试,但它们尚未被广泛采用。同样地,用来衡量硬件性能的指标也种类繁多,缺乏社区共识。常用的单一指标包括能耗、功率、延迟、准确率、面积、鲁棒性和抗噪性。这些指标若单独看,往往并不具备充分的参考意义(除非是在比较非常相似的设备或系统)。因此,通常会结合使用多个指标,例如能量延迟乘积、每突触能量以及相对准确率。但就目前而言,仍缺乏业界普及的统一标准、指标与基准,相关研究尚在积极开展,目标是未来能得到广泛应用。例如,社区也在持续进行努力,希望通过定义一套适用于神经形态算法和硬件系统的基准和指标来改善现状。也有一些工具用于评估神经形态系统和模型在神经科学与心理学建模方面的表现。不过,要想定义一套适用于本论文“神经形态计算关键特性”一节所描述的各种功能特性且能普遍适用不同神经形态系统的基准和指标,依然是个颇具挑战性的任务。
- Field-crossing tehcnology: 神经形态系统还必须应对在传统与神经形态 API 之间双向转换时所产生的额外接口损耗。有时,这些损耗可归因于接口中使用的脉冲编码方案。为确保神经形态平台的可用性,需要处理好这类损耗,否则就会抵消“类脑引擎”带来的计算效益
- Proofs of concept: 选择合适的概念验证场景,对最大化投资所带来的影响至关重要。如果选择的细分领域具备“连锁反应”效应,就能得到更大的影响
- Listening to the feedback: 持续保持以用户为中心的思路
4. Outlook
Neuroscience exploration
在GPU上运行人脑level的神经元模拟是很困难的,Loihi等一系列类脑芯片可能更有助于实现这个方向的大规模研究。
但人脑的不同递质?发放模式?异质的neuron?是否真的能模拟?同时按(Jonas, E., & Kording, K. P. (2017). Could a neuroscientist understand a microprocessor? PLOS Computational Biology, 13(1), e1005268. https://doi.org/10.1371/journal.pcbi.1005268)讲,我们按照研究人脑的方法论研究CPU根本就是不work、无法触及本质的,这种大规模的模拟究竟有没有用?
ML innovations
除算法本身的进步之外,深度学习算法对计算需求的激增也推动了计算架构的创新。然而,这些进展并非彼此独立。著名的“硬件彩票”(hardware lottery)理论指出,一些计算思路之所以能够胜出,未必是因其本身更优,而是因为相关的硬件环境给它提供了支持。部分因为这一现象,缺少可使颠覆性神经启发算法获得高性能的硬件,也阻碍了神经启发式(neuro-inspired)机器学习的创新。因此,我们期待,大规模、行之有效的神经形态计算系统能够助推神经启发式机器学习创新。在前文中,我们已提炼出的神经形态关键特性,也可以视为未来机器学习创新的蓝图。 值得注意的是,上述各种进步的融合,意味着我们正在转向将算法与架构视作互相交织的整体,这与大脑的设计相仿,而不同于冯·诺依曼计算中常见的割裂思路。神经形态硬件的出现,或许会在神经网络机器学习中带来前所未有的颠覆。我们的大脑很好地体现了学习算法的内在特点:其参数可随时间而改变,从而调整功能,与传统硬件(例如数据中心的 GPU)及其固定训练模式不同。大脑可以在多个时间尺度上学习,并将存储与计算无缝融合。神经形态计算通过利用新兴器件技术,能为解决这些根本瓶颈提供别具一格的途径。
Emerging devices and architectures
crossbar/忆阻器这样的新型PIM。SNN计算的模式可能就是需要PIM,因为有非规则的稀疏 + 多个timestep的多次访存。
5. Summary
神经形态计算系统在多个领域都可能带来重大影响,如今正是进行大规模创新的恰当时机。该领域已经从学术机构开发的原型系统,发展到具备事件驱动处理、学习模型和设计工具并且伴随真实环境实验的生产级系统。在这些基础之上,业界进一步推动了相关系统在科学计算、增强/虚拟现实、可穿戴设备、智慧农业、智慧城市等应用领域的发展。要持续推动这一领域的进步,需要来自多个学科及公私领域的庞大工程师与科学家群体共同为明确的目标而通力合作。本文提供了这样一种可能性的路线图,并总结了若干仍待解决的关键问题,以期为未来研究提供启发。
第一步,我们应当审视神经形态计算系统所能支持的一系列广泛功能,识别可异构连接的通用原语,并在此基础上进行进一步集成,形成多用途的体系结构。人脑由若干独立且专业化的部分所组成,并通过分布式方式连接在一起。目前,这些脑区并不能与神经形态领域使用的智能组件(更精细的粒度)一一对应。在本文中,我们提出了一组特性,用于帮助识别能够支持更强大系统部署的原语。这些系统应支持多种学习机制,如在线持续学习、基于事件的实时决策、传感器—动作(sensorimotor)融合算法、多模态学习以及预测建模等。而与其只关注某个单一硬件平台或少数特性,现在正是时候去探索各种不同能力,并了解哪些神经形态特性对于不同应用是不可或缺的。我们并不认为将来会有一个适用于所有大规模神经形态系统的万能方案,而是会出现一系列依据不同应用需求而具备不同特性的神经形态硬件解决方案。
目前的神经形态实现大多集中在单芯片或单板卡上,这可能并不适合构建大规模系统。这会引出两方面的思路:
- 针对分布式与异步性质,研究具有稳健性的模型与算法。这需要更加协作的努力,也是一项不容小觑的挑战。
- 将这些学习模型扩展至更大规模的网络与机器。我们可借鉴人工智能(AI)社区的原则:将大模型部署在云端或异构系统上。如果能实现这一点,神经形态系统的采用率也会自然而然地提高。
此外,神经形态系统的发展常常受制于大量小规模原型只分散在各个实验室,而且只能由少数专门人员使用,外部专家和普通用户难以接触到这些测试平台。这样一来,系统在可移植性、标准化和跨领域知识转移方面面临阻碍。通过推动开放式的原型测试平台与基准库,我们可以催生出新一代规模更大、具备自适应能力的神经形态系统。如果将这些原型测试平台与传统计算系统结合起来,也将带来研发热潮,并加速面向应用的研究。通常,这些开放资源应当配合一些可量化的性能指标或公开基准,以便在可扩展系统领域持续推动富有成效的增长。我们还能借鉴深度学习及相关领域中成功的产学合作模式,以进一步缩短研发周期。反过来,这也能为深度学习社区带来新思路,去解决更贴近人类学习方式的问题。
近些年来,为实现快速原型或评估,软件和硬件设计工具的发展呈上升趋势。不过,目前还缺乏一个覆盖全面的软件工具生态和社区论坛,来同时支撑专家与新手。尽管一些业内伙伴正着手解决部分问题,但多数工具的开发依然各自为政。图 4 所示的工具链发展潜力表明,这些工具可以与广受认可的深度学习工具相集成或从中受益。此外,还需要思考那些能够充分利用大规模事件驱动系统的关键应用。此类应用如今也正被探索,包括面向非认知领域、分布式边缘智能,以及神经形态系统与深度学习系统相结合的特殊场景。
最后,我们在文末(Box 4、Box 5、Box 6)提出了一些可在近期、中期与更遥远未来探究的问题。当前正是对大规模神经形态计算投入资源的理想时机,这一举措或将为自然系统与未来 AI 系统的协同发展带来突破性进展。