存内计算再上新台阶!IBM用相变存储器跑AI分类算法,刷新CIFAR10数据集记录

芯东西5月19日消息,近日,位于瑞士苏黎世的IBM欧洲研发中心研发出一种基于相变存储器(PCM)的非·冯诺依曼架构芯片技术,能像人脑一样在存储中执行计算任务,以超低功耗实现复杂且准确的深度神经网络推理。

IBM研究人员用ResNet分类网络进行实验,在将训练后的权重映射到PCM突触后,在CIFAR-10数据集上和准确率达到93.7%,在ImageNet基准上的top-1准确率达到71.6%。

此外,研究人员通过一种补偿技术,可将原型芯片在1天内的测试准确率保持在92.6%以上,据悉,这是迄今为止任何模拟电阻式存储硬件在CIFAR-10数据集上所产生的最高分类准确率。

未来,这项技术或可用于智能相机、AR眼镜、无人机等设备,使这些设备在更少的能耗下提供更快的计算速度。

这项研究发表在科学期刊《NatureCommunications》上,论文名称为《使用计算相变存储器进行精确的深度神经网络推理(Accuratedeepneuralnetworkinferenceusingcomputationalphase-changememory)》。

论文链接:

一、IBM新架构:像人脑一样存储和计算,能耗更低

深层神经网络(DNN)可以用于完成图像识别、语音识别等认知任务,是一项重要的AI技术。但是,现有的硬件限制了深层神经网络的性能和能效。

目前,深层神经网络大多在冯·诺伊曼架构上运行,谷歌的张量处理器(tensorprocessingunit)、NVIDIA的GPUTeslaT4均属于冯·诺伊曼架构。

冯·诺伊曼架构将存储器和处理器分开,处理过程中数据在存储单元和处理单元之间不断传输转移。拥有大型数据中心的公司往往需要通过增加服务器数量来满足更高的处理要求,按照这种方法,随着运算量不断增多,深度学习任务的能耗也不断攀升,很多公司意识到,这种通过搭建更多发电装置来解决能耗问题的做法既不经济也不可持续。

有些公司试图用云计算来解决这个问题。云计算可以实现更快的处理过程,有助于提升深度神经网络性能。但是,云计算面临着数据隐私、响应延迟、服务成本等问题,另外,在互联网连接质量较差的地区,云计算的性能会被削弱。

IBM研究中心提出一种基于相变存储器(PCM,phase-changememory)的非冯·诺伊曼架构。

▲位于瑞士苏黎世的IBM欧洲研发中心的研究人员

就像人的大脑一样,这种架构没有把存储和计算过程分开,因此能耗更低。运行一个ResNet-32分类网络时,PCM核心芯片的能量效率约为11.9TOPS/W。相变存储器利用特殊材料在晶态、非晶态之间相互转换时表现出的导电性差异来存储数据,具有存取速度快、可靠性高的优势。

二、添加随机噪声,提高非理想条件下的模型准确率

基于上述设想,研究人员用两个神经网络模型作为研究对象,通过添加随机噪声来提高分类网络模型的准确率。

首先,研究人员选用ResNet卷积神经网络(CNN)进行训练。选用两个数据集,用数据集CIFAR-10训练ResNet-32卷积神经网络,用数据集ImageNet训练ResNet-34卷积神经网络。

ResNet-32网络由3个不同的ResNet块组成,每个ResNet块有10个3*3内核。ResNet-32网络包含361722个突触权重,用于分类32*32像素的RGB图像。

ResNet-34网络与ResNet-32网络最大的区别是ResNet块的数量和大小不同、输入和输出通道更多。

▲a:ResNet-32网络,b:ResNet-34网络

然后研究人员对模型添加噪声,并观察噪声对神经网络分类准确率的影响。

研究人员用一个误差项代表噪声,会使每个突触权重在推理过程的前向迭代(forwardpass)中发生扭曲。

研究人员在每次推理过程的前向迭代中增加与造成的误差相对应的噪声。他们发现,仅给向前传播算法(forwardpropagation)中的权重增加噪声就足以达到接近基线的准确率,在反向传播算法(backwardpropagation)中增加权重并不会改善结果。

为简单起见,假设是高斯分布的,这通常是模拟记忆电阻硬件的情况。

▲在训练和推理过程中添加噪声对网络精度的影响。a.不引入权重扰动,噪声输入量不同时,ResNet-32分类网络在CIFAR-10上准确度;b.推理过程中,用不同噪声输入量进行训练的神经网络对权重扰动的容忍度;c.d.对于给定的权重扰动值,噪声输入量与其相同时,模型分类准确率最高。

在不添加权重噪声时,在CIFAR-10数据集上,ResNet-32卷积神经网络分类准确率在噪声输入量Ntr为8%时接近基线准确率,基线准确率为93.87%。

与ResNet-32分类相比,在ImageNettop-1标准下,ResNet-34卷积神经网络对添加噪声的反应更为灵敏。在所有层都添加噪声后,准确率从基线下降超过0.5%,相对噪声下降超过1.2%。

根据之前的研究,许多网络压缩技术允许第一层和最后一层有更高的准确率。为了简化过程,研究人员去除了第一个卷积层和最后一个全连接层中的噪声。训练后,ResNet-34卷积神经网络的分类准确率可提升1%以上。

三、将权重转移至PCM突触,进行高精度编程

为了验证上述训练方法,研究人员在一个原型多级PCM芯片上进行了实验,该芯片采用90nmCMOS工艺,包含100万个PCM器件。

研究人员设计出一个优化的迭代编程算法,能以高精度编程PCM设备中的电导值。下图a显示了11个代表性编程水平的电导值实验累积分布。下图b提取这些标准差,并用目标电导的多项式函数(图a中的曲线)对其进行拟合,测量编程后25s的准确度数值。

在所有水平上,权重转移到PCM突触上的标准差均小于1.2μS,低于此前研究中纳米级PCM阵列中相似范围的一半。

▲权重转移到PCM突触对推理准确率的影响

图c显示了基于CIFAR-10数据集训练ResNet-32分类网络的准确率数值。将权重转移至PCM突触,加噪后ResNet-32分类网络能达到的最高准确率为93.71%。可以看出,权重转移至PCM突触后,经过无限制的标准FP32训练后模型准确率下降最多。与FP32相比,用4-bit数字权重进行训练准确率下降较少,但仍然下降了1%以上。

图d显示了用ImageNet数据集训练ResNet-34分类网络的准确率数值。将权重转移至PCM突触,加噪后ResNet-34分类网络能达到的最高准确率为71.62%。权重转移至PCM突触后,用4-bit数字权重进行训练后模型准确率下降最多,约下降了8%。用无限制的标准FP32训练后模型准确率约下降7.7%。

四、迄今用模拟电阻式存储训练CIFAR-10的最高分类准确率

▲在CIFAR-10数据集上进行软硬件推理实验

对此,研究人员选择应用全局漂移补偿(GDC,globaldriftcompensation)程序来补偿漂移的影响。在用测试集进行推理之前,研究人员对每一层进行了简单的GDC处理。

研究人员分别在ResNet-32分类网络和ResNet-34分类网络上应用了AdaBS技术。

▲用PCM突触更新自适应批量归一化统计数据

数据显示,AdaBS使ResNet-32网络在一天内保持93.5%以上的测试准确率,比GDC提高了0.9%。当用PCM模型推算结果时,模型一年准确率可比GDC方式提高1.8%。

通过仅用ImageNet训练集的0.1%(1300张图像)进行校准,采用和CIFAR-10上相同的AdaBS方法,一年内的准确率相较GDC提到了7%。当第一层和最后一层在数字FP32中实现时,初始准确率提高到71.9%,该技术与AdaBS方法结合使用,可将一年内的准确率保持在71%以上。

不过用这种方式进行推理也存在缺点,由于第一层和最后一层的参数数量且输入大小很少,其执行效率有限,即需在校准阶段付出额外的计算代价。

例如,根据论文,第一层和最后一层包含的网络权重不到3%,在ResNet-34分类网络推理期间负责约3.12%的乘法和累积操作。

结语:不只是分类模型,还能用于LSTM和GAN

相比于传统的神经网络运作方式,IBM研究中心提出的基于相变存储器的架构提升了深度神经网络计算的能效和准确率。

根据论文,IBM研究人员实现了迄今为止模拟电阻式存储硬件在CIFAR-10数据集上训练ResNet分类网络所达到的最高分类准确率。

除了基于模拟相变存储组件训练ResNet分类模型外,IBM研究人员通过使用混合精度架构,在多层感知器、长短期记忆网络(LSTM)、生成对抗网络(GAN)等几类小规模模型上也能实现”软件等效“的准确率。

当今是一个日益向基于AI的技术过渡的时代,物联网电池供电设备、自动驾驶汽车等技术都将高度依赖于快速、低功耗、可靠的DNN推理引擎。IBM研发的基于PCM的架构或有助于这些技术的实现。

您当前使用的浏览器版本过低,导致网站不能正常访问,建议升级浏览器

THE END
1.Java二十三种设计模式迭代子模式(16/23)腾讯云开发者社区数据访问对象(DAO):在数据访问层,迭代器模式可以用于封装对数据库查询结果的访问,隐藏SQL查询的细节。 图形界面库:在图形界面编程中,迭代器模式可以用于遍历组件树,而不需要暴露组件树的具体实现。 迭代器模式通过提供一个统一的访问接口,使得客户端代码可以方便地访问集合中的元素,同时隐藏了集合的内部结构。这种模式https://cloud.tencent.com/developer/article/2478376
2.python自动化测试7:Pyhon循环与迭代码农集市专业分享IT编程学习Python中的循环和迭代是两种常用的控制结构,用于在代码中重复执行某些操作。 1. 循环(Loop):循环是一种重复执行某段代码的机制。在Python中,可以使用for、while等关键字来创建循环。例如: ```python for i in range(5): print(i) ``` 这段代码将输出0到4的数字。 2. 迭代(Iteration):迭代是一种遍历数据https://www.coder100.com/index/index/content/id/4323743
3.Python中的面向对象编程:构建灵活和可重用的代码面向对象编程(OOP)是一种编程范式,它使用对象来表示数据和与数据相关的操作。Python是一种支持多种编程范式的动态语言,包括面向对象编程。本文将介绍OOP的基本概念、Python中的OOP特性,以及如何构建面向对象的程序。 1. 面向对象编程简介 面向对象编程基于“对象”的概念,对象是数据和功能的封装。OOP的主要特征包括封装https://blog.51cto.com/u_14540126/12849593
4.Python中的迭代器和生成器:深入理解与应用嘲迭代器是一个可以记住遍历的位置并且能够不断返回下一个值的对象。Python中迭代器是一个实现了__iter__和__next__方法的对象,或者实现了__iter__方法和next函数的对象。 迭代器的特点 迭代器主要有两个基本方法:__iter__和__next__。 方法返回迭代器对象本身,一般在for循环中会调用这个方法。 https://www.jianshu.com/p/1580b9ad738a
5.软件设计师常见的算法设计方法——迭代法迭代法是什么在数学计算中,很多数值计算方法,如求解方程的牛顿迭代法、求解线性方程组的雅可比迭代法等,都是基于迭代法的思想。 在计算机科学中,迭代法也常用于机器学习、优化算法等领域。比如,在机器学习中,梯度下降法就是一种典型的迭代算法,它通过不断地调整模型参数来最小化损失函数,从而得到最优的模型。 https://blog.csdn.net/CSBIGDOG/article/details/136449401
6.初中信息技术初中信息技术_用迭代算法探究数据变化的规律教学设计学情分析教材分析课后反思.doc,《微项目3 用迭代探究数据的变化规律》教学设计 一、目标确定 (一)学科核心素养要求 1.信息意识:在解决实际问题中,根据解决问题的需要,自觉、主动寻求恰当的方式获取并处理有效信息。https://max.book118.com/html/2021/1130/8075076031004047.shtm
7.高中信息科技教学中的学生创新素养培养内容1.迭代算法式的思维培养 汉语词典对“迭代”的解释是更相代替和轮换的意思。迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。迭代思想,已经由一种算法逐步升级发展为一种方法、理念和思维模式,迭代运用于创新思维https://tpd.xhedu.sh.cn/cms/app/info/doc/index.php/88528
8.迭代计算在第一种意义下,递归是迭代的一个例子,但是通常使用一种递归式的表达。比如用0!=1,n!=n*(n-1)!来表示阶乘。而迭代通常不是这样写的。而在第二种(更严格的)意义下,迭代描述了在指令式编程语言中使用的编程风格。与之形成对比的是递归,它更偏向于声明式的风格。终止准则 由于数值迭代是逐步逼近最优点https://baike.baidu.com/item/%E8%BF%AD%E4%BB%A3%E8%AE%A1%E7%AE%97/472906
9.粒子群优化算法(ParticleSwarmOptimization,PSO)的详细解读(3)迭代次数: (4)惯性权重: 六、算法的一些重要概念和技巧 (1)适应值(fitness values) (2)位置限制 (3)速度限制 (4)优化停止准则 (5)初始化 七、算法的编程实现 八、全局最优解和局部最优解的讨论 九、求解库 参考文献 一、背景知识 (1)起源 1995年,受到鸟群觅食行为的规律性启发,James Kennedy和Ruhttps://zhuanlan.zhihu.com/p/346355572?utm_id=0
10.什么是迭代?迭代作用/应用嘲/实现途径速览零代码知识中心此外,在迭代的应用场景中,迭代的主要作用是帮助开发者实现代码的可复用性、可移植性和可维护性等。例如,当我们需要编写一个复杂的机器学习应用时,通过迭代算法可以不断调整模型参数,使其不断逼近最优解,最终实现高精度的预测能力。 迭代的实现途径 除了算法思想外,迭代还可以通过编程语言中的循环语句来实现。在 C https://www.jiandaoyun.com/fe/smsdc/
11.C语言实现二叉树遍历的迭代算法C语言本文实例讲述了C语言实现二叉树遍历的迭代算法,是数据结构算法中非常经典的一类算法。分享给大家供大家参考。具体实现方法如下:二叉树中序遍历的迭代算法:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43https://www.jb51.net/article/55288.htm