首页 > 编程语言 >硬件算法协同优化-嵌入式深度学习3

硬件算法协同优化-嵌入式深度学习3

时间:2024-03-29 20:22:56浏览次数:24  
标签:存储 权重 MAC times 硬件 算法 嵌入式 输入 能耗

嵌入式深度学习-硬件与算法协同优化

本系列博客主要以Bert Moons《Embedded Deep Learning》翻译而成

Goetschalckx K, Moons B, Lauwereins S, Andraud M, Verhelst M (2018) Optimized hierarchical cascaded processing. IEEE J Emerging Sel Top Circuits Syst. https://doi.org/10.1109/JETCAS.2018.2839347

简介

硬件-算法协同优化主要利用神经网络的三个特性:

  1. 数据流优化:并行计算、数据重用
  2. 网络的稀疏性:很多模型权值为0或很小,或者数据经过某些节点以后会直接变为无用值
  3. 容错性:深度学习具有鲁棒性,对数据的误差不敏感

提高效率的技术概述-中文

利用网络结构

抛弃通用处理器,开发专门针对目标算法的定制化硬件加速器来提高算法评估的能效,充分利用算法中已知的数据流来实现算法的并行执行最小化数据搬运,如TPU

在一个网络层中的许多计算共享公共输入。每个权重参数在输出张量的同一切片的多次卷积中被重复使用大约 \(M_2\) 次,而每个输入数据点在输出张量的 \(F\) 个不同切片中被重复使用。此外,中间累加结果 \(o\) 必须累积 \(C \times k^2\) 次。在定制的加速器中可以以多种方式利用这一点进一步提高效率,超越高度并行但未经数据流优化的GPU。

  1. 数据复用可以通过 在多个并发的执行单元上复用同一数据,或在同一执行单元的不同时隙中复用数据利用 实现。可以区分为3种极端情况。但实际上大多数实现方式都是混合形。

    • 在“权重并行”或“输入固定”的方法中(图3.3),同一输入数据与同一层的不同输出通道的若干权重相乘。在理想情况下,每个输入只需加载一次到系统中。然而,这对权重存储带宽(weight memory bandwidth)不利,因为每次产生新的输入时,都需要频繁地重新加载权重。此外,输出结果的累加(accumulation)不能在不同的时钟周期中完成,需要将中间结果缓存到存储器中以便之后重新取回,这严重影响了输入/输出存储器带宽(input/output memory bandwidth)。
    • 权重固定”或“输入并行”的方法改善了权重存储带宽,但以输入存储带宽为代价。这里每个权重只需获取一次,并与许多输入值相乘。
    • 输出固定”的方法在每个时钟周期重新加载新的权重和输入,并且能够在不同的时钟周期内累加中间结果,从而有利于输出的存储带宽。

    数据复用的几种方式
    图中BW为带宽的意思

  2. 减少连续数据提取的能耗负担的一种补充方法是利用时间数据局部性来降低每次数据提取的能耗。大多数实际的深度网络需要非常多的权重和输入/输出内存(Mbytes to Gbytes),无法将它们全部放入芯片内存中,因此需要从能耗高昂的外部DRAM进行提取。与传统处理器类似,这可以通过一个或多个层次的芯片内SRAM或寄存器文件的内存层次结构来缓解。经常访问的数据可以被存储在本地,以降低其提取成本。与通用解决方案相比,一个重要的区别是内存层次结构中的内存大小可以根据网络的结构进行优化

使用多级缓存

  1. 利用局部性的另一种方法是存内计算,即将计算集成在存储阵列内部,如在电阻式存储技术或闪存存储器中。

利用稀疏性

神经网络具有稀疏性。AlexNet超过70%的激活值为零。在降低位宽计算时,也有一些权重值被量化为零。使用ReLU、L1或L2正则化也可以使权重减为0或较小值

  • 硬件方面,可以通过以下方式利用:
    1. 避免与0进行任何乘加运算
    2. 不从内存中获取0值数据
    3. 使用Huffman或其他类型的编码压缩片上或片外的数据流
  • 算法层面,可以进行模型剪枝等操作。

利用容错性

  1. 使用低精度进行推理
  2. 在高能效的近阈值区域操作电路

低精度神经网络中的能量增益

通过调节精度利用神经网络的容错性,可以降低数字电路的有功功耗。这里提供一个基本的能耗模型。

一个数字系统的总功耗由动态功耗和漏电功耗两部分组成:

\[P = \alpha CfV^2 + P_{leakage} \]

其中,\(\alpha\) 是电路的翻转率, \(f\) 是时钟频率,\(C\) 是总开关电容, \(V\) 是电源电压。通过调节精度(即动态缩放编码网络权重和输人的比特数),可以大大减少翻转率\(\alpha\) 。图3.6b说明了在典型数字乘法器中可实现的能量-准确率的折中。请注意,在1%均方根误差(RMSE)下,可以实现12倍能量增益。由于神经网络具有容错性,在这样的 RMSE下中间计算的性能可能不会降低。

图3.6b

图3.6b

能耗模型

图3.7 能耗模型

换句话说,通过降低神经网络的精度,可以减少开关活动度和总开关电容,从而降低动态功耗。此外,较低的精度还可以减少每一步计算所需的时钟周期数,进一步降低了总功耗。这些减少共同导致了显著的能量增益。
然而,降低精度也会引入一定的准确性损失。因此,为了平衡能量效率和模型精度之间的权衡,需要仔细选择最佳的精度级别。在实际应用中,根据具体的应用需求和系统要求来确定最佳的精度级别是非常重要的。

每次推理的全局能耗是与片外 DRAM 访存所消耗的能量和处理平台本身的能耗之和。因此,每个网络推理的总能耗为:

\[E_{inf} = E_{DRAM} + E_{HW} \]

片外存储器访问能耗

由于成本和漏电能耗的限制,常开芯片中的可用存储经常是有限的,因此通常不足以存储完整的模型和特征图。这种情况下,芯片将不得不频繁地与片外的存储系统进行通信。这样的接口成本要比一个等效的 MAC 操作高出两个数量级。如果实现的网络压缩可以使得网络完全存储在片上存储中,那么使用较少的比特位宽对权重和激活进行量化就有可能具有更高的能效。访问片外 DRAM 的能耗可以建模如下:

\[E_{DRAM} = E_D \times (s^2_{in} \times c_{in} \times M/Q + 2 \times f_{re−fetch} + w_{re−fetch}) \]

其中,\(E_D\)是每intQ DRAM访问所消耗的能量,如图3.7所示;\(s_{in}\),\(c_{in}\) 和\(M/Q\)分别是输入图像的尺寸,输入通道的数量以及第一层因数(见3.4.1节);\(f_{re-fetch}\)和\(w_{re-fetch}\)是间特征图或模型无法完全存储在片上的情况下必须从 DRAM 重新读取 /存储的字数。这些因素取决于所使用的切分方案和可用的片上存储容量。

硬件平台的一般性建模

如图 3-7 所示的硬件平台是一个典型的面向 CNN 的处理平台。它包含一个并发的神经元阵列,包含一个有\(p\)个MAC 单元和两级片上 SRAM 存储的固定区域。
硬件平台如图3.7所示,是一个典型的卷积神经网络的处理平台。它包含一个并行的神经元阵列,其中有固定面积的p个MAC单元和两级片上SRAM内存。一个大的主缓冲区可存储 \(M_W\) 位的权重和 \(M_A = M_W\) 位的激活,其中50%用于当前层的输入,50%用于当前层的输出。小的本地SRAM缓冲区包含当前使用的权重和激活。我们模拟了SRAM读取和乘-累加(MAC)操作的相对能量消耗。在这里,读出/写入小的本地SRAM的能量消耗 \(E_L\) 被建模为单个MAC操作 \(E_{MAC}\) 的能量,而访问主要SRAM的成本为 \(E_M = 2 \times E_{MAC}\)。其他操作,如添加偏置(bias)、量化ReLU和非线性批归一化,也被建模为成本 \(E_{MAC}\) 。所有这些数字都包含了控制、数据传输和时钟开销。每次推理的芯片上总能量是计算能量 \(E_C\) 和权重访问成本 \(E_W\)以及激活访问成本 \(E_A\) 的总和。在28纳米技术下测得16位操作的能量\(E_{MAC} = 3.7 \text{pJ}\)。根据(Horowitz 2014),对SRAM缓冲区进行读/写操作的能量消耗被建模为 \(E_{SL} = 2E_{MAC}\) 和 \(E_{SM} = 10E_{MAC}\)。全局能量消耗为:

\[E_{HW} = E_C+E_W+E_A \]

\[E_C = E_{MAC}(Q) \times N_c + E_{MAC}(16) \times 3 \times A_s \]

\[E_W = E_M \times N_s + E_L \times N_c/\sqrt{p} \]

\[E_A = 2 \times E_M \times A_s + E_L \times N_c/\sqrt{p} \]

\(E_C\) 是在部分积生成、偏置、批归一化和激活过程中消耗的所有能量的总和。通过评估网络复杂性(即必要的MAC操作数量)\(N_c\) 可以计算出这个值。偏置、批归一化和激活函数在每个输出特征上都以高精度(16位)执行,因此乘以因子 \(3 × A_s\)。\(N_s\)是权重和偏置的模型大小,\(A_s\)是整个网络中的中间输出特征总数。权重从主缓冲区传输一次到本地缓冲区,然后从那里重复使用。\(E_W\) 这里 \(\sqrt{p}\) 是一个更少的内存能量是由于激活的并行,一个权重可以同时作用于 \(\sqrt{p}\) 个激活上。同样的方程式也适用于 \(E_A\) ,因为激活从主缓冲区获取/存储。本地激活获取的数量减少了 \(\sqrt{p}\) ,因为一个激活与 \(\sqrt{p}\) 个权重同时相乘。总并行度p是这些方程式中的一个变量。任何芯片上的存储器都可以存储不同数量的权重和激活,取决于Q的值。一个2Mb的存储器可以存储超过2M个1位权重,但只能存储131k个16位权重。如果权重大小或特征图大小超过可用的芯片存储器大小,将需要与更大的片外DRAM存储器进行通信,如第3.2.1节所讨论的。

标签:存储,权重,MAC,times,硬件,算法,嵌入式,输入,能耗
From: https://www.cnblogs.com/xiangcaoacao/p/17681324.html

相关文章

  • 代码随想录算法训练营第六十天 | 84.柱状图中最大的矩形
      84.柱状图中最大的矩形 已解答困难 相关标签相关企业 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为1。求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例1:输入:heights=[2,1,5,6,2,3]输出:10......
  • 蓝桥杯嵌入式之AT24C02各种数据的读写
    一、1字节8为的读写u8a=10;u8temp;eeprom_write(0x00,a); temp=eeprom_read(0x00); sprintf(text,"  temp=%d ",temp);      LCD_DisplayStringLine(Line1,(u8*)text);      memset(text,'\0',strlen(text));二、对于uint16_t、int16_t......
  • 优化的层次级联处理-嵌入式深度学习2
    嵌入式深度学习-优化的层次级联处理本系列博客主要以BertMoons《EmbeddedDeepLearning》翻译而成GoetschalckxK,MoonsB,LauwereinsS,AndraudM,VerhelstM(2018)Optimizedhierarchicalcascadedprocessing.IEEEJEmergingSelTopCircuitsSyst.https://doi.o......
  • 机器人姿态估计-IMU、互补滤波算法应用+C代码实现
    机器人姿态估计-IMU、互补滤波算法应用附赠自动驾驶学习资料和量产经验:链接机器人的姿态测量对于许多应用至关重要,如导航、运动控制等。在这篇文章中,我们将介绍如何利用MPU6050传感器以及互补滤波和卡尔曼滤波算法来实现自平衡车的姿态测量。我们将从原理出发,逐步介绍互补滤波......
  • 代码随想录算法训练营第二十四天(回溯1)|77. 组合(JAVA)
    文章目录回溯理论基础概念类型回溯模板77.组合解题思路源码回溯理论基础概念回溯是递归的副产品,本质上是一种穷举回溯解决的问题可以抽象为一种树形结构类型回溯主要用来解决以下问题组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定......
  • 代码随想录算法训练营第二十三天(二叉树9)|669. 修剪二叉搜索树、108. 将有序数组转换为
    文章目录669.修剪二叉搜索树解题思路源码108.将有序数组转换为二叉搜索树解题思路源码538.把二叉搜索树转换为累加树解题思路源码669.修剪二叉搜索树给你二叉搜索树的根节点root,同时给定最小边界low和最大边界high。通过修剪二叉搜索树,使得所有节点的值......
  • 夏季水域安全管理,AI智能识别算法防溺水视频监控方案
    随着夏季的到来,不少人为了一时的痛快凉爽就私自下水游泳,特别是在野外池塘,由于长期无人监管,极易发生人员溺亡事件,如何对池塘水域进行全天候无人值守智能监管,并实现发生人员闯入就立即告警?旭帆科技防溺水智能视频监管方案给出答案。1、视频监控布局在水域附近进行视频监控设备的......
  • 代码随想录算法训练营第五十九天 | 42. 接雨水,503下一个更大元素
    503.下一个更大元素II 已解答中等 相关标签相关企业 给定一个循环数组 nums ( nums[nums.length-1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的......
  • TSINGSEE青犀多模型、算力调度与智能分析AI算法中台介绍及应用
    TSINGSEE青犀AI算法中台是一款平台型产品,专注于提供各行业中小场景中部署解决方案。平台具备接入广、性能强、支持跨平台、芯片国产化等特点,可提供丰富的视图接入能力和智能分析能力。平台将不同类型、不同协议前端设备,支持通过不同网络环境进行传输、汇聚、处理,并能在平台内部进......
  • 保障安全的散列算法 - SHA256
    引言SHA-256是由美国国家安全局(NSA)开发的SHA-2密码哈希函数之一,用于数字签名和区块链。在计算机科学和信息安全领域,SHA-256(安全哈希算法256位)是广受欢迎且常被使用的密码学散列函数。SHA-256产生一个唯一、定长的256位(32字节)散列值,不仅可以用于密码学中信息的安全......