梳理部分基于RRAM的稀疏神经网络加速器

文章目录

  • 1. SNrrm
    • 摘要
    • 引言
    • 相关工作
    • RRAM中的稀疏性利用
      • 权重稀疏
      • 稀疏激活利用
    • 架构设计
    • SNrram 部署等
  • 2. SRE
    • RRAM加速器架构
  • 3. FORMS
    • FORMS--2021ISCA
  • others

1. SNrrm

@INPROCEEDINGS{8465793,
author={Wang, Peiqi and Ji, Yu and Hong, Chi and Lyu, Yongqiang and Wang, Dongsheng and Xie, Yuan},
booktitle={2018 55th ACM/ESDA/IEEE Design Automation Conference (DAC)},
title={SNrram: An Efficient Sparse Neural Network Computation Architecture Based on Resistive Random-Access Memory},
year={2018},
volume={},
number={},
pages={1-6},
doi={10.1109/DAC.2018.8465793}}


摘要

pruning和compression技术可以帮助大规模神经网络部署在GPU/FPGA上。研究基于针对RRAM的稀疏技术尚处于早期。本文提出SNrram,可利用权重和激活值的稀疏性。SNrram存储重要的权重来实现更好地利用率。可节省69.8%的资源利用率,降低35.9%的功耗,在常用深度学习benchmark上实现2.49x的加速。

引言

  1. 现存基于ReRAM的加速器由于紧密耦合的架构难以利用0值;
  2. 外部电路开销大;
  3. 稀疏神经网络需要额外的周期来解码数据的稀疏格式。

采用与传统计算平台相同的稀疏格式将会大量在RRAM的外围电路上造成巨大的开销。

  • 结构剪枝算法可以被基于RRAM的加速器利用;结构剪枝在tensor的维度上实现连续的0值,可被RRAM阵列利用。

  • 此前稀疏解码硬件开销大,本架构降低了开销

  • 将激活值的稀疏转化为权重的稀疏

  • 只存储重要的值

贡献在于

  1. 首个联合利用权重和激活值稀疏的RRAM加速器
  2. 稀疏转换算法:sparsity transfer algorithm将权重和激活值归一化到同样的格式
  3. 设计了寻址寄存器单元:indexing register unit (IRU)来存储稀疏指数,解析稀疏数据格式,避免外部电路的控制器开销
  4. 验证了所提架构的能效。与目前先进的工作相比实现了2.49x的加速,69.8%的能量节省,35.9%的功耗降低。

相关工作

  1. CNP利用FPGA并行读的优势和卷积神经网络的本征并行度加速。
  2. DaDianNao 引入多chip设计,利用高内部存储带宽实现高并行度。
  3. Prime基于RRAM实现,超越GPU,FPGA和ASIC超过2000倍的性能提升
  4. ISAAC是一种流水线RRAM交叉阵列结构,定义了新的数据编码技术来降低功耗和外部电路的面积开销

稀疏神经网络
5. 低秩矩阵分解获得95%的稀疏度
6. 权重剪枝、量化与Huffman编码减少网络规模
7. Cnvlutin和Eyeriss通过压缩和跳过0值利用稀疏
8. scnn利用非0权重和激活的Cartesian积

稀疏的架构支持
9. 0权重的不规则分布难以使用当前硬件架构进行加速。许多研究在算法层面针对硬件友好来进行
10. 忆阻阵列结构相对传统结构可减少存储访问,实现高速与高能效。然而我们无法移除一行中的0值,因为一行中的其他非0值也需要计算。在稀疏神经网络中难以找到全0行。

RRAM中的稀疏性利用

权重稀疏

  • intra-filter稀疏
  • input-channel-wise稀疏
  • output-channel-wise稀疏
    filter = kxk, C=input channel, M=output channel
    展开为NxM的2维矩阵时,N= kxkxC。为了节约存储,我们按输入通道将N分为C个子矩阵,大小为gxM,g=kxk,从而当输出通道(卷积核)被减掉时,可以得到子矩阵中1列的0,从而可以消除。

有效利用片上资源的设计原则

  • 不同分区的计算任务应当平衡从而实现高能效
  • 避免计算资源的浪费
    首先,集合相同形状的子矩阵到单个交叉阵列的不同部分从而实现高能效。接着,为了平衡计算任务,根据形状为每个组分配不同数量的交叉阵列。最后利用输出通道的并行性提高性能。
  • 引入索引寄存器单元IRU(indexing register unit)累加部分和结果、解析稀疏格式。根据split和reassemble的结果,稀疏索引被存储到IRU上。图中灰色意味着关闭,红色意味着打开,如果同一行有2个红色,相应的部分和结果会被累加。
  • IRU消耗的存储与节省的RRAM资源相比可忽略。

给出了节省资源的证明结果

稀疏激活利用

  • 算法造成的静态稀疏
  • 激活值为0的动态稀疏
    主要针对静态稀疏
    没有权重共享时,根据激活0值隐藏权重元素;
    有权重共享时,稀疏转移算法sparsity transfer
    algorithm (STA)


    Sw为列之间的稀疏宽度,Sh为行之间的稀疏宽度。分解卷积核为(Sw+1)与(Sh+1)的格式,在滑窗时只存储有效值,稀疏算法在将数据存储到RRAM阵列之前时使用。

收集所有权重的稀疏模式之后,以密集矩阵的形式存储。

架构设计

  • multi-chip通过 片上concentrated mesh互联。tile包含多个PE,池化,激活,SRAM缓存和控制器。所有组件通过共享的bus互联。在神经网络计算中,输入通过片上缓存到tile buffer随后到PE buffer. 由于大规模神经网络被分解后到不同的PE上执行,SNrram也需要在tile上短暂地存储这些值。在不同的IRU上有跨导放大器来支持通信。
  • chip,tile,pe级别的控制。级别1的控制支持大并行度。tile级别的并行读解码指令和分配资源。pe级别的将指令与操作转换为控制信号和外部电路的动作。
  • 采用与Prime中的类似操作,用2个矩阵表示负数。
  • 单个RRAM表示多bit来提升密度和计算能效。

SNrram 部署等


2. SRE

现存方案基于过于理想的设计,在单个周期内阵列并不能完全开启。PRIME假设128x128同时开启。ISAAC假设256x256同时开启。但为了满足精度需求,乘累加必须在很小的粒度下进行。例如在512x256的阵列中只有9行可以同时开启。OU(operation unit)级别进行操作,压缩也可以基于这个维度进行。联合利用权重和激活值的稀疏。

  • 在OU级别按行或者按列压缩
  • 在同一个周期激活不连续的非0WL,组成一个动态的OU。

贡献:

  • 提出实际的基于OU的可利用DNN稀疏性进行加速的机会
  • 联合利用权重和激活值的稀疏。利用细粒度OU级别的稀疏和按行压缩的方式,同时动态配置WL。
  • 与过于理想的RRAM加速设计相比,提供了满意的推理精度

RRAM加速器架构

  • PE

    • 计算单元CU
    • 阵列
    • WLD,字线驱动,转换输入信号
    • 读出电路ADC等
    • 片上缓存eDRAM
    • 非线性激活函数与池化单元

3. FORMS

FORMS–2021ISCA

FORMS: Fine-grained Polarized ReRAM-based In-situ Computation for Mixed-signal DNN Accelerator

Recent work demonstrated the promise of using resistive random access memory (ReRAM) as an emerging technology to perform inherently parallel analog domain in-situ matrix-vector multiplication—the intensive and key computation in deep neural networks (DNNs). One key problem is the weights that are signed values. However, in a ReRAM crossbar, weights are stored as conductance of the crossbar cells, and the in-situ computation assumes all cells on each crossbar column are of the same sign. The current architectures either use two ReRAM crossbars for positive and negative weights (PRIME), or add an offset to weights so that all values become positive (ISAAC). Neither solution is ideal: they either double the cost of crossbars, or incur extra offset circuity. To better address this problem, we propose FORMS, a fine-grained ReRAM-based DNN accelerator with algorithm/hardware co-design. Instead of trying to represent the positive/negative weights, our key design principle is to enforce exactly what is assumed in the in-situ computation— ensuring that all weights in the same column of a crossbar have the same sign. It naturally avoids the cost of an additional crossbar. Such polarized weights can be nicely generated using alternating direction method of multipliers (ADMM) regularized optimization during the DNN training, which can exactly enforce certain patterns in DNN weights. To achieve high accuracy, we divide the crossbar into logical sub-arrays and only enforce this property within the fine-grained sub-array columns. Crucially, the small sub-arrays provides a unique opportunity for input zero-skipping, which can significantly avoid unnecessary computations and reduce computation time. At the same time, it also makes the hardware much easier to implement and is less susceptible to non-idealities and noise than coarse-grained architectures. Putting all together, with the same optimized DNN models, FORMS achieves 1.50× and 1.93× throughput improvement in terms of


  • 2016年提出结构剪枝Wei Wen, Chunpeng Wu, Yandan Wang, Yiran Chen, and Hai Li. 2016. Learning Structured Sparsity in Deep Neural Networks. In 30th NeurIPS. 2082–2090.
  • 非结构剪枝,权重映射聚集非0值。Jilan Lin, Zhenhua Zhu, Yu Wang, and Yuan Xie. 2019. Learning the Sparsity for ReRAM: Mapping and Pruning Sparse Neural Network for ReRAM Based Accelerator. In Proceedings of the 24th ASPDAC.639–644.
  • 基于OU级别的行压缩提高阵列可靠性,提供新的稀疏方案(SRE)
  • 基于阵列的剪枝算法:Pim-prune: fine-grain dcnn pruning for crossbar-based process-in-memory architecture

others

Pytorch: An imperative style, high-performance deep learning library,” Neural Information Processing Systems (NeurIPS), 2019

【文献阅读12】:稀疏ReRAM引擎:基于ReRAM的高效稀疏神经网络加速架构相关推荐

  1. 【IHS+稀疏表示】基于IHS小波变换和稀疏表示相结合的遥感图像融合算法matlab仿真

    1.软件版本 matlab2013b 2.本算法理论知识 小波变换具有多尺度特性,其时域和频域均 具有表征信号局部特性的能力和多分辨率分析的 特点.在低频时具有高的频谱分辨率,在高频 时具有低的频谱分 ...

  2. 【文献阅读04】基于ReRAM的高能效可重配置神经网络加速器

    标题:An Energy-efficient Inference Engine for a Configurable ReRAM-Based Neural Network Accelerator 时间 ...

  3. 《基于区块链技术的虚假新闻检测方法》文献阅读笔记+总结

    <基于区块链技术的虚假新闻检测方法>文献阅读笔记+总结 关键词:区块链.智能合约.虚假新闻.新闻网站.博弈论 来源 题目 时间 作者 中国学术期刊网络版 <基于区块链技术的虚假新闻检 ...

  4. 文献阅读09期:基于ADMM方法的柔性负载实时定价

    [ 文献阅读·能源 ] Load shifting of a supplier-based demand response of multi-class subscribers in smart gr ...

  5. 网约车需求预测文献阅读笔记(一)《基于图卷积的出发地—目的地矩阵预测:旅客需求建模的新视角》

    文献阅读笔记:<基于图卷积的出发地-目的地矩阵预测:旅客需求建模的新视角> 摘要 现有研究不足 研究挑战(难点) 本文的贡献 准备工作 定义1:格子 定义2:时间片 定义3:OD矩阵 模型 ...

  6. 文献阅读1 | 《基于图像处理的铁路轨道板裂缝检测研究》

    文献阅读1 | 基于图像处理的铁路轨道板裂缝检测研究 文献阅读1 | <基于图像处理的铁路轨道板裂缝检测研究> 作者:薛峰,赵丽科,柴雪松,郑顺义 期刊:铁道建筑 图像预处理 由于在图像处 ...

  7. haar分类器详解(Haar特征,积分图,adaboost算法,筛选式级联分类器),DCG介绍 --文献阅读报告《基于素描对视频的人脸识别研究》

    基于素描对视频的人脸识别--haar分类器详解,haar特征,adaboost,级联强分类器,积分图,DCG 背景 算法总体流程 1.预处理--识别出人脸并将人脸图像标准化 haar特征 积分图--加 ...

  8. 文献阅读06期:基于Logistic效用函数智能电网定价

    [ 文献阅读·能源 ] The real-time pricing optimization model of smart grid based on the utility function of ...

  9. 【文献阅读02】基于模拟RRAM支持全并行乘累加运算的全集成78.4TOPS/W存算芯片

    标题:A Fully Integrated Analog ReRAM Based 78.4TOPS/W Compute-In-Memory Chip with Fully Parallel MAC C ...

最新文章

  1. GitHub 重磅更新:无限私有仓库免费使用
  2. 如何把纯真ip数据库导入到MySQL数据表中
  3. 多线程开发之---线程等待
  4. MapReduce Java API-多输入路径方式
  5. 51nod 1717 好数 (水题)
  6. bzoj5108 数据_成都day3t3
  7. (5)vue.js 基础语法—el选项
  8. 生存在互联网公司是种怎样的体验?
  9. PHP函数调用及循环体内定义大型变量效率的研究
  10. “为了拿下 Offer,我在技术面试时迎合面试官,给了错误答案!”
  11. 【UNIX环境高级编程】UNIX基础知识
  12. node.js配置oracle,Node.js 安装配置 | 菜鸟教程
  13. 编程也需要有大局观 新鲜出炉的大局观 了解一下
  14. 菜鸟学JAVA之——多线程
  15. java 如何理解new_JAVA中new的 理解
  16. 华东理工计算机类在哪个校区,华东理工大学有几个校区及校区地址 哪个校区最好...
  17. H5首屏图片加载优化
  18. 一键制作三维真实地形DEM
  19. 360度全景摄像是什么?360度全景摄像有什么用?
  20. 中国民营企业的8+10种死法

热门文章

  1. 燕京啤酒携手法大大,电子合同助力异地高效签约
  2. java编程贴纸问题_Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
  3. CSS学习(第四天)(浮动,常见网页布局,清除浮动,PS切图)
  4. golang 实现solidity keccak256(abi.encode(xxx))签名
  5. 三星SideSync下载,一个神奇的软件_我是亲民_新浪博客
  6. ES5、ES6 如何实现继承
  7. servlet-1.0-SNAPSHOT not found for the web module.
  8. 逻辑回归损失函数求导过程
  9. 整数规划Matlab实现
  10. Aliexpress Plugin 全球速卖通Wordpress 软件