GPU将失宠,ASIC 才是AI 前景所在

电子说

1.3w人已加入

描述

GPU 在人工智能(AI)运算大放异彩,激励两家GPU 大厂Nvidia、超微(AMD)股价狂飙。但是分析师警告,明年GPU 在AI 的地位,也许会遭「特殊应用集成电路」(ASIC)取代。

12 日Nvidia 下跌1.96%,13 日续跌2.44% 收在186.18 美元。12 日超微下跌2.56%,13 日反弹2.12% 收在10.11 美元。

MarketWatch、Smarter Analyst报导,Susquehanna分析师Christopher Rolland 12日报告称,2017年AI GPU当道,2018年可能换成ASIC发威。AI运用深度学习解决真实世界问题,也使用在语音和影像辨识、自动驾驶、医疗等,Nvidia是AI工作量大增的受惠者,股价暴冲。不过,Susquehanna和多位业界领袖讨论,判断ASIC可能会取代GPU。

Rolland 以虚拟货币挖矿为例,解释此一变化。早期矿工挖掘虚币时,多用GPU,不过随着挖矿难度不断提高,矿工逐渐改用ASIC。现在比特币矿工多半采用ASIC,以太币矿工也会在今年改用ASIC。市面上更出现以太币专用ASIC,效能远胜GPU。

报告称,Nvidia 有ASIC 相关部门,未来仍会在AI 扮演重要角色。但是市场将有更多竞争者,有望受惠的ASIC 业者,包括协助谷歌研发AI 芯片的博通、Cavium、Marvell、Microsemi 等。

另外,现场可程式化闸阵列(Field-Programmable Gate Array,FPGA)也可能从AI 热潮沾光,赛灵思(Xilinx)的FPGA 就用于亚马逊云端服务。

芯片商Cerebras 正在研发AI 专用的ASIC,该公司执行长Andrew Feldman 强调,GPU 并非最适合AI 运算的芯片。GPU 原本是为了电玩开发,如今却碰巧适用于另一个毫不相干的新市场。这种幸运的巧合不会发生,最可能的解释是,GPU 只是当前最佳的解决方案,让业界能继续往前,暗示ASIC 才是AI 前景所在。

Barron's.com 8 月23 日报导,摩根士丹利(Morgan Stanley,通称大摩)发表研究报告指出,现场可程式化闸阵列在机器学习进行「推论」(inference)时扮演的角色,可能比市场想像还要大,Xilinx 有望受惠。

GPU、FPGA、ASIC,谁更适合人工智能?

围绕着人工智能的计算,有上述三种方案,我们来看一下哪一种会是AI首选。

GPU主要擅长做类似图像处理的并行计算,所谓的“粗粒度并行(coarse-grain parallelism)”。图形处理计算的特征表现为高密度的计算而计算需要的数据之间较少存在相关性,GPU 提供大量的计算单元(多达几千个计算单元)和大量的高速内存,可以同时对很多像素进行并行处理。

asic

GPU中一个逻辑控制单元对应多个计算单元,同时要想计算单元充分并行起来,逻辑控制必然不会太复杂,太复杂的逻辑控制无法发挥计算单元的并行度,例如过多的if…else if…else if… 分支计算就无法提高计算单元的并行度,所以在GPU中逻辑控制单元也就不需要能够快速处理复杂控制。

这里GPU计算能力用Nvidia的Tesla K40进行分析,K40包含2880个流处理器(Stream Processor),流处理器就是GPU的计算单元。每个流处理器包含一个32bit单精度浮点乘和加单元,即每个时钟周期可以做2个单精度浮点计算。GPU峰值浮点计算性能 = 流处理器个数 GPU频率 每周期执行的浮点操作数。以K40为例,K40峰值浮点计算性能= 2880(流处理器) 745MHz 2(乘和加) = 4.29T FLOPs/s即每秒4.29T峰值浮点计算能力。

GPU芯片结构是否可以充分发挥浮点计算能力?GPU同CPU一样也是指令执行过程:取指令 ->指令译码 ->指令执行,只有在指令执行的时候,计算单元才发挥作用。GPU的逻辑控制单元相比CPU简单,所以要想做到指令流水处理,提高指令执行效率,必然要求处理的算法本身复杂度低,处理的数据之间相互独立,所以算法本身的串行处理会导致GPU浮点计算能力的显著降低。

上图是GPU的设计结构。GPU的设计出发点在于GPU更适用于计算强度高、多并行的计算。因此,GPU把晶体管更多用于计算单元,而不像CPU用于数据Cache和流程控制器。这样的设计是因为并行计算时每个数据单元执行相同程序,不需要繁琐的流程控制而更需要高计算能力,因此也不需要大的cache容量。

FPGA作为一种高性能、低功耗的可编程芯片,可以根据客户定制来做针对性的算法设计。所以在处理海量数据的时候,FPGA 相比于CPU 和GPU,优势在于:FPGA计算效率更高,FPGA更接近IO。

FPGA不采用指令和软件,是软硬件合一的器件。对FPGA进行编程要使用硬件描述语言,硬件描述语言描述的逻辑可以直接被编译为晶体管电路的组合。所以FPGA实际上直接用晶体管电路实现用户的算法,没有通过指令系统的翻译。

asic

FPGA的英文缩写名翻译过来,全称是现场可编程逻辑门阵列,这个名称已经揭示了FPGA的功能,它就是一堆逻辑门电路的组合,可以编程,还可以重复编程。上图展示了可编程FPGA的内部原理图。

里FPGA计算能力用Xilinx的V7-690T进行分析,V7-690T包含3600个DSP(Digital Signal Processing),DSP就是FPGA的计算单元。每个DSP可以在每个时钟周期可以做2个单精度浮点计算(乘和加)。FPGA峰值浮点计算性能 = DSP个数 FPGA频率 每周期执行的浮点操作数。V7-690T运行频率已250MHz来计算,V7-690T峰值浮点计算性能 = 3600(DSP个数) 250MHz 2(乘和加)=1.8T FLOPs/s即每秒1.8T峰值浮点计算能力。

FPGA芯片结构是否可以充分发挥浮点计算能力?FPGA由于算法是定制的,所以没有CPU和GPU的取指令和指令译码过程,数据流直接根据定制的算法进行固定操作,计算单元在每个时钟周期上都可以执行,所以可以充分发挥浮点计算能力,计算效率高于CPU和GPU。

ASIC是一种专用芯片,与传统的通用芯片有一定的差异。是为了某种特定的需求而专门定制的芯片。ASIC芯片的计算能力和计算效率都可以根据算法需要进行定制,所以ASIC与通用芯片相比,具有以下几个方面的优越性:体积小、功耗低、计算性能高、计算效率高、芯片出货量越大成本越低。但是缺点也很明显:算法是固定的,一旦算法变化就可能无法使用。目前人工智能属于大爆发时期,大量的算法不断涌出,远没有到算法平稳期,ASIC专用芯片如何做到适应各种算法是个最大的问题,如果以目前CPU和GPU架构来适应各种算法,那ASIC专用芯片就变成了同CPU、GPU一样的通用芯片,在性能和功耗上就没有优势了。

我们来看看FPGA 和 ASIC 的区别。FPGA基本原理是在芯片内集成大量的数字电路基本门电路以及存储器,而用户可以通过烧入 FPGA 配置文件来来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的,即用户今天可以把 FPGA 配置成一个微控制器 MCU,明天可以编辑配置文件把同一个 FPGA 配置成一个音频编解码器。ASIC 则是专用集成电路,一旦设计制造完成后电路就固定了,无法再改变。

比较 FPGA 和 ASIC 就像比较乐高积木和模型。举例来说,如果你发现最近星球大战里面 Yoda 大师很火,想要做一个 Yoda 大师的玩具卖,你要怎么办呢?

有两种办法,一种是用乐高积木搭,还有一种是找工厂开模定制。用乐高积木搭的话,只要设计完玩具外形后去买一套乐高积木即可。而找工厂开模的话在设计完玩具外形外你还需要做很多事情,比如玩具的材质是否会散发气味,玩具在高温下是否会融化等等,所以用乐高积木来做玩具需要的前期工作比起找工厂开模制作来说要少得多,从设计完成到能够上市所需要的时间用乐高也要快很多。

FPGA 和 ASIC 也是一样,使用 FPGA 只要写完 Verilog 代码就可以用 FPGA 厂商提供的工具实现硬件加速器了,而要设计 ASIC 则还需要做很多验证和物理设计 (ESD,Package 等等),需要更多的时间。如果要针对特殊场合(如军事和工业等对于可靠性要求很高的应用),ASIC 则需要更多时间进行特别设计以满足需求,但是用 FPGA 的话可以直接买军工级的高稳定性 FPGA 完全不影响开发时间。但是,虽然设计时间比较短,但是乐高积木做出来的玩具比起工厂定制的玩具要粗糙(性能差)一些(下图),毕竟工厂开模是量身定制。

另外,如果出货量大的话,工厂大规模生产玩具的成本会比用乐高积木做便宜许多。FPGA 和 ASIC 也是如此,在同一时间点上用最好的工艺实现的 ASIC 的加速器的速度会比用同样工艺 FPGA 做的加速器速度快 5-10 倍,而且一旦量产后 ASIC 的成本会远远低于 FPGA 方案。

FPGA 上市速度快, ASIC 上市速度慢,需要大量时间开发,而且一次性成本(光刻掩模制作成本)远高于 FPGA,但是性能高于 FPGA 且量产后平均成本低于 FPGA。目标市场方面,FPGA 成本较高,所以适合对价格不是很敏感的地方,比如企业应用,军事和工业电子等等(在这些领域可重配置真的需要)。而 ASIC 由于低成本则适合消费电子类应用,而且在消费电子中可配置是否是一个伪需求还有待商榷。

我们看到的市场现状也是如此:使用 FPGA 做深度学习加速的多是企业用户,百度、微软、IBM 等公司都有专门做 FPGA 的团队为服务器加速,而做 FPGA 方案的初创公司 Teradeep 的目标市场也是服务器。而 ASIC 则主要瞄准消费电子,如 Movidius。由于移动终端属于消费电子领域,所以未来使用的方案应当是以 ASIC 为主。

由于不同的芯片生产工艺,对芯片的功耗和性能都有影响,这里用相同工艺或者接近工艺下进行对比,ASIC芯片还没有商用的芯片出现,Google的TPU也只是自己使用没有对外提供信息,这里ASIC芯片用在学术论文发表的《DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning》作为代表。

asic

从上面的对比来看,能耗比方面:ASIC > FPGA > GPU > CPU,产生这样结果的根本原因:对于计算密集型算法,数据的搬移和运算效率越高的能耗比就越高。ASIC和FPGA都是更接近底层IO,所以计算效率高和数据搬移高,但是FPGA有冗余晶体管和连线,运行频率低,所以没有ASIC能耗比高。GPU和CPU都是属于通用处理器,都需要进行取指令、指令译码、指令执行的过程,通过这种方式屏蔽了底层IO的处理,使得软硬件解耦,但带来数据的搬移和运算无法达到更高效率,所以没有ASIC、FPGA能耗比高。GPU和CPU之间的能耗比的差距,主要在于CPU中晶体管有大部分用在cache和控制逻辑单元,所以CPU相比GPU来说,对于计算密集同时计算复杂度低的算法,有冗余的晶体管无法发挥作用,能耗比上CPU低于GPU。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分