[论文解读] A Systematic Approach to Blocking Convolutional Neural Networks
本文提出了一种分析模型,通过在多级内存层次结构中直接对卷积计算进行分块,以优化卷积神经网络(CNNs)中的内存访问。通过联合优化循环分块与内存层次结构设计,该方法在CPU上将内存流量和能耗降低高达90%,在专用硬件中实现高达13倍的能效提升,优于因数据复制而丧失局部性的GEMM基方法。
Convolutional Neural Networks (CNNs) are the state of the art solution for many computer vision problems, and many researchers have explored optimized implementations. Most implementations heuristically block the computation to deal with the large data sizes and high data reuse of CNNs. This paper explores how to block CNN computations for memory locality by creating an analytical model for CNN-like loop nests. Using this model we automatically derive optimized blockings for common networks that improve the energy efficiency of custom hardware implementations by up to an order of magnitude. Compared to traditional CNN CPU implementations based on highly-tuned, hand-optimized BLAS libraries,our x86 programs implementing the optimal blocking reduce the number of memory accesses by up to 90%.
研究动机与目标
- 解决现有实现中因大工作集和数据局部性差导致的CNN推理高内存能耗问题。
- 克服GEMM基CNN实现的局限性,后者因数据复制而增加内存流量。
- 开发一种分析模型,联合优化循环分块与内存层次结构,以实现CNN中最大的能效。
- 实现对CPU和专用硬件中CNN分块参数空间的系统性探索。
- 证明直接对CNN进行分块可获得比GEMM基方法更好的局部性和能效。
提出的方法
- 作者为类似CNN的循环嵌套开发了一种分析模型,用于量化多级内存层次结构中的内存能耗与流量。
- 该模型支持对可能的分块配置进行穷举或启发式搜索,以找到针对特定内存层次结构的最优调度。
- 该方法联合优化循环分块与内存层次结构设计,以最小化每次操作的能耗。
- 该框架被应用于CPU软件实现和专用硬件设计,包括FPGA和ASIC系统。
- 该方法使用真实硬件参数和能耗模型,在标准CNN层(如Conv1、Conv2)上进行了验证。
- 该方法支持单核与多核系统,重点在于最小化共享内存架构中的广播能耗。
实验结果
研究问题
- RQ1如何系统性地优化CNN的分块以改善内存局部性并降低能耗?
- RQ2GEMM基方法与直接卷积分块对内存流量和能效的影响有何差异?
- RQ3将循环分块与内存层次结构设计联合优化,对CNN硬件的能效有何影响?
- RQ4在优化的CNN系统中,内存大小、芯片面积与能效之间的权衡是什么?
- RQ5在使用大容量片上缓冲区时,并行化多个核心如何影响能效?
主要发现
- 与GEMM基CPU实现相比,直接对CNN进行分块可将内存访问减少高达90%,显著提升能效。
- 在配备8MB片上SRAM的最优内存层次结构下,能效相比基线DianNao系统提升至少13倍。
- 仅使用1MB片上内存时,能效仍提升10倍,且芯片面积仅比DianNao多6倍。
- 内存访问能耗与计算能耗之比从DianNao的20倍降至最优系统的1倍以下,使计算成为主要能耗来源。
- 在多个核心之间共享大容量片上缓冲区可降低广播能耗,并随着核心数量增加实现可扩展的能效提升。
- 该框架识别出,为实现低精度CNN工作负载的高能效,GPU需要更深的内存层次结构和更小的寄存器文件。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。