"); //-->
目前全世界超过90%的数据都是在过去的两三年之内产生的。那么随着人工智能自动驾驶、5G云计算等技术的不断发展,预计肯定会有更多的数据会被源源不断的产生。一直到2025年,数据总量将会比现在增长超过十倍。在这些技术的发展中,很大的一部分其实都是基于对大数据的研究和分析。正因为如此,有很多人形象的把数据比作是人工智能时代的石油。那么为了对海量的数据进行处理,基于传统CPU的计算结构已经不能满足我们的需求了,我们需要去寻找更强大的硬件和芯片,来更快更好的完成这些工作。此外,我们也需要去寻找更好的方法。比如采用各种人工智能的模型和算法来帮助我们对这些数据进行分析和处理,并且得到更有意义的结果。那么这两者结合起来,就得到了各种各样的人工智能芯片。
今天我们就一起来聊一聊关于人工智能芯片的几个很有意思的事情。比如人工智能芯片究竟有哪些;在实际的工程和应用场景里如何对人工智能加速芯片来进行一个比较和选择;以及各种不同的AI芯片的优点和缺点都有哪些?其实我们在讨论任何问题的时候,都要圈定一个讨论的范围,大家都在这个圈圈里头来进行讨论。这就好比拳击和格斗比赛一样,大家需要在擂台上进行比试,而不能跑到台下去打。那么同样的对于我们今天要讨论的人工智能芯片,其实他们也有很多不同的应用领域。比如我们可以把它分成服务器端和移动端两大类,也有很多人把这两类称作云端和终端。
事实上,在这两类应用中,人工智能芯片在设计要求上其实有着很大的区别。比如移动端其实更加注重AI芯片的低功耗、低延时、低成本。部署在云端的AI芯片可能会更加注意它的算力、扩展能力,以及它对现有基础设施的兼容性等。那么对于这两类人工智能芯片呢,我们其实很难对它们进行一个直接的比较。这就好比有一棵大树,它的树干负责支撑这棵树,并且负责运输这个营养物质。它的树叶其实负责光合作用并且产生营养物质。所以我们其实很难比较树干或者是树叶,它们究竟谁更有用?所以我们今天就画一个圈圈,把讨论的范围缩小,我们只来看一下部署在服务器端,也就是云端的人工智能芯片的相关问题。
在这里主要对比四种比较常见的芯片种类,包括CPU、GPU、ASIC和FPGA。其他的一些比较相对小众一些的芯片,比如说类脑芯片或者是量子芯片等,今天就不讨论了。我们现在明确了要讨论的领域和对象,也就是部署在云端的四种常见的芯片。接下来我们就讨论一下通过什么样的方式来衡量和评价这些芯片的优缺点。
在这里,我就给大家介绍一个我们在工程实践中常用的一个分析框架。也就是说当我们考虑在数据中心里大量部署人工智能芯片的时候,通常需要考虑的几个重要的因素。首先就是前面提到的算力,也就是芯片的性能。这里的算力其实有很多的方面,它可以指芯片做浮点运算或者是定点数运算的时候,每秒的运算次数以及这个芯片的峰值性能或者是平均性能等等。但是我们要注意的是,性能其实并不是衡量AI芯片好坏的唯一标准。事实上在很多场合它甚至不是最重要的标准。那么究竟还有哪些考虑的因素呢?
在这个思维框架里,有五个主要的衡量因素,除了性能之外,还有灵活性、同构性、功耗和成本四点。其中灵活性指的是这个人工智能芯片对不同的场景的适应程度。也就是说,这个芯片能不能用于各种不同的AI算法和应用。
同构性这个词听起来好像有些晦涩,但是它实际指的就是当我们大量部署人工智能芯片的时候,我们能不能利用现有的软硬件基础设施架构,还是说我们要引入很多其他的东西,才能让这个人工智能芯片工作。举个简单的例子,就好比我想给我的电脑外接一个显示器,但是如果这个显示器的接口是HDMI,你就可以直接和我的电脑相连。但是如果这个显示器的接口是VGA或者是DVI或者是雷电3,那么我可能就需要买一个转接头才能和我的电脑相连接。这样我们就说这个显示器,对我现有系统的同构性不够好。
成本和功耗其实就很好理解了。成本指的就是钱和时间。当然如果我们细抠的话,还有投入的人力和物力等。还有包括没有选择其他AI芯片所带来的机会成本。但是归根到底,其实都是钱和时间。成本其实包含两部分,第一部分就是芯片的研发成本,另一部分就是芯片的部署和运维成本。功耗就更好理解了,指的就是某种AI芯片对数据中心带来的额外的功耗负担。
我们现在知道了这个思维框架里的五个重要的元素,那么现在就可以对我们之前提到的四种芯片,也就是CPU、GPU、ASIC和FPGA做一个定性的比较了。
首先我们来看一下CPU。它仍然是目前数据中心里的主要的计算单元。那么为了支持各种人工智能的应用,传统的CPU的架构和指令集也在不断的迭代和变化。比如英特尔的XEON 至强处理器就引入了所谓的DL-Boost,也就是深度学习加速技术,来加速卷积神经网络和深度神经网络的训练和推理性能。但是相比其他的三种芯片,CPU的AI性能其实还是有一定的差距。CPU最大的优势就是它的灵活性和同构性。对于大部分的数据中心来说,它们其实都是围绕着CPU来进行设计和建设的。所以CPU在数据中心的部署、运维、扩展和生态系统其实都已经非常的成熟了,它的功耗和成本并不算太低,但其实还是在可以接受的范围之内。
接下来来看一下GPU。GPU 有着大规模的并行架构,因此非常适合对于数据密集型的应用来进行计算和处理。比如深度学习的训练过程。和CPU相比,GPU 的性能会高几十倍甚至上千倍。因此业界很多公司其实都在使用GPU 对各种的AI应用来进行加速,比如分析和处理图片、视频、音频等等。GPU 的另外一个主要优势就是它其实有一个非常成熟的编程框架,比如CUDA,这也是GPU 在人工智能时代得到爆发的最主要原因之一。但是,GPU 最大的问题就是它的功耗。比如英伟达的P100 、V100和A100的GPU 的功耗都在250瓦到400瓦之间。对于FPGA或者ASIC的几十瓦甚至几瓦的功耗而言,这个数字显得过于的惊人了,而对于神经网络的训练来说,它往往需要大量的GPU 集群来提供充足的算力。这样一来呢一个机柜的功耗可能就会超过几十千瓦。这就需要数据中心为它修改供电和散热等结构。比如传统的数据中心大都依靠风冷来散热,但是如果要部署GPU ,就很可能要改成水冷散热。那么对于大多数数据中心来说,这都是一笔巨大的开销。伴随着高功耗其实更大的问题就是高昂的电费开支。所以对于GPU 在数据中心里的大规模部署,我们通常考虑的是它所能带来的算力的优势能否抵消它带来的额外的电费。
下面再来看一下ASIC,也就是所谓的人工智能专用芯片。这里的典型代表就是谷歌AiphaGo里使用的TPU,它在AiphaGo里替代了1000多个CPU和上百个GPU。在我们的衡量体系里,这个人工智能专用芯片的各项指标其实都非常的极端。比如它有着极高的性能和极低的功耗,和GPU 相比,它的性能可能会高10倍。功耗会低100倍,但是研发这样的芯片其实有着极高的成本和风险。和软件开发不同,芯片的开发需要投入大量的人力和物力开发周期往往长达数年。而且失败的风险极大。放眼全球呢,同时拥有雄厚的资金实力和技术储备,来进行人工智能芯片开发的公司其实大概用两只手就能数得出来。也就是说,这种方法可能对于很多公司来说并没有实际的借鉴意义。
此外,AI专用芯片的灵活度往往比较低,顾名思义包括谷歌TPU在内的人工智能专用芯片。通常是针对某些具体的应用来进行开发的,那么它可能不能适用于其他的应用场景。从使用成本的角度来看,如果我们要使用基于ASIC的方案,就需要我们的目标应用,有足够大的使用量来分摊高昂的研发成本。同时这类应用应该要足够稳定,来避免核心的算法或者协议不断的变化。而这对于很多的AI应用来说是不现实的。值得一提的是,我国在人工智能专用芯片领域其实涌现出来了很多优秀的公司,比如寒武纪、地平线,包括之前被赛克斯收购的深鉴科技等等。
最后我们再来说一下FPGA。我个人认为FPGA 能够在这些性能指标中达到一个比较理想的平衡。在性能方面FPGA 可以实现定制化的硬件流水线,并且可以在硬件层面进行大规模的并行运算,而且有着很高的吞吐量。其实FPGA最主要的特点就是它的灵活性。它可以很好的应对,包括计算密集型和通信密集型在内的很多种应用。此外FPGA有着动态可编程和部分可编程的特点。也就是说,FPGA可以在同时处理多个应用,或者是在不同的时刻处理多个不同的应用。这其实和CPU比较类似但是FPGA的性能其实要远超于CPU。在数据中心里,FPGA通常是以加速卡的形式来配合现有的CPU来进行大规模的部署。FPGA的功耗通常只有几十瓦,那么对于额外的供电或者是散热等环节没有特殊的需求。因此可以兼容现有的数据中心的基础设施架构。
那么在衡量AI芯片的时候,我们也经常使用性能功耗比这个指标。也就是说即使你的性能非常高,但是如果你的功耗也很高,那么你的性能功耗比就很低。这也就是FPGA相比于GPU 的优势所在。那么在开发成本方面,FPGA 的一次性成本其实要远低于ASIC,这是因为FPGA在制造出来之后,可以通过不断的编程来改变它上面的逻辑功能。而ASIC在流片之后,它的功能就确定了。如果你要改变它的功能,就需要再进行流片,而这个过程会非常的昂贵。这也是为什么像包括深鉴科技在内的很多AI芯片初创公司都选择使用FPGA作为实现的平台的主要原因。所以说相比于其他的硬件加速单元来说,FPGA在性能、灵活度、同构性、成本和功耗五个方面取得了比较理想的平衡。这就是为什么微软最终选择了FPGA,并在数据中心里进行大规模部署的主要原因。
最后我们总结一下这篇文章的主要内容。我们讨论了人工智能芯片的主要分类,比如按照使用场景分可以分为服务器端和终端两大类;介绍了四种可以用来执行人工智能应用的芯片,也就是CPU、GPU、ASIC和FPGA;还根据一个思维框架,从性能、灵活性、同构性、功耗和成本五个方面分别衡量了这四种芯片的优缺点。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。