FINN(一)探索基于 FPGA 的深层神经网络推断的全新框架
FINN探索前言WHAT IS FINNFINN 有哪些特性?进一步了解 FINNWhy Xilinx?前言一个用于构建可扩展和FPGA上的快速BNN推理加速器专门针对量化神经网络每秒处理数亿次机器学习推断您听说过 FINN 吗?没有?这个答案并不令人惊讶,因为这是一个用于探索基于 FPGA 的深层神经网络推断的实验框架的全新再实现,而且它现在仍是赛灵思研究实验室 (Xilinx Research
前言
一个用于构建可扩展和FPGA上的快速BNN推理加速器
专门针对量化神经网络
每秒处理数亿次机器学习推断
您听说过 FINN 吗?没有?这个答案并不令人惊讶,因为这是一个用于探索基于 FPGA 的深层神经网络推断的实验框架的全新再实现,而且它现在仍是赛灵思研究实验室 (Xilinx Research Lab) 的测试版。然而, 虽然还是测试版,它已经发布了 v0.4b(测试版),并且自从在 GitHub 上开源以来,受到了广泛关注。
2020 年 5 月,赛灵思研究实验室的论文《FINN-R:快速探索量化神经网络的端到端深度学习框架》获得了计算机协会 (ACM) 可重构技术和系统汇刊 (TRETS) 2020 年年度最佳论文奖 —— 该奖项每年只授予全年论文中的一篇。该论文的第一作者、杰出工程师 Michaela Blott 女士和她的团队在今年夏天的第 57 届设计自动化大会线上颁奖典礼上接受了这一荣誉。该论文的评选引起了人们对 FINN 的更广泛关注:FINN 是什么,为什么选择 FINN,如何实现 FINN?
WHAT IS FINN
FINN(神经网络快速推断)是一个旗舰开源项目的名称,是赛灵思研究实验室的一个实验框架,用于探索基于 FPGA 的深层神经网络推断。它专门针对量化神经网络,着重于为每个网络生成定制的数据流式架构。这种形式的高度专业化有助于加速需要更高吞吐量和超低时延的应用。
然而,要实现定制相当困难,而且通常只有专家才可以进行定制。对此,FINN 提供了一个端到端流程,即使是机器学习工程师也可以创建这些高度定制的硬件解决方案,以前馈数据流架构的形式为具有任意精度/任意层的空间展开式卷积神经网络加速器提供支持。它实际上是一种工具流,能够帮助没有硬件专业知识的人员生成高度定制的 FPGA 设计,并从我们的器件所提供的性能和效率中获益。
最初的版本侧重于二进制网络。自此,我们扩展到可支持任意精度 (FINN-R) 并提供更高灵活性的终端架构和目标平台,其中包括给定器件的硬件成本估算。我们在包括 PYNQ 和 Alveo 在内的一系列平台上对各种不同精度的神经网络生成的架构进行了评估,从小型 CIFAR-10 分类器、基于 PASCAL VOC 数据集的 YOLO 对象检测到 ImageNet 分类网络和 LSTM。我们目前正在添加更多极端用例,比如网络入侵检测,在这种情况下,FINN 每秒可以处理数亿次机器学习推断。
FINN 有哪些特性?
- 模板化的 Vivado HLS 流组件库:FINN 带有 HLS 硬件库,该硬件库可将卷积,全连接,池化和 LSTM
层分类实现为流组件。该库使用 C++ 格式来支持各种精度。 - 超低时延和高性能的数据流:通过为每一层组成流组件,FINN 可以生成加速器,这些加速器可以以亚微秒级的时延对图像进行分类。
- 多种端到端的设计示例:我们提供的示例从训练量化神经网络开始,一直到硬件上运行的加速设计。这些示例涵盖了一系列数据集和网络拓扑。
- 用于快速生成设计的工具流程:FINN 工具流程支持自动或手动为每层分配单独的计算资源,并生成用于综合的完整设计。这样可以快速探索设计空间。
进一步了解 FINN
访问 https://xilinx.github.io/finn,有一个 gitter channel,可以在那里提问。并可以使用 GitHub 问题跟踪器报告错误。
Why Xilinx?
赛灵思提供了可以对其器件进行编程的工具。有了开源,我们就可以充分利用并为世界一流的成果做出贡献。FINN 的量化感知训练库 Brevitas (https://github.com/Xilinx/brevitas) 建立在 Pytorch 上,Pytorch 是基于 Torch 库的常用开源机器学习库,用于计算机视觉和自然语言处理。
我们为这个现有的开源框架提供了大量的库,这些库使得对网络的训练可以一直精确到 1 位。这充分利用了 Pytorch 已有的所有优异技术,并使用户群体从量化中获益。此外,将这些网络映射到我们的 FPGA 上的实现工具是开源的,它利用了现有的赛灵思技术,其中包括高层次综合以及基于 FPGA 的布局布线。参见下图。
更多推荐
所有评论(0)