服务器端人工智能,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 架构优化能否弥补峰值性能的劣势。



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

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
6天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多种配置选项,包括CPU+GPU、CPU+FPGA等组合,支持高性能计算需求。本文汇总了阿里云GPU服务器的价格信息,涵盖NVIDIA A10、V100、T4、P4、P100等多款GPU卡,适用于人工智能、机器学习和深度学习等场景。详细价格表和实例规格见文内图表。
|
1月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
|
2月前
|
人工智能 安全 算法
人工智能时代的服务器操作系统
人工智能时代的服务器操作系统
46 12
|
3月前
|
编解码 分布式计算 Linux
最新阿里云服务器、轻量应用服务器、GPU云服务器活动价格参考
阿里云服务器产品包含云服务器、轻量应用服务器、GPU云服务器等,本文汇总了这些云服务器当下最新的实时活动价格情况,包含经济型e实例云服务器价格、通用算力型u1实例云服务器价格、第七代云服务器价格、轻量应用服务器最新价格、GPU云服务器价格,以供大家参考。
最新阿里云服务器、轻量应用服务器、GPU云服务器活动价格参考
|
3月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多样化的选择,包括CPU+GPU、CPU+FPGA等多种配置,适用于人工智能、机器学习和深度学习等计算密集型任务。其中,GPU服务器整合高性能CPU平台,单实例可实现最高5PFLOPS的混合精度计算能力。根据不同GPU类型(如NVIDIA A10、V100、T4等)和应用场景(如AI训练、推理、科学计算等),价格从数百到数千元不等。详情及更多实例规格可见阿里云官方页面。
225 1
|
3月前
|
机器学习/深度学习 人工智能 并行计算
【人工智能】CPU、GPU与TPU:人工智能领域的核心处理器概述
在人工智能和计算技术的快速发展中,CPU(中央处理器)、GPU(图形处理器)和TPU(张量处理器)作为核心处理器,各自扮演着不可或缺的角色。它们不仅在性能上各有千秋,还在不同的应用场景中发挥着重要作用
191 2
|
4月前
|
机器学习/深度学习 SQL 人工智能
人工智能平台PAI使用问题之如何在阿里云服务器上搭建自己的人工智能
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
6天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
38 9
|
2天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
6天前
|
弹性计算 异构计算
2024年阿里云GPU服务器多少钱1小时?亲测价格查询方法
2024年阿里云GPU服务器每小时收费因实例规格不同而异。可通过阿里云GPU服务器页面选择“按量付费”查看具体价格。例如,NVIDIA A100的gn7e实例为34.742元/小时,NVIDIA A10的gn7i实例为12.710156元/小时。更多详情请访问阿里云官网。
37 2

热门文章

最新文章