基于FPGA的深度卷积神经网络服务优化和编译测试

fpga具有低功耗,低延时,高性能的特点,在深度学习计算领域有很广阔的应用前景。fpga从2013年开始就应用在许多典型的深度学习模型中,如dnn,rnn,cnn,lstm等,涵盖了语音识别,自然语言处理,推荐算法,图像识别等广泛的应用领域。
fpga云服务器提供了基于fpga的深度卷积神经网络加速服务,单卡提供约3tops的定点计算能力,支持典型深度卷积网络算子,如卷积、逆卷积、池化、拼接、切割等。有效加速典型网络结构如vggnet、googlenet、resnet等。
我们基于fpga的深度学习硬件,定制优化了主流深度学习平台,如caffe等,您可以直接将深度学习业务切换到fpga平台,而无需考虑底层硬件细节。
通过使用预先训练好的resnet-50进行图像分类性能的对比测试,在cpu、gpu和fpga三类设备的物理机上的测试结果如下:
其中:
cpu为intel xeon cpu e5-2650 v3,使用openblas占用4核进行测试
gpu为nvidia tesla k40m
测试结果可以明显看到fpga在时延上跟gpu差不多,比cpu快了超过12倍,在吞吐上fpga更是比gpu超出1.5倍和比cpu超出近7倍。
cnn图像分类api接口
设备管理接口
查询fpga设备通道数量
定义:int get_fpga_tunnel_num()
功能:获取fpga设备通道数量
参数:无
返回:当前主机fpga设备上独立通道数量
初始化fpga设备句柄
定义:init_fpga_handle(fpgahandle& fh, const fpgahandle::mode mode = fpgahandle::fpga_mode, const int tunnel = 0)
功能:初始化fpga设备句柄
参数:
参数说明
fhfpga设备句柄
mode计算模式,取值范围fpga_mode或者cpu_mode,默认fpga模式
tunnel使用设备通道,机器上fpga设备有两个可以并行的独立计算通道,默认使用0号通道
返回:成功返回0,失败返回-1
释放fpga设备句柄
定义:int free_fpga_handle(fpgahandle& fh)
功能:释放fpga设备句柄
参数:
参数说明
fhfpga设备句柄
返回:成功返回0,失败返回-1
图像分类相关接口
加载训练好的cnn模型
定义:int cnn_fpga_load(fpgahandle& fh, const std::string& cnn_proto, const std::string& cnn_model, const std::string& cnn_means, const std::string& cnn_labels)
功能:加载训练好的cnn模型
参数:
参数说明
fhfpga设备句柄
cnn_protocnn模型定义prototxt文件路径
cnn_modelcnn模型caffemodel权值文件路径
cnn_means图像均值文件路径
cnn_labels图像标签文件路径
返回:成功返回0,失败返回-1
使用cnn模型分类图像
定义:int cnn_fpga_classify(fpgahandle& fh, const cv::mat& image, const int topk, std::vector& scores, std::vector& labels)
功能:使用cnn模型分类图像
参数:
参数说明
fhfpga设备句柄
image输入图像
topk概率最大的k个结果
scores分类概率
labels分类标签
返回:成功返回0,失败返回-1
释放cnn模型使用资源
定义:int cnn_fpga_free(fpgahandle& fh)
功能:释放cnn模型使用资源
参数:
参数说明
fhfpga设备句柄
返回:成功返回0,失败返回-1
cnn图像分类demo说明
目录结构如下:
fpga-cnn
|----demo
>
|----env.sh
|----fpga_demo.cpp
|----makefile
|----run_fpga.sh
|----run.sh
|----models
>
|----resnet-50
>
|----resnet-50.caffemodel
|----resnet-50.labels
|----resnet-50.means.binaryproto
|----resnet-50.prototxt
|----resnet-50.test.jpg
|----dependency/
|----include/
|----lib/
编译方法
在fpga-cnn/demo目录下运行:make clean && make
运行方法
1.脚本用cpu模式运行resnet-50分类
在fpga-cnn/demo目录下运行:sh run.sh
2.脚本用fpga模式运行resnet-50分类
在fpga-cnn/demo目录下运行:sh run_fpga.sh
3.通过fpga_demo运行
./fpga_demo mode case
其中,mode参数可以是cpu或者fpga,case参数为模型目录和文件名称
cnn图像分类demo
为了便于用户开发,fpga 云服务器包装了cnn图像分类demo:
目录结构
fpga-cnn
|----demo
|----env.sh
|----fpga_demo.cpp
|----makefile
|----run_fpga.sh
|----run.sh
|----models
|----resnet-50
|----resnet-50.caffemodel
|----resnet-50.labels
|----resnet-50.means.binaryproto
|----resnet-50.prototxt
|----resnet-50.test.jpg
|----dependency/
|----include/
|----lib/
编译方法
在fpga-cnn/demo目录下运行:make clean && make
运行方法
脚本用cpu模式运行resnet-50分类
在fpga-cnn/demo目录下运行:sh run.sh
脚本用fpga模式运行resnet-50分类
在fpga-cnn/demo目录下运行:sh run_fpga.sh
通过fpga_demo运行 ./fpga_demo mode case
其中,mode参数可以是cpu或者fpga,case参数为模型目录和文件名称

面向主流选择,忆联消费级SSD AM6A1为PC用户打造高性能体验
艾讯科技新一代个人备份及立即回复解决方案还原大师(ExBoo
Mygica HD Game Box 高清游戏宝
三星Note8、小米MIX2怎么样?
女王节送女朋友什么好?女王节礼物推荐
基于FPGA的深度卷积神经网络服务优化和编译测试
ESD二极管原理与放电信号测试
280ps高速比较器 MAX40026
区块链的透明度优势将使十三个行业从中获益
碳中和“充电宝”:储能风起能源势动
5G分级:不同价格的5G套餐5G网速不一样
TPU凭什么成为深度学习的首选处理器?
中国内地首个自动驾驶城市级示范区落地肇庆
Facebook将向用户提示有关人脸识别功能的信息
华米科技新手表将向苹果致敬 多方面将超越AppleWatch
新能源中薄膜电容与铝电解电容相比的优势
概述推动异构集成的封装选项,以及对工程师的影响
瀚达电子嵌入式计算机:适合远程监控的通讯平台
Linux USB鼠标驱动程序详解
成本过高致大量芯片厂暂缓先进工艺转型!