论文:深度可分离神经网络存内计算处理芯片

news2025/1/24 5:39:55

引言:SRAM - CIM芯片在处理深度可分离神经网络时面临的挑战

深度可分离卷积(Depthwise separable convolution, DSC)由逐深度卷积(DW)和逐点卷积(PW)组成,逐深度卷积用于提取空间特征,逐点卷积用于提取通道特征,如图1所示。简而言之,逐深度卷积的深度维度不变而改变H/W,即输入特征图通道数=卷积核个数=输出特征图个数;逐点卷积的H/W不变而改变深度维度,即用1x1的卷积核进行升维[2]。相较于传统的卷积神经网络,深度可分离卷积具有如下四个优势:

  1. 更少的参数:可减少输入通道数量,从而有效地减少卷积层所需的参数;
  2. 更快的速度:运行速度比传统卷积快;
  3. 更加易于移植:计算量更小,更易于实现和部署在不同的平台上;
  4. 更加精简:能够精简计算模型,从而在较小的设备上实现高精度的运算。

图1 深度可分离卷积[1]

因此参数量更少的深度可分离卷积神经网络更容易部署在边缘AI设备上。但是目前基于SRAM的存算一体芯片大多只针对DW和PW中的一种优化了乘累加操作(MAC),所以SRAM-CIM芯片在能量效率、吞吐量和内存利用率方面仍然面临着限制,如图2(左)所示:( 1 )内存能量利用率低,主要由于从CIM宏块外的缓存中重复访问,占总能耗的30 %以上;( 2 )短长度MAC和卷积滑动激活导致数组时间利用率差,增加推理执行周期;( 3 )由于DW卷积对输入和输出激活的重复存储,导致内存空间利用率不足,造成双重内存开销。

图2 SRAM-CIM在处理深度可分离神经网络方面面临的挑战

针对上述挑战,来自北京大学集成电路学院王源教授-唐希源研究员团队首次提出了近存计算与存内计算混合的新型计算架构,针对深度可分离卷积计算,实现了国际领先的能量效率和面积效率,且该项工作以MixCIM: A Hybrid-Cell-Based Computing-in-Memory Macro with Less-Data-Movement and Activation-Memory Reuse for Depthwise Separable Neural Networks为题,发表于2024 CICC。如图2(右)所示,文章提出了三个创新点:

  1. 可滑动eDRAM阵列增强DW卷积并行性以减少推理执行周期;
  2. 混合内存计算,通过CNM原理将激活输入到权重的CIM数组中,以提高能量效率;
  3. 输入和输出激活之间的内存共享方案,以提高有效内存利用率。

课题组在28nm CMOS工艺下流片进行性能测试,该芯片能够达到17.2 TOPS/W的能量效率和1.14 TOPS/mm2的面积效率,实现92.47%的推理精度。该芯片突出的能量效率和面积效率在边缘端智能设备中极具应用前景。

论文地址:https://ieeexplore.ieee.org/document/10529086

  • 深度可分离神经网络存内计算处理芯片

创新点一:可滑动eDRAM阵列提升 DW 卷积并行性

如图3所示,MixCIM 包含 144×128 的 7T2C eDRAM CIM 阵列和 8T1C SRAM 阵列,二者通过融合模块相连。eDRAM - CIM 阵列有 16 个 深度卷积通道(DCCs),可存 DW 卷积中 16 通道的激活值与权重,每个 通道的激活值(DCC - A) 含 3 个 卷积滑动窗口电路(CSWCs),能同时计算 3 组子特征卷积。eDRAM 存储单元由 2T1C 存储、3T 读出和 2T1C 计算部分组成,实现读写分离并支持符号数值计算,为卷积计算提供便利架构与功能支持。

图3 电路的总架构以及可滑动eDRAM阵列

融合电路的映射模块含两组 3 - to - 1 开关,由 SLD_HOZ [2:0] 和 SLD_VER [2:0] 信号控制水平和垂直滑动,确保卷积窗口准确滑动。CSWC 中的局部滑动电路通过 tri - state inverter 连接 LRBL 和 LBL,可选择目标 WWL 和源 RWL 进行刷新,在 eDRAM 刷新和卷积窗口滑动中,能准确传输数据并存储计算结果,保障卷积计算的连续性与数据完整性。

流水线操作分两阶段,第一阶段第 i 个通道激活数据卷积滑动时,第 (i + 1) 个通道可同时进行 MAC 操作;第二阶段任务切换,形成连续作业流程。与传统非流水线方式相比,该方式显著提高计算资源利用率,减少计算单元空闲等待时间,大幅提升数据处理速度。经实际测试,在相同条件下,其处理速度可能是传统方式的 1.5 倍甚至更高,有效提升 MixCIM 在 DW 卷积中的吞吐量,且提升倍数因模型和场景而异。

创新点二:混合内存计算减少数据移动

在 MixCIM 中,近内存计算(CNM)与存内计算(CIM)融合是实现高效计算的关键,依据 CNM 原理,激活值被输入到权重的 CIM 阵列中。由图3所示,在计算时,激活值从 DCC-A 出发,经过融合模块与从 DCC-W 中检索出的权重进行匹配,完成乘积累加(MAC)操作。这种路径优化避免了激活值和权重在不同存储区域和计算单元间的长距离传输。结合图3,由于 eDRAM 具有较低的访问能耗,且在 MixCIM 结构中数据移动距离短,减少了数据传输过程中的能量消耗,从而提升了系统能效。

符号位调制(SBM)电路在符号数值计算中也发挥了重要作用。在图 4 中,可以看到在 eDRAM 阵列中,一个多位权重单元(MbWU-D)由 8 个 7T2C bitcells 和一个 SBM 电路组成。首先,SBM 电路负责确定乘积的符号位,并根据符号位将输入(IN)连接到 Q 或 QB 计算路径进行位反转。然后,符号位作为权重配置电路中按位模拟累加的最低有效位(LSB)值,完成从补码格式到符号数值编码的转换。

图 4 用于在高斯分布下提高符号数值计算能效的 eDRAM 和 SRAM 的多位权重单元(MbWU)

这种符号数值计算方式具有节能优势。在模型参数服从高斯分布的情况下,符号数值计算的电压切换活动更少。因为传统的补码计算在

处理负数时,需要进行复杂的位运算来表示负数,而符号数值计算直接分离符号位和数值位,简化了计算过程中的电压变化。图5实验结果也验证了这一点,符号数值计算单元相较于 2 的补码计算,功率降低了 21.5%,有效减少了计算过程中的能量消耗,进一步提升了 MixCIM 在深度可分离卷积计算中的能效,这一优势从图 4 展示的位单元和 SBM 电路的协作关系中可得到更清晰的理解。

图 5不同阵列尺寸下 SRAM 读写与 eDRAM 读写的访问能耗对比及输入访问能耗降低情况

创新点三:内存共享提高内存利用率

在 MixCIM 架构中,DW 卷积完成后,输出激活数据可存储于空闲 eDRAM 位单元或覆盖输入激活通道中不再需用的部分。如图 6的 eDRAM CIM 阵列,DCC - A 存储输入激活值,卷积结束后,部分输入值使命完成,输出激活值便可复用其空间,就像房间物品腾挪复用空间。此策略避免为输出激活值另辟内存,显著减少内存开销。在边缘 AI 设备等内存受限场景,可让设备在不增内存成本下,加载更大模型或处理更高分辨率图像,提升性能与适用范围。

图 6基于 eDRAM 的存内计算(CIM)

此外,内存共享策略与可滑动 eDRAM 阵列紧密配合。从图 7 能看出,可滑动 eDRAM 阵列在执行卷积计算时,产生的中间及最终结果都依据内存共享策略存储复用。在进行 DW 卷积时,输入特征被划分为多个 3×3 子特征,每次计算完一个子特征的卷积结果,可直接存储到按策略分配的 eDRAM 区域,同时不影响阵列继续滑动计算下一个子特征。而且,该策略与混合内存计算协同良好。在图 3 展示的架构中,激活值按近内存计算(CNM)原理输入权重的 CIM 阵列计算后,产生的输出激活值存储复用同样遵循内存共享策略,保证数据在存储和计算单元间高效流转。

图 7深度卷积激活滑动机制:特征划分、滑动操作及权重激活映射详解

在计算效率方面,内存共享策略减少了内存分配和释放带来的时间开销,优化数据存储位置。从图 8 的计算流程可以看出,数据能快速被计算单元访问,加速卷积计算,让计算过程连贯高效。在能效层面,减少内存读写次数和空间分配,降低系统功耗,这对依靠电池供电的移动设备等功耗敏感设备极为有利。在系统可扩展性上,提升的内存利用率使系统能处理更大规模数据和复杂模型。随着神经网络模型不断发展,MixCIM 能更好适应新模型需求,延长系统的使用寿命和应用场景,为深度可分离卷积的高效实现提供有力支持。

图 8 深度卷积与卷积滑动流水线:结构、流程及性能增益解析

  • 实验评估

为了验证MixCIM架构的性能,研究团队选用了MobileNet-V2作为测试模型。MobileNet-V2具有轻量级的特点,是常见的移动和嵌入式应用场景下的基准测试模型。该模型在ImageNet数据集的输入分辨率一般设定为224×224,深度乘子和宽度乘子均为1.0,整个模型的参数量约为350万,计算量约为3亿次MAC操作。在性能指标方面,论文重点关注了能量效率、计算精度和内存利用率。能量效率以TOPS/W为单位,体现了芯片在单位功耗下执行MAC操作的效率;计算精度则通过在 ImageNet 数据集上的 Top-1 和 Top-5 准确率来评估模型的推理性能;内存利用率指的是存储单元阵列中实际用于存储模型权重的比例,反映了存储资源的有效利用程度。

实验结果表明,MixCIM能够实现每秒约 1000 帧的处理速度,满足了大部分实时应用场景对算力和延时的要求。得益于 MixCIM 架构的几个关键创新点,混合信号计算单元综合了模拟电路和数字电路在MAC与数据处理方面的灵活性,显著提升了能量效率并达到了 5 TOPS/W。为了更全面地评估 MixCIM 架构的其他性能,论文将其与其他同类型的工作进行了比较。在计算精度方面,MixCIM在ImageNet数据集上使用CIFAR10实现了最高92.47 %的准确率,与一般的数字电路实现方式相近。权重存储策略减少了数据在芯片内部的搬运开销,使得MixCIM的内存利用率最高可提高32.4%,实现了较同类设计2.19倍的计算加速效果。

图9  MixCIM在计算加速方面领先于同类产品

图10  MixCIM的功耗分布

综上所述,MixCIM 架构在移动设备、嵌入式系统以及边缘计算等领域具有广阔的应用前景,有望显著降低功耗、延长电池续航时间,并提升实时性能。

参考资料

  1. 四、CNNs网络架构-深度可分离卷积(MobileNet v1、MobileNet v2、MobileNet v3、Xception、ShuffleNet v1、ShuffleNet v2)_retinaface 瓶颈结构-CSDN博客
  2. 深入浅出理解深度可分离卷积(Depthwise Separable Convolution)_dwconv-CSDN博客
  3. MixCIM: A Hybrid-Cell-Based Computing-in-Memory Macro with Less-Data-Movement and Activation-Memory-Reuse for Depthwise Separable Neural Networks | IEEE Conference Publication | IEEE Xplore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281235.html

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

相关文章

代码随想录刷题day14(1)|(链表篇)142.环形链表 II

目录 一、链表理论基础 二、环形链表思路 1.如何判断有环? 2.如何找出环的入口? 3.其他疑问 三、相关算法题目 四、总结 一、链表理论基础 代码随想录 (programmercarl.com) 二、环形链表思路 1.如何判断有环? 使用快慢指针法&…

运算放大器应用电路设计笔记(六)

6.1输出失调电压发生的原因与计算 6.1.1用噪声增益进行评价 若运算放大器两个输入端接地,则理想运放输出为零,但实际的运放输出不为零,有一定的直流输出电压。这种直流电压称为输出失调电压。发生的原因是,运算放大器内部元件尤…

openresty(nginx)+lua+kafka实现日志搜集系统

今天我们来实现一下快捷的nginx日志搜集系统,主讲的是nginx服务里面的openresty的日志搜集。采用的手段是采用lua做中间桥梁。 一、安装openresty 具体安装步骤在这里《centos7 二进制安装openresty》 二、安装kafka 1、安装Java及配置Java 具体安装步骤在这里《采…

PortSwigger靶场练习---网页 LLM 攻击:间接提示注入

网页 LLM 攻击: Indirect prompt injection 间接提示注入 PortSwigger靶场地址: Dashboard | Web Security Academy - PortSwigger 题目: 官方提示: 发现攻击面 点击实时聊天以访问实验室的聊天功能。 询问LLM它有权访问哪些 AP…

【2024.12】西电英语听说雨课堂期末考试答案

前言 这次的英语听说1和2雨课堂期末是同一张卷子。 26-40为填空题,后面有些话太长了 37. when they are physicial active 38. people could need two times as much water as others do 39. why people have the idea that good health requires eight…

人声检测原理VAD

在机器人的研究中,机器人与人语音交互是一个重要的功能,在语音交互中,人声检测至关重要。不论是在手机中,还是在esp32芯片上,都需要一种简单快捷的方式来检测本地语音,滤掉杂音和噪音。 机器人启动后会一直…

2_高并发内存池_各层级的框架设计及ThreadCache(线程缓存)申请内存设计

一、高并发内存池框架设计 高并发池框架设计,特别是针对内存池的设计,需要充分考虑多线程环境下: 性能问题锁竞争问题内存碎片问题 高并发内存池的整体框架设计旨在提高内存的申请和释放效率,减少锁竞争和内存碎片。 高并发内存…

后端开发基础——JavaWeb(Servlet)

Servlet 关于系统架构 系统架构包括什么形式? C/S架构 B/S架构 C/S架构? Client / Server(客户端 / 服务器) C/S架构的软件或者说系统有哪些呢? QQ(先去腾讯官网下载一个QQ软件,几十MB&…

c++ 与 Matlab 程序的数据比对

文章目录 背景环境数据保存数据加载 背景 ***避免数据精度误差&#xff0c;快速对比变量 *** 环境 c下载 https://github.com/BlueBrain/HighFive 以及hdf5库 在vs 中配置库 数据保存 #include <highfive/highfive.hpp> using namespace HighFive;std::string fil…

Leecode刷题C语言之收集所有金币可获得的最大积分

执行结果:通过 执行用时和内存消耗如下&#xff1a; int dfs(int node, int parent, int f, int* coins, int k, int **children, int *childCount, int **memo) {if (memo[node][f] ! -1) {return memo[node][f];}int res0 (coins[node] >> f) - k;int res1 coins[no…

mybatis(57/134)

今天没什么想法&#xff0c;搭了个转账平台&#xff0c;加深了点之前javaweb的mvc架构的印象&#xff0c;还有异常的抛出处理等

ONNX 简介

ONNX &#xff08;Open Neural Network Exchange&#xff09;是一套表示深度神经网络模型的开放格式&#xff0c;由微软和 Facebook 于 2017 推出&#xff0c;然后迅速得到了各大厂商和框架的支持。目前&#xff0c;在数家机构的共同维护下&#xff0c;ONNX 已经对接了多种深度…

Linux的中断上半部和中断下半部的概念,并利用任务队列(Tasklet)实现中断下半部的处理

中断上半部和中断下半部的介绍 在Linux内核中&#xff0c;中断处理机制被设计成“中断上半部&#xff08;Top Half&#xff09;”和“中断下半部&#xff08;Bottom Half&#xff09;”两个部分&#xff0c;这种设计主要目的是提高系统的中断响应效率&#xff0c;同时减少中断…

数学规划问题2 .有代码(非线性规划模型,最大最小化模型,多目标规划模型)

非线性规划模型 FIrst:转化为标准型 在matlab中求非线性规划的函数 练习题: 典型例题: 最大最小化模型 核心思想&#xff1a; matlab的模型求解 经典例题: 多目标规划模型 基本概念 求解思路: 模型构建步骤 经典例题: 非线性规划模型 非线性规划&#xff08;Nonl…

linux 下tensorrt的yolov8的前向推理(c++ 版本)的实现

一、环境搭建 cuda 11.4 ubuntu 20.04 opencv-4.5.2 1.1 配置tensorrt 根据本机的硬件配置及cuda的版本&#xff0c;选择TensorRT-8.6.1.6的版本&#xff0c;下载网址为: TensorRT SDK | NVIDIA Developer 根据官网的说明&#xff0c;下载对应的压缩包即可。解压后&…

VUE elTree 无子级 隐藏展开图标

这4个并没有下级节点&#xff0c;即它并不是叶子节点&#xff0c;就不需求展示前面的三角展开图标! 查阅官方文档如下描述&#xff0c;支持bool和函数回调处理&#xff0c;这里咱们选择更灵活的函数回调实现。 给el-tree结构配置一下props&#xff0c;注意&#xff01; :pr…

windows git bash 使用zsh 并集成 oh my zsh

参考了 这篇文章 进行配置&#xff0c;记录了自己的踩坑过程&#xff0c;并增加了 zsh-autosuggestions 插件的集成。 主要步骤&#xff1a; 1. git bash 这个就不说了&#xff0c;自己去网上下&#xff0c;windows 使用git时候 命令行基本都有它。 主要也是用它不方便&…

Glary Utilities Pro 多语便携版系统优化工具 v6.21.0.25

Glary Utilities是一款功能强大的系统优化工具软件&#xff0c;旨在帮助用户清理计算机垃圾文件、修复系统错误、优化系统性能等。 软件功能 清理和修复&#xff1a;可以清理系统垃圾文件、无效注册表项、无效快捷方式等&#xff0c;修复系统错误和蓝屏问题。 优化和加速&…

【Python使用】嘿马python基础入门全体系教程第12篇:__init__()方法,说明:【附代码文档】

本教程的知识点为&#xff1a;计算机组成 计算机是由什么组成的&#xff1f; 1. 硬件系统&#xff1a; 2. 软件系统&#xff1a; 目标 运算符的分类 1. 算数运算符 2. 赋值运算符 3. 复合赋值运算符 判断语句和循环语句 if嵌套 1. if嵌套的格式 2. if嵌套的应用 if嵌套执行流程…

从入门到精通:RabbitMQ的深度探索与实战应用

目录 一、RabbitMQ 初相识 二、基础概念速览 &#xff08;一&#xff09;消息队列是什么 &#xff08;二&#xff09;RabbitMQ 核心组件 三、RabbitMQ 基本使用 &#xff08;一&#xff09;安装与环境搭建 &#xff08;二&#xff09;简单示例 &#xff08;三&#xff09;…