FPGA进行AI推理方案

作者:硬码农二毛哥,本文转载自:硬码农二毛哥微信公众号

近期在研究FPGA进行推理时,总结了一下三种方案,目前我了解使用FPGA进行推理还是少数,不知道大家有没有做过使用FPGA进行推理的项目,欢迎交流。

1. Zynq + Paddle lite

第一种方案使用Zynq+Paddlelite。Paddle-Lite 框架是 PaddleMobile 新一代架构,重点支持移动端推理预测,特点高性能、多硬件、轻量级 。支持PaddleFluid/TensorFlow/Caffe/ONNX模型的推理部署。目前已经支持 ARM CPU, Mali GPU, Adreno GPU, Huawei NPU 等多种硬件。

官方有三款Edgeboard开发板,包括FZU3、FZU5和FZU9。都是基于XilinxZynq UltraScale+ MPSoC系列fpga开发平台,根据期间型号不同,开发板分为三种。Edgeboard百度完成FPGA逻辑设计,驱动设计并封装底层的功能,封装深度学习相关内容,开发主要针对软件开发用户,fpga部分原理图对外,不提供代码,后续会以付费ip形式提供。开发板自带程序可以实现图像分类和目标检测任务。FZU3大约1000元左右,FZU5带视频编解码VCU3600多,价格比通常开发板要便宜很多,但是接口较少,没有相关的教程。

2. Zynq + DPU

第二种方案使用Zynq+DPU。Xilinx®深度学习处理器单元 (DPU) 是一个专门用于卷积神经网络的可编程引擎。该单元包含寄存器配置模块、数据控制器模块和卷积计算模块。为 DPU 提供了一个专用指令集,其可帮助 DPU 高效服务于许多卷积神经网络。在 DPU 中部署的卷积神经网络包括 VGG、ResNet、GoogLeNet、YOLO、SSD、MobileNet等。

可将 DPU IP 作为一个模块集成到所选 Zynq7000 SoC 和 Zynq UltraScale™+ MPSoC 器件的可编程逻辑 (PL) 中,这些器件与处理系统 (PS) 直接相连。目前Xilinx的Vitis AI已经更新到V1.2.1。

3. Pynq

第三种方案使用Pynq框架。利用一些已有的BNN-Pynq框架,使用hls将c++描述的神经网络转换成逻辑实现加速,构建custom overlay,写driver去调用。目前Pynq已经支持DPU,使用Pynq+DPU也是一种不错的方案。

4. 三种方案对比

paddle lite在arm上目前只有图像分类和目标识别两个应用实例,使用用户较少,遇到问题难以解决。在神经网络ip核推出之前FPGA工程师能做的事情很少。

使用xilinx的DPU可以真正实现对神经网络的加速,此外xilinx还提供AIzoom,里边有常用的神经网络模型,可以直接使用。但是目前DPU不能支持paddlepaddle训练好的模型。

使用Pynq进行开发可以使用python语言,相对c++难度较小,Pynq目前完全支持DPU开发,是一种较好的开发方案。

5. FZU3实现人脸识别
接下来我会把我做的一点东西和大家分享,使用FZU3+Paddle实现人脸识别,是在PS部分实现的,性能不高,但对了解Paddle lite的使用有滴定帮助。

最新文章