4. Network and Hardware Co-Design

4.1 Network Optimization

对于网络算法的优化主要采用以下两种思路:

(1)减小计算精度和对参数进行低位宽量化:参数类型为定点数与浮点数的比较,数据位宽对精度的影响

(2)减少计算量和参数存储量:参数压缩(Compression),网络裁剪(Pruning)

下图1所示为FP32, FP16, INT32, INT16, INT8五种数据类型,位宽表示含义,取值范围以及精度的表示。

图 1

下图2所示为操作数用不同位宽表示的情况下,进行单次不同类型的计算后,在能耗与运算硬件单元占用面积两个方面的对比。

图 2

4.2 Methods to Reduce Bits

(1)Quantization:对训练好的参数直接进行量化处理,用定点数来表示原浮点数参数,采用这种方法,会产生不可避免精度丢失的情况。

图 3

图3所示为在对原浮点参数进行量化时,对参数数据进行可视化处理,用定点数去尽可能的表示更多的浮点数。

(2)Dynamic Fixed Point: 在直接将浮点数量化处理成单一定点数的基础上,采用动态定点数的方式可以在一定程度上减小精度丢失。

(3)Fine-tuning(Retrain Weights):直接再训练的过程中,对参数进行量化处理,这样在对算法进行硬件平台移植时,不需要进行额外的量化操作,可以保证在训练后的精度不变的情况下,提高算法的执行速度。这里在训练过程中,使得权值参数值保持围绕在一个中心范围,需要加入Batch Normalization Layer,这里,从另一个角度理解了Batch Normalization Layer的重要性了。

(4)Impact on Accuracy

图 4

图4所示为采用静态定点数和动态定点数对权值参数进行量化处理后,Top-1 accuracy的变化折线图。可以直观的看出,采用动态定点数量化的方法能够保证更小的准确率的损失。

(5)Precision Varies from Layer to Layer

图 5

在采用动态定点数对权值参数进行量化处理策略的基础上,为进一步减小量化处理带来的准确率丢失的情况,可以采用更细粒度的优化策略,即对每一层运算层采用对应层最合适的数据位宽进行量化处理。如图5所示。

(6)Binary Nets

图 6

图 6所示为网络参数分别在不进行二值化,权值参数二值化,权值参数和特征数据二值化三种情况下,在计算方式,数据存储,前向计算时间,计算精度上的对比。可以看到,在对数据依次递增进行二值化处理后,数据存储在变小,单次前向计算时间有明显增加,但代价就是计算精度的损失。

(7)Reduce Number of Ops and Weights

1) Network Compression: Low Rank Approximation, Weight sharing and Vector Quantization

2) Pruning: Weights, Activations

3) Network Architectures

[PS:这部分的优化主要是针对算法设计,我目前知识有限,也是一知半解,可以参考相关的资料]

5. Benchmarking Metrics for DNN Hardware

基本的评价指标参数有:Accuracy, Power, Throughput, Cost;

额外的评价指标参数有:External memory bandwidth, Required on-chip storage, Utilization of cores(实际算力和理论算力的比较)

(1)DNN Algorithm的评价参数指标

1)计算准确度(Accuracy)

2)网络结构(网络层数,卷积核大小,卷积核层数,特征数据通道数)

3)权值参数存储大小

4)完成一次前向传播运算所需要进行的乘加(MAC)操作次数

表 1

表 2

表1和表2所示为AlexNet, VGG-16, GoogLeNet(v1), ResNet-50的评价参数指标的具体表示。

(2)DNN Hardware的评价参数指标

1)能耗参数指标,系统能耗比(单运算量下的能耗)

2)访存带宽,从片外DRAM中存取数据的速度

3)硬件理论算力,MAC运算单元的操作数的数据位宽和硬件运算单元的数目

4)面积(硬件资源的使用情况)

(3)ASIC Benchmark (Eyeriss)

表3和表4所示为基于ASIC硬件平台设计的硬件加速器的评价参数指标的具体表示。

表 3

表 4

(4)FPGA Benchmark

表5所示为基于ASIC硬件平台设计的硬件加速器的评价参数指标的具体表示。

表 5

DNN硬件加速器设计4 -- Co-Design and Benchmarking Metrics(MIT)相关推荐

  1. mit数据集_MIT的DNN硬件加速器教程(二)流行的DNN和数据集

    本slide主要介绍当前流行的一些DNN以及数据集 slide链接 https://www.rle.mit.edu/eems/wp-content/uploads/2019/06/Tutorial-o ...

  2. 基于FPGA的LSTM加速器设计(MNIST数据集为例)

    摘要 本文以MNIST手写数字识别任务为例,使用FPGA搭建了一个LSTM网络加速器,并选取MNIST数据集中的10张图片,通过vivado软件进行仿真验证.实验结果表明,本文设计的基于FPGA的LS ...

  3. 【基于zynq的卷积神经网络加速器设计】(一)熟悉vivado和fpga开发流程:使用Vivado硬件调试烧写hello-world led闪烁程序实现及vivado软件仿真

    HIGHLIGHT: vivado设计流程: note: 分析与综合 和 约束输入 可以调换顺序 [基于zynq的卷积神经网络加速器设计](一)熟悉vivado和fpga开发流程:使用Vivado硬件 ...

  4. 如何设计神经网络的硬件加速器

    设计神经网络的硬件加速器的方法有很多种,具体的方法取决于你的应用场景以及你希望达到的性能目标.一些常用的方法包括: 使用专门设计的神经网络处理器,比如 Google 的 Tensor Processi ...

  5. XC7VX690T板卡设计资料:VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡 软件无线电处理平台 图形图像硬件加速器 Net FPGA

    VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡 一.板卡概述 本板卡基于Xilinx公司的FPGA XC7VX690T-FFG1761 芯片,支持PCIeX8. ...

  6. 基于pynq的数字识别神经网络加速器设计

    文章目录 基于pynq的数字识别神经网络加速器设计 软件部分 1. 全连接神经网络: 2. 卷积神经网络搭建: 3. 文件格式转换: 硬件部分 1. MNIST的硬件实现思路 2. 代码编写与硬件综合 ...

  7. 【CV】RegNet:通用 CNN 网络设计空间(Design Spaces)设计范式

    论文名称:Designing Network Design Spaces 论文下载:https://arxiv.org/abs/2003.13678 论文年份:2020 论文被引:446(2022/0 ...

  8. 实验项目5.1 深度学习算法与硬件加速器

    实验对CPU的修改不多,如果完全按照RISC-V的要求设计CPU,将mul归类为R-Type的话,改动较多.但是我们可以单独设计一跟op_mul电线,然后单独设计乘法指令. 乘法指令的实现,直接使用其 ...

  9. 英特尔Intel® Arria® 10 FPGA加速器设计

    英特尔Intel® Arria® 10 FPGA加速器设计 Introducing the Intel® Vision Accelerator Design with Intel® Arria® 10 ...

  10. 硬件加速器为人工智能应用服务

    硬件加速器为人工智能应用服务 Hardware accelerators serve AI applications 硬件加速器(Hardware accelerators)是用于执行特定任务(如对对 ...

最新文章

  1. oracle 测试sql执行时间_通过错误的SQL来测试推理SQL的解析过程
  2. nginx 配置静态文件目录_nginx缓存静态资源,只需几个配置提升10倍页面加载速度...
  3. C++中max,min函数,以及vector字符未定义问题(未声明的标志符)
  4. hmlt ul li 水平排列
  5. redis连接与redis的python连接
  6. 如何给SAP Cloud Platform的CloudFoundry环境里的subaccount添加quota
  7. linux忘记mysql密码_Linux下忘记Mysql密码的找回方法(图)
  8. 作为Java程序员,这些开源工具你应该要学习!
  9. ASP.NET-EF基础知识
  10. simulink同步发电机模型_基于Speedgoat的永磁同步电机控制Demo
  11. 海康威视第一季度营收165亿元 净利润22.84亿元
  12. 组内分享slide 【about 3D】
  13. 通过分析等待类型解决系统产生问题
  14. 爱因斯坦那颗大脑,究竟隐藏了什么
  15. JS 平方 开方 笔记
  16. 【笔记】项目工作中总结(三)
  17. 动态拨号vps有什么作用?
  18. 二代征信报告解读及信贷风控中的应用
  19. input。file清除。js,jquery
  20. GSM-R的网络组成(结构图)

热门文章

  1. Linux:Redis搭建集群
  2. zookeeper-linux集群搭建小结
  3. 加载项目的时候提示:需要缺少的web组件才能进行加载
  4. CSR系列开发板的编程器/烧写器
  5. C4D插件X-Particles粒子特效(五)
  6. c语言error lnk 2005,error LNK2005问题,小弟实在无能为力!!!
  7. 劳易测BPS300i SM 100条码定位
  8. 三子棋游戏(C语言实现)
  9. 淘宝爬取商品信息以及数据分析
  10. matlab 汽车 仿真,MATLAB编程与汽车仿真应用