适用于深度学习的高性能系统架构综述

Posted 在下小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适用于深度学习的高性能系统架构综述相关的知识,希望对你有一定的参考价值。

 

课程作业,正好自己也在学深度学习,正好有所帮助,做了深度学习的AI芯片调研,时间比较短,写的比较仓促,大家随便看看

近年来,深度学习技术,如卷积神经网络(CNN)、递归神经网络(RNN)等,成为计算机视觉等相关领域的研究热点之一,取得了一定的研究和应用成果。回顾人工智能发展史,早在上世纪 80 年代末期,Geoffrey Hinton等人便提出深度学习的方法,并且在数字手写体的识别问题方面取得突破性进展。进入90 年代后,由于对深度学习理论认识和硬件系统计算能力的局限性,深度学习技术的发展受到制约。随着芯片存储和处理能力的提升,深度学习研究也被推向一个高潮。

相对于SIFT等传统手工特征,深度学习技术通过大规模数据的多层次学习,训练出深度模型,可以从数据中提取更加抽象的特征表示。然而,深度学习模型结构复杂、参数数量庞大,训练深度学习模型需要极大的数据量和超强计算能力。随着计算机硬件技术的快速发展,各种加速器的处理能力显著增强,为深度模型的训练提供了硬件基础。因此,本文对深度学习研究中用到的几种硬件架构进行调研,做出分析和总结。

GPU:当前市场主流芯片

对于深度学习来说,目前硬件加速主要靠使用图形处理单元(GPU)集群作为通用计算图形处理单元(GPGPU)。相比传统的通用处理器(GPP),GPU的核心计算能力要多出几个数量级,也更容易进行并行计算。尤其是NVIDIA CUDA,作为最主流的GPGPU编写平台,各个主要的深度学习工具均用其来进行GPU加速。最近,开放型并行程序设计标准OpenCL作为异构硬件编程的替代性工具备受关注,而对这些工具的热情也在高涨。虽然在深度学习领域内,OpenCL获得的支持相较CUDA还略逊一筹,但OpenCL有两项独特的性能。首先,OpenCL对开发者开源、免费,不同于CUDA单一供应商的做法。其次,OpenCL支持一系列硬件,包括GPU、GPP、现场可编程门阵列(FPGA)和数字信号处理器(DSP)。

2012 年,Krizhevsky 等人仅凭借两块 GPU 训练 AlexNet 模型,取得了 ImageNet图像分类的极佳效果。CPU 与 GPU 两者都是由控制器、逻辑单元和寄存器组成,其中,GPU 中逻辑单元的规模远远高于 CPU,如图1所示。这种不同的构架决定了 GPU 在数据的算术、逻辑运算等方面的并行处理能力显著增强,而基于神经网络的深度学习技术,对并行处理能力的要求远远高于计算精度。除了计算核心的增加,GPU 在每个流处理器集群末端设有共享内存,在共享内存中就可以完成线程之间的数据通讯,通讯速度显著提高,而 CPU 每次都返回内存,进行数据调用。另外,GPU 采用的是 GDDR5 显存颗粒,具备很高的工作频率和显存带宽,对大规模深度神经网络的训练更有优势。

 

图1 CPU与GPU架构对比

现有的GPU架构主要有Tesla、Fermi、Kepler、Maxwell、Pascal等。2017 年 5 月,英伟达发布新的 GPU 架构Volta,可以实现4倍于Pascal 架构的性能,GV100 是采用 Volta 架构的第一款 GPU。Tesla V100 是使用GV100 GPU的第一个 AI 芯片。相对于 Pascal 架构,Tesla V100 对深度神经网络训练和推理阶段的性能分别提高 12 倍和 5 倍。GPU在浮点计算、并行处理等方面的性能远远高出 CPU。同时,越来越多的深度学习标准库支持基于 GPU 加速,如 OpenCL、CUDA等。英伟达的 GPU 云平台 NGC,提供 Caffe、Caffe2、MXNet、CNTK、Theano、TensorFlow、Torch 等框架、深度学习 SDK 等,此举将大大促进深度学习技术的发展。

FPGA:高性能低成本架构

GPU 价格昂贵且功耗大,相对于GPU,价格便宜、能耗较低的可编辑门阵列(FPGA)引起了大家的注意。

FPGA(Field Programmable Gate Array)是在PAL、GAL、CPLD等可编程逻辑器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点。FPGA的开发相对于传统PC、单片机的开发有很大不同。FPGA以并行运算为主,以硬件描述语言来实现;相比于PC或单片机(无论是冯诺依曼结构还是哈佛结构)的顺序操作有很大区别。FPGA开发需要从顶层设计、模块分层、逻辑实现、软硬件调试等多方面着手。FPGA可以通过烧写位流文件对其进行反复编程,目前,绝大多数 FPGA 都采用基于 SRAM(Static Random Access Memory 静态随机存储器)工艺的查找表结构,通过烧写位流文件改变查找表内容实现配置。

目前,FPGA 可以采用OpenCL、C等更高效的编程语言降低了硬件编程的难度 ;还可以集成重要的控制功能,整合系统模块,提高了应用的灵活性 ;FPGA 以门电路直接运算,速度快,而用户可以自由定义这些门电路和存储器之间的布线,改变执行方案,以期得到最佳效果。

现有的 FPGA 的厂商主要有赛灵思、 Altera、Lattice 等。目前,国内有许多企业,也致力于 FPGA 研究。例如,深鉴科技主要研究了针对机器学习的处理器和编译器技术,发明的“深度压缩”和“片上存储”技术,可以把深度神经网络压缩几十倍却不会降低准确度,同时提高了内存读取速度,并减少功耗。

FPGA 性能高,但是也有一些局限性 :第一,编译速度慢、编程难度较高。使用高端服务器需要几分钟才能 完 成 FPGA 编译,移动端速度会更慢。第二,FPGA要求使用者能使用硬件描述语言对其进行编程。但是,已经有科技公司和研究机构开发了更加容易使用的语言比如Impulse Accelerated Technologies Inc. 开发了C-to-FPGA编译器使得FPGA更加贴合用户的使用,耶鲁的E-Lab 开发了Lua脚本语言。这些工具在一定程度上缩短了研究者的开发时限,使研究更加简单易行。此外,FPGA 加速器主要针对的是企业客户,如百度、IBM、微软等公司。

TPU:定制化机器学习加速器

在2017年的谷歌 I/O 开发者大会上,谷歌宣布设计一款全新类别的定制化机器学习加速器定制化硬件-张量处理器。

TPU 将使我们快速做出预测,并使产品迅速对用户需求做出回应。TPU 运行在每一次的搜索中;TPU 支持作为谷歌图像搜索(Google Image Search)、谷歌照片(Google Photo)和谷歌云视觉 API(Google Cloud Vision API)等产品的基础的精确视觉模型;TPU 将加强谷歌翻译去年推出的突破性神经翻译质量的提升;并在谷歌 DeepMind AlphaGo 对李世石的胜利中发挥了作用,这是计算机首次在古老的围棋比赛中战胜世界冠军。

TPU 的中心是一个 65536 的 8 位 MAC 矩阵乘法单元,如图3所示,可提供 92 万亿次运算/秒(TOPS)的速度和一个大的(28 MiB)的可用软件管理的片上内存。相对于 CPU 和 GPU 的随时间变化的优化方法(高速缓存、无序执行、多线程、多处理、预取……),这种 TPU 的确定性的执行模型(deterministic execution model)能更好地匹配我们的神经网络应用的 99% 的响应时间需求,因为 CPU 和 GPU 更多的是帮助对吞吐量进行平均,而非确保延迟性能。这些特性的缺失有助于解释为什么尽管 TPU 有极大的 MAC 和大内存,但却相对小和低功耗。

 

图3 TPU各模块框图

TPU采用专用的处理单元以及专用的指令集,相比于GPU,极大地提高了处理的效率。TPU有足够的灵活性来匹配2017年以及2013年的神经网络,尽管数据路径和内存较大,但是省略了通用功能,使得功耗较小;量化应用程序使用8位整数;而且应用程序是使用TensorFlow编写的,这使得它们可以很容易地以高性能移植到TPU上,而不必重写,以便在不同的TPU硬件上运行良好。

TPU已经应用在很多方面,例如机器学习人工智能系统RankBrain,它是用来帮助Google处理搜索结果并为用户提供更加相关搜索结果的;还有街景Street View,用来提高地图与导航的准确性的以及下围棋的计算机程序AlphaGo。

NPU:神经网络处理器

NPU的典型代表有国内的寒武纪系列芯片。DianNao在ISCA-2012加速器的基础上增加了局部存储,使其可以捕捉深度神经网路的数据局部性并由此克服内存带宽的限制。DianNao家族的第二个加速器是DianNao的多片版本,被称为DaDianNao。该芯片主要有两个设计目标:一是揭示神经网络层的可分特性使得加速器可具备极好的可扩展性,二是聚集足够多的片上存储来将整个机器学习模型都放在片上,从而克服内存带宽的限制。作为克服嵌入式应用中内存带宽限制的另一种方法,我们揭示可以通过加速器和传感器的直连来绕过内存。我们将此思想应用于视觉传感器,从而提出了DianNao家族的第三个加速器ShiDianNao,发表于2015年的ISCA上。最后,揭示出这类加速器的应用领域可以被拓展至多种机器学习算法,因为这些算法多具有类似的运算操作。相应的加速器设计称为PuDianNao(DianNao家族的第四个以及最后一个成员),发表于ASPLOS-2015。

DianNao结合神经网络模型的数据局部性特点以及计算特性,进行存储体系以及专用硬件设计,从而获取更好的性能加速比以及计算功耗比。

主流的基于异构的GPU的加速和FPGA的加速,还有直接硬件化算法的 ASIC都没有真正处理还内存访问和内存带宽的限制,而由于大规模的神经网络的特点,这种直接给予DMA的方式在一定程度上不能对神经网络进行理想的加速。与CPU的设计不同的是此架构将内存的访问作为设计的第一考虑因素。主要在以下三方面做出贡献:对大规模的CNNs和DNNs机器学习算法的综合硬件的设计; 在很小的芯片空间上高吞吐率和低功耗;专注访存的性能,性能不受计算任务访存的区别。

相对于主流的CPU,SIMD快了117倍,而功耗变成了原来的1/21。与主流的GPU的性能相当,但功耗降低了两个数量级。

类脑芯片:未来发展

AI 界的科学家一直致力于模仿人类大脑研究。人脑中的神经元之间,信号传导速度缓慢,但是其数量众多,而且每个神经元都与另外的众多神经元相互连接,共同支配着人的感知和行为。同时,有些神经元在不需要时并不会被激活,从而降低了整体耗能。研究人员按照此机理,对人脑进行模拟,如由 1000 台配有 16 核处理器的计算机组成的 Google Brain 等,在硬件上对大型神经网络进行仿真。但是组成这些网络需要大量的计算机集群,这种架构使得集群处理能力显著提高,但是能耗巨大。IBM 的 SyNAPSE 项目则在芯片上对人脑进行模仿。此计划目的是还原大脑的计算功能,使系统能够模拟人类的感知、行为与交流的能力,以辅助士兵在战场上的认知能力,用于无人武器的自动作战。

类脑芯片TureNorth 在该计划中备受瞩目。不同于传统冯诺依曼体系,TureNorth的内存、CPU 和通信部件是集成为一体的。因此,信息的处理完全在本地进行,神经元之间的沟通更为便捷。上海的西井科技发布了全球第一款可商用化类脑芯片,也是世界上拥有最多神经元数目的类脑芯片,共 5000 万个神经元。

从芯片性能来看,与 GPU 和FPGA 相比,类脑芯片的计算能力很有限。因此,类脑芯片在人工智能研究中使用最小众化。如果未来人类可以更好地理解人脑的结构和机理,有了更充分的理论和实验支持,类脑芯片的性能也可能会得到极大改善。

未来展望

首先,在实现相同的深度学习算法时,FPGA 和 ASIC 的处理效率更高,且功耗在很大程度上低于 GPU/CPU ;其次,由于冯诺依曼结构的局限性,GPU/CPU 的并行计算能力不能充分发挥,而 FPGA 与 ASIC 可以同时实现并行计算和流水线操作,缩小了输入与输出的延时比;针对移动端的深度学习,在FPGA 和 ASIC 中,SoC+IP 模式可以更好地优化神经网络结构,提升效率。另外,FPGA 芯片具有研发周期短、可配置性高、功耗低等特性,被广泛应用于大型企业和军工单位等。ASIC 在应用上则偏向于移动终端等领域。

经过分析比较得知,GPU 较为适合 SIMD 体系结构,它只需一个指令就能并行处理大量数据。但是对于需要用多条指令平行处理一个数据的 MISD,FPGA更有优势,且更适合深度学习加速。FPGA 可以方便灵活地调整电路配置来适应算法 ;FPGA 比GPU 更适合用于深度学习的推断阶段;最后,赛灵思研发了可重配置加速栈堆,以降低 FPGA 的编程难度,提供了一些硬件加速方案,用户可直接挑选方案,不用自己设计布局布线,方便快捷。所以未来,FPGA 将会更有效地适应深度学习技术研究。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考文献

[1] Chen T, Du Z, Sun N, et al. DianNao: a small-footprint high-throughput accelerator for ubiquitous machine-learning[J]. Acm Sigplan Notices, 2014, 49(4):269-284.

[2] Chen Y, Luo T, Liu S, et al. DaDianNao: A Machine-Learning Supercomputer[C]// Ieee/acm International Symposium on Microarchitecture. IEEE, 2014:609-622.

[3] Du Z, Fasthuber R, Chen T, et al. ShiDianNao:shifting vision processing closer to the sensor[C]// ACM/IEEE, International Symposium on Computer Architecture. IEEE, 2015:92-104.

[4] Liu D, Chen T, Liu S, et al. PuDianNao: A Polyvalent Machine Learning Accelerator[C]// Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems. ACM, 2015:369-381.

[5] Jouppi N P, Young C, Patil N, et al. In-Datacenter Performance Analysis of a Tensor Processing Unit[J]. 2017:1-12.

[6] Akopyan F, Sawada J, Cassidy A, et al. TrueNorth: Design and Tool Flow of a 65 mW 1 Million Neuron Programmable Neurosynaptic Chip[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2015, 34(10):1537-1557.

[7] 沈阳, 王倩, 王亚男,等. 深度学习硬件方案综述[J]. 广播电视信息, 2017(10):64-68.

[8] http://ee.ofweek.com/2017-04/ART-11001-2814-30122437_3.html

[9] http://www.openhw.org/module/forum/thread-658461-1-1.html

[10] http://blog.csdn.net/amds123/article/details/66109709

以上是关于适用于深度学习的高性能系统架构综述的主要内容,如果未能解决你的问题,请参考以下文章

综述 | 深度学习编译器架构

Ceph分布式存储系统架构研究综述

Ceph分布式存储系统架构研究综述

Ceph分布式存储系统架构研究综述

Ceph分布式存储系统架构研究综述

NLP实操手册: 基于Transformer的深度学习架构的应用指南(综述)