AI已经从技术走向应用,改变了我们的生活和工作方式。近些年,AI算力芯片领域群雄逐鹿,通过对芯片、算力与AI三者发展迭代过程的理解,我们发现高能效比的算力、通用的软件栈以及高度优化的编译器,是我们的AI算力产品迈向成功的必要条件。
进迭时空作为计算芯片企业,我们对RISC-V架构CPU进行高度定制,不断挖掘其在计算中的潜力,在RISC-V生态强大的软件栈与CPU领域成熟的编译器的基础上对RISC-V DSA进行联合优化并提供软硬一体的计算解决方案,给AI领域带来高效、易用的算力。
Banana Pi BPI-F3
GPGPU作为HPC领域(通用算力)的DSA打开了AI的大门
在上世纪80年代到90年代之间,随着科技的迅速发展,CPU的性能每隔约18到20个月就会翻倍。这便是英特尔(Intel)创始人之一戈登·摩尔提出的摩尔定律(Moore's Law)的核心内容。其含义是,每隔大约18个月,同一款软件在新发布的CPU处理器上的运行速度都能直接翻倍。
大约在2004年5月份,转折点出现了。当时,Intel取消了他们新一代单核处理器的开发工作,而将注意力转向了双核处理器的设计。稍晚的同年,Herb Sutter撰写了著名的《The Free Lunch Is Over(不再有免费午餐)》,主要表达了这样一个观点:除非软件的开发采用多核多线程的设计,否则就无法再像过去那样每隔一年多时间就获得一倍的加速效果。正如下图所示,CPU处理器的单核计算性能开始接近一个平台区间,通过增加晶体管密度提升计算性能的方法已经显得力不从心,因为芯片尺寸的不断缩小总会遇到其物理极限。这意味着要获得更高的性能提升,就需要采用新的方法。
添加图片注释,不超过 140 字(可选)
图一:42年间的微处理器趋势数据
随着晶体管数量增加到一定程度,CPU单核性能的增加开始衰减并面临瓶颈
在摩尔定律效应放缓的后摩尔时代,持续提升处理器性能的重要技术理念是Domain-Specific Architectures(DSA)。DSA利用可编程的专用集成电路(ASICs)来加速特定高强度的处理器负载,例如图形渲染、AI神经网络的前向推理计算以及提高巨量网络数据的吞吐等。
架构的定义包含指令集架构与微架构。指令集架构是软件与硬件对话的接口,类似于词典中的词条,而软件程序则是使用这些词条编写的书籍。
添加图片注释,不超过 140 字(可选)
图二:架构设计哲学
DSA的理念是通过面向特定领域的架构设计来缩小应用范围,从而实现更高的性能或更好的能效比,同时保持可编程的灵活性。
• 面向领域的架构设计可以以较低的成本获取较高的算力,以满足算力需求。
• 指令集架构的可编程性带来了相对通用的算力,为下一代算法的应用和覆盖更广泛的领域提供了无限的可能。
DSA的概念由2017年图灵奖得主Henessy和Patterson提出,并在题为《创新体系结构将迎来新的黄金时代》的演讲中进行了阐述。我们最熟悉的DSA之一可能是显卡(Graphics Processing Unit即GPU),它在游戏、影音娱乐等领域中扮演着重要角色。
NVIDIA公司于1999年发布其标志性产品GeForce256时首次提出了GPU的概念。其实质是为了加速计算3D虚拟世界的渲染,从而降低CPU的负载。GPU技术的进步推动了显卡杀手级游戏引擎的激进发展,到如今,游戏画面的逼真程度已经堪比真人版电影。
时间来到2006年,NVIDIA发布了GeForce 8800 GTX(核心代号G80),与G80一同发布的还有著名的CUDA(compute unified device architecture),并提供了驱动程序和C语言扩展。
CUDA的发展至今,区别于开放计算语言(OpenCL跨平台并行编程的独立开放标准),开发人员可以使用流行的语言(C、C++、Fortran、Python、MATLAB等)编写CUDA程序,并使用几个基本的关键字即可将并行性添加到他们的代码中,而不仅仅局限于使用C语言。尽管理论上OpenCL的运行时编译能够带来更高的执行效率,但实际上由于CUDA是由同一家开发执行其功能的硬件的公司开发,所以后者能更好地匹配GPU的计算特性,从而提供更好的性能。
CUDA便捷的编程模型和优秀的编译器使得硬件资源能够被更充分地利用,从而拓展了GPU的应用领域。如图三所示,G80核心能够提供与同时期以CPU为中心的高性能处理器相当甚至更高的计算能力。这一优点引起了高性能计算(High-Performance Computing HPC)社区的关注,并加入到CUDA的生态系统中进行研究。此外,NVIDIA公司还提供了cuBLAS、cuRAND、cuSPARSE、cuSolver、cuFFT、NPP等一系列实用高效的计算库,进一步扩充了NVIDIA的算力生态。
添加图片注释,不超过 140 字(可选)
图三:同时期CPU、GPU浮点算力对比
2012年,多伦多大学的Alex Krizhevsky发布了一种新的深度神经网络(DNN,也可称为深度卷积神经网络CNN)。该模型名为AlexNet,在ImageNet图像比赛中取得了历史上最佳成绩。其top-5错误率仅为15.3%,而第二名的错误率则高达26.2%。这一结果震惊了世界,AI竞赛从此开始进入新的阶段。AlexNet拥有60 million个单精度浮点参数,存储到磁盘上需要240MB的空间。作者表示,受限于显存和算力,这已经是他在两块GTX 580 3GB GPU上能够实现的极限了。他相信,如果有更快的GPU,他可以得到更好的分类结果。
从那时起,几乎所有的AI研究员都开始使用GPU进行算法领域的探索与突破。与此同时,GPU的架构设计也越来越倾向于提供除了3D能力以外的通用算力,这种设计理念被称为General-Purpose GPU(GPGPU)。
2011年,TESLA GPU计算卡发布,标志着NVIDIA正式将用于计算的GPU产品线独立出来。凭借其架构上的优势,GPU在通用计算及超级计算机领域逐渐取代CPU成为主角。
随着GPU技术的发展,AI算法研究也突飞猛进。2014年前后,香港中文大学的Sun Yi等人将卷积神经网络应用在人脸识别领域,采用20万训练数据,在LFW数据集上首次达到超过人类水平的识别精度。2015年10月,AlphaGo击败樊麾,成为第一个无需让子即可在19路棋盘上击败围棋职业棋手的电脑围棋程序,创造了历史,并于2016年1月发表在知名期刊《自然》。
在2022年圣诞节前夕,所有硅谷公司都经历了一场震撼教育——11月30日,OpenAI发布了聊天机器人ChatGPT。它可以自动生成文章和诗歌,像人类一样通过自然的互动回答问题。其性能之高震撼了世界,点燃了生成式AI的热潮。
在CES 2023上,奔驰宣布成为美国首家获得L3自动驾驶认证的厂商。AI算法在越来越多的领域的能力上接近甚至超越人类,这意味着AI可以帮助降低人们的负担,释放人类潜力,同时也带来商机与产业化的机会。
添加图片注释,不超过 140 字(可选)
通用算力、专用算力,GPGPU与AI DSA相向而行,殊途同归。
在2014年,世界上第一款supercomputer on a module, Jetson TX1问世,TX1采用256个NVIDIA Maxwell架构CUDA cores 提供了超过1 TeraFLOPs性能。旨在能够为当时最新视觉计算应用提供所需的性能和能效。定位为Deep Learning, Computer Vision, Graphics、GPU Computing的嵌入式平台。
图四:NVIDIA边缘AI平台路线图
该系列产品从2018年的1T算力的TX1一路发展到2024年预计发售的拥有2000T算力的THOR平台。值得注意的是在XAVIER与ORIN平台上有超过一半的标称算力是由DLA提供。
图五:Jetson Orin Technical Specifications
采用DLA可以加速部分计算密集的算子。与采用GPGPU计算相比,在损失部分推理精度的前提下,采用DLA加速推理计算不仅速度更快,而且能耗更低。然而,这并非免费午餐。首先,要同时利用GPGPU与DLA两块算力,软件上就需要精巧的异步设计,以实现CPU负载、编解码模块、图像处理模块、GPGPU以及DLA五者的流水化并行处理。然而,在THOR这代自动驾驶平台产品中,DLA提供的算力甚至直接被砍掉,其原因目前尚不清楚。但根据NVIDIA的官方文档显示,DLA支持约15种主要AI算子的执行,不支持的算子类型将回退到GPGPU进行运算。笔者推测,可能是基于TensorCore指令拓展获得的算力有更强的通用性和可编程性,能够更好地满足业界的需求。
TensorCore实际上也是一种DSA的设计理念的体现。随着AI算法的多年发展,业界也逐渐意识到AI的算力需求逐渐收敛到了矩阵计算能力上。通过专用的指令加速矩阵乘法计算,从而加速AI计算,这一理念已被业界广泛接受。
图六:通用及专用架构的矩阵加速引擎设计
THOR平台的CUDA引入了Transformer Engine,用于加速基于attention机制的DL算法,这正是目前备受关注的ChatGPT网络模型的重要组成部分。此外,THOR平台还引入了对8-bit floating point (FP8) 精度的支持,这是INT8的替代品,能够在同等的位宽下提供更高的精度。NVIDIA在其Edge平台产品线上开始放弃专有的定制化大算力,逐步在通用算力的基础上增加领域的定制化。这与其发布会上反复强调的提高开发效率、加快软件迭代、算法迭代的目标相吻合。
GPU也是一种DSA,其发展证明了DSA取得的成功。DSA、GPU、AI,这是个互相成就的故事。NVIDIA的GPGPU硬件的成功与其CUDA生态丰富的算力软件包、易于使用的编程接口、优秀的编译器密不可分。因此,对于DSA算力硬件来说,这些都是走向商业成功的必要条件。
自TX1推出以来,对标TX1的竞品层出不穷。TX1的算力来自于GPGPU,而更加客制化的ASIC,利用卷积操作的空间局部性进行数据复用的精妙设计,在达到同等甚至更高算力的同时硬件成本更低。最普遍的设计是一个高能效比的CPU小核如Arm Cortex A7/A53加固化的2D图像处理(CV)模块与固化的神经网络处理(DNN/NPU)模块。
然而,由于小CPU的计算能力受限,其主要负责应用软件的任务调度部分。AI应用的前处理(非DNN算法模型部分)主要由2D图像处理模块承接。然而,前处理是非常碎片化的算法,除了个别的插值、颜色域转换功能,几乎所有图像处理软件都会用到,其他所需功能非常广泛。这包括OpenCV的核心函数、图像处理函数,其中每个大类中的子方法又会有若干个,无法确定哪些功能需要被固化。这还不包括3D数据处理能力与特征描述子的使用。算法厂商的需求各不相同,固化的多了会浪费面积,固化的少了产品开发的难度将大幅提升。
ONNX是一种专为机器学习设计的开放式文件格式,用于存储训练好的模型,使得来自不同人工智能框架训练的网络模型可以以相同的格式进行存储。ONNX的规范及代码主要由微软、亚马逊、Facebook和IBM等公司共同开发。以NVIDIA的AI软件生态中最著名的DNN推理开发工具库TensorRT为例,5.1版本支持87个ONNX算子,到了7.1版本支持的ONNX算子数量增加至108个。由于功能高度固化的ASIC无法支持新增的算子计算类型,这将越来越限制算法的迭代。对于在此基础上进行AI产品开发的算法工程师来说,这几乎等同于在戴着镣铐跳舞。
Google公司研发了张量处理单元(TPU),TPU v1于2015年投入生产,并被谷歌内部用于其应用程序。TPU是一种专为AI领域提供算力的ASIC,利用了神经网络对于数值精度不敏感的特性,其核心思想是采用低精度矩阵Systolic Array提供巨大算力,同时提供满足AI需求的最小化运算功能。TPUv1的云服务从未对用户开放使用,而TPUv2以及后续版本被广泛应用于谷歌的搜索排序、语音识别、以图搜图、谷歌翻译等领域。
图七:TPUv1架构图
在TPUv1版本的硬件架构图上,我们可以看到Matrix Multiply模块提供了每时钟64K次操作的超大算力,紧随其后的是Activation(激活)、Normalize/Pool(归一化/池化)等运算。到了TPUv2,通用的Vector单元取代了v1版本中activation pipe中的固定功能。
图八:TPUv1到TPUv2数据通路的转变
在数据中心内运行了一年多的TPU后,谷歌发现它们为机器学习提供了数量级更好的每瓦优化性能,相当于未来七年左右的快速进步(相当于三代摩尔定律)。这是谷歌CEO对TPU的评价。
在2021年,David Patterson对TPU十年的演进进行了总结,其中指出DSA既要专门优化,又要保持灵活性。TPUv2引入的通用算力为TPU提供了更强大的功能,不仅局限于TPUv1的模型推理,还能进行模型训练,这往往需要更复杂的运算。谷歌通过XLA(一种用于TPU的高度定制优化的机器学习编译器)为用户提供云服务,为特别是在这一生态系统下的用户提供了便捷的通用编程接口,从而提升了用户体验。
DSA成功带来的启示
通过以上成功案例,我们可以发现GPGPU和TPU的迭代都有一个共同点,那就是它们通过越来越高度的架构定制,带来了越来越强大的专用算力,同时保留或新增通用的算力。通过高度优化的编译器和丰富的软件栈,用户能够轻松地充分利用硬件算力。显然,在CPU平台上,通用算力、编译器和软件栈都是最丰富、最成熟的。因此,对于CPU而言,“Domain-specific architecture design is all you need”。
RISC-V DSA能否把AI算力做好
GPU的发展满足了大型DNN网络的内存带宽和计算能力的需求。由于计算能力的提高和可用数据量的增加,DNN已经演变成更宽、更深的架构。DNN中的层数可以达到数万层,参数达数十亿,研究人员很难在硬件资源(例如内存、带宽和功耗)有限的便携式设备中部署DNN。迫切需要在资源受限的边缘设备(例如手机、嵌入式设备、智能可穿戴设备、机器人、无人机等)中有效部署DNN的方法。因此,AI科学家们又开展了AI模型小型化的研究,即用最少的参数量、最少的计算量去达到想要的模型精度。因此,ShuffleNet、MobileNet、网络架构搜索(NAS)算法等轻量级神经网络结构开始被推出,能够在很少的参数量上达到与大参数量模型接近的精度。同时,神经网络的参数剪枝、参数量化、紧凑网络、知识蒸馏、低秩分解、参数共享、混合方式等压缩技术与计算加速技术开始成为研究的热门。
图九:图像分类模型性能与模型算力对应关系
图十:图像分类模型性能与模型大小对应关系
EfficientNet-B0是AutoML MNAS开发的基线网络,而Efficient-B1到B7是基线网络扩展得到的。特别地,EfficientNet-B7达到了最新的84.4% top-1 / 97.1% top-5精度,同时比现有最好的CNN小8.4倍。
与此同时,AI科学家们也发现提升模型参数量带来模型精度提升的效应在减弱。如图九所示,在图像分类的任务上,模型的精度随着参数量的提升越来越接近85% Top-1准确率的平台。这意味着在成熟的视觉领域,我们获得一定AI能力所需的算力需求是趋于收敛的。因此,给定任务、给定模型、给定图像处理的帧率,我们可以确定我们的算力需求。完成指定领域的任务,最终的算力需求是可以被定义并趋同的。
这一切意味着AI不再是超级算力、超级计算机上独享的能力。AI将会在任何地方,这同时也对我们的通用处理器发起了挑战。
DSA可以有效、高效地完成领域任务,然而C++编程、CPU上的经验可能就无法被利用上。在David Patterson的十大经验教训中也提到DSA的软件栈目前不及CPU,在编译器领域还不够成熟。因此,如果DSA能够利用CPU的丰富且成熟的软件栈优势,将会是一种强大的组合。
例如,CUDA提供了多种常用编程语言的支持,并通过关键字拓展的方式进行并行软件编程,加上其本身卓越的通用计算能力,使得其开发生态越来越壮大。有些实力雄厚的客户甚至放弃使用TensoRT,通过自身的GPGPU技术积累开发出适合自身业务需求的更高效的软件,比NVIDIA提供的TensoRT性能提高了一倍。
那么我们何不在CPU上提供AI算力呢?正如过去在CPU上长出适合多媒体处理的算力一样。在过去的时代,即使在频率提升缓慢的情况下,CPU上的浮点能力由于SIMD拓展得到了巨大的提升,并随着SIMD数据并行宽度的提升而有一个线性的增长。
图十一:Intel处理器发布年份与算力峰值构成
图十二:SIMD计算指令的位宽发展
近年来,Intel x86 CPU处理器上的SIMD由64bit的MMX(Multi Media eXtension,多媒体扩展指令集)增长到了512bit的数学拓展AVX512与AI拓展VNNI,使得在四核Core i7-1185G7 @ 3.00GHz的处理器上可以获取3Tops的算力。提供了AI所谓的MAC能力,加之本身的通用SIMD计算能力是可以有效COVER如智能机器人、智能视频、语音终端设备等AI场景。但此等SOC做AI终端过于奢侈,且定位还是通用而不是AI DSA。
Intel最新的AMX矩阵拓展架构、Arm架构下的SME矩阵拓展架构以及IBM的AMM指令集更是将CPU能提供的AI算力又提升了一个台阶。在架构代号为Sapphire Rapids的server级处理器上可以通过AMX获得每时钟周期1024个mac是VNNI拓展提供的算力的8倍(128个mac每时钟周期)。
图十三:Intel矩阵指令拓展相较于向量指令拓展提升巨大
CPU上完全可以长出使能AI应用大算力,正如过去长出了适合多媒体处理的算力。
为什么是RISC-V?
如果要对CPU架构进行领域定制,需要获取对应的架构级授权(Architectural License)。区别于IP Core的授权,架构级授权特指指令集(ISA)授权,允许客户自行定制优化。
关于CPU业界两大阵营x86与ARM的架构授权的情况是什么样的呢?x86的专利主要掌握在英特尔和AMD这两家公司手中,到目前为止国内没有任何一家厂商拥有x86的架构级授权,海光信息与兆芯采用的是 x86 架构 IP 内核授权模式。海思、飞腾均已经获得 ARMv8架构的永久授权。尽管 ARM 此前表态 ARMv9 架构不受美国出口管理条例(EAR)约束,华为海思等国内CPU产商依然可获授权,但是ARMv9不再提供永久授权,采用 ARM 架构仍有长期隐患。而且即使在拥有ARM架构级授权的情况下做出指令集定制与改动,也必须经由ARM参与支持修改才可以,否则将触发违约条款。
RISC-V 因其相对精简的指令集架构(ISA)以及开源宽松的 BSD 协议使得Fabless可以基于RISC-V架构进行任意的架构拓展与定制。相信RISC-V DSA可以利用其经典的CPU的编程模型与相对低成本获取的AI算力,加之标准RISC-V Vector拓展提供的通用算力,能够给AI嵌入式场景下1-10T算力需求范围的AI产业应用带来全新的商业化硬件方案。
全部0条评论
快来发表一下你的评论吧 !