当前位置: 首页 > 科技观察

深度学习异构加速技术(一):AI需要多大的“心”?

时间:2023-03-18 23:06:15 科技观察

1。概述:通用=低效率作为通用处理器,CPU(CentralProcessingUnit)是计算机中不可或缺的计算核心。结合指令集,可以完成日常工作中的各种计算和处理任务。不过近年来,CPU在计算平台领域称霸的步伐并不顺畅,这可以归结为两个方面,即自身制约和需求转移。(1)自身约束包括两个方面,即半导体技术和存储带宽瓶颈。一方面,当半导体工艺达到7nm时,已经逼近物理极限,摩尔定律逐渐失效,导致CPU不再像以前那样享受工艺改进带来的红利:通过更高的工艺,同样的面积下,添加更多计算资源以提升性能,同时保持功耗不变。为了追求更高的性能和更低的功耗以适应计算密集型的发展趋势,越来越多的设计通过降低通用性来提高某种(或某种类型)任务的性能,例如GPU和定制ASIC。另一方面,CPU内核的计算过程需要大量的数据,而片外DDR不仅带宽有限,而且访问延迟时间长。片上缓存可以在一定程度上缓解这个问题,但其容量极为有限。Intel大量使用数据预读、乱序执行、超线程等技术解决带宽瓶颈,尽可能多地运行CPU。然而,复杂的调度设计和缓存占用了大量CPU硅片面积,使得用于计算的逻辑,占用面积甚至不到1%[1]。同时,保证程序与以往产品兼容的约束也在一定程度上制约了CPU架构的演进。(2)需求转移,主要体现在两个新兴的计算密集型场景,即云大数据计算和深度学习。尤其是在以CNN为代表的深度学习领域,精度的提升伴随着模型深度的增加,对计算平台的性能要求也显着提高,如图1所示[2]。与CPU面临的一般多任务计算相比,深度学习计算具有以下特点:单任务、高计算密度、高数据复用性。对计算架构的要求在于大规模的计算逻辑和数据带宽,而不是复杂的任务调度,因此无法在CPU上运行更好的性能。图1.1深度学习的发展趋势:更高的精度和更深的模型,伴随着更高的计算能力要求。基于以上原因,CPU架构在深度学习、大数据分析、一些嵌入式前端应用中并不具有普适性。这时,异构计算开始进入人们的视野。本文主要讨论深度学习的计算架构。在讨论之前,先来一张经典的类比图:以“可编程性/灵活性”和“开发难度/定制化/计算效率/能耗”分别为横轴和纵轴,CPU与当前主流架构处理器的区别,例如GPU、FPGA、专用ASIC等。图1.2计算平台选择依据根据前面的分析,CPU的最大灵活性是以牺牲计算效率为代价的。GPU将应用场景简化为图形、图像和海量数据的并行计算。数以千计的计算核心旨在有效提高计算逻辑在硅片上的比重,但随之而来的带宽需求也相当恐怖。为了解决这个问题,一方面,为了保证通用性,兼容高带宽低数据复用的场景,在GPU内部设计了大量的分布式缓存;**结果。显存使用的DDR一直领先服务器内存1~2代,成为业界率先使用HBM的应用。因此,与CPU相比,GPU具有更高的计算性能和能耗比,但其相对通用性和带宽竞争使其能耗比仍高于FPGA和ASIC,其性能取决于优化程度,即计算模型和数据调度要适配GPU的底层架构。FPGA和ASIC往往更针对特定应用。毫无疑问,专用ASIC的计算效率最高,功耗最低,但在架构、设计、仿真、制造、封装、测试等各个环节都会消耗大量的人力物力。在深度学习模型不断涌现的大环境下,确定性应用还没有出现的时候,在CNN和RNN中设计各个模型的架构甚至定制一个独立的ASIC是一件很奢侈的事情。在设计方面,大家逐渐认同设计一种在AI领域具有一定通用性的FPGA/ASIC架构,称为领域处理器。可以覆盖一种深度学习(如常见的CNN模型),也可以覆盖多种(如CNN+RNN等)。2、嵌入式VS云端,不同场景下AI处理器的两种选择迅速在产业界蔓延开来。目前,各大互联网、半导体、初创公司的解决方案主要分为云端和嵌入式(或称云端和端)两种类型,总结如表1.1所示。有兴趣的可以去唐山维护列表:https://basicmi.github.io/Deep-Learning-Processor-List/表1.1深度学习处理器方案列表图1.3AI开发设计目标处理器AI处理器的开发流程如图1.3所示。早期,学术界对AI处理器架构的讨论起源于半导体和系统架构领域。此时模型层数少,计算规模小,计算能力低。主要针对嵌入式前端场景;随着模型的逐渐深入,对算力的需求也相应增加,从而产生带宽瓶颈,即IO问题(带宽问题产生原因详见2.2节)。这时候可以通过增加片上缓存和优化调度模型来提高数据复用率。当云端的AI处理需求逐渐浮出水面,多用户、高吞吐量、低时延、高密度部署进一步提升。计算单元的快速增加使得IO瓶颈更加严重,需要付出高昂的代价来解决(如增加DDR接口通道数、片上缓存容量、多芯片互联等),这限制了处理器的实际应用。这时,片上HBM(HighBandwidthMemory)的出现,使得将深度学习模型完全放到芯片上成为可能。在集成度提高的同时,带宽不再受芯片管脚互连数量的限制,从而在一定程度上解决了IO瓶颈,使云的发展方向从解决IO带宽问题解决计算能力缩放问题。迄今为止,以HBM/HMC的应用为标志,云端高性能深度学习处理器的发展经历了两个阶段:1.第一阶段,解决IO带宽问题;2.第二阶段,解决算力Scaling问题。2.2第一阶段的带宽瓶颈包括初期的AI处理器和到现在的大部分嵌入式前端方案,包括第一代TPU,目前FPGA方案的相关架构,寒武纪ASIC架构,90%的学术成果。要获得更高的性能,一个有效的方法是大幅增加计算核心的并行度,但计算能力的扩展需要匹配相应的IO带宽。例如,如果图1.4中的乘加运算单元以500MHz的频率运行,则需要每秒4GB的数据读写带宽;一个典型的云端高性能FPGA(以XilinxKU115为例)共有5520个DSP,运行全性能需要22TB的带宽;而一条DDR4DIMM只能提供19.2GB的带宽(以上分析不严谨,但不妨碍讨论带宽瓶颈)。因此,在初始阶段,设计的核心是一方面通过共享缓存和数据调用方式的优化来提高数据复用率,同时配合片内缓存减少从片外加载数据的次数。芯片内存。另一方面,通过模型优化、低位宽量化、稀疏化等手段简化模型和计算。图1.4一个乘累加单元及其带宽计算(累加值通常与输出共享,因此不计入带宽)2.3计算能力扩展虽然片上分布的大量缓存可以提供足够的计算带宽,由于存储结构和工艺的限制,片上缓存占据了大部分芯片面积(通常为1/3到2/3),这就限制了在计算能力增加下缓存容量的同步增加,如图图1.5。图1.5片上缓存在芯片中的大小。上图为谷歌第一代TPU。蓝色部分为缓存区,占芯片面积的37%。66.7%(NBin+NBout+SB)。以HBM为代表的内存堆叠技术,将原来的一维内存布局扩展为三维,大大提高了片上内存的密度,如图1.6所示,标志着高性能AI处理器进入第二阶段。但HBM工艺要求更高,成本也大大增加,所以只出现在互联网和半导体巨头的设计中。HBM将片上缓存容量从MB级提升到GB级,整个模型可以放在芯片上,无需从片外DDR加载;同时,堆栈存储器提供的带宽不再受芯片IO管脚的限制。获得50倍以上的提升,让带宽不再是瓶颈。此时,设计的核心在于高效的计算架构、可扩展的计算规模和分布式计算能力,以应对海量数据训练和计算中的频繁交互。图1.6HBM与片上垂直堆叠技术目前,AI架构已经从百家争鸣逐渐走向应用。在接下来的几页中,将讨论这两个阶段。原文链接:http://suo.im/3NdE0p作者:kevinxiaoyu【本文为专栏作者《腾讯云技术社区》原创稿件,转载请联系原作者获得授权】点此查看更多好文由这位作者