最近FPGA又频频被各AI领域的巨头看好,比如微软、百度、科大讯飞都对FPGA应用前景有所期待。那么如果让你选择FPGA作为AI计算系统的主力军,你会有什么样的顾虑?

这几天,已经退役的AlphaGo又强行刷了一波头条,不是又跟哪位世界高手对决,而是“新狗”通过无监督式学习,仅用3天时间就战胜了李世石版的AlphaGo,然后用了21天时间战胜了柯洁版本AlphaGo。AlphaGo让我们真真切切地看到了AI计算的强大。
  
目前,在AI计算平台使用最广泛的两种加速部件是GPU和FPGA。GPU可适用于具备计算密集、高并行、SIMD(SingleInstructionMultipleData,单指令多数据流)应用等特点的深度学习训练模型领域,并且GPU创建了包含CNN、DNN、RNN、LSTM以及强化学习网络等算法在内的应用加速平台和生态系统。

但是,最近FPGA又频频被各AI领域的巨头看好,比如微软、百度、科大讯飞都对FPGA应用前景有所期待。那么如果让你选择FPGA作为AI计算系统的主力军,你会有什么样的顾虑?

顾虑一:FPGA有啥优势?什么样的场景更适合FPGA?
首先,深度学习包含两个计算环节,即训练和推理环节。GPU在深度学习算法模型训练上非常高效,但在推理时对于小批量数据,并行计算的优势不能发挥出来。而FPGA同时拥有流水线并行和数据并行,因此处理任务时候延迟更低。例如处理一个数据包有10个步骤,FPGA可以搭建一个10级流水线,流水线的不同级在处理不同的数据包,每个数据包流经10级之后处理完成。每处理完成一个数据包,就能马上输出。通常来说,FPGA加速只需要微秒级的PCIe延迟。当Intel推出通过QPI快速通道互联的Xeon+FPGA之后,CPU和FPGA之间的延迟甚至可以降到100纳秒以下。

其次,FPGA是可编程芯片,算法烧录更加灵活。目前来看,深度学习算法还未完全成熟,算法还在迭代衍化过程中,若深度学习算法发生大的变化,FPGA是软件定义硬件,可以灵活切换算法,快速切入市场。

未来至少95%的机器学习计算都是用于推断,只有不到5%是用于模型训练,而FPGA正是强在推断。大幅提升推断效率的同时,还能最小限度损失精确性,这正是FPGA的强项。

顾虑二:FPGA的计算性能能不能满足我的需求?
与CPU和GPU不同,FPGA是一种典型的非诺依曼架构,是硬件适配软件的模式,它能够根据系统资源和算法特征灵活的调整并行度,达到最优的适配,因此能效比高于CPU和GPU。

以浪潮F10A为例,这是目前业界支持OpenCL的最高密度最高性能的FPGA加速设备,基于Altera的Arria10芯片,单芯片峰值运算能力达到了1.5TFlops,功耗却只需35W,每瓦特性能达到42GFlops。同时,F10A设计为高密度的半高半长PCI-E插卡,同时具有灵活的板卡内存配置,最大支持32G双通道内存,是业内同等FPGA卡内存容量的4-8倍。此外,F10A支持2个10Gb光口,可以实现数据直接从网络到板卡处理,无需经过CPU,大大减低了传输延时。

测试数据显示,在语音识别应用下,浪潮F10A较CPU性能加速2.87倍,而功耗相当于CPU的15.7%,性能功耗比提升18倍。

顾虑三:FPGA的开发周期得1年以上吧,这不能满足我的业务上线需求?
传统的FPGA的开发类似于芯片的开发,采用硬件描述语言(HDL)开发,HDL开发带来的问题就会像芯片设计一样周期会比较长,从架构设计、到仿真验证、再到最终完成,需要一年左右的开发时间。

但是互联网的业务迭代速度极快,在几个月时间内就可能完成庞大用户群的积累,因此业务对于数据中心的要求是“快”—计算力平台的升级要尽量快地满足业务的发展,因此FPGA的传统开发模式动辄以半年或年为单位的开发周期难以满足需求。

为此浪潮尝试通过OpenCL高级语言开发方式,它把底层的硬件如总线、IO接口、访存控制器等和底层软件如驱动、函数调用等全部封装,变成标准单元提供上层支持,用户只需要关注算法本身,OpenCL开发的逻辑通过编译工具直接映射到FPGA中,开发周期从至少1年缩短至4个月以内。

顾虑四:对于O经验的公司,怎样快速上线FPGA应用?
或许你还是有些顾虑,即时开发效率大幅提升、开发周期大大缩短,但是对于技术和团队储备不足的中小型AI企业来说,FPGA仍是“高不可攀”的AI加速部件。如果,有一种方案能够将软件、算法和硬件板卡整合,以软硬一体化的形式,提供FaaS(FPGAasaService)服务。你还有什么顾虑么?

目前,浪潮正在针对市场上需求最迫切的几种应用场景进行算法的移植开发,在图像压缩、文本数据压缩及神经网络加速等应用开发出业界领先的IP,省去客户的算法开发周期,最小化FPGA落地门槛、最大化FPGA落地效率。

神经网络加速方案:基于浪潮F10A的AI线上推理加速方案,针对CNN卷积神经网络的相关算法进行优化和固化,可加速ResNet等神经网络,能够应用于图片分类、对象检测和人脸识别等应用场景。

实测数据显示,在进行ResNet残差网络的图片识别分类任务时,浪潮F10A加速方案图片处理速度可达每秒742张,Top-5识别准确率达到99.6%,相比同档次GPU能效比提升3倍以上。而与通用CPU对比,在处理这种高并行、小计算量的任务时,F10A的优势将更明显。

WebP图片转码压缩加速方案:针对图片数据的压缩应用,嵌入基于FPGA计算环境下的WebP编解码优化算法,通过充分利用硬件流水设计和任务级并行,大大提升WebP图像压缩编码算法的处理性能,能够实现JPEG-WebP图片格式的快速转换,比传统实现方式的整体处理效率平均高9.13倍左右,最高性能可比CPU提高14倍。

数据压缩加速方案:为解决传统压缩架构的弊端,浪潮GZip算法加速方案充分利用板卡硬件流水设计和任务级并行,大幅提升了压缩任务的吞吐量并有效降低CPU的负载,压缩率(压缩率=1-压缩后文件/压缩前文件)最高可达94.8%,压缩速度达到1.2GB/s,10倍于传统方案的压缩效率。

顾虑五:我是做云的,FPGA咋管理?支持虚拟机么?
FaaS不仅仅是指板卡与软件算法的一体化服务,同时还可以支持公有云及在线远程管理和更新。浪潮FPGA解决方案能够支持动态逻辑的在线可重构、静态逻辑的远程更新,并且通过优化的监控管理机制,提升板卡远程监控管理的可靠性,通过它们可以实时的监控FPGA芯片的温度、板卡风扇转速、板卡内存特性等从而调整FPGA的工作频率。

同时浪潮FPGA也支持虚拟机的直接访问,板卡本身也加入了很多RAS(可靠性、可用性、可扩展性)特性,如高可靠内存访问等,支持并行(FPP)和串行(AS)双加载模式,任何一种模式加载出现故障,都可以快速切换到另一种模式加载,保证了板卡大规模服务的可用性。

有了这些特性,就可以利用浪潮FPGA方案,快速搭建FPGA云所需要的基础底层计算平台,不论是对外提供公有云服务,还是对内实现FPGA计算力快速分配都能够既高效又可靠。

顾虑六:我可不想当小白鼠,有谁用过了?
对于FPGA这种新兴的AI计算设备,“观望”往往是明智的选择,毕竟不是每家公司都想要作为新技术的小白鼠,而当有第一个吃螃蟹的人出现后,“跟进”则成为“飞猪”的必然之路。

目前,浪潮FPGA已经在百度、阿里巴巴、腾讯、网易、科大讯飞取得批量的落地应用或深度测试,FPGA在人工智能线上推理的能效优势已经得到大部分互联网和AI公司的认可。

那么,FPGA可以应用在哪些领域?我们可以听听腾讯云FPGA团队负责人怎么说:

在机器学习领域、金融领域、大数据领域、基因检测领域都存在比较大的数据量需要分析计算,这些是FPGA可以发挥高吞吐优势的领域。

网络安全领域有更安全、更低延时的需求,这些场景也可以发挥FPGA低延时的优势。

超大规模图像处理,这些图片的处理都使用FPGA来进行处理加速,都可以得到满意的效果。

现在比较热门的自然语言处理和语音识别这些也都是FPGA可以发挥优势的场景。

当FPGA成为一种计算力服务,有着高效的硬件、成熟的IP和云化管理,你还在顾虑什么?

浪潮拥有国内领先的FPGA软硬件开发团队,浪潮正联合Intel及BAT、科大讯飞、网易等AI领先企业深入研发基于FPGA的通用系统方案,包括深度学习、网络加速、存储优化等,并将方案推广到其它应用领域和客户。未来,CPU+FPGA或许将作为新的异构加速模式,被越来越多的应用领域采用。

转 让FPGA替代GPU的6大顾虑,你确定不看看吗?的更多相关文章

  1. DSP已经英雄迟暮了吗?FPGA才是未来的大杀器?

          DSP技术,在某些人看来,或者已经面临着英雄迟暮的感觉,就我们当前所知道的.Freesacle.ADI.NXP早就停掉了新技术发展,而当前从大的方面说只剩下TI一家扛着Digital Si ...

  2. FPGA知识大梳理(四)FPGA中的复位系统大汇总

    本文整合特权(吴厚航)和coyoo(王敏志)两位大神的博文.我也很推崇这两位大神的书籍,特权的书籍要偏基础一下,大家不要一听我这么说就想买coyoo的.我还是那一句话,做技术就要step by ste ...

  3. FPGA、GPU、CPU三者各自的优缺点是什么呢?

    CPU: 英文全称:Central Processing Unit. 中文全称:中央处理器. 厂商:英特尔Intel. 功能:是一台计算机的运算核心和控制核心. 缺点:运算能力(最弱),核处理数(最少 ...

  4. FPGA该如何应对ASIC的大爆发?

    有人认为,除了人才短缺.开发难度较大,相比未来的批量化量产的ASIC芯片,FPGA在成本.性能.功耗方面仍有很多不足.这是否意味着,在ASIC大爆发之际,FPGA将沦为其“过渡”品的命运? 安路科技市 ...

  5. GPU、CPU、FPGA

    一.计算核心增加 二者都由寄存器.控制器.逻辑单元构成,但比例很大不同,决定了CPU擅长指令处理,函数调用上:GPU在数据处理(算数运算/逻辑运算)强力很多. NIVIDA基于Maxwell构架的GP ...

  6. GPU 、APU、CUDA、TPU、FPGA介绍

    购买显卡主要关注:显存.带宽和浮点运算数量   GPU :图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心.视觉处理器.显示芯片,是一种专门在个人电脑. ...

  7. FPGA与Deep Learning

    你还没听过FPGA?那你一定是好久没有更新自己在IT领域的知识了. FPGA全称现场可编程门阵列(Field-Programmable Gate Array),最初作为专用集成电路领域中的一种半定制电 ...

  8. 国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上

    版权声明:本文由薛梁原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/628340001485134638 来源:腾云阁 ht ...

  9. FPGA能代替CPU架构吗?

    你还没听过FPGA?那你一定是好久没有更新自己在企业级IT领域的知识了.今天笔者就和大家聊聊何为FPGA?FPGA主要应用场景是什么?有人说FPGA是替代传统CPU和GPU的未来,你信吗? FPGA全 ...

随机推荐

  1. 用ASP.NET Core构建可检测的高可用服务--学习笔记

    摘要 随着现代化微服务架构的发展,系统故障的定位与快速恢复面临着诸多挑战,构建可检测的服务,帮助线上保障团队时刻掌控应用的运行状况越来越重要.本次分享会讲解如何让 ASP .NET Core 应用与现 ...

  2. python中自带的三个装饰器

    说到装饰器,就不得不说python自带的三个装饰器: 1.@property 将某函数,做为属性使用 @property 修饰,就是将方法,变成一个属性来使用. class A(): @propert ...

  3. MySQL学习——操作存储过程

    MySQL学习——操作存储过程 摘要:本文主要学习了使用DDL语句操作存储过程的方法. 了解存储过程 是什么 存储过程是一组为了完成特定功能的SQL语句集合. 使用存储过程的目的是将常用或复杂的工作预 ...

  4. 史上最全Winform中使用ZedGraph教程与资源汇总整理(附资源下载)

    场景 C#窗体应用中使用ZedGraph曲线插件绘制图表: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/99716066 Win ...

  5. String字符串工具类

    字符串类(StringUtil.cs) using System; namespace Sam.OA.Common { /// <summary> /// 字符处理工具类 /// 作者:陈 ...

  6. 用一个bat文件调用另外两个bat文件,当1.bat执行完后再执行2.bat

    用一个bat文件调用另外两个bat文件,当1.bat执行完后再执行2.bat 摘自:https://zhidao.baidu.com/question/492732911.html @echo off ...

  7. python中time、datetime模块的使用

    目录 python中time.datetime模块的使用 1.前言 2.time模块 1.时间格式转换图 2.常用方法 3.datetime模块 python中time.datetime模块的使用 1 ...

  8. 被 GANs 虐千百遍后,我总结出来的 10 条训练经验

    一年前,我决定开始探索生成式对抗网络(GANs).自从我对深度学习产生兴趣以来,我就一直对它们很着迷,主要是因为深度学习能做到很多不可置信的事情.当我想到人工智能的时候,GAN是我脑海中最先出现的一个 ...

  9. [b0038] python 归纳 (二三)_多进程数据共享和同步_队列Queue

    1  队列读写 # -*- coding: utf-8 -*- """ 多进程 共享 队列 multiprocessing.Process 逻辑: 一个进程往队列写数据, ...

  10. python从入门到放弃之线程篇

    一,什么是多线程? 1.多线程的概念? 说起多线程,那么就不得不说什么是线程,而说起线程,又不得不说什么是进程. 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分 ...