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

news2024/9/23 15:19:28

文章核心

这篇文章主要讨论了一种在不可靠的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.coloradmin.cn/o/1982129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

日撸Java三百行(day14:栈)

目录 一、栈的基本知识 1.栈的概念 2.栈的功能 3.栈的实现 二、栈的代码实现 1.栈的基本属性与方法 2.栈的遍历 3.入栈实现 4.出栈实现 5.数据测试 6.完整的程序代码 总结 一、栈的基本知识 1.栈的概念 根据百度百科,我们知道“栈”是存储货物或供旅客…

小怡分享之Java图书管理系统

前言: 🌈✨前面小怡给大家分享了抽象类和接口,今天小怡给大家分享用Java实现图书管理系统。 1.功能 不同的用户看到的菜单是不一样的,我们分为两个用户身份,管理员和普通用户。 2.知识点 数据类型、变量、数组、方法…

跳妹儿学编程之ScratchJr(12):综合篇-五只小猴子床上跳

博主资深软件架构师,拥有13年大型软件与互联网系统开发、设计和架构经验,曾就职于华为,现任职于国内知名互联网公司。平时在家教咱家“跳妹儿”编程,并将心得和过程记录下来。希望可以帮助更多对编程感兴趣的家庭。 引言 在前面的…

略读ArrayList源码

ArrayList是Java集合框架中的一部分,底层是通过数组实现的,可以动态增长和缩减。 一、首先看成员变量 序列化ID定义。在Java中,如果一个类实现了Serializable接口,那么它的serialVersionUID就非常重要了。serialVersionUID用于确…

Cesium初探-CallbackProperty

在Cesium中,CallbackProperty 是一种非常有用的特性,可以用来动态更新实体的属性,如位置、方向、高度等。CallbackProperty 允许你在指定的时间点计算属性值,这样就可以实时地改变实体的状态而不需要频繁地重新设置整个属性。 下…

PCIe学习笔记(16)

层次结构(Hierarchy)ID Message (PCIe I/O 互连的树形拓扑结构称为 PCIe 的 Hierarchy,或称层级、层次(不是事务层、数据链路层的“层”)。层次区域是指与 RC 某一 RP 相关联的所有设备和链路组成的线路结…

【Linux课程学习】:对于权限的理解(粘滞位)

🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 这篇文章主要理解权限的概念,以及如何更改…

CSS:图片间空白间距问题的解决方案

一、问题描述 今天有小伙伴遇到多张图片排版显示时中间存在空白间隙&#xff0c;问如何处理&#xff1a; <div> <img width"100%" src"https:/xxx.png" id"1747098" style"max-width:100%;"><img width"100%&qu…

学习进行到了第十七天(2024.8.5)

1.Mybatis的定义 数据持久化是将内存中的数据模型转换为存储模型&#xff0c;以及将存储模型转换为内存中数据模型的统称。例如&#xff0c;文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。MyBatis 支持定制化 SQL、存储过程以及高级映射&#xff0c;可以…

【leetcode详解】另一棵树的子树 (C++递归:思路精析 过程反思)

思路详解&#xff1a; 总体框架&#xff1a; 对root树进行先序遍历&#xff0c;如果当前结点&#xff08;记为cur&#xff09;的值和subRoot的根节点值相等时&#xff0c;就开始判断 以cur为根节点的树 和 子树 是否结构一样? 如何判断两棵树是否结构完全相同&#xff1f; …

Docker Remote API未授权访问漏洞

9.Docker Remote API未授权访问漏洞 步骤一:使用以下Fofa语句对Docker产品进行搜索. port"2375" 步骤二:直接使用浏览器访问以下路径 /version#查看版本信息 /info#查看容器信息 漏洞修复 1.端口访问控制 对2375端口做网络访问控制&#xff0c;如设置iptables…

人工智能时代程序员生存法则

随着AIGC&#xff08;如chatgpt、midjourney、claude等&#xff09;大语言模型接二连三的涌现&#xff0c;AI辅助编程工具日益普及&#xff0c;程序员的工作方式正在发生深刻变革。有人担心AI可能取代部分编程工作&#xff0c;也有人认为AI是提高效率的得力助手。面对这一趋势,…

什么是亚马逊测评?亚马逊测评的技术要求有哪些?

今天将深入探讨亚马逊测评&#xff0c;这一备受关注的轻资产创业项目&#xff0c;吸引了众多创业者的目光。为了帮助大家更好地理解亚马逊测评&#xff0c;将回答一些常见问题&#xff0c;并分享相关知识。 什么是亚马逊测评&#xff1f; 亚马逊测评是为亚马逊商家提供的一项…

2011-2023各省数字普惠金融指数数据(覆盖广度、使用深度和数字化程度)

2011-2023各省数字普惠金融指数数据 1、时间&#xff1a;2011-2023年 2、指标&#xff1a;数字金融普惠指数、数字金融覆盖广度指数、数字金融使用深度指数、普惠金融数字化程度指数、数字金融使用深度指数下属的支付、保险、货币基金、信用服务、投资、信贷等分类指数 3、范…

【MATLAB源码-第242期】基于matlab的OFDM+QPSK系统莱斯信道Ricain信道估计仿真采用LS方法,输出误码率曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;正交频分复用&#xff09;是一种广泛应用于现代通信系统的多载波传输技术&#xff0c;其主要优点包括高频谱效率、抗多径衰落和抵抗频率选择性衰落。OFDM系统通过将高速数据流分割成多个低速数据流&#xff…

javascript:检测图片的宽高

1 方案描述 JavaScript提供了非常方便的FileReader和Image对象&#xff0c;可以帮助我们轻松实现这个功能。具体步骤如下&#xff1a; 获取文件输入框&#xff1a;首先&#xff0c;我们需要获取到用户选择的文件。读取文件内容&#xff1a;然后&#xff0c;通过FileReader对象…

Servlet概念理解和具体实现

目录 1、C/S架构和B/S架构 &#xff08;1&#xff09;C/S架构 &#xff08;2&#xff09;B/S架构 &#xff08;3&#xff09;B/S架构的技术原理 &#xff08;4&#xff09;CS/BS区别 &#xff08;5&#xff09;B/S技术的工作原理 &#xff08;6&#xff09;什么是URL …

华杉研发九学习日记24 线程同步 死锁 线程通信 线程池 Callable接口

华杉研发九学习日记24 java多线程 一&#xff0c;线程同步 1.1 线程同步问题 多个线程同时操作一个全局数据或静态数据时可能会造成数据冲突 解决&#xff1a; synchronized同步代码块synchronized同步方法使用锁对象加锁解锁 // 火车站卖车票 -- 100张 public class…

Django ASGI服务

1. ASGI简介 在Django中, ASGI(Asynchronous Server Gateway Interface)的引入使得Django应用能够支持异步编程. 从Django 3.0开始, Django就增加了对ASGI的支持, 但直到Django 3.1才正式推荐在生产环境中使用ASGI. ASGI是一个用于Python的异步Web服务器的标准接口, 它允许你运…

图解RocketMQ之消息如何存储

大家好&#xff0c;我是苍何。 人一辈子最值得炫耀的不应该是你的财富有多少&#xff08;虽然这话说得有点违心&#xff0c;呵呵&#xff09;&#xff0c;而是你的学习能力。技术更新迭代的速度非常快&#xff0c;那作为程序员&#xff0c;我们就应该拥有一颗拥抱变化的心&…