服务器端人工智能,FPGA 和 GPU 到底谁更强?-阿里云开发者社区

开发者社区> 开发者小助手-bz8> 正文

服务器端人工智能,FPGA 和 GPU 到底谁更强?

简介: 眼下人工智能硬件之争是百花齐放,各有所长。机器之心曾发过一篇李一雷博士写的《FPGA vs. ASIC,谁将引领移动端人工智能潮流?》,比较了FPGA与ASIC的优劣势。今天他又将 FPGA与眼下最火的 GPU一较高下,比较了二者在峰值性能、灵活性、平均性能功耗和能效比上的差异。那么在与 GPU 的 PK中,FPGA 的表现又会如何呢?
+关注继续查看

随着 AlexNet 的划时代论文横空出世,GPU 就开始在服务器端的机器学习加速领域称霸。然而,随着研究的深入,人们发现了比 GPU 架构更灵活的 FPGA 在机器学习加速领域也有自己的优势,并有多家公司和学校发表了相关研究结果。那么,现在服务器端人工智能应用 GPU 和 FPGA 到底哪个强?本文将作深入分析。


为什么 GPU 和 FPGA 能加速机器学习算法?

 


91146750-60D2-46C7-87AB-F57B89424A4D.jpeg6C8FB5E2-366D-4889-8786-E98E822D9401.jpeg

GPU(上图)与 FPGA(下图)


在很久很久(其实也没多久,大概五年前),人们在跑机器学习算法时用的主要还是 CPU,因为 CPU 通用性好,硬件框架已经很成熟,对于程序员来说非常友好。然而,当机器学习算法的运算量越来越大时,人们发现 CPU 执行机器学习的效率并不高。CPU 为了满足通用性,芯片面积有很大一部分都用于复杂的控制流,留给运算单元的面积并不多。而且,机器学习算法中运算量最大的矩阵运算是一种矢量(Vector)运算,而 CPU 对于矢量运算只能说是部分支持。这时候,GPU 进入了机器学习研究者的视野。GPU 原本的目的是图像渲染,因此使用完美支持矢量运算的 SIMD(单指令流多数据流,single instruction multiple data)架构,而这个架构正好能用在机器学习算法上。GPU 本来就是为了加速 3D 游戏性能的加速器,这里又被用到了加速机器学习应用上,其实是很有趣的一件事。


GPU 运行机器学习算法比 CPU 快很多,但是毕竟不是为机器学习而设计的。有人就要问,如果做一块完全为机器学习设计的运算单元,会不会比 GPU 更有效率?不过,要真的做一块机器学习专用芯片(ASIC)需要极大的决心,首先为了性能必须使用最好的半导体制造工艺,而现在用最新的工艺制造芯片一次性成本就要几百万美元,非常贵。就算你有钱,你还需要拉一支队伍从头开始设计,设计时间往往要到一年以上,time to market 时间太长,风险很大,所以除了 Google 之外很少有人敢做 ASIC。这时候,FPGA 就吸引了大家的注意力。


FPGA 全称「可编辑门阵列」(Field Programmable Gate Array),其基本原理是在 FPGA 芯片内集成大量的数字电路基本门电路以及存储器,而用户可以通过烧入 FPGA 配置文件来来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的,即用户今天可以把 FPGA 配置成一个微控制器 MCU,明天可以编辑配置文件把同一个 FPGA 配置成一个音频编解码器。所以说在 FPGA 可以快速实现为机器学习算法开发的处理器架构,而且成本很低(一块 FPGA 开发板大约售价 1000 美金,比真的制造芯片便宜太多)。


ASIC 是一锤子买卖,设计出来要是发现哪里不对基本就没机会改了,但是 FPGA 可以通过重新配置来不停地试错知道获得最佳方案,所以用 FPGA 开发的风险也远远小于 ASIC。


GPU 与 FPGA 的性能分析对比


那么在服务器端 GPU 和 FPGA 谁更强呢?在服务器端,有几个指标可供对比:

  • 峰值性能
  • 灵活性
  • 平均性能
  • 功耗和能效比


其实这几个指标是会互相影响的,不过还是分开说。


从峰值性能来说,GPU(10Tflops) 远远高于 FPGA(<1TFlops)。GPU 上面成千上万个 core 同时跑在 GHz 的频率上还是非常壮观的,最新的 GPU 峰值性能可达 10TFlops 以上。GPU 的架构经过仔细设计(例如使用深度流水线,retiming 等技巧),在电路实现上是基于标准单元库而在关键路径(即芯片中一个时钟周期内延迟最长的路径,直接决定了电路最高运行速度)上可以用手工定制电路,甚至在必要的情形下可以让半导体 fab 依据设计需求微调工艺制程,因此可以让许多 core 同时跑在非常高的频率。


相对而言,FPGA 首先设计资源受到很大的限制,例如 GPU 如果想多加几个 core 只要增加芯片面积就行,但 FPGA 一旦你型号选定了逻辑资源上限就确定了(浮点运算在 FPGA 里会占用很多资源),好汉也会被尿憋死。而且,FPGA 里面的逻辑单元是基于 SRAM-查找表,其性能会比 GPU 里面的标准逻辑单元差好多。最后,FPGA 的布线资源也受限制(有些线必须要绕很远),不像 GPU 这样走 ASIC flow 可以随意布线,这也会限制性能。

 

16219587-BBB1-4861-AEDE-20B282EDC1E9.jpeg

FPGA 布线资源有限,有些线必须走非常长,从而限制了时钟频率


除了芯片性能外,GPU 相对于 FPGA 还有一个优势就是内存接口。GPU 的内存接口(传统的 GDDR5,最近更是用上了 HBM 和 HBM2)的带宽远好于 FPGA 的传统 DDR 接口(大约带宽高 4-5 倍),而众所周知服务器端机器学习算法需要频繁访问内存,因此内存接口的带宽可以决定机器学习应用的性能。

 


4697FB1A-DD0D-4459-A3BD-DC7B70CCA775.png843E8477-2E2D-446A-8620-B692B5CA7E84.png66EF97BD-8C33-4C8E-BE4E-AABF37F8F2C2.jpeg

传统显卡用的 GDDR 标准带宽比 FPGA 使用的 DDR4 大 4-5 倍(上图),而高端显卡更是用上了带宽更大的 HBM 接口的(中图),而即使高端 FPGA(如 Xilinx Ultrascale)的内存接口仍然是普通的 DDR4(下图)


但是从灵活性来说,FPGA 远好于 GPU。FPGA 可以根据特定的应用去编程硬件(例如如果应用里面的加法运算非常多就可以把大量的逻辑资源去实现加法器),但是 GPU 一旦设计完那就没法改动了,没法根据应用去调整硬件资源。目前机器学习大多数适合使用 SIMD 架构(即只需一条指令可以平行处理大量数据),因此用 GPU 很适合。但是有些应用是 MISD(即单一数据需要用许多条指令平行处理,微软在 2014 年 ISCA paper 里面就举了一个 MISD 用于并行提取 feature 的例子),这种情况下用 FPGA 做一个 MISD 的架构就会比 GPU 有优势。不过 FPGA 的编程对于程序员来说并不容易,所以为了能让机器学习程序员能方便地使用 FPGA 往往还需要在 FPGA 公司提供的编译器基础上进行二次开发,这些都是只有大公司才能做。

11C9AF50-7214-4697-81A2-3B6C3BAC7A19.jpeg

微软在 2014 年 ISCA paper 里面就 MISD 用于并行提取 feature 的例子


从上面两条我们可以看出,FPGA 实现的机器学习加速器在架构上可以根据特定应用优化所以比 GPU 有优势,但是 GPU 的运行速度(>1GHz) 相比 FPGA 有优势 (~200MHz)。所以,对于平均性能,看的就是 FPGA 加速器架构上的优势是否能弥补运行速度上的劣势。如果 FPGA 上的架构优化可以带来相比 GPU 架构两到三个数量级的优势,那么 FPGA 在平均性能上会好于 GPU。例如,百度在 HotChips 上发布的 paper 显示,GPU 的平均性能相比 FPGA 在矩阵运算等标准 batch data SIMD bench 上远好于 FPGA;但是在处理服务器端的少量多次处理请求(即频繁请求但每次请求的数据量和计算量都不大)的场合下,平均性能会比 GPU 更好。

 

F8F57134-85E7-4965-B4D9-9A9333C0C4EF.jpeg13427173-C2B0-404A-9DB6-9BDC40F4D872.jpeg


Baidu 的研究显示,对于矩阵运算 bench GPU 远好于 FPGA,但是当处理小计算量大批次的实际计算时 FPGA 性能优于 GPU


功耗方面,虽然 GPU 的功耗(200W)远大于 FPGA 的功耗(10W),但是如果要比较功耗应该比较在执行效率相同时需要的功耗。如果 FPGA 的架构优化能做到很好以致于一块 FPGA 的平均性能能接近一块 GPU,那么 FPGA 方案的总功耗远小于 GPU,散热问题可以大大减轻。反之,如果需要二十块 FPGA 才能实现一块 GPU 的平均性能,那么 FPGA 在功耗方面并没有优势。能效比的比较也是类似,能效指的是完成程序执行消耗的能量,而能量消耗等于功耗乘以程序执行的时间。虽然 GPU 的功耗远大于 FPGA 的功耗,但是如果 FPGA 执行相同程序需要的时间比 GPU 长几十倍,那 FPGA 在能效比上就没有优势了;反之如果 FPGA 上实现的硬件架构优化得很适合特定的机器学习应用,执行算法所需的时间仅仅是 GPU 的几倍或甚至于接近 GPU,那么 FPGA 的能效比就会比 GPU 强。


结语

FPGA 可以开发出为机器学习算法专用的架构,但是 FPGA 本身的峰值性能较 GPU 要差很多。FPGA 和 GPU 哪个跑机器学习算法更强(平均性能更好),完全取决于 FPGA 架构优化能否弥补峰值性能的劣势。



©本文由机器之心原创,转载请联系本公众号获得授权

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
预告|阿里云华北5地域将于十月开放服务 全系25G网络,侧重服务人工智能行业
今天,我们很高兴地宣布,阿里云华北5地域(Region)将于10月开放服务,该地域将部署领先的人工智能、机器学习计算资源及国内首个全系Skylake+25G网络的环境,提供高性能、高可用、低时延、低成本的云计算和人工智能服务。
1897 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
7256 0
客服是人工智能落地的黄金场景(智能服务圆桌现场实录)
几乎所有人都看好人工智能的前景,却有很多人看不清人工智能的现在。10月12日,杭州云栖大会上,阿里云服务部门邀请了阿里小蜜、支付宝小蚂答、小能客服、智齿客服的负责人进行了一场“为客户服务插上AI之翼”智能服务的圆桌会议,畅谈智能服务的现在和未来,挑战和前景。
5708 0
微信程序开发系列教程(二)微信订阅号+人工智能问答服务
我的前一篇文章**微信程序开发系列教程(一)**开发环境搭建 已经介绍了微信服务器的开发环境搭建。本文作为开发系列的第二篇文章,介绍如何给您的微信订阅号开发一个最简单的问答服务,非常好玩。
29 0
英特尔刘茵茵:持续优化NLP服务,助推人工智能创新和落地
去年六月,英特尔人工智能产品事业部(AIPG)数据科学主任、首席工程师刘茵茵在机器之心主办的第一届全球机器智能峰会(GMIS 2017)上发表了《演变中的人工智能,与模型俱进》主题演讲,探讨了深度学习如何用同一种模型为不同行业提供解决方案,以及如何让各个行业的专家建议推动整个人工智能生态系统的发展。会后,刘茵茵也接受了机器之心的专访,分享了英特尔在 AI 领域的整体规划,以及 AIPG 部门如何计划通过构建相应的框架、资源库等实现这一目标。
22 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
8948 0
《中国人工智能学会通讯》——5.31 制造服务的产生与聚合
本节书摘来自CCAI《中国人工智能学会通讯》一书中的第5章,第5.31节, 更多章节内容可以访问云栖社区“CCAI”公众号查看。
1076 0
1549
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载