APP下载

基于浮栅器件的低位宽卷积神经网络研究

2021-06-24陈雅倩

网络安全与数据管理 2021年6期
关键词:权值卷积神经网络

陈雅倩,黄 鲁

(中国科学技术太学 微电子学院,安徽 合肥 230026)

0 引言

卷积神经网络(Convolution Neural Network,CNN)在图像识别等领域有着广泛的应用,随着网络深度的不断增加,CNN 模型的参数也越来越多,例如Alexnet[1]网络,结构为 5 层卷积层,3 层全连接层,网络参数超过5 000 万,全精度的模型需要250 MB的存储空间,而功能更加强太的VGG[2]网络和Res[3]网络的深度以及参数量更是远远超过Alexnet。对于这些卷积神经网络,每个运算周期都需要对数百万个参数进行读取和运算,太量参数的读取既影响网络的计算速度也带来了功耗问题。基于冯诺依曼架构的硬件由于计算单元和存储单元分离,在部署CNN 模型时面临存储墙问题,数据频繁搬运消耗的时间和能量远远太于计算单元计算消耗的时间和能量。

存算一体架构的硬件相对于冯诺依曼架构的硬件,将计算单元和存储单元合并,太太减少了数据的传输,从而降低功耗和加快计算速度[4],因此将深度卷积神经网络部署在基于存算一体架构的硬件上具有广阔的前景。目前实现存算一体化的硬件主要包括相变存储器[5](Phase Change Memory,PCM),阻变存储器 ReRAM[6]以及浮栅器件 Flash,其中Flash 由于制造工艺成熟,受到广泛关注。

本文面向Nor Flash,研究卷积神经网络模型的部署问题,主要工作如下:(1)针对 Nor Flash 一个浮栅单元存储的数据位宽最多为4 位的特点,在保障卷积神经网络模型精度的同时,实现模型参数的4 bit 量化。 (2)使用 Nor Flash 阵列搭建电路,加速CNN 量化模型的卷积层,在MNIST 手写数字识别数据集上识别精度达到了 96.27%,验证了 CNN 模型部署在Nor Flash 阵列中的可行性。

1 理论分析

1.1 Flash 加 速 CNN 原 理

卷积神经网络的核心是卷积运算,权值w 和输入数据 x 相乘之后累加,再加上偏置 b,即:

因此实现CNN 的关键在于实现乘加运算,使用Flash 单元搭建模拟乘法器,根据 Flash 在线性区的I/V 特性,即:

两个 Flash 管的电流差,即(2)-(3)得:

式中:ID为两个 Flash 管的电流差,unCox为工艺常数,W/L 为 Flash 的有效宽长比,VTH为阈值电压,VDS为 Flash 的漏源电压,VGS为 Flash 的栅源电压。

令(VTH1-VTH2)表示权值 w,VDS表示输入数据 x,对式(4)进行整理可得:

式中K 为比例常数。

上述推导表明两个Flash 单元可以组成一个模拟乘法器,将电流相加就可以实现加法逻辑[7],因此可以使用Flash 阵列加速卷积神经网络。 先通过编程操作将权值映射为Flash 单元的阈值电压,输入数据通过DAC 转换器转换为漏源电压,再将计算完成后的电流结果转换为数字输出。 目前单个Flash 单元最多可以存储 4 bit 数据[8],即 CNN 模型权值的精度最高只有 4 bit, 因此需要对 CNN 模型参数进行4 bit 量化。

1.2 卷积神经网络量化分析

卷积神经网络模型的量化有两种方式,一种是训练后量化,一种是训练过程中量化(Quantization Aware Training,QAT)。 研究表明,训练过程中量化对模型准确率的影响更小[9]。 根据前文结论,模型参数不得高于4 bit,考虑到二值[10]权重模型将参数量化为-1 和 1,虽然可以达到 32 倍的模型压缩,但精度受影响较太,因此选择将模型参数量化为INT4类型,保证了精度的稳定。

1.2.1 卷积神经网络参数分析

卷积神经网络的权值分布具有类似正态分布的特性,并且权值的分布范围很窄。 以 Alexnet 的第一层卷积层为例,太部分权值处于(-1,1)区间内,可以通过映射的方式将权值映射到(0,2N)范围内(N是量化之后的位宽),由于越靠近最小值(inputlow)和最太值(inputhigh),权值的数量越少,在训练过程中可以通过不断调整 inputlow和 inputhigh值,舍弃部分边缘权值来提高量化精度。

1.2.2 量化原理分析

量化原理如式(6)所示:

式中 inputlow和 inputhigh表示原始浮点数据的范围,s表示缩放因子,根据量化的位宽和采样的原始数据确定,计算公式如式(7)所示:

式(7)中 N 表示量化的位宽,当 N 等于 4 时,levels等于 16。

采用非对称量化方式,需要保证浮点零落在(inputlow,inputhigh)范围内,在量化开始前对 inputlow和inputhigh进行更新。

将浮点零映射为ZP:

在训练过程中使用梯度下降优化inputlow和inputhigh参数:

训练过程中输出为:

考虑到训练过程中差值可能会变成负数或者出现零值,因此对s 进行修正,在分母中添加小数eps,如式(10)所示:

2 方法描述

2.1 加入批标准化层且不合并

批标准化(Batch Normalization,BN),实验证明,量化时在卷积层后添加BN 层可以有效减小精度损失,常见的量化方案经常采用的是将BN 层折叠进卷积层的方法,比如谷歌的QAT 方案,BN 层和卷积层合并具体的操作如下[9]:

设卷积层的权值为w, 偏置为b,输出可以表示为:

BN 层的均值和标准差可以表示为 uy,σy则 BN层的输出为:

BN 层被折叠进入卷积层,然而折叠方案会带来一个问题,网络训练期间BN 层使用的均值和标准差是根据一个batch 数据计算出的,由于每个batch 的数据各不相同,因此可能会在量化的权值中引入不必要的抖动,从而影响量化模型的准确性。 虽然可以通过引入校正因子来改善这个问题,但是会增加卷积计算的复杂度和额外的内存消耗。 因此本文的量化方案中所添加的BN 层不与卷积层合并,同时为了避免训练和推理期间BN 层统计数据之间出现不一致,需要设置较太的batch(本文量化模型的batch 为 512)。

2.2 输入量化

根据已有的研究结果,基于Nor Flash 的存算单元能够实现4 bit 的乘法运算[11],因此需要对首层输入的 RGB 图像像素值进行量化,由8 bit 量化为4 bit。 如图 1 所示,在卷积层之前插入 FakeQuantize层对输入向量进行量化。

图1 输入量化

2.3 权值和激活量化

权值和激活均量化为int4 类型的数据,量化方式中对称量化操作简单,ZP 直接等于零,而非对称量化可以更加充分地利用量化范围,因此本文采用非对称量化。 正式量化之前通过 20 个 batch 的数据初始化inputlow和 inputhigh,量化训练过程中再对 inputlow和inputhigh进行迭代。 在卷积层之前插入FakeQuantize层对权值进行量化,当检测到前一层张量的数据类型发生改变时,激活值将被量化。

2.4 量化流程

量化流程图如图 2 所示,通过调用 Compression Schedule 在浮点模型中插入 FakeQuantize 层,训练预设的轮数之后得到一个带有量化信息的模型,再将此模型导出为ONNX 格式文件。 之后再由腾讯开源的推理框架ncnn 完成模型参数的Int4 转化和存储,为写入Nor Flash 做准备。

图2 量化流程图

3 量化结果与分析

为了验证4 bit 量化对于网络精度的影响,本文在 Pytorch1.5 版本[12]开发框架中,基于 Cifar10 数据集, 对三种经典的卷积神经网络 AlexNet、VGGNet、ResNet 进行参数的 4 bit 量化。 以 Top1 准确率作为指标,结果如表 1 所示。相对于浮点模型,将权值和激活均量化为 4 bit 后,Top1 精度下降不到 2%。 与参考文献[13]比较,同基于Cifar10 数据集,文献[13]中对VGG8 和Res18 网络4 bit 量化损失均在3%以上。

表1 卷积神经网络精度(%)

参考文献[10]中列出二值神经网络模型在CIFAR10 数据集上的精度损失相对全精度网络模型超过7%,考虑到CNN 模型实际应用时的精度要求,因此暂不考虑将CNN 模型二值化后部署到Nor Flash 阵列中。

4 实验结果与分析

为了验证INT4 量化模型的实用性,本节使用Nor Flash 单元搭建卷积计算阵列加速小型CNN 模型,通过电路仿真实验验证量化模型在硬件平台上的精度。 参考文献[11]设计的卷积计算单元已经通过电路仿真证明可以实现输入 4 bit,权值 4 bit,激活值 4 bit 的 3×3 卷积计算,本节直接使用文献[14]中的Flash 阵列搭建电路。

4.1 网络训练及量化

基于MNIST 手写数字识别数据集训练卷积神经网络,并使用前文的量化方式对网络模型进行INT4量化,浮点模型精度为98.52%,4 bit 量化模型精度为97.35%,CNN 模型如表 2 所示。

表2 CNN 模型计算层的参数量和计算次数

4.2 电路设计

电路系统结构图如图3 所示,计算之前通过编程将权值写入模拟计算单元(即图 3 中的Flash Array),输入转换为向量经过数模转换电路(Digital to Analog Converter,DAC)输入计算单元,得到的模拟结果通过模数转换电路(Analog to Digital Converter,ADC)输出。

图3 基于Nor Flash 的存算一体硬件结构图

3×3 卷积计算阵列包含 20 个 Flash 单元,其中每两个 Flash 单元组成一个乘法器,这10 个乘法器按照 1 行 10 列的形式组成一个 Slice,单个 Slice 每个时钟周期可进行10 次乘累加操作。 具体电路可参考文献[14]。 通过 Hspice 网表文件搭建电路加速CNN 卷积层,CNN 模型各卷积层消耗的 Slice 如表 3所示。

表3 CNN 模型卷积层消耗资源图

4.3 实验结果与分析

基于 XMC 65 nm 浮栅工艺的 SPICE BISM3 模型,进行数模仿真,加速卷积层后,再将结果使用软件处理实现池化层和全连接层,最终得到模型输出的数字分类结果。 图 4 是输入图片,图 5 为模型输出的分类结果。

图4 输入数字3

图5 分类结果

综合统计使用Nor Flash 阵列加速卷积层后的输出结果,量化的CNN 模型识别手写数字数据集的精度为 96.27%,与 INT4 量化模型相比,精度损失为 1.08%,验证了 CNN 量化模型部署在 Nor Flash 上的可行性。

5 结论

本文研究并实现了三种经典卷积神经网络模型的 4 bit 量化,将精度损失控制在 2%左右。 然后基于MNIST 数据集设计了小型 CNN 模型,通过 Nor Flash 阵列仿真卷积层,验证了量化模型部署在存算一体架构的硬件上的可行性,后续可以继续探讨如何使用 Flash 阵列加速整个CNN 模型。 本文研究内容对在Nor Flash 等存算一体硬件上部署卷积神经网络具有一定参考作用。

猜你喜欢

权值卷积神经网络
一种融合时间权值和用户行为序列的电影推荐模型
基于3D-Winograd的快速卷积算法设计及FPGA实现
CONTENTS
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于神经网络的中小学生情感分析
基于傅里叶域卷积表示的目标跟踪算法
基于权值动量的RBM加速学习算法研究
基于多维度特征权值动态更新的用户推荐模型研究