忆阻器芯片STELLAR权重更新算法(清华大学吴华强课题组)

本文主要是介绍忆阻器芯片STELLAR权重更新算法(清华大学吴华强课题组),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考文献(清华大学吴华强课题组)

Zhang, Wenbin, et al. “Edge learning using a fully integrated neuro-inspired memristor chip.” Science 381.6663 (2023): 1205-1211.

image.png
image.png

STELLAR更新算法原理

在权值更新阶段,只需根据输入、输出和误差的符号计算权值更新方向。此外,该算法预先定义了一个阈值,在计算误差符号时过滤掉小误差信号,并通过避免过于敏感和不必要的更新。省略掉小更新信号后,在STELLAR更新方案下基于忆阻器的梯度向量可以更接近地近似标准BP梯度向量。设定的阈值是硬件可重构的,以适应各种学习任务。STELLAR算法取决于权重更新的方向,将对应的相同SET和RESET脉冲施加到忆阻器单元。

前向传播(inference)

image.png
对每个输入向量执行权重更新。该学习算法以网络输出和目标的损失函数最小为目标,对电导进行最优更新。

反向传播——损失函数(平方损失函数)

image.png

反向传播——权重更新量(基于阈值性方向)

image.png
image.png
C 1 , C 2 C_1,C_2 C1,C2可灵活配置。如果将ReLU激活函数应用于加权和输出向量 Z \textbf{Z} Z,则 C 1 C_1 C1通常是第一层输出中的最大值乘以0.4, C 2 C_2 C2值通常设置为零。如果输出层省略了ReLU激活函数,则没有 C 2 C_2 C2,且 C 1 C_1 C1设置为零。

关于激活函数

在这项工作中,ReLU激活函数是在制造的芯片上进行实验证明的。当输出层神经元函数配置为sigmoid、tanh函数时, s y 2 sy_2 sy2需要由神经元对应的导数函数量化,而不是直接用 y 2 y_2 y2的值进行量化。

器件非对称切换下的STELLAR更新方案

实际的忆阻器器件存在非理想的调谐行为,例如更新曲线的非线性和不对称性,这阻碍了基于忆阻器的边缘学习应用的开发和探索。
STELLAR更新方法引入了一种基于阈值的三值化方案来计算输入和输出导数向量(derivative vectors),随后将其用于计算基于符号的权重梯度。这种STELLAR方案有利于简化梯度计算和权重更新的硬件设计,节省硬件成本,以实现用于边缘学习的完全集成的忆阻器芯片。
实验模拟结果和理论分析表明,STELLAR方案可以适应器件的非对称更新。

定制设计的电路能耗从忆阻器芯片中使用的电路和Cadence仿真器获得;
传统BP算法产生的功耗(Intel Xeon E5-2699处理器产生的功耗)估算方法为:计算操作数/能效(Jouppi et al.)
*整个训练过程中的
电导调谐操作的总能量*消耗估算方法为:**调谐操作数
每个操作的平均能量**。调谐操作数来自片上学习仿真。根据忆阻器芯片产生的测量结果估计write操作的平均能量,从8-bit分辨率的130 nm ADC获得read操作的能量

循环并联电导调谐方案(2T2R)

image.png
*比较编程脉冲数[周期并行STELLAR(stellar1)、非周期并行STELLAR(stellar2)、具有写入验证方案的常规BP(BP w/verify)]:
image.png
循环并行STELLAR方案可以在相同的训练时期内具有与BPw/verify一样快地收敛。但是STELLAR方案所需的脉冲数远低于后者。stellar1相比于stellar2只需要近一半的脉冲数

权重迁移算法

image.png

硬件上实现电导更新电压控制的方法

控制器将输入级选择信号解码为用于电压选择的输出信号。将电压选择信号作为BL/WL和SL驱动器的控制信号。通过驱动器中的MUX选择要加到忆阻器阵列上的电压。
第一层阵列采用2T2R来降低IR压降,第二层阵列采用1T1R配置,两个相邻列分别表示正权重和负权重
image.png

硬件上实现其他计算模块的方法

忆阻器阵列和片上ADC执行VMM运算,实现前向传播;
ADC配置沿模拟VMM信号的量化实现ReLU激活函数;
基于脉冲数的定时依赖方案、差分对减法输出、误差计算电路、符号变换电路略(依靠定制电路和逻辑电路实现)

片外训练与片内推理

网络训练在定制的外围电路中实现,然后通过权重迁移算法和周期STELLAR方案的电压脉冲写入器件电导
芯片测试系统主要集成了FPGA和相应的电压发生器。FPGA为忆阻器生成控制命令,沿BL向忆阻器发送输入,并接入SL读取结果电压发生器为VMM操作和忆阻器编程(电导更新)提供可编程的电压
FPGA通过以太网连接与实现用户界面的PC进行通信。(他们还做出了应用程序编程接口(API))
片内推理(前向传播)在芯片内部的crossbar阵列内实现,测量测试集准确率。输入图像采用二值化像素。导入的电导能够长期存储(训练后48天内测试集准确率不变)

周期性STELLAR更新方案的电路设计(1T1R)

image.png
image.png

第二层阵列的完整电路图

image.png

这篇关于忆阻器芯片STELLAR权重更新算法(清华大学吴华强课题组)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/589296

相关文章

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注