人工智能进一步推动了对算力的渴求,硬件的世界已经发生了极大的颠覆,不论是数据的处理方式还是计算架构的延伸,除了CPU、GPU、DSP、FPGA等,还涌现出各种各样的AI加速器。除了传统的芯片提供商,算法提供商、设备服务商甚至互联网公司等,也都开始规划自己的芯片战略。另一方面,创新速度也在加剧,甚至远远超出芯片的设计速度。
硬件发展受到了前所未有的挑战。但与此同时,软件的重要性也被提到了前所未有的高度。这背后的逻辑是什么?
三大行业趋势正在驱动变革
第一个趋势是云和端的一体化。以前我们将大的计算量都放在云端,但随之而来产生了带宽传输的问题。当把运算量渐渐移到端侧的时候,又产生了功耗、算力的问题。可能的处理方式是:当数据量较小的时候放在端侧,随着数据量增大再放到云上,这就使得很多场景下很难界定究竟是云上还是端侧,因此需要从云到端统一的解决方案,来适配不同场景下的计算需求。
第二个趋势是AI激增。其前提是数据量的激增,以及数据形态的巨大变化。从传统的文本、图形数据,到现在的视频、音频、社交等非结构化数据,未来还有包括联网汽车数据、神经网络数据、基因数据等更多形态的数据。当数据量越来越大之后,如何让数据发挥真正的价值成为重要的关注点。
第三个趋势是异构计算。传统上应对运算性能提升的方式包括单核速度的提升,以及单核变多核。但是当这两种方式仍然无法满足计算需求的时候,CPU+GPU、CPU+FPGA等组合形式的异构计算概念出现了。异构虽然带来了性能上的提升,但是也给软件开发者带来了各种挑战。
软硬件各自为政的时代已过去!
除了上述趋势,软硬件本身的特性也在促使二者关系的转变。硬件按照物理规律在发展,相对于软件,必然存在迭代慢、架构复杂的问题,特别是随着摩尔定律趋缓,硬件架构上的物理增长越来越艰难。相较之下,算法的增长和优化则空间很大,一方面能够提升硬件架构的物理性能;另一方面,通过算法的升级能够带来算力上的跃进。例如苹果、华为、百度、阿里等公司都推出了内置AI算法的芯片,应用场景多以云端为主。
在这些趋势的引领下,软硬件的关系产生了新的变化。软件似乎正变得越来越重要,许多公司甚至选择软件为先,硬件再去跟进。
当所有创新都被按下快进键的过程中,硬件工程师需要工具帮助他们突破固定硬件的开发限制,快速面对市场;软件工程师则需要帮助他们屏蔽硬件复杂性,让他们可以在熟悉的开发环境中提升效率。
二者谁更重要呢?没有软件,芯片无法使用,需要大量的软件开发者去将它表达为用户真正所需;另一方面,软件又需要芯片这个实体去承载,在整个系统中发挥价值。
谁能帮助硬件和软件工程师重新坐下来对话,为他们搭建起沟通的桥梁?
巨头们已经嗅到了这样的趋势。
10月9日,赛灵思宣布推出开放、标准、免费的统一软件平台Vitis。这是赛灵思有史以来首次发布的一款软硬件统一的平台,可以说是赛灵思近年来转型中一个重要的成果,根据官方说明,它可以让包括软件工程师和 AI 科学家在内的广大开发者都能受益于硬件灵活应变的优势。Vitis统一软件平台支持赛灵思异构平台(包括FPGA、SoC++和Versal ACAP)上开发嵌入式软件和加速应用,为边缘、云和混合计算应用加速提供统一编程模型。它可以与高层次框架进行集成,通过加速库采用C、C++或Python进行开发,也可以使用基于RTL的加速器和低层次运行时API对实现方案进行粒度更为精确的控制。
![4db45b9e9f259f89256df719ce892a0c.png](https://i-blog.csdnimg.cn/blog_migrate/7ba39df9eebc261ac25645cdc3c73082.jpeg)
四层堆栈,打通从硬件到应用的道路!
Vitis 平台构建在基于堆栈的架构之上,该架构可以无缝插入到开源的标准开发系统与构建环境,并且包含一套丰富的标准库。
![6cf609d6f22360df429d3df19e1ca134.png](https://i-blog.csdnimg.cn/blog_migrate/efd29a1fa31b8c856b8642d620b70a46.jpeg)
基础层是 Vitis 目标平台
第二层称为 Vitis 核心开发套件,覆盖开源赛灵思运行时库,以管理不同域间的数据移动,包括子系统、即将发布的 Versal ACAP内的AI引擎和必要的外部主机。此外,该层也提供编译器、分析器和调试器等核心开发工具,这些工具设计的目的是能与业界标准的构建系统与开发环境无缝集成。
在第三层,8个Vitis 库提供 400 余种优化的开源应用。这8个库分别是:Vitis 基本线性代数子程序(BLAS)库、Vitis 求解器库、Vitis 安全库、Vitis 视觉库、Vitis 数据压缩库、Vitis 计量金融库、Vitis 数据库集和 Vitis AI 库。借助这些库,软件开发者可以使用标准的应用编程接口(API)来实现硬件加速。
Vitis 平台的第四层,也是最具有变革意义的一层是 Vitis AI。它集成了特定领域架构(DSA),提供了针对AI模型的硬件实现,开发者可以使用包括TensorFlow和Caffe等框架进行配置与编程。Vitis AI 提供的工具链能在数分钟内完成优化、量化和编译操作,在赛灵思器件上运行预先训练好的AI模型。此外,它也为从边缘到云端的部署提供了专用 API,实现更好的推断性能与效率。赛灵思很快还将推出另一个 DSA(Vitis Video),支持从 FFmpeg 直接进行编码并提供同样超级简单且功能极强大的端到端视频解决方案。由合作伙伴公司提供的 DSA 包括:与 GATK 集成用于基因分析的Illumina,与ElasticSearch 集成用于大数据分析的BlackLynx,以及当前客户正在使用的专有DSA。
如何打破软硬件壁垒,提升创新效率?
赛灵思软件和人工智能高级经理罗霖,以智慧城市为例说明了如何通过统一软件平台Vitis,来帮助开发人员进行效率提升。
![406c33c01775b2d24fe5e4b8bc48bb2b.png](https://i-blog.csdnimg.cn/blog_migrate/62af3da274606eedac3d227913695283.jpeg)
智慧城市一个典型的应用场景就是在道路上实时统计交通流量,包括汽车流量、人流量等,通过大量摄像头实时捕捉,在前端进行特征提取,再传给服务器或云端,进行更高层次的信息提取和分析。
这个典型案例中,摄像头和边缘端服务器端都可以部署赛灵思的器件,硬件开发人员完成IP开发后,再由嵌入式开发人员进行一定程度的修改,基于Shell和Runtime,由应用开发人员使用经过优化的库(包括CNN加速库、数据分析和加速库)完成应用开发。
对于算法开发人员,他们通过TensorFlow等进行模型训练之后,可以得到一个浮点的Model。接下来的开发流程中,他们就可以使用Vitis AI开发工具。基于模型进行第一步优化,第二步完成模型的量化即定点,第三步定点好之后进行编译,生成基于底层DPU的机器代码。最终,在板上进行部署后分析性能,包括运算效率等。如果觉得性能已达到目标,就可以编译成库,应用代码可以直接调用编译好的库,进行网络推断。整个过程中,他们不需要关注底层的RTL、驱动程序或是数据的搬运,所有的工作都是基于模型,由工具去生成在目标硬件上运行的机器代码。
如何快速通过Vitis达到用户所需的目标性能?罗霖表示,第一,软件开发人员可以把算法,包括前后处理都在CPU上完成,这部分不需要底层硬件开发人员的帮助,用Vitis可以达到每秒6帧的性能;第二,把DPU放在Shell里,用算法在其中做加速,性能可以从每秒6帧提升到每秒30帧;第三,为了提升端到端的性能,比如预处理是设计空间的转换或者是视频缩放,这部分可以用Vitis库提供前处理的优化,从30FPS提升到40FPS甚至再提升到80FPS。
整个项目中用到了浏览器、编译器还有分析器,按照时间线来看,内核占用情况、数据从编写到搬运占用时间、中断是否合适……所有这些底层运行的细节,软件工程师一目了然,从而可以判定系统的运行状况,以及瓶颈问题等。而传统上,还需要在工具中专门插入芯片间隙或数据监测器才能够实现。
![ff4aef2afa33dfb82af174410aa9aad2.png](https://i-blog.csdnimg.cn/blog_migrate/afbdde8fc6a07caa330ec27dcf64c80c.jpeg)
屏蔽硬件复杂性——当前软件的重要价值
通过开放、通用的软件来屏蔽硬件复杂性,使软件人员在他们熟悉的开发环境中专注于创新,而无需关注底层硬件平台的细节——成为消除当前软硬件壁垒的主要手段。
今年8月,Intel对其即将于年底发布的oneAPI开发者测试版本进行了剧透。OneAPI整合了计算和架构创新,通过高速互连以及新的软件开发模式,希望为开发者简化API。Intel希望将硬件能力抽象出来,把最重要的算法融于oneAPI,使开发者不再需要针对硬件做开发,更容易发挥出硬件的所有潜力。Intel的软件策略似乎更强调围绕架构所进行的扩展,横跨PC、网络和数据中心,目标包括易用性、开放性以及统一的开发体验。
再看英伟达建立在GPU基础上的通用计算开发平台CUDA,由于在性能、成本和开发时间上较传统的CPU解决方案有显著优势,当时一经推出就颇受市场欢迎。近年来,英伟达为了推进GPU的易用性,仍持续从软件层面帮助开发者在更多垂直领域的GPU平台上部署应用程序。
赛灵思大中华区销售副总裁唐晓蕾表示,提供灵活丰富的硬件选择给软件工程师,通过高层的API去调用下层资源,这个理念是一致的,只是不同厂商有不同的实现手段。赛灵思强调软件定义硬件,硬件必须是可适应的、灵活的。
![375788f18600c416b2df896cc5f9e247.png](https://i-blog.csdnimg.cn/blog_migrate/aa6824aadb9b22cd886a5af5eb0b189d.jpeg)
她以自动驾驶多样化的应用场景为例谈到,摄像头、环视、泊车等可能由不同的公司来实现,应用场景包括高速公路、市区、港口、码头等等。如果专门为某一个应用设计一款芯片是不可能的,客户需要的是——灵活的、扩展性较强的平台,可以根据应用和工作负载来优化系统,这是赛灵思推出Vitis的主要原因。此外,推出开放、标准、免费的Vitis,也便于拓展用户群,让更多的软件工程师体验赛灵思的的自适应硬件平台。
未来软硬件的关系走向?
使用标准的环境与API、拥抱开源、软硬件协同作战——是未来软硬件关系的三大方向。
由于开源社区在生态系统和开发者社区创新中越来越重要,巨头们都希望以更积极的态度介入这场大变革之中。
值得一提的是,在开放性方面,赛灵思一个很大的创新还在于:赛灵思完全将集成的开发环境免费提供给用户,让他们将Vitis无缝集成在自己的开发环境中。这与过去用户自己设计开发环境,背后调用赛灵思的编译器和调试工具有很大的不同,更有利于软件开发人员在自适应的开发平台上释放创新力。其开发者网站developer.xilinx.com,将作为连接Vitis开发者社区的空间,由赛灵思、Vitis专家及爱好者共同管理,分享更新、设计技巧等信息。
正如唐晓蕾所说,如果以搭建乐高来比喻未来的系统设计的话,那么硬件更像是一个个的乐高块,软件就像是搭建规则或是创意。乐高块也许会有相同,但不同的搭建方式可以实现创意纷呈,赛灵思希望把乐高块越做越丰富,给工程师更多的选择,帮助他们更容易实现更多的功能创新,灵活应对不断变化的市场需求。