卷积神经网络CNN硬件实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013B/CNN Accelerator Template
• 加速模块有两个优势:可配置与 可编程。
•
可配置:做到与平台可用资源相匹 配
• 可编程:做到在CNN不同层不同工 作量下保持好的表现
• 为了达到这个目的,一串SIMD型 的乘加器PE用于加速卷积。
• 每个PE单元都能计算一个kernel 的值,所以循环m,n分在不同的 PE中,k,l在一个PE中进行。
• 存储的瓶颈效应会被较小,因为灵活的存储等级支持CNN工作量中复杂的数据 存取方式
• The efficiency of the on-chip memory size is maximized by our scheduler that uses tiling to optimize for data locality.
• 文章中使用了Vivado HLS(AutoESL)工具对加速器的配置进行快 速的评估(估计是为了找到最佳的配置),使用C对加速器进行 高级描述,配置内容包括分割灵活的存储空间或者是累加器PEs的 流水线操作。
• 用于CNN的可配置加速模块有灵活的数据重用缓冲区,这个模块支持CNN工作 量中不同的计算参数并能够配置匹配外存带宽
• A memory-centric design flow to synthesize and program the accelerator template. Our design flow uses quick design space exploration to optimize on-chip memory size and data reuse.
• Multiport DMA Streaming Engine:
• 设计方法与一代基本相同
• Operation:
• CPU通过送出配置指令,配置每个用于计算的块和其间的连接。 • CPU配置流引擎预读入用于处理的数据并准备好写结果。 • 当流引擎准备完成,将流数据输出。 • 每个ALU处理其对应的输入数据流并将结果传送到相邻的块中或者传回
• A configurable accelerator template for CNN, with flexible data reuse buffers. The template supports the different compute patterns in the CNN workload and can be configured to match the external memory bandwidth.
2013A / new Architecture
• 二维卷积框图C
• 该卷积结构将卷积的计算与 卷积窗的输入值分隔开,经 过比较,优势在于右边的2D Array Processor可以多个同 时进行并行计算得到多个输 出结果,实现了输入数据的 复用,而前一种则由于没有 分开所以无法实现
2013A/new Architecture
• 该框图实现了输出特 征图中一列的四个像 素,与前一框图的其 他区别是每次可以并 行计算两个卷积窗输 出特征图,并能实现 多个输入图的组合运 算。
2013B/Flexible memory subsystem
• 该示例实现了在输出一 列4个像素的情况下的 subsample,实现方式 是通过不是选取连续的 行作为窗函数的输入, 而是采用了隔行输入的 方式。
• 参数 design-space考虑四个层次:
• 卷积窗级,对应单个神经元的单个卷积窗 • 神经元级,对应一个神经元产生的一个特征图 • 输入图像级,对应所有需要组合的输入特征图 • 输出图像级,对应一层中多个输出特征图
• 算法中不同等级对应不同的数据传输模式和不同数量的数据重用。并 且不同层次或是不同的网络配置改变了四级的优先级。比如,第一层 有大量窗函数级的并行计算,而在第四层则没有了窗函数级的并行计 算了因为窗函数是1x1。
• 存储中心的设计流程用于综合和编程加速模块。设计流程使用快速设计空间探 索实现优化片上存储空间和数据重用
• A high-level verification and evaluation of the methodology by FPGA mapping of a speed traffic-sign recognition application.
流引擎。
• 当流引擎处理完成就通知CPU运行结束。
2013B/A Memory-Centric Architecture—ICCD
• The effect of the memory bottlenect can be reduced by a flexible memory hierarchy that supports the complex data access patterns in CNN workload.
• 主要介绍二维卷积和sigmoid函数 的硬件实现
2009/Architecture
• 二维卷积框图A
2009/Reference paper
• 二维卷积框图B
1. C0*x0, 2. C0*x1, 3. C0*x2, 4. C0*x3, 5. C0*x4, 6. C0*x5,
c1*x0,
…, c8*x0;
• 所以为了提高效率,加速器必须要对每一层灵活配置。
2013B/Practical implications
• 为了精确对应CNN的 不同运算,用嵌套 循环来描述每一层, 以第三层为例。
• R代表输出特征图 • Q代表输入特征图 • M,N分别代表输出特
征图的行与列 • K,L分别对应窗与输
入特征图的行与列
2010/second-generation architecture
• 第二代结构
• 包括CPU控制单元、许多平行处理单元、存储接口流引擎 • 增加了很多平行矢量处理单元 • 允许数据流在很多处理块内无缝运转处理。
• CPU:
• 作为系统的灵活控制单元控制配置总线,系统的其他模块都连接着全集 配置总线,所以可以在运行时对系统中的参数进行重新配置,包括从处 理块之间的联系到数据到外存的映射。
• 为了最大化PE串的使用率,使用 灵活重用缓冲区利用可预测的数 据存取模式实现
• S现ig、moid 激活函数通过查找表实
2013B/Flexible memory subsystem
•
该框图实现了每次输出一个特 征图中一行连续的四个像素值。
• 每个buffer中都存储的是输入 窗的一列四个像素
2013B/Parameterized HLS Templates
• SIMD类型的PEs组合上可编程的重用缓冲区导致了一个非常灵活 的加速器。许多CNN的参数在执行调度时被编程,并能够在执行 时改变,比如卷积窗的大小,输入特征图的数量,降采样的大小。
• 有些配置参数影响了硬件的实现,所以在综合后将固定,比如PEs 的数量、连接方式、支持地址模式、缓冲区配置和缓冲区的深度。
c1*x1+c1*x0, …, c8*x1;
c1*x2+c0*x2, c2*x2+c1*x1+c0*x0, …, c8*x2;
c1*x3+c0*x2, c2*x3+c1*x2+c0*x1, …, c8*x3;
c1*x4+c0*x3, c2*x4+c1*x3+c0*x2, …, c8*x4;
c1*x5+c0*x4, c2*x5+c1*x4+c0*x3, c3*x5+c2*x2+c1*x1+c0*x0,…
卷积神经网络CNN 硬件实现
杨皓轩 12307130286
Main paper
• 2009/CNP: An FPGA-based Processor for Convolutional Networks
• CNP:以fpga为基础的用于卷积神经网络的处理器
• 2010/Hardware Accelerated Convolutional Neural Networks for Synthetic Vision Systems
• 用于卷积神经网络的以存储为中心的加速器设计
2009/Architecture
• CNP:ConvNet Processor • CNP contains:
• A Control Unit (CU) • A Parallel/Pipelined Vector and Logic
Unit (VALU) • An I/O control unit • A memory interface
• Dewk.baidu.comux:解复用,因为输入的 是位3。2位数据,每位像素只需8
• Rotate:循环,由于四个窗中 有列重用的部分和不同的部分, 不同的列需要重新排序加入窗 中。
• Mux:复用,将数据重新变回 32位
• S非ig线mo性id变LU换T:通过查找表实现
2013B/Flexible memory subsystem
• 二维卷积框图C
• 该卷积结构将卷积的计算与 卷积窗的输入值分隔开,经 过比较,优势在于右边的2D Array Processor可以多个同 时进行并行计算得到多个输 出结果,实现了输入数据的 复用,而前一种则由于没有 分开所以无法实现。
2009/Architecture
• Sigmoid 函数 • 硬件实现
• 包括两个硬件模块,一个用于从标 准DVI通道获取视频信号,一个用 于生成视频标志在标准DVI显示器 上显示
2009/Architecture
• Memory interface:
• 允许同时多个到同一存储地址的通 路从而实现并行
• 有专用硬件判别器用于与外存间通 道的多路传输或多路分用,设计原 理是将一个端口与外存相连并估计 其带宽分配出一个确定的时间段, 然后当时间到达时便切换到下一个 端口,这样便可以实现不同端口的 同时对外存的访问。
• ALU:
• 在二维网格中独立的处理块,包括全局路由器、本地路由器、流处理单 元
• 每个ALU都通过local router与附近的四个ALU相连 • 全局路由器实现了与外存的数据传输、本地路由器实现了ALU之间的数
据传输
• ALU:
• 实现了所有在卷积神经网络中需要的运算,其中主要是二维卷积运算和 非线性变换。(不是很理解计算细节,文中没有提及)
• 片上存储空间利用率实现了最大化,因为调度使用分块优化了数据的局部性
• On-chip memory size is minimized , which reduces area and energy usage
• 片上存储空间实现了最小化,从而叫嚣了空间和能量的使用
2013B/Contribution
• CU:普通的计算机结构,以CPU 为核心,用于给在VALU中的数据 处理步骤进行排序,所以称为控 制单元。
2009/Architecture
• VALU:
• 实现卷积神经网络的各种运算包括 二维卷积、空间合并(二次抽样)、 驻点非线性函数变换和其他一般矢 量运算符。
• 有直接的存储通道
• I/O unit:
• 硬件加速卷积神经网络用于合成视觉系统
• 2013A/The Multi 2D Systolic Design and Implementation of Convolutional Neural Networks
• 多向二维阵列结构和卷积神经网络实现
• 2013B/Memory-Centric Accelerator Design for convolutional Neural Networks
• 通过FPGA高级的查证和核实的方法映射一个高速交通标志辨别的应用
2013B/Application
2013B/Algorithm
单个输入特征图:
多个输入特征图:
2013B/Practical implications
• 在实现之前,需要考虑算法中存在大量的数据重用。比如操作进行的 顺序和并行运算的选取都影响了数据传输和计算资源使用。
• 为了实现数据流的连续,FIFO需要 双向同时使用。
• FIFO的深度决定了属于每一段的最 长时间
2009/Architecture
• VALU:
• 所有卷积神经网络的基本运算都在 其中实现,主要包括二维卷积累加 求和、使用均值滤波器和最大值滤 波器进行二、维空间合并和二次抽 样和逐点非线性变换