当前位置: 首页 > news >正文

体系结构论文导读(三十四):Design of Reliable DNN Accelerator with Un-reliable ReRAM

文章核心

这篇文章主要讨论了一种在不可靠的ReRAM(阻变存储器)设备上设计可靠的深度神经网络(DNN)加速器的方法。文章提出了两种关键技术来解决ReRAM固有的不可靠性问题:动态定点(DFP)数据表示和设备变异感知(DVA)训练方法。

一、引言

  • 背景介绍

    • DNN在图像分类、语音识别、语言处理和计算机游戏等多个应用中表现出色。
    • DNN的主要计算是向量-矩阵和矩阵-矩阵乘法操作,这些操作对数据的需求量大,使得传统冯·诺依曼架构在存储访问延迟和能量消耗方面成为瓶颈。
    • 处理内存(PIM)通过将计算和存储直接集成,提供了解决存储瓶颈的解决方案。
    • ReRAM是一种新兴的非易失性存储器,具有快速读写速度、高密度和高开关比,因而被广泛研究用于设计高效的机器学习加速器。
  • 挑战

    • ReRAM设备的固有不可靠性,即设备电阻的随机变化,带来了设计可靠的ReRAM DNN加速器的主要挑战。
    • ReRAM的计算是在模拟方式下进行的,电阻的偏差会直接导致乘积和结果的错误,从而显著降低计算精度。
  • 提出的方法

    • 动态定点(DFP)数据表示:根据数据范围自适应地改变小数点位置,减少未使用的最重要位(MSB)带来的误差。
    • 设备变异感知(DVA)训练:在训练过程中向参数添加随机噪声,以增强网络对参数变化的鲁棒性。

二、相关知识

  • 深度神经网络(DNN)

    • 卷积神经网络(CNN):包含卷积层、池化层和全连接层。主要计算在卷积层,通过应用滤波器提取输入特征。
    • 递归神经网络(RNN):利用序列信息,通过记忆之前的计算,适用于许多时间依赖的应用。长短期记忆网络(LSTM)通过引入门机制解决RNN的梯度消失问题。
  • 基于ReRAM的DNN加速器

    • ReRAM设备的电阻受set和reset电压调制,具有低电阻状态(LRS)和高电阻状态(HRS)。
    • 通过控制电阻状态,实现数据存储和计算功能。
  • ReRAM设备的变异性

    • ReRAM电阻的随机变化对DNN加速器的设计提出了挑战。设备的电阻分布通常符合正态或对数正态分布。
    • 设备变异性对计算精度的影响由统计分布的偏差、设备on/off比以及存储的位数决定。

图2(a):ReRAM结构及其电阻转换机制
  • ReRAM结构:ReRAM设备由上下电极和夹在中间的电阻切换层(HfOx, TiO2, Al2O3 或其组合)组成。
  • 电阻转换机制
    • Set过程:氧离子从晶格中逸出,形成氧空位导电丝,使设备处于低电阻状态(LRS)。
    • Reset过程:导电丝断裂,形成一个间隙,设备处于高电阻状态(HRS)。
    • 多级电阻:通过控制间隙长度,设备可以被重置为不同的电阻值,实现多级存储。
图2(b):用于向量矩阵乘法的ReRAM交叉阵列
  • 核心组件:ReRAM加速器的核心是向量矩阵乘法器(VMM)引擎,执行乘法-累加(MAC)操作。
    • 输入缓冲区:接收输入电压。
    • 交叉阵列:通过字线(WL)和位线(BL)进行操作。
    • DAC/ADC转换器:在交叉阵列内外进行数字-模拟和模拟-数字转换。
    • 移位和累加单元:将部分结果累加在一起,得到最终结果。

 

图3展示了影响基于ReRAM的DNN加速器计算精度的因素。

图3(a):
  • 1 bit,σ = σ0:当设备电阻的偏差较小时,读出误差较小。
图3(b):
  • 1 bit,σ = 3σ0:当设备电阻的偏差较大时,读出误差增大,导致计算错误。
图3(c):
  • 1 bit,低on/off比:较低的on/off比减小了不同电阻状态之间的间距,增加了错误的可能性。
图3(d):
  • 2 bit,σ = σ0:使用多级电阻时,相邻状态有较大的重叠,增加了计算错误的可能性。

 

 三、核心技术

A. 动态定点数据表示(DFP)
问题背景:

在深度神经网络(DNN)中,不同层的参数范围可以有很大差异。对于AlexNet训练的CIFAR-10数据集,第一层卷积层的参数范围比后面的全连接层大10倍。传统的固定点数据格式在处理这种范围差异时,未使用的最重要位(MSBs)会导致较大的误差,特别是在设备的on/off比不够大的情况下。

解决方案:

DFP允许根据数据范围自适应地改变小数点位置,从而最小化未使用的MSBs。这种方法可以显著减少读出误差。

其他优势:
  • 先前的研究表明,动态定点表示可以加速机器学习应用的训练和推理。在本研究中,动态定点表示被用于减少设备变异的影响,而不是加速计算。
B. 设备变异感知训练(DVA)
问题背景:

DNN的训练过程是寻找参数空间内损失函数(或成本函数)的最优点。然而,如果从最优点发生小偏移,损失函数会急剧增加,表明DNN对参数变异非常敏感。

解决方案:

如果在一个损失函数相对较小的区域内(可能不会达到全局最小值),使用该区域内的参数可以建立一个对噪声更具鲁棒性的网络。这启发我们在训练过程中故意向DNN参数添加噪声,以提高鲁棒性。

训练过程:
  • 对于每个训练批次,随机生成与卷积核大小相同的噪声矩阵,指定其均值和偏差。
  • 通过按元素相乘的方式将噪声添加到参数中,并使用加入噪声的卷积核进行后续操作。

http://www.lryc.cn/news/416415.html

相关文章:

  • WebStock会话
  • 5_现有网络模型的使用
  • 软件安全测试报告内容和作用简析,软件测试服务供应商推荐
  • 算法板子:树形DP、树的DFS——树的重心
  • 在C语言中,联合体或共用体(union )是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。
  • MS2201以太网收发电路
  • 乐乐音乐Kotlin版
  • C语言——预处理和指针
  • iptables防火墙(一)
  • (leetcode学习)50. Pow(x, n)
  • QT 5.12.0 for Windows 安装包 QT静态库 采用源码静态编译生成
  • 【生成式人工智能-三-promote 神奇咒语RL增强式学习RAG】
  • C++连接oracle数据库连接字符串
  • 判断字符串是否接近:深入解析及优化【字符串、哈希表、优化过程】
  • C 和 C++ 中信号处理简单介绍
  • 什么是云边协同?
  • YOLOv5改进 | 主干网络 | 将backbone替换为MobileNetV2【小白必备教程+附完整代码】
  • ARMxy边缘计算网关用于过程控制子系统
  • Python | TypeError: unsupported operand type(s) for +=: ‘int’ and ‘str’
  • 什么是开源什么是闭源?以及它们之间的关系
  • SpringBoot+Mybatis Plus实际开发中的注解
  • 【香橙派系列教程】(八)一小时速通Python
  • 了解JavaScript 作用、历史和转变
  • 遗传算法与深度学习实战——生命模拟与进化论
  • rt-thread H7 使用fdcan没有外接设备时或发送错误时线程被挂起的解决方案
  • exptern “C“的作用,在 C 和 CPP 中分别调用 openblas 中的 gemm 为例
  • 如何提前预防网络威胁
  • ProviderRpc发送服务二将远程调用来的信息反序列化后调用服务方的方法,并将服务方的结果返回给发送方
  • Io 35
  • java基础概念11-方法