提及FPGA,许多人的第一印象就是“难,难于上青天”,一方面Verilog/VHDL与C语言大庭相径,需要彻底理解FPGA内部的逻辑结构的知识,另一方面,FPGA不仅逻辑思维很重要,在数学思维上的化繁为简在优化过程中也让人头疼。对于掌握知识不同的软件工程师或硬件工程师,都驻足在了上手难度的门外,尤其是想要开发一些具有AI的复杂算法场景就更加雪上加霜了……就在2019年10月9日,赛灵思公司(Xilinx)发布了里程碑式的 Vitis™ 统一软件平台,以“突破软硬壁垒,解锁全员创新” 为主题,解锁软件开发者的硬件加速壁垒,将赛灵思独特的自适应计算能力带给全员开发者的新篇章。
对Xilinx比较熟悉的开发人员,可能在认知中Xilinx是一家偏向硬件的企业,此次发布的软件软件平台正是为适应现如今行业发展、为不同层次开发者提供便捷开发能力、为行业创造更大价值而发布的。
21ic中国电子网记者受邀参加此次发布会,赛灵思大中华区销售副总裁唐晓蕾(Maria) 及赛灵思软件和人工智能高级经理罗霖(Andy)现场为记者解答相关问题。
在开始介绍这款软件平台前,首先强调的便是,这款工具不同以往,是“开放,标准,免费”的。对于FPGA熟悉的人,一定对Xilinx也并不陌生,这也许是Xilinx历史上第一次将软件开发平台免费。
现场,据唐晓蕾介绍,如今,行业正迈向三个趋势——AI激增、异构计算、从云端到边缘。
第一,AI激增:AI也是近几年最火热的词,从数据中心、5G、自动驾驶、基因组学、医疗、金融等各种应用的大规模应用,导致数据量的激增,这种情况下就需要一个非常统一的平台。
第二,从云端到边缘:数据量的激增导致大量的计算需要放在云端。假若都在云端计算对整个带宽的要求是不是一样的,所以产生了边缘计算;但都在端计算,功耗、计算能力都是问题。所以这种情况,云端与边缘的统一化逐渐成为现今的最佳解决方案。
第三,异构计算:在计算能力不足以完成当前任务量之时,行业引入了CPU+ASIC、CPU+GPU、CPU+FPGA的概念,这也便是异构计算的概念。而Xilinx所提出的异构,与传统异构并不同,是自适应的异构,主要是软件感知架构,这种架构将不再单纯用硬件决定应用场景。当然Xilinx去年10月发布的ACAP也已提出软件自适应计算加速平台,该平台是为配合ACAP而生。
图1:赛灵思大中华区销售副总裁唐晓蕾(Maria)
在这种趋势下,如何解决这种问题?唐晓蕾表示,现今基本大多采用可编程或自适应来解决,但大多数情况下,市面的CPU、GPU、ASSP在可编程和自适应上市场还难以做到二者同时存在,Vitis正是这样一款既可做到可编程,又可做到自适应的软件平台。
正如上文所述,Vitis这款软件平台是免费开放的,是一款统一的软件平台,可实现在 Xilinx 异构平台(包括 FPGA、SoC 和 Versal ACAP)上开发嵌入式软件和加速应用。它可为边缘、云和混合计算应用加速提供统一编程模型。可以让包括软件工程师和 AI 科学家在内的广大开发者都能受益于硬件灵活应变的优势。
据罗霖介绍,现如今,应用场景是非常碎片化、多样化、创新化的,举个例子来说,自动驾驶的厂商软件迭代周期非常短,模型近乎每周更新,这个前提下专门为某个应用做一款芯片是不可能满足客户需求的,客户需求的是扩展灵活的平台,可以根据应用和工作负载自动优化系统,包括软件和底层的硬件,这也是Vitis能为市场带来价值的最大价值。
图2:赛灵思软件和人工智能高级经理罗霖(Andy)
那么这款Vitis统一软件平台究竟有哪些功能?Vitis 统一软件平台是将Vitis目标平台、Vitis核心开发套件、Vitis加速库集合在一起的统一平台,可完成从端到云不同形态的需求,具体功能包括:
图3:Vitis统一软件平台所具有的的功能
Vitis目标平台:Vitis 目标平台为Xilinx平台定义了基本软硬件架构及应用环境,包括外部存储接口、自定义输入输出接口和软件运行时。
Vitis核心开发套件:包括编译器、分析器、调试器、赛灵思运行时库(Xilinx RunTime库,即XRT)。
Xilinx RunTime库主要目的是为上层用将底层细节抽象,包括终端处理、生命周期管理、内存数据搬运,都是由该库负责进行。Xilinx RunTime库可促进应用代码(运行在嵌入式 ARM 或 x86 主机上)与加速器(部署在基于 PCIe 的 Xilinx 加速卡、基于 MPSoC 的嵌入式平台或 ACAP 的可重构部分上)之间的通信。它包括用户空间库和 API、内核驱动、电路板实用程序和固件。
编译器既包含C/C++/Python的编译器,也包含赛灵思的V++编译器,主要用来针对具体的应用产生具体加速内核;分析机能够直观了解底层到底层间究竟发生什么;调试器可以在遇到错误或Bug时,帮助分析进行调试。
在用户体验方面,该套系统的用户体验将会给工程师带来非常熟悉的开发环境,与此前所使用的的ARM、DSP开发流程完全一致。
Vitis加速库:包括OpenCV库、BLAS库、金融库,另外还包括Xilinx专门针的解决方案Vitis AI和Vitis video,其中Vitis AI将在下文中介绍,Vitis video面世在即,这两款解决方案也可帮助开发特定环境方面的应用。
通过上述的三重功能,对于开发“苦手”的人可直接应用相关库进行开发,而专业人员也可以使用相关的套件和Xilinx提供的经过优化的库进行高效率开发,减少开发时间的同时还可节省成本。
值得一提的是,Xilinx自28nm开始的器件均可使用该平台,另外一般的FPGA都可支持,不过ACAP一定要使用Vitis进行开发。
在人工智能时代,市场已逐渐从传统的软件开发方法转向深度学习的算法。自1997年IBM深蓝成为国际象棋的冠军开始,IBM Watson、AlphaGo等逐渐可实现性能超越人类的高精准应用,现在对于人工智能软件的注重程度越来越高。诸如汽车驾驶员辅助系统(ADAS)、机器人出租车是现在正在发展的项目,而在2024年,汽车还将实现全自动驾驶。在这样的背景下,Vitis同样也具有这样的解决方案——Vitis AI。
图4:传统软件已逐渐走向深度学习
据罗霖介绍,Vitis AI底层是业界主流的框架,包括TensorFlow、Caffe、PyTorch,另外,包括37个开源的模型,这些模型是针对不同应用,诸如智慧城市、智能驾驶、实施目标分析跟踪等,开发者可以直接取用模型进行开发。
图5:Vitis AI所具有的的功能
当然Vitis AI中也拥有非常强大的开发套件,包括AI优化器(AI Optimizer)、AI量化器(AI Quantizer)、AI 编译器(AI Compier)、AI 分析器(AI Profiler)。
据罗霖介绍,AI优化器可以将计算量较大的原始模型优化,从而提高模型在硬件上的运行性能;AI量化器可将浮点模型编译为8bit模型,高效部署在目标平台上;AI编译器可将定点过的模型编译成在平台上的可运行的机器代码;AI分析器可在模型运行时分析每层运行的状态、存储的带宽、计算量、运行效率等。
上文也有提到自适应运算,而自适应运算下应有自适应硬件进行支撑,就DPU上说,使用者可能在CNN DPU、LSTM DPU、MLP DPU上均会有需求,Xilinx平台在此方面的好处便是可根据用户需求,通过工具生成高效率、定制化的硬件满足业务需求,这也是Xilinx最大的优势。“在业界,Xilinx也是独一无二能够提供这种能力的半导体厂商”,罗霖如是说。
Vitis AI的目的是让客户能够高效开发神经网络应用,Xilinx在此方面针对具体的DPU有不同版本,包含高吞吐量、低延时、多通道等不同方案。值得一提的是,Vitis AI支持框架编译,不需要代码描述模型,从模型文件本身通过工具处理,即可生成在DPU上的机器代码,所以编译时间非常短。据悉,一个编译的时间大约为1-2分钟。
此前,Xilinx在硬件代码编程中拥有Vivado™设计套件,而此次发布的Vitis 独立于 Vivado™ 设计套件,后者仍然继续为希望使用硬件代码进行编程的用户提供支持。但是,Vitis 也能够通过将硬件模块封装成软件可调用的函数,从而提高硬件开发者的工作效率。
通过此次发布的Vitis与Vitis AI,对于层次不同的开发者拥有了自由的选择。传统的硬件工程师可以继续使用Vivado开发工具进行开发,也可利用Vitis调用库提高硬件开发效率;对于擅长底层移植或底层驱动的软件工程师,可调用Vitis中预先定义好Shell、I/O和部分编程工程的硬件库进行开发;对于应用软件开发者可使用熟悉的语言,直接完成高级语言开发;对于AI科学家也可以利用高层次框架训练自己的模型。
图6:“一站式”解锁全员创新
举一个例子来说,智慧城市中较为典型的应用场景便是在道路或十字路口实时统计交通流量,因为需要捕捉大量的汽车和人流量,所以前端应用了大量的摄像头,这些摄像头会实时捕捉当时的视频,完成特征提取然后发送至服务器或云端。这种情况下,在硬件上开发人员需要完成IP开发,开发完成后嵌入式人员开发在Xilinx提供的基于Shell、RunTime的库进行一定程度修改,应用开发人员可使用Xilinx优化好的CNN加速、数据分析和数据加速的库完成应用开发,算法人员则可应用非常熟悉的TensorFlow进行训练模型。
应用了一站式Vitis的开发人员,既可以一站完成全部开发工作,也可以协同工作,从而提高群体的开发效率。
另外,Vitis还可以一步一步实现客户所需要的性能。第一步,将整个算法和前后处理均放入CPU中完成,这部分不需要向底层硬件开发人员求助,可达到6FPS的性能;第二步,将DPU放在壳中,通过算法的加速性能可提升至30FPS;第三步,通过Vitis库中预处理的空间转换或视频缩放,提升端到端的性能,可提升至40FPS;第四步,通过Vitis数据流中一些技巧,可实现高性能的流水线,可从40FPS提升至80FPS。
图7:面向智能城市应用的自适应框架
在介绍前,仍然需要强调的是该软件平台是“开放,标准,免费”的,那么这么一款免费软件究竟有多大的投入?据了解,平台历经五年、投入总计 1000 个人工年而打造。目前业界同类厂商也正在向软件开发靠拢,不同于业界的是Xilinx在软硬件全方位解锁方面相比来说是独一无二的。
Xilinx研发方向一直致力于拥抱开源社区,自2001年起,在产品中便用到开源软件和代码。从2007年开始,在不同开源项目中贡献代码,诸如Zynq、GCC。而在今后,Vitis所发布编译器、优化器、机器人将会贡献更多的代码。现如今,8个库提供400多种功能,并且开箱即用加速。
图8:Xilinx拥有广泛的开源库
“虽然我们是一家半导体供应商,但还是希望能够做一个对世界、对人类有贡献的供应商”,唐晓蕾表示,目前平台已拥有许多应用案例。第一个是基因治疗,应用了Xilinx的产品可将基因组的分析时间从1天缩短到20分钟,能够受益的重症新生儿会更多;第二个是DAIMILER,即汽车自动驾驶,而在此方面通过Xilinx的硬件能够将安全和灵活性统一在一起;第三个是卫星通信,正因它对保密性和技术上更加严苛,通过Xilinx的优势则更加明显。
在社区方面,Xilinx发布了开发者网站,汇集了诸多的示例、教程和文档,目前已有30+专家文章及项目已经发布,且在不断增长中,覆盖9大细分领域。值得一提的是,该网站将持续更新,并鼓励用户分享创新。
图9:Xilinx发布开发者网站
据唐晓蕾介绍,Xilinx在2019年年收入约为30.6亿美元,目前全球约有5,000名员工,6万多客户,4400多个专利。
另外,Xilinx是首家拥有FPGA-as-a-Service公有云的服务商,世界首例将5G无线部署在自适应计算领域的厂商,汽车方面出货量已达1.6亿片,在航空航天是自适应计算的第一大厂商,拥有70%的工业物联网视觉市场份额,并且在自适应计算测试测量上是第一大逻辑IC供应商。
总的来说,Vitis是一款从云到端、从软件到AI都提供了综合全面的库和模型的统一软件平台,更重要的是Xilinx所拥抱的“开放,标准,免费”必将为行业创造更多的可能。
据悉,今年12月3日和4日,赛灵思开发者大会亚洲站(XDF Asia)将在北京举行,届时更多的应用将被展示。
(21ic原创文章,未经授权,请勿转载,谢谢!)
作者:付斌