Xilinx 赛灵思

文章数:502 被阅读:345527

账号入驻

单弈:如何基于FPGA定制计算构建AI 及智能安防系统

2019-11-05
    阅读数:

近日,在雷锋网和 AI掘金志主办的业内首个围绕“算法+算力”展开的大型智能城市论坛 —— 「全球AI芯片·城市智能峰会」上,赛灵思人工智能研发高级总监单羿应邀出席,并发表了题为《基于FPGA定制计算构建AI系统》的精彩演讲。拥有着人工智能独角兽企业创始人、CTO 等各种光环,亲自领导打造过多款自动驾驶、智能安防、数据中心相关产品的单弈博士,首次作为赛灵思中国人工智能发言人出席中国产业活动,全面介绍了后摩尔定律和大数据、人工智能时代,为什么赛灵思自适应技术被称为性能提升的出路,以及在人工智能普适的时代,赛灵思灵活应变的定制计算方案将如何帮助开发者构建AI及业界广泛关注的智能安防系统。

以下是单羿的演讲全文,感谢来自 AI 掘金志和雷锋网的整理。

赛灵思是一家美国上市公司,我们发明了世界上第一款FPGA芯片。FPGA是一种非常稳定的芯片,大概平均在200万个芯片中,只有不到2个会出问题。赛灵思所销售的芯片,都能保证15年以上的供货周期。赛灵思的客户群横跨很多行业,从航天航空到汽车工业化,同时也包括安防和数据中心等领域。


我们不仅关注芯片这一侧,而且更多是专注开发芯片所用的工具,比如推出了Vivado Design Suite、Vitis 统一软件开发平台等相应的开发环境。


其实大家今天谈AI芯片的时候,谈得比较多的是性能、应用性,以及支持的范围等,但其实在工业界,芯片很重要的一点便是稳定性、可靠性,尤其是在智能时代,当面对大量应用需求和海量非结构化数据时,需要的不只是一个通用的处理器架构,而是针对不同领域的专用计算架构(DSA, domain specific architecture),去适配不同的应用和数据结构。


定制计算这一概念,就是由此而来,它也是解决现在智能社会多样需求的一个重要手段。


什么叫做定制计算呢?

我举个简单的例子,下图是各种人工智能Network的名字,整个行业都在不断地演进这些算法,但这里我们需要思考一个问题:算力的演进能跟得上算法更迭速度吗?


我们知道,通常一个芯片的研发需要两年时间,要做到量产则更长。在这个时间里,一般情况下,我们为旧的网络打造一个处理器架构,但当芯片完成后,又出现了新的网络,此时芯片原有的架构就很难满足新网络架构以及新算法对算力高效性的需求。在某种程度上讲属于打水漂了,浪费了投片的成本。


尤其是大家相继迈入7纳米制程之后,每颗芯片的成本开发成本动辄千万甚至上亿美金,所以很难会为AI算法未确定、应用未真正推广的时候,去打造一款最终的通用芯片。


而在这个时候,FPGA则可以发挥它的作用。


FPGA是一种硬件可编程的器件,工程师可以在上面改变它的电路逻辑,人们通常在写FPGA的时候,写的是软件代码,但是心里想的是电路结构、处理器结构。所以FPGA硬件可以反复擦写,这一特性,既降低了一次性投片的成本,同时也提高了芯片的处理性能。


下图是赛灵思产品的一个特定应用域,它在处理问题的时候,往往有这样一个流水线,来处理很多不同的任务。

赛灵思想要做的,不再是用一颗通用CPU或GPU去满足所有的应用。我们的目的是,分析这个应用里不同的特点:如每一个操作的数据流是什么样、每个操作所需要的精度如何、怎么去做多级的存储、怎么去定制化一个芯片跟外界的I/O、通信的接口。像安防摄像头,或者NVR、DVR,很多接口都是需要定制的。所以在这样一个定制化需求的情况下,赛灵思可以用FPGA非常容易地去打造成一个AI处理器。


我们可以定制结构、定制数据宽度、定制存储架构,甚至还可以定制接口,这些都是FPGA的优势。


所以在做AI产品的时候,FPGA是一个非常有力的助手,同时我们也非常关注安防这个垂直的应用领域。


在安防前端低成本摄像头类目中,赛灵思提供28纳米的FPGA芯片。而在更智能、更高端的摄像头中,则提供16纳米芯片,在云端服务器这边也有相应的服务器板卡解决方案。


赛灵思可以提供从“普通”到“高强度”等级的算力,以及非常高密度的计算服务器搭配,品类非常齐全,非常适合用于搭建整体的安防系统。

举个例子,我们在边缘计算领域有多种芯片,这里面仅仅列了非常少的一部分。用户可以根据需求去选择某一款芯片。比如说当用户选择一些友商的芯片时,往往只有三五种选择,而这几种选择之间的跨度非常大,成本也是成倍上升的,而赛灵思每一颗芯片和每一颗芯片之间的差距相对比较小,价格也会更细分,所以用户可以用更低的成本、更低的功耗去找到适应需求的那一颗芯片,执行任务。除此之外,也有可以提供接近500G每秒处理次数的高性能摄像头模组,功耗只需要5瓦。

我们通过16纳米的FPGA芯片,不仅可以完成之前的功能,实现更强的运算能力,还可以把其它公司的SOC去掉,仅仅用一颗单位芯片,就能处理摄像头芯片中AI的运算,包括编解码和接口的功能,做到单芯片的解决方案。


同时我们还可以用单芯片做边缘服务器里对多路视频分析的运算以及编解码的解决方案。


这是客户松下对我们的评价,松下觉得我们产品主要特点是低延时和低功耗。这在摄像头领域是非常重要的,摄像头一般是在室外,功耗非常重要,而且我们处理的是实时图像,不会把图像缓存下来做批处理,后者是友商的模式,但是它不利于对实时场景的快速反馈。


低延时和低功耗一直是赛灵思在安防领域的一个重要卖点。

在这个领域,我们也有一些低延时的解决方案,并且在不断地调整AI架构去适应AI模型的更迭,同时更注重从端到端整体地解决一个AI部署之后的效率问题。

具体来看一下其中的一些挑战:


从上图的应用里面可以看到,在面对诸多AI需求时,都有着不同算力大小的需求,而且往往场景和清晰度多样。而且我们经常需要把多组模型、多组摄像头的输入放在一起,送到计算平台里,这中间对计算平台的算力要求有很大的挑战。


另外一点,这些模型仅仅是我们安防系统中核心AI方面的一部分,我们还有很多前处理和后处理的模块没有涉及到,于是推出了“机器学习+X”的概念,FPGA很适合做接口预处理和后处理的工作,结合对机器学习的运行能力,构建一个端到端的优化系统。

下图是整体的解决方案: 


我们给客户提供的产品,从硬件角度是定制化硬件处理器体系结构,针对不同的芯片,去做不同规模的处理器给客户选择。


在上层同时也提供了一个完整的软件开发环境,包括从用户的模型输入、分析、优化,以及编译、部署、运行支持,都是一个完整的工具包。而且还辅助客户去做很多参考设计,比如一些预处理和后处理的模型优化,也提供了很多相关的库。


赛灵思希望做到的是在垂直方向给客户提供一个软件开发工具的优化,在水平方向给客户提供一个端到端整体系统参考解决方案。在垂直方向,赛灵思也做了很多模型优化的工作。


我们知道客户的模型一般是用GPU来做离线训练,这些模型往往比较大而且是用浮点精度运算的,其实它并不一定适合放在实际的AI芯片或者是FPGA AI处理器上进行运算,所以只要保证精度,是可以做一些优化的。所以我们很多工作是为了基于FPGA在运算时有比较友好的模型和算法。


以低精度的工作为例,现在很多的公司也在做这一块,但大家基本上都在用8比特做处理,很少有人用浮点做实际的部署。


我们更进一步在尝试4比特、2比特数据表达精度,当然这里面遇到了很多挑战,比如在做量化时,该怎么去选取scale。浮点运算可以把scale做到1比特的运算,但是这需要浮点运算硬件单元,代价非常大。所以我们在这里用了2的幂次来优化,很多优化工作我们都会把它集成在工具里。


此外,赛灵思进行了一些剪枝工作,今年也有把NAS放进来,取得了很好的效果,另外也有用到了一些multi-task的方式。


Algorithm Model Zoo

赛灵思为客户提供了对FPGA很友好的Model Zoo,在这里面有80多种设计分类、分割、检测、姿态的模型,这些模型在安防领域经常会有用到。它们至少会作为客户的baseline,在这些模型上进行优化,同时基于Model Zoo,客户也会感受到一个针对硬件友好的模型大致是什么样的,而不是随意去设置一些模型结构,最后导致部署之效率比较低。而在水平方向上,赛灵思也是充分考虑客户的实际应用需求。


从上图中可以看到,DPU在前处理环节耗费的时间非常少,大量时间都耗在了后处理环节,后处理有一部分工作可以继续在FPGA的逻辑里优化,有一部分工作还可以在SOC的CPU处理器中利用应用加速的方式实现优化,所以这种端到端的方案,把客户任务的处理时间从76毫秒后处理降到了13毫秒,这些解决方案也可以作为用户的一些实际优化案例来进行参考。


前面讲了两方面的事情,一个是在硬件方面,我们采取定制计算的方式,给客户提供定制化的硬件处理器结构,提供这种ID,同时这个ID可以把它嵌入在FPGA里面。


第二方面赛灵思给客户提供软件的工具,软件工具可以帮助客户做一些模型的优化,同时给客户提供很多端到端的参考解决方案,供用户去参考,去做一些开发优化。


Vitis是什么?

大家知道之前Vivado的开发门槛非常高,需要使用极少数人懂的Verilog语言。针对这一问题,赛灵思针对Soc平台提供SDK支持,嵌入式工程师可直接调用这些API,以及相关不同的处理软件和工具。今年我们把这些工具集成在一起,变成了一个Unified API,用户可通过软件定义的方式,去使用边缘和云端芯片。这些芯片涵盖一系列必要的支持,保证客户能够采用这种软件编程的方式。


我们来看上面这张图,底下有相应的FPGA芯片和板卡。在上面我们给用户提供各种各样的Library,还有一些优化分析和调试的工具,再上层提供了非常多的Libraries,这些Libraries降低了开发难度,用户可以不要做硬件。


Libraries涉及到大多数用户会用得到的操作,比如说AI、编解码、基本的数学操作、OpenCV等,都是我们把硬件描述语言写成库的形式,供用户来调用。用户只需针对它特定的应用领域,调用这些API即可实现编程,通过这种方式既降低了用户的开发门槛,同时也保证了硬件上FPGA的效率得到充分发挥。


而在AI领域,我们现在支持TensorFlow、Caffe、Pytorch这些主流的深度学习框架,同时也提供Model Zoo供用户参考,还有AI解决方案给到用户开发方案。


软件统一了,硬件如何呢?

除了在软件上提供Unified的软件工具链外,在硬件旗舰上赛灵思又推出ACAP(Adaptive Compute Acceleration Platform)即自适应计算加速平台。


它结合了分布式存储器与硬件可编程的DSP、多核SoC以及软件可编程且同时又具备硬件自适应性的计算引擎。

上图右边绿色部分是我们针对AI做的处理器阵列,它有400多个AI计算核,解决了FPGA逻辑部分、运算频率无法达到很高的问题。


而DSP部分,可以提供数学运算、乘法、加法等操作,红色部分可以用它搭建灵活的结构,还有一些ARM、GPU核,以及标准接口、存储接口等。


这是一个非常复杂完整的SOC图,在DSP部分获得了10P、8比特的运算能力,当然做成1比特的话运算能力还能增加70P,这也是我们在8比特运行时所有算力的总和,数据非常可观。与此同时,我们也看到最高可做到140P芯片运算的能力,不仅可以放到边缘端,甚至还可放在数据中心,做成基于FPGA的高密度服务器。


来看一个简单的例子,我们怎样把AI运算放到ACAP平台的:

在上图中,我们首先从外部存储去获取运行所需要的Data、模型参数,然后进行片上的存储。之后,把这些数据通过可编程的逻辑,做成高效的数据通路,然后送到AI引擎里进行运算(绿色部分是为AI准备的一个处理器),最后把结果通过逻辑部分写回到CPU,就能拿回到结果。


整个过程中,用户有怎么样的开发过程?我以智慧城市项目为例进行介绍。

首先,我们需要在CPU上把数据放到硬件上做预处理,同时还要跑一些AI功能,处理后再把数据送回去。


如果直接在逻辑上映射,效率会很低。这个案例是每秒6帧,我们把AI放到硬化的AI引擎里面运行,就可以把效率提高到30帧每秒,进而把预处理在FPGA上加速,可以把它提高到40帧每秒,如果再利赛灵思自研的Vitis技术,可以做到80帧每秒。这是一些真实的案例,可以看到我们新一代的旗舰产品可以非常大地改善AI方面的性能,达到业界领先水平。



总 结



 Summary 


总结一下我今天讲的内容,第一个是在AI时代,我们很难用一种处理器去解决所有的问题,所以需要有不同的处理器结构,并把这些结构进行设计,从而映射在数十种FPGA芯片上,就能完成用户对FPGA硬件的开发,用户不需要去管硬件的逻辑,处理器就已经集成到FPGA里了。在FPGA中利用针对特定AI领域的定制计算,可提供高效的用户硬件平台。


除了硬件优化之外,赛灵思还可以提供软件的优化,给用户提供FPGA或者硬件友好的AI算法模型,供用户使用,以及端到端的优化技术,这些软件工具来帮助用户进一步提高效率,降低开发门槛。


最后就是我们今年新出的Vitis统一软件平台、异构的7纳米的平台,可以进一步帮助客户打造一个低延时、低功耗的高性能处理平台,同时用户不需要付出太高的成本,像开发软件一样去使用像FPGA这样的一个AI芯片。

THE

END



最新有关xilinx_inc的文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved