深度神经网络中的BNN和DNN:基于存内计算的原理、实现与能量效率

简介: 深度神经网络中的BNN和DNN:基于存内计算的原理、实现与能量效率

引言

深度神经网络(DNN)在机器学习领域越来越受欢迎,其在一系列任务中展现出最先进的性能。为了达到最佳结果,通常需要大量的训练数据和大型模型,从而使得训练和推理过程变得复杂。尽管图形处理单元(GPU)在许多应用中被用于提供并行计算能力,但较低能耗的平台有可能实现一系列新的应用。目前,一个趋势是降低权重和激活精度的能力,以前的研究表明,在某些情况下,权重和激活可以二值化(即二值化神经网络,BNN),从而显著减小模型尺寸。利用这一特点可以减少计算能量和数据传输能量。

内存计算体系结构

内存访问在能量和吞吐量方面是一个关键的瓶颈,无法通过传统的数字加速方法来解决。深度神经网络受到严重影响,因为其涉及到大模型尺寸,需要在内存中存储权重。这促使了内存计算方法的发展。尽管已经提出了各种方法,但它们的原理通常是通过对许多存储位访问来计算结果,从而逐个分摊访问原始数据的成本。

例如,传统内存一次只访问一行,而内存计算一次可以访问许多行(可能是所有行)。然而,这种平衡需要在许多位上进行计算,这通常会增加所需的动态范围。在现有的内存受限结构中,拟合计算通常需要模拟操作,从而降低计算的信噪比(SNR)。

下图,我们保留了一个标准的6T SRAM位单元,以最大限度地提高归一化效率和吞吐量,同时探索如何通过训练方法解决深度神经网络的计算SNR问题。通过修改存储位单元并采用电荷域运算,我们大幅提高了模拟计算的SNR,从而实现了最先进的规模和能源效率。

目前挑战主要有两个方向:(1)将权重值重置为1-b值;(2)针对位元变化和BL/BLB放电非线性的模拟MAC操作,产生各种非理想的因素。使用了增强的线性分类器,并在训练过程中采用约束分辨率回归(CRR)算法来适应1-b权重值。同时,他们利用错误自适应分类器增强(EACB)算法来克服模拟非理想。进一步发展到深度神经网络推理模型,以实现更高的精度。以上所采用的训练方法能够容忍有限的精度和模拟非理想。最近的内存计算架构进一步实现了1-8位的值和激活精度的可扩展性

深度神经网络(DNN)

深度神经网络的训练过程与其它机器学习算法类似,通常采用一种称为随机梯度的优化算法。

深度神经网络的结构如图2所示,每个“神经元”都是一个计算单元,接收N个输入x/n并在输入和可调权重w之间执行MAC操作。在这里,nr,re1,…R,其中R代表第1层的神经元总数,因此该层的输出维数也是R。值得注意的是,每一层的N必须等于前一层的N。在每个神经元中求和后,应用非线性函数·)产生输出激活al。对于下一层,激活作为输入,因此a→xn=r)。尽管图示了三层,但最终的输出层生成的激活.1通常对应于输出分类决策,例如,基于最高值的输出实现多类推理。

随机梯度的优化算法

随机梯度下降(SGD)是一种用于训练深度学习和机器学习模型的优化算法。其核心思想是通过计算模型参数的梯度,并乘以一个学习率来更新参数。SGD包括以下步骤:

  1. 向前传播:将训练数据输入到模型中,计算输出。
  2. 计算误差:通过代价函数表示输出与真实标签之间的差距。
  3. 向后传播:计算误差的梯度,以调整模型参数。
  4. 权重更新:根据梯度值更新模型参数。

SGD通常在处理大量训练样本(称为“批处理”)之前进行权重更新,以避免由于随机噪声导致的稳定性问题。可以通过控制批处理的大小来调整更新策略。此外,SGD可以采用多种随机方式进行更新,称为“epoch”,以实现增量权重更新。在推理阶段,只需执行前向传播以获得决策结果。

二值化神经网络(BNN)

二值化神经网络(BNN)是一种在深度学习模型中使用二进制权重和激活值的网络。在BNN的训练过程中,权重和激活值都是在正向传播过程中进行二值化的。然而,如果将梯度存储为二进制值,更新过程将变得困难,因此我们存储全精度的梯度。

在BNN中,由于激活函数的不连续性,需要使用新的导数函数。常用的成本函数有铰链损失等。为了进一步提高稳定性,提高收敛速度,并减少由于精度降低而导致的协方差偏移,建议在MLP训练过程中加入批归一化(batchnorm)。

BNN架构

我们考虑了一个二值化神经网络(BNN),其中每个神经元被视为一个函数,计算隐藏层的激活值。虽然重和激活值在隐藏层和输入层都是二值化的,但输入层并未二值化,而是使用5-b表示。

这个BNN架构使用MATLAB将MNIST图像从28x28缩小到10x10,并量化到5b,然后将其馈送到DNN的第一层。DNN包括两个隐藏层,每个隐藏层由96个神经元组成。每个神经元都是由一个SRAM列实现的,用于内存计算。

在BNN中,使用ReLU激活函数,并通过Theano库进行反向传播和重更新。使用基于平方铰链函数的损失函数,并使用ADAM自适应学习进行最小化。

在训练过程中,利用片上前向传播来获得一组可用于内存计算系推理的模型重。这不仅允许表示由于精度降低而导致的误差,还允许表示和通过重调优来解决由于模拟非理想而导致的误差。

基于 sram 的内存计算系统中各列偏移的硬件补偿,

首先,我们提出了一种基于硬件的补偿方法,用于减轻由比较器失配引起的每列偏移。这种方法已经在文献[6]中使用。如上图,我们使用8行SRAM进行补偿,尽管实际使用的系统具有32行。通过存储在这些行中的数据来对BIBLB放电进行偏置,其中偏置可以通过为该列存储的位单元值对每列进行完成。所有列的最优值可以使用二叉搜索算法高效且并行地确定。

在算法的开始,每列中的补偿位单元格的一半被设置为1,另一半被设置为0。当断言单词行时,补偿行名义上导致相等的BL/BL放电,因此比较器可以决定每列中的偏移量。补偿位单元的值被相应地调整,以抵消如图所示的偏移量,并重复此过程,调整存储值的数量是以前的一半,直到仅调整一行中的值。

最后,最终的偏移量对应于一个补偿行引入的放电偏置量。通过选择补偿行数和用于补偿行的字线电压,可以在补偿范围和补偿粒度之间实现平衡。因此,补偿字线电压与其他字线电压有选择地不同。

归一化

第二种方法涉及对 5-b输入图像数据进行归一化,以确保模拟偏置的某些一致性,从而减轻非线性的影响。例如,位单元电流和比较器偏置电压都是 BL/BLB 值的强函数。

系统演示

为进行系统演示,构建下图所示的4芯片系统。该系统与[27]中使用的系统类似,但设置和配置不同。在这个应用中,三层只需要四个芯片中的三个。在片上BNN 系统中,硬件只用于前向传播,无论是在训练还是测试中。如第三节所述,反向传播和权重更新由 Theano 处理。芯片和Theano之间的数据通过 matlab 控制的 DAO 交换。在此过程中,计算第 III-D 节中提到的批量归一化,从芯片获得的激活值a在发送到后续芯片之前被归一化并转换为5位数字。

总结

基于二值化值和激活的MNIST分类的BNN实现,利用标准6T SRAM位单元进行内存计算。通过使用这种方法,将神经网络中通常需要的MAC操作减少为逐位操作,从而大大减小了模型的大小,节约了能量,同时保持了存储在内存中的重量不变

随着人工智能和大数据时代的到来,深度神经网络(DNN)在计算机领域中得到了广泛应用。DNN具有较高的准确度和广泛的应用领域,如语音识别、图像识别等。然而,DNN的计算成本较高,需要大量的标记样本和计算时间。为了解决这一问题,随机梯度优化算法被提出,用于加快DNN的训练速度。同时,二值化神经网络(BNN)也被提出,通过减少神经网络中的权重和激活值的数量,降低计算和存储成本。在内存计算体系结构中,基于SRAM的内存计算系统可以提供高效的计算和存储能力,但需要对各列偏移进行硬件补偿。归一化操作也是DNN中不可或缺的一部分,能够有效提高模型的收敛速度和准确度。


说明:本文来自CSDN存内社区,原文作者:雪碧有白泡泡

https://segmentfault.com/a/1190000044623213

目录
相关文章
|
29天前
|
机器学习/深度学习 存储 算法
神经网络分类算法原理详解
神经网络分类算法原理详解
51 0
|
1月前
|
人工智能 安全 网络安全
云端之盾:融合云计算与网络安全的未来防线
随着企业数字化转型的加速,云计算作为支撑现代业务架构的关键平台,其安全性成为不容忽视的核心议题。本文探讨了云计算环境中面临的安全挑战,并分析了如何通过创新的安全技术和策略来强化云服务的网络防御。我们着重讨论了多因素认证、加密技术、入侵检测系统以及行为分析等关键技术在维护信息安全中的应用和实践。此外,本文还提出了一个综合性的云安全框架,旨在为组织提供一套全面的指导原则和最佳实践,以保护其云资源免受不断演变的网络威胁。
|
20天前
|
运维 Kubernetes Cloud Native
探索Kubernetes的大二层网络:原理、优势与挑战🚀
在云原生领域,Kubernetes (K8s) 已经成为容器编排的事实标准☁️📦。为了支撑其灵活的服务发现和负载均衡🔍🔄,K8s采用了大二层网络的设计理念🕸️。本文将深入探讨大二层网络的工作原理、带来的好处✨,以及面临的挑战和解决方案❗🛠️。
探索Kubernetes的大二层网络:原理、优势与挑战🚀
|
1月前
|
机器学习/深度学习 安全 网络安全
云端防御战线:融合云计算与网络安全的未来策略
【2月更文挑战第29天】 随着企业数字化转型的加速,云计算已成为支撑现代业务的关键基础设施。然而,伴随其快速发展的是不断增长的网络安全威胁。本文旨在探讨云计算环境中的网络安全挑战,并提出一系列创新策略以强化信息安全。文中不仅分析了云服务模型特有的安全风险,还提出了综合多层次防护措施,包括数据加密、身份认证、入侵检测系统以及安全合规性等方面。通过这些策略的实施,可以显著提升云环境的安全性,确保企业能够在享受云计算便利的同时,有效防范网络攻击和数据泄露。
|
8天前
|
安全 数据建模 网络安全
深入理解SSL数字证书:定义、工作原理与网络安全的重要性
本文阐述了SSL数字证书在网络安全中的关键作用,定义了其作为验证服务器身份的数字凭证,基于PKI体系保障数据传输安全。文章介绍了三种类型的证书,包括DV、OV和EV,适用于不同安全需求的网站。获取和安装证书涉及向证书颁发机构申请并部署到服务器。在网络安全挑战下,正确使用和管理SSL证书对于保护用户数据和提升信任度至关重要。
|
11天前
|
人工智能 安全 网络安全
云端防线:融合云计算与网络安全的未来之路
【4月更文挑战第16天】 在数字化浪潮的推动下,云计算已成为企业架构转型的核心力量。然而,随之而来的是对网络安全的严峻考验。本文将深入探讨云计算环境中的网络安全挑战,并分析云服务提供者和使用者如何通过技术创新和策略调整来强化数据保障。文章还将讨论最新的信息安全趋势,如零信任网络、加密技术的进步以及人工智能在安全防护中的应用。
|
15天前
|
安全 网络协议 网络安全
网络原理(5)--HTTPS是如何进行加密的
网络原理(5)--HTTPS是如何进行加密的
11 0
|
15天前
|
存储 JSON 前端开发
网络原理(4)HTTP协议(下)
网络原理(4)HTTP协议
27 0
|
19天前
|
传感器 监控 安全
|
24天前
|
云安全 安全 网络安全
云端防御战线:融合云计算与网络安全的未来策略
【4月更文挑战第4天】 在数字化时代,云计算已成为企业运营的关键驱动力,而网络安全则扮演着保护数据不受威胁的重要角色。随着云服务的广泛应用和网络攻击手段的不断升级,传统的安全措施已无法完全应对新兴的挑战。本文将深入探讨云计算环境下的网络安全问题,分析信息安全的最佳实践,并提出一系列创新策略,以增强企业在享受云计算便捷性的同时,确保信息资源的安全。
13 1