服务器端人工智能,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盲盒。
相关文章
|
14天前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
|
17天前
|
弹性计算 固态存储 Linux
阿里云服务器、轻量应用服务器、gpu云服务器收费标准与实时活动价格参考
云服务器ECS、轻量应用服务器和gpu云服务器是阿里云的主要云服务器产品,目前轻量应用服务器2核2G收费标准为60元/月,活动价格只要36元/1年或68元1年,云服务器1核1G包月收费标准最低为24.0元/月,GPU云服务器中gn6i实例4核15G配置月付1681.00/1个月起,gn6v实例8核32G配置月付3817.00/1个月起。本文为大家整理汇总了阿里云服务器、轻量应用服务器、gpu云服务器的最新收费标准与活动价格情况,以表格形式展示给大家,以供参考。
|
27天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
27天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
184 2
|
1月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多种配置选项,包括CPU+GPU、CPU+FPGA等组合,支持高性能计算需求。本文汇总了阿里云GPU服务器的价格信息,涵盖NVIDIA A10、V100、T4、P4、P100等多款GPU卡,适用于人工智能、机器学习和深度学习等场景。详细价格表和实例规格见文内图表。
134 0
|
2月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
|
3月前
|
人工智能 安全 算法
人工智能时代的服务器操作系统
人工智能时代的服务器操作系统
61 12
|
4月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云AI服务器价格表_GPU服务器租赁费用_AI人工智能高性能计算推理
阿里云AI服务器提供多样化的选择,包括CPU+GPU、CPU+FPGA等多种配置,适用于人工智能、机器学习和深度学习等计算密集型任务。其中,GPU服务器整合高性能CPU平台,单实例可实现最高5PFLOPS的混合精度计算能力。根据不同GPU类型(如NVIDIA A10、V100、T4等)和应用场景(如AI训练、推理、科学计算等),价格从数百到数千元不等。详情及更多实例规格可见阿里云官方页面。
273 1
|
3天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现了16QAM基带通信系统,包括调制、信道仿真、解调及误码率统计模块。通过Vivado2019.2仿真,设置不同SNR(如8dB、12dB),验证了软解调相较于传统16QAM系统的优越性,误码率显著降低。系统采用Verilog语言编写,详细介绍了16QAM软解调的原理及实现步骤,适用于高性能数据传输场景。
101 69
|
7天前
|
移动开发 算法 数据安全/隐私保护
基于FPGA的QPSK调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的QPSK调制解调系统,通过Vivado 2019.2进行仿真,展示了在不同信噪比(SNR=1dB, 5dB, 10dB)下的仿真效果。与普通QPSK系统相比,该系统的软解调技术显著降低了误码率。文章还详细阐述了QPSK调制的基本原理、信号采样、判决、解调及软解调的实现过程,并提供了Verilog核心程序代码。
45 26