精华内容
下载资源
问答
  • 本文将阐释深度学习和FPGA各自的结构特点以及为什么用FPGA加速深度学习是有效的,并且将介绍一种递归神经网络(RNN)在FPGA平台实现方案。 揭开深度学习的面纱 深度学习是机器学习的一个领域,都属于人工智能...
  • 本文将阐释深度学习和FPGA各自的结构特点以及为什么用FPGA加速深度学习是有效的,并且将介绍一种递归神经网络(RNN)在FPGA平台实现方案。  揭开深度学习的面纱  深度学习是机器学习的一个领域,都属于人工...
  • 目录高级综合HLS(high-level-synthesis):软件算法在FPGA上实现硬件加速的综合工具HLS简述HLS应用背景HLS基本要素HLS优势小结 高级综合HLS(high-level-synthesis):软件算法在FPGA上实现硬件加速的综合工具 HLS...

    高级综合HLS(high-level-synthesis):软件算法在FPGA上实现硬件加速的综合工具

    HLS(high-level-synthesis),高级综合,将C/C++/SystemC编写的软体算法综合成RTL编码(VHDL/HDL),以实现软件算法设计的硬件加速和硬件电路设计的抽象级设计&验证。

    HLS简述

    HLS(High-level-synthesis,高级综合)工具是指将C、C++或SystemC编写的C规范代码转换为寄存器传输级(RTL)实现,并将其综合到现场可编程门阵列(FPGA)上,以实现软件的硬件加速效果。而FPGA提供了一种大规模并行架构,在性能、成本和功耗方面都优于传统处理器。HLS的目标是通过让硬件设计人员在更高的抽象级别上描述设计,从而更有效地构建和验证硬件。

    本文概述了HLS高级综合的应用背景、基本要素以及优势。

    HLS应用背景

    1. FPGA应用领域的拓展

    随着当前各领域计算速度以及数据处理实时性的需求不断增长,FPGA的应用领域也在不断拓展。传统通信、工业控制等传统领域已经逐渐趋于成熟,然而近年来随着云计算/边缘计算、大数据、AI人工智能、物联网等的发展,FPGA开始向新领域不断扩展。

    2. 算法借助硬件加速的需求

    随着高速信息化的到来,诸如AI、自动驾驶、工业物联网、大数据等领域的算法对数据处理的实时性和计算时延的要求越来越高。然而纯软件所能达到的运算效率似乎已经碰到了瓶颈,这就使得越来越多的人开始借助硬件加速算法运算效率,各种控制器&计算单元的异构计算(CPU+GPU/ASIC/FPGA)层出不穷,而FPGA的高度并行性、强控制能力和可重构性使得其地位逐渐突显出来。

    3. 算法实现硬件加速的困难
    由于硬件无法直接识别C规范的语言,一般是寄存器传输级(RTL)如VHDL或HDL。而硬件描述语言和程序设计语言存在本质上的区别,前者更倾向电路器件思维,后者更倾向函数功能思维,往往需要软件工程师来实现算法的功能之后交给硬件工程师实现硬件加速,这就导致算法实现硬件加速过程会有更多的时间和经济开销。

    于是就有了高级综合(HLS)工具的诞生,虽然HLS的前景是希望软件工程师能够直接实现硬件加速(抢硬件工程师饭碗),但由于其转换能力有待提升,直接转换的代码有时候会差强人意(主要是不如高级硬件工程师实现的效果好),使得HLS逐渐转换成了硬件工程师加速FPGA开发的工具,省去了硬件工程师将软件算法从头转换成硬件编码的步骤,只需要在HLS自动生成的硬件编码上进一步修改即可。

    HLS基本要素

    高级综合(HLS)包括以下步骤:

    1. 时序安排
      如果时钟周期更长或者目标设备更快的FPGA,则可以在单个时钟周期内完成更多操作,并且所有操作可能在一个时钟周期内完成。相反,如果时钟周期较短或目标设备速度较慢的FPGA,HLS会自动将操作安排在更多的时钟周期内,有些操作可能需要作为多周期资源来实现。
    2. 绑定(binding)
      为每个计划的操作指定执行的硬件资源。
    3. 控制逻辑提取
      提取控制逻辑以创建一个有限状态机,以在RTL设计中对操作进行排序。

    高级综合(HLS)将C代码综合成:

    1. 将顶层函数参数综合到RTL I/O端口。
    2. 将C函数综合为RTL模块。
    3. 默认情况下,C函数中的循环保收缩(roll)状态(与unroll展开状态相对应)。
      当循环未展开时,循环被创建成一种迭代逻辑,该循环中的每次迭代将依次执行该逻辑。使用优化指令可以展开循环,这允许所有迭代并行发生,从而增加并行性。循环也可以流水线化,或者用有限状态机细粒度实现(循环流水线),或者用更粗粒度的基于握手的实现(数据流)。
    4. 在最终的FPGA设计中,C代码中的数组被综合到block RAM或UltraRAM 中。
      如果数组位于顶层函数接口上,HLS会将其实现为端口,以访问设计之外的块内存。

    为了确定设计是否满足需求,在HLS生成的综合报告中可以查看性能指标。综合报告包含以下性能指标的信息:
    vivado HLS 器件占用情况总结
    vivado HLS时延性能指标

    1. 面积(area):根据FPGA中的可用资源实现设计所需的硬件资源量,包括查找表(LUT)、寄存器(register)、块内存(block RAM)和DSP48系列。
    2. 延迟(latency):函数计算所有输出值所需的时钟周期数。
    3. 启动间隔(initiation interval):功能可以接受新输入数据之前的时钟周期数。
    4. 循环迭代延迟(loop iteration latency):完成一次循环迭代所需的时钟周期数。
    5. 循环启动间隔(loop initiation latency):循环的下一次迭代开始处理数据之前的时钟周期数。循环延迟:执行循环所有迭代的周期数。

    HLS优势

    1. 高级综合(HLS)跨越硬件和软件领域,提供以下主要优势:
       提升硬件工程师的工作效率
      硬件设计人员可以在创建高性能硬件的同时,在更高的抽象层次上工作。
       提高软件工程师的系统性能
      软件开发人员可以在新的编译目标——FPGA上加速他们算法的高密度计算部分。针对吞吐量、功耗和延迟优化代码,而无需解决单个内存空间和有限计算资源的性能瓶颈。

    在这里插入图片描述

    1. 使用高级综合设计方法,可以实现:
       在C层级开发算法
      从功能实现的抽象层次来开发算法,可以节省开发时间。
       在C层级验证
      与传统硬件的模拟仿真相比,能更快地验证所设计功能的正确性。
       通过优化指令控制C综合过程
      使用优化指令从C源代码探索不同实现方法,以找到最佳实现的可能性。
       创建可读和可移植的C算法
      通过打包成IP即可实现算法的共享及调用。

    小结

    本文主概述了HLS的应用前景和优势,作为一名搞过软件设计的硬件工程师(PS.搞软件的可以不懂硬件设计,但是搞硬件的一定不能不懂软件设计),通过抽象语言的算法实现,HLS确实可以在一定程度上节省开发时间,但其也还有很大的拓展空间,我们目前有一款在研的HLS辅助工具,如果您有意向,可以联系我们广州虹科,或者关注我们公众号:FPGA技术支持。
    由于我们和赛灵思有合作,所以我们采用的HLS工具是赛灵思的vivado HLS。本文主要参考了赛灵思官方文件《UG902-vivado-high-level-synthesis》。推荐学习如何使用vivado HLS可以参考《UG871》。

    展开全文
  • 基于FPGA人工智能应用,在实现工程中同时包含多个维度(一致性验证,定标,逻辑仿真,板级测试),对项目进度提升有助益; 浮点版本:完成一致性验证; 定点版本:早期的硬件行为模拟,和浮点版本比较,进而定标...

    这是我目前的感受,会不断完善,可能与业界有差距。

    基于FPGA的人工智能应用,在实现工程中同时包含多个维度(一致性验证,定标,逻辑仿真,板级测试),对项目进度提升有助益;

    浮点版本:完成一致性验证;

    定点版本:早期的硬件行为模拟,和浮点版本比较,进而定标,和板级版本比较,可以大规模测试;

    仿真版本:及早发现板级版本的问题,迅速定位硬件Bug;

    板级版本:实际电路测试;

    呈现方式:多进程实现,针对性提供服务。

    展开全文
  • FPGA在AI时代的角色

    千次阅读 2019-06-17 19:47:59
    掌握Verilog FPGA设计和验证方法是AI时代系统设计师的生命线 1.前言 2.对FPGA产品的需求 硬件性能的提升 软件工具的提升 生态系统 3. 对FPGA工程师的需求 理解新任务 掌握新工具 抓住新机遇 4.FPGA工程师...

    目录

    掌握Verilog FPGA设计和验证方法是AI时代系统设计师的生命线

    1.前言

    2.对FPGA产品的需求

    硬件性能的提升

    软件工具的提升 

    生态系统

    3. 对FPGA工程师的需求

    理解新任务

    掌握新工具

    抓住新机遇

    4.FPGA工程师要这样拥抱AI

    5. FPGA工程师的核心竞争力

    只有FPGA工程师能做到的


     掌握Verilog FPGA设计和验证方法是AI时代系统设计师的生命线


    1.前言

    FPGA自诞生起一直在高速复杂计算领域里占有极大的优势,借助于计算机辅助设计工具通过Verilog编程,设计者可以很方便地将一个通用结构的FPGA芯片构造成一个规模宏大的并行的计算结构,这个结构能以通用CPU无法比拟的高速进行极其复杂的数据处理。然而,FPGA作为一种硬件可重构的体系结构,在过去的很长一段时间内都被用作ASIC的小批量替代品。

    在有实用价值的图像分析语音理解等模式识别的处理计算中,通常需要在几个毫秒之内对一幅图像的所有像素逐点进行卷积计算分析比较计算结果,得到可靠的结论。算法研究工作者通常用普通计算机的软件来处理静态数据,得到理论结果,但实际应用中如此慢的响应速度根本无法满足实际工程的需求。最近二十多年来,图像分析、语音理解等模式识别研究的算法理论研究已逐步成熟,引起了工业界的兴趣,大量的研究经费转向如何设计可以高速进行复杂数据处理的并行计算机结构,并研发实用的AI系统。因此近二十多年来,FPGA芯片和Verilog设计/验证方法得到了飞速的发展。

    图像处理方面,如人脸识别、指纹识别、语音识别方面的机器人,其AI表现也十分抢眼。 在这一类机器人的计算系统中许多极其复杂的计算工作,绝大部分都是由FPGA结构实现的。而且FPGA可以与各种不同的存储器、各种不同类型的并行接口或是计算机接口,如PCIe等方便地连接,它也可以把机器人与计算机网络和广大的知识库融为一体,构成极其庞大、响应迅速的AI知识系统。

    根我所知,许多AI研究工作者习惯于用软件进行算法研究,他们中的大多数人用静态的图像或静态的声音(录下来的声音)做语音理解或者翻译方面的工作。在整个过程中,虽然数据处理的计算速度比较慢,但还是可以得到可靠的分析处理结果。但是在实际工程应用当中,这样慢的处理速度显然没有多大实用价值,因为在许多场合,响应根本无法用于实际场合。随着研究工作向设计实际系统转换,我建议软件系统的工程师们应该学会如何使用FPGA,以及如何用FPGA做复杂计算的加速。其实对计算机科学和工程专业毕业的软件工程师而言,只要有数字电路的基础知识,学习Verilog HDL语言并不困难,学会RTL级别Verilog的编程来构造可综合的并行迭代计算结构并不困难,只需要花费一两个月就能上手。

    而对于那些在嵌入式系统工作多年的硬件工程师或只有一些简单接口设计经验的FPGA工程师而言,虽然不是一个专职研究处理算法的软件编程专家,但他们必须抽一些时间来理解算法,帮助算法工程师把电路结构改变得更加合理,令计算瓶颈变成宽敞的通道。在AI时代,特别是AI进入应用的新时代,一个真正的硬件工程师不仅应该熟练掌握Verilog的语言,学会如何用Verilog语言编写可综合的并行结构,在规定的时间间隔内完成算法要求的计算工作量,并且学会如何设计硬件,让硬件与算法软件配合,更有效率地完成算法要求的多种计算任务把原来算法研究中完全用软件实现的计算过程,变成用软件和硬件配合实现的过程,把整个计算结构改造成一个可配置的高速处理的结构,专门针对某一领域的人工智能产品,让这个硬件有更大的市场,这是非常有意义的!

    总而言之,对今天的AI嵌入式系统的设计师而言,必须软硬兼备才能成为一个优秀的工程师。换言之,软件人员要往硬件方向转,学习硬件知识,硬件工程师也必须向软件工程师靠拢,理解算法的执行过程,为AI算法设计新的计算结构和数据通路。这是因为现在AI的软件编程并不是简单地编写一个程序得到一个计算结果,还必须考虑计算的速度是不是足够够快。所以实质上是一个如何设计合理的并行结构计算加速核心硬件,以达到实时全面完成算法要求的问题。

    转型势在必行,FPGA工程师要理解新任务、掌握新工具。

    2.对FPGA产品的需求

    硬件性能的提升

    尽管FPGA在数据中心应用处于一个快速增长过程,但总体规模还不是很大,这里面有一些限制,也是FPGA厂商需要努力提升的地方。 首先是价格问题,FPGA的大规模部署需要FPGA硬件成本尽快降下来,这个要靠工艺进步以及市场规模来解决;其次是存储访问带宽,HBM技术以及CCIX是代表性的方向。

    软件工具的提升 

    FPGA需要软件工具来辅助工程师完成设计过程,在新的应用领域对设计的内容、流程、验证方法等都提出了新的需求,例如AI应用客户希望具备高层次的模型定制能力,但是目前还没有厂商可以提供成熟的方案。这也为新的工具提供商提供了机会。

    生态系统

    GPU获得了广泛的认同和应用,这与CUDA长期的演进和积累密不可分。新兴应用领域大都有流行的设计框架开源项目。FPGA一般作为高性能计算硬件来加速现有项目,所以需要和这类设计框架进行融合,也需要大量基础库/IP来支持用户快速完成设计。所以一个成熟的生态系统至关重要,目前这块也还是非常薄弱。

     


    3. 对FPGA工程师的需求

    理解新任务

    传统FPGA工程师面对的是硬件的设计问题,但AI等应用与应用系统关系密切,不单纯是FPGA片上逻辑设计的问题。工程师往往需要了解上层软件如何与FPGA片上系统的集成与优化问题

    掌握新工具

    FPGA主流厂商很早就开始布局新兴市场的应用,一个主要工作就是提升FPGA设计开发抽象层次OpenCL/HLS语言就是典型代表,一般情况下可以提升数倍开发效率。所以FPGA工程师需要充分掌握这类新的工具,以保障自己能有足够的效率面对行业需求。

    抓住新机遇

    新兴应用领域不仅仅是FPGA市场的简单扩充,它也为FPGA应用带来新的商业模式,以FaaS为代表的应用形式,为FPGA开发人员带来众多新的商业机遇。

    Achronix的Speedcore IP具有支持先进人工智能技术的正确功能组合。

    人工智能(AI)应用要求高性能,并且在许多情况下,低延迟能够成功地响应条件和需求的实时变化。它们还要求功耗尽可能的低从而意味着无法使用,其解决方案是将机器学习放在供电和制冷能力充足的云服务器端。对这些嵌入式系统的进一步要求是,即使在没有网络连接到云端的情况下也都能随时工作并且准备好做出响应。这些因素的组合要求在硬件设计方法上做出改变。

     

     

    人工智能要求谨慎地平衡数据通路的    性能、内存延迟  和  吞吐量,这就需要用一种方法来将尽可能多的功能放到专用集成电路(ASIC)或系统级芯片(SoC)上通过添加eFPGA技术,则提供了市场需要的一种解决方案,来将灵活性以及客制化逻辑单元支持能力结合在一起。

    作为专为嵌入到SoC和ASIC之中而设计的硅知识产权(IP),Achronix的Speedcore eFPGA IP是一种高度灵活的解决方案,它支持高性能机器学习应用中需要的数据吞吐量。通过借助其可切分的架构,Speedcore IP为设计人员提供了满足其应用要求的能力来实现eFPGA功能的混合和匹配。Speedcore IP的核心功能包括基于四输入查找表(LUT)的逻辑单元、用于寄存器文件和类似应用并面向逻辑单元的小型存储器(LRAM)、较大的单元块存储器(BRAM)和可配置的数字信号处理器(DSP)模块。根据应用的要求,Speedcore基于纵列的架构可提供准确混合资源的能力。

    4.FPGA工程师要这样拥抱AI

    FPGA本身作为一种可编程的逻辑器件,其最突出的特性在于可编程的逻辑部分。这与传统CPU的顺序执行方式有着本质区别,与ASIC相比又有着较好的灵活性,在AI产业兴起之前,就一直是ASIC设计的前期验证手段

    但是,如今的FPGA器件的发展已经跨越了可编程这个特性,现在的FPGA器件往往拥有远比通用芯片更高的I/O带宽和内存带宽,例如高达40Gbps的serdes接口,以及HBM2等超高速内存接口,这些接口使得FPGA在通信领域有着非常广泛的应用

    现如今,由于很多AI产品对内存带宽互联互通性有着相当高的要求,在较轻运算量的情况下,FPGA的可应用场景有了非常大的突破,所以很多小批量快迭代的产品,其最佳开发方式反而变成了FPGA,而非ASIC或者GPU等等,因此FPGA开发人员,只要多熟悉AI技术、熟悉AI应用需求,仍然可以在AI行业游刃有余,不断打造新的传奇。

    现在的图像处理数据的传输、分配这些事情在人工智能开发方面发挥着重要作用,在AI时代需要FPGA工程师尤其是做软件算法和做硬件设计的人要优势互补。

    产品设计好后还要与原来的计算机与服务器连接在一块儿,那么还需要做系统级设计。这对FPGA的软件工程师、硬件工程师都是一个新的挑战。希望FPGA工程师们成功转型,为AI时代能设计出更好的产品助力。

    5. FPGA工程师的核心竞争力

    这个问题主要引申为以下两点:“

    1. 什么是只有FPGA工程师能做的?
    2. 作为FPGA工程师,应用具备哪些能力,又如何去培养这些能力呢?

    只有FPGA工程师能做到的

       FPGA工程师最核心的能力的就是全栈能力。这指的是系统级的软硬件全栈能力。它既包括了在系统层面的架构设计芯片开发的前后端流程,也包括了软件设计的全栈流程,甚至还有后期的项目维护技术支持、与客户的沟通等软技能。它可以看成是综合多种技能的技能树。

    我随手写了一下 FPGA 工程师的全栈技能树,见下图,尽管很不完整,但仍可供大家参考。之前很多人提到的,诸如调试与分析的能力,其实是这个全栈技能树里的一片树叶,或一个分支。

     

     

     

    展开全文
  • 很多世界顶尖的“建筑师”可能是你从未听说过的人,他们设计并创造出了很多你可能从未见过的神奇结构,比如芯片内部源于沙子的复杂体系。如果你使用手机、电脑,或者通过互联网收发信息,那么你就无时无刻不受益...

    很多世界顶尖的“建筑师”可能是你从未听说过的人,他们设计并创造出了很多你可能从未见过的神奇结构,比如在芯片内部源于沙子的复杂体系。如果你使用手机、电脑,或者通过互联网收发信息,那么你就无时无刻不在受益于这些建筑师们的伟大工作。

    Doug Burger博士就是这群“建筑师”里的一员。他现任微软技术院士(Technical Fellow),曾任微软研究院杰出工程师、德克萨斯大学奥斯丁分校计算机科学教授。他也是微软FPGA项目Catapult和Brainwave的首席架构师和主要负责人。2018年,Doug Burger在微软研究院的播客里分享了他对后摩尔定律时代芯片产业发展的观点与愿景,并展望了人工智能时代芯片技术的前进方向。

    FPGA在人工智能时代的独特优势
    (Doug Burger博士,图片来自微软)

    老石对他的观点进行了整理和采编。第一篇在这里。本文是第二篇,主要是Doug Burger博士对FPGA在人工智能时代的独特优势的全面分析,以及他对于人工智能技术发展的深刻思考。文章很长,但全部是他几十年从业经验的深入浅出的阐述,尽显大师之风,值得一读。

    注,下文中的“我”,指的都是Doug Burger博士。

    目 录

    1. 什么是暗硅效应

    2. FPGA:解决暗硅效应的有效途径

    3. 使用FPGA的独特优势是什么

    4. 什么是Catapult项目

    5. 脑波项目与实时AI

    6. 评价实时AI系统的主要标准

    7. AI未来的发展路在何方?

    1. 什么是暗硅效应

    在我加入微软之前,我和我的博士生Hadi Esmaeilzadeh正在开展一系列研究工作。他现在已经是加州大学圣地亚哥分校的副教授。在当时,学术界和业界的主要发展趋势就是多核心架构。虽然尚未完全成为一个正式的全球性共识,但多核架构是当时非常热门的研究方向。人们认为,如果可以找到编写和运行并行软件的方法,我们就能直接将处理器架构扩展到数千个核心。然而,Hadi和我却对此不以为然。

    于是,我们在2011年发表了一篇论文,并因此获得了很高的知名度。虽然在那篇论文里没有明确的定义“暗硅(dark silicon)”这个词,但是它的意义却得到了广泛认可。

    暗硅效应指的是,虽然我们可以不断增加处理器核心的数量,但是由于能耗限制,无法让它们同时工作。就好像一幢大楼里有很多房间,但由于功耗太大,你无法点亮每个房间的灯光,使得这幢大楼在夜里看起来有很多黑暗的部分。这其中的本质原因是在后摩尔定律时代,晶体管的能效发展已经趋于停滞。

    FPGA在人工智能时代的独特优势
    (暗硅示意图,图片来自NYU)

    这样,即使人们开发出了并行软件,并且不断增加了核心数量,所带来的性能提升也会比以往要小得多。所以,除此之外,业界还需要在其他方面带来更多进展,以克服“暗硅”的问题。

    1. FPGA:解决暗硅效应的有效途径

    在我看来,一个可行的解决方法就是采用“定制计算”,也就是为特定的工作场景和负载优化硬件设计。然而,定制计算或定制芯片的主要问题就是高昂的成本。例如对于一个复杂的云计算场景,不论是设计者还是使用者都不会采用一个由47000种不同的芯片所组成的系统。

    因此,我们将赌注押在了这个名叫FPGA的芯片上。FPGA全名叫“现场可编程逻辑阵列”,它本质是一种可编程的芯片。人们可以把硬件设计重复烧写在它的可编程存储器里,从而使FPGA芯片可以执行不同的硬件设计和功能。另外,你也可以在使用现场动态的改变它上面运行的功能,这就是为什么它们被称作“现场可编程”的原因。事实上,你可以每隔几秒就改变一次FPGA芯片上运行的硬件设计,因此这种芯片非常灵活。

    FPGA在人工智能时代的独特优势
    (英特尔Stratix 10 FPGA芯片,图片来自英特尔)

    基于这些特点,我们在FPGA这项技术上押下重注,并且将其广泛的部署到了微软的云数据中心里。与此同时,我们也开始将很多重要的应用和功能,从基于软件的实现方式,慢慢转移到基于FPGA的硬件实现方式上。可以说,这是一个非常有趣的计算架构,它也将是我们的基于定制化硬件的通用计算平台。

    通过使用FPGA,我们一方面可以尽早开展定制化计算与定制芯片的研究与设计,另一方面,我们可以保持与现有架构相互兼容的同构性。

    如果具体的应用场景或算法发展的太快,或者硬件规模太小的时候,我们可以继续使用FPGA实现这些硬件功能。当应用规模逐渐扩大时,我们可以在合适的时机,选择将这些已经成熟的定制化硬件设计直接转化成定制化芯片,以提高它们的稳定性,降低功耗和成本。

    灵活性是FPGA最重要的特点。要知道,FPGA芯片已经在电信领域中得到了非常广泛的使用。这种芯片非常擅长对数据流进行快速处理,同时也被用于流片前的功能测试等。但是在云计算中,之前并没有人能够真正成功的大规模部署FPGA。我指的“部署”,并不是指那些用来作为原型设计或概念验证的工作,而是指真正的用于工业级使用的部署。

    1. 使用FPGA的独特优势是什么

    首先我想说的是,CPU和GPU都是令人惊叹的计算机架构,它们是为了不同的工作负载与应用场景而设计的。

    CPU是一种非常通用的架构,它的工作方式基于一系列的计算机指令,也称为“指令集”。简单来说,CPU从内存中提取一小部分数据,放在寄存器或者缓存中,然后使用一系列指令对这些数据进行操作。操作完毕后,将数据写回内存,提取另一小部分数据,再用指令进行操作,并周而复始。我把这种计算方式称为“时域计算”。

    不过,如果这些需要用指令进行处理的数据集太大,或者这些数据值太大,那么CPU就不能很高效的应对这种情况。这就是为什么在处理高速网络流量的时候,我们往往需要使用定制芯片,比如网卡芯片等,而不是CPU。这是因为在CPU中,即使处理一个字节的数据也必须使用一堆指令才能完成,而当数据流以每秒125亿字节进入系统时,这种处理方式哪怕使用再多的线程也忙不过来。

    对于GPU来说,它所擅长的是被称作“单指令多数据流(SIMD)”的并行处理。这种处理方式的本质是,在GPU中有着一堆相同的计算核心,可以处理类似但并不是完全相同的数据集。因此,可以使用一条指令,就让这些计算核心执行相同的操作,并且平行的处理所有数据。

    然后对于FPGA而言,它实际上是CPU计算模型的转置。与其将数据锁定在架构上,然后使用指令流对其处理,FPGA将“指令”锁定在架构上,然后在上面运行数据流。

    FPGA在人工智能时代的独特优势
    (CPU与FPGA计算模型的对比,图片来自微软)

    我把这种计算方式称为“结构计算”,也有人称之为“空间计算”,与CPU的“时域计算”模型相对应。其实叫什么名称都无所谓,但它的核心思想是,将某种计算架构用硬件电路实现出来,然后持续的将数据流输入系统,并完成计算。在云计算中,这种架构对于高速传输的网络数据非常有效,并且对于CPU来说也是一个很好的补充。

    1. 什么是Catapult项目

    Catapult项目的主要目的是在微软的云数据中心大规模部署FPGA。虽然这个项目涵盖了电路和系统架构设计等工程实践,但它的本质还是一个研究项目。

    在2015年末,我们开始在微软购买的几乎每台新服务器上部署Catapult FPGA板卡。这些服务器被用于微软的必应搜索、Azure云服务以及其他应用。到目前为止,我们已经发展到了非常大的规模,FPGA已经在世界范围内被大规模部署。这也使得微软成为了世界上最大的FPGA客户之一。

    FPGA在人工智能时代的独特优势
    (Catapult FPGA板卡,图片来自微软)

    在微软内部,很多团队都在使用Catapult FPGA来增强自己的服务。同时,我们使用FPGA对云计算的诸多网络功能进行加速,这样我们的客户会得到比以往更加快速、稳定、安全的云计算和网络服务。比如,当网络数据包以每秒500亿比特的速度进行传输时,我们可以使用FPGA对这些数据包进行控制、分类和改写。相反的,如果我们使用CPU来做这些事情的话,将需要海量的CPU内核资源。因此,对于我们这样的应用场景,FPGA是一个更好的选择。

    FPGA在人工智能时代的独特优势
    (微软的FPGA板卡,图片来自微软)

    1. 脑波项目与实时AI

    当前,人工智能有了很大的发展,而这很大程度上归功于深度学习技术的发展。人们逐渐认识到,当你有了深度学习算法、模型,并构建了深度神经网络时,需要足够多的数据去训练这个网络。只有加入更多的数据,才会让深度神经网络变的更大、更好。通过使用深度学习,我们在很多传统的AI领域取得了长足的进展,比如机器翻译、语音识别、计算机视觉等等。同时,深度学习也可以逐步替换这些领域发展多年的专用算法。

    这些巨大的发展和变革,促使我思考它们对半导体和芯片架构的影响。于是,我们开始重点布局针对AI、机器学习、特别是深度学习的定制化硬件架构,这也就是脑波项目(Project Brainwave)产生的主要背景。

    在脑波项目里,我们提出了一种深度神经网络处理器,也有人称之为神经处理单元,或者NPU(Neural Processing Unit)。对于像必应搜索这样的应用来说,他们需要很强的计算能力,因为只有不断学习和训练,才能向用户提供更优的搜索结果。因此,我们将大的深度神经网络利用FPGA进行加速,并在很短的时间内返回结果。目前,这种计算架构已经在全球范围内运行了一段时间。在2018年的微软开发者大会上,我们正式发布了脑波项目在Azure云服务上的预览版。我们也为一些用户提供带有FPGA的板卡,使他们可以使用自己公司的服务器,从Azure上获取AI模型并运行。

    FPGA在人工智能时代的独特优势
    (Brainwave FPGA板卡,图片来自微软)

    对于脑波项目来说,另外一个非常重要的问题在于神经网络的推断。目前的很多技术使用的是一种叫做批处理的方法。比如说,你需要将很多个不同的请求收集到一起,然后打包发送到NPU进行处理,然后一次性得到所有的答案。

    对于这种情形,我经常把它比喻成你在银行里排队,你排在第二个,但总共有100个人排队。出纳员将所有人的信息收集起来,并询问每个人想要办什么业务,然后取钱存钱,再把钱和收据发给每个人。这样每个人的业务都在同一时刻完成,而这就是所谓的批处理。

    对于批处理应用来说,可以达到很好的吞吐量,但是往往会有很高的延时。这就是我们为什么在尝试推动实时AI的发展。

    1. 评价实时AI系统的主要标准

    评价实时AI的主要性能指标之一,就是延时的大小。然而,延时到底多小才算“够小”,这更像是一个哲学问题。事实上,这取决于具体的应用场景。比如,如果在网络上监控并接收多个信号,并从中分析哪个地方发生了紧急情况,那么几分钟的时间就算够快了。然而,如果你正在和某人通过网络进行交谈,哪怕是非常小的延时和卡顿也会影响通话质量,就像很多电视直播采访里经常出现的两个人在同时讲话那样。

    另外一个例子是,微软的另一项人工智能技术是所谓的HPU,它被用于HoloLens设备中。HoloLens是一款智能眼镜,它能提供混合现实和增强现实等功能,它里面的HPU也具备神经网络的处理功能。

    FPGA在人工智能时代的独特优势
    (宇航员Scott Kelly在国际空间站上使用HoloLens,图片来自NASA)

    对于HPU,它需要实时分析使用者周围的环境,这样才能在你环顾四周时,无缝的展示虚拟现实的内容。因此在这种情况下,即使延时只有几个毫秒,也会对使用者的体验造成影响。

    除了速度之外,另一个需要考虑的重要因素就是成本。举例来说,如果你希望通过处理数十亿张图像或数百万行文本,进而分析和总结出人们常问的问题或者可能在寻找的答案,就像很多搜索引擎做的那样;抑或是医生想要从很多放射扫描影像中寻找潜在的癌症指征,那么对于这些类型的应用来说,服务成本就非常重要。在很多情况下,我们需要权衡以下两点,一个是系统的处理速度有多快,或者通过何种方式能提升处理速度;另一个就是对于每个服务请求或处理,它的成本有多少。

    很多情况下,增加系统的处理速度势必代表着更多的投入和成本的攀升,两者很难同时满足。但这就是脑波项目的主要优势所在,通过使用FPGA,我认为我们在这两个方面都处于非常有利的位置。在性能方面我们是最快的,在成本上我们大概率也是最便宜的。

    1. AI未来的发展路在何方?

    说实话,我一点也不担心人工智能的末日。相比任意一种现有的生物系统的智能,人工智能的效率还差着成千上万倍的距离。可以说,我们现在的AI其实并不算怎么“智能”。另外,我们也需要在道德层面关注和掌控AI的发展。

    不管怎样,我们的工作从某种程度上提高了计算的效率,这使得它可以用来帮助解决重大的科学问题,我对此有很强的成就感。

    对于那些正在考虑从事硬件系统和计算机架构研究的人来说,最重要的就是找到那颗能让你充满激情并为之不懈奋斗的“北极星”,然后不顾一切的为之努力。一定要找到那种打了鸡血的感觉,不用担心太多诸如职业规划、工作选择等问题,要相信车到山前必有路。你在做的工作,应该能让你感受到它真正能带来变革,并帮助你在变革的道路上不断前行。

    当前,人们已经开始意识到,在我说的这些“后·冯诺依曼时代”的异构加速器之外,还有远比这些更加深刻的东西等待我们探寻。我们已经接近了摩尔定律的终点,而基于冯诺依曼体系的计算架构也已经存在了相当长的时间。自从冯诺依曼在上世纪四十年代发明了这种计算架构以来,它已经取得了惊人的成功。

    但是现在,除了这种计算结构外,又产生了各种硬件加速器,以及许多人们正在开发的新型架构,但是从整体上来看,这些新结构都处在一个比较混乱的状态。

    我认为,在这个混乱的表象之下,还隐藏着更加深刻的真理,而这将会是人们在下个阶段的最重要发现,这也是我目前经常在思考的问题。

    我慢慢发现,那些可能已经普遍存在的东西会是计算架构的下一个巨大飞跃。当然,我也可能完全错了,但这就是科学研究的乐趣所在。

    展开全文
  • 本文主要讨论了如何在FPGA上实现双线性插值的计算。Interp和Resize是Yolo_v2,Yolo_v3和Faster R-CNN等目标检测网络的关键层。主要的作用是使得图片的放大和缩小过程变得更为平滑。 What?什么是双线性插值? 双...
  • 同样是利用FPGA实现人工智能算法,两家的技术路线有什么区别呢?今天我们就有限的资料来加以解读一下。 1. 计算篇 计算篇一句话总结就是:做FPGA起家的已经不单纯的做FPGA,而做处理器起家的还是...
  • 基于FPGA Stratix Ⅳ变压器智能监测系统设计与实现.pdf
  • 基于FPGA和SSPC的智能配电系统设计与实现.pdf
  • 编辑丨阿chai带你学AI我是来自山区、朴实、不偷电瓶的AI算法工程师阿chai,给大家分享人工智能、自动驾驶、机器人、3D感知相关的知识今天给大家介绍一下FPGA上部署深度学习的算法模型...
  • 于是就面临了这个偏硬件的课题,用FPGA加速人工智能算法。   毕竟只是本科毕业设计,这个课题我手里就变成了用FPGA加速CNN,本来的目的还是要完成,大致了解了CNN之后,还是极不情愿中做完了这个项目。   ...
  • FPGA实现人脸识别算法

    2017-06-20 15:52:55
    FPGA 人脸识别
  • FPGA在AI领域的角色

    2020-03-14 17:19:42
    FPGA自诞生起一直高速复杂计算领域里占有极大的优势,借助于计算机辅助设计工具通过Verilog编程,设计者可以很方便地将一个通用结构的FPGA芯片构造成一个规模宏大的并行的计算结构,这个结构能以通用CPU无法比拟...
  • 简谈FPGA实现高斯滤波

    2021-01-28 23:24:28
    今天和大侠简单聊一聊FPGA实现高斯滤波,话不多说,货。 1、高斯滤波器的实现方式 方法1:与高斯核直接进行卷积实现,这样使用的资源和乘法器 加法器都会很多。 例如3*3窗口的滤波核进行卷积运算,一共需要...
  • 智能视频监控系统中多视角目标跟踪研究与FPGA实现.pdf
  • 人工智能到底用GPU还是FPGA

    万次阅读 2017-08-15 16:03:56
    人工智能人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的科学。
  • FPGA 实现SVPWM调制

    2021-04-16 01:03:33
    FPGA 实现SVPWM调制 SVPWM调制方法使用 SPWM 零序注入法来实现 SPWM 等效SVPWM (使用最大最小法) clear; clc; t=0:1e-4:20e-3; va=sin(2*pi*50*t); vb=sin(2*pi*50*t-2*pi/3); vc=sin(2*pi*50*t-4*pi/3); tpos=...
  • 需求说明:深度学习FPGA实现知识储备 来自:http://ee.ofweek.com/2015-12/ART-8110-2801-29035307.html 深度揭秘百度大脑AI专有芯片 缘何用FPGA而非GPU? 作为全球最大的中文搜索引擎公司,...
  • ASIC技术和FPGA技术实现存储芯片产品化的区别 ASIC开发中需要更高质量更严谨的代码来适应功耗,面积之间的需求。用到更多是synopsys的eda软件。RTL级的调试更多。研发和验证时间长。验证平台的搭建需要很长时间。...
  • 基于FPGA自由感应加热的智能控制系统实现原理探究.pdf
  • 作者 | 杨付收出品 | CSDN(ID:CSDNnews)碾压与崛起AI算法的崛起并非一帆风顺的,现在的主流的NN类的卷积神经网络已经是第二波浪潮了,早在上个世纪80年...
  • 按照常规系统来说: 首先是摄像头输入处理,存储到ddr, 由算法模块计算结果,输出给IO。 flash里面存放程序和权重文件。整个完整的系统是这样的。目前只是验证算法的执行情况。所以,整个系统进行了删减。但是...
  • 可重构类脑计算芯片的计算能效可达到接近ASIC水平,同时保留FPGA并行处理和运算可重构的特点,处理典型神经网络运算,相比传统CPU平台,其运算核性能功耗比可提升2个数量级。 基于FPGA解决行业难题加上V好 | ...
  • 嵌入式系统研发领域,随着产品AI化升级进程,原先设计常规数字系统的FPGA硬件工程师和系统软件设计师们都不得不面临技术转型的问题。那么在AI时代, FPGA厂家与传统的数字系统软硬件工程师们该如何转型,才能更好...
  • FPGA 人工智能推理 推理 一直想用FPGA做机器学习,所以要迁移算法。 如何用FPGA做硬件加速,FPGA除了可以做训练外,还可以用来推理。 因为FPGA可以功耗和灵活性之间达到一个平衡。 迁移算法呢,也就是如何推理呢?...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,485
精华内容 3,394
关键字:

在fpga上实现人工智能