技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种WRAM放不下权重的卷积的实现方法与流程  >  正文

一种WRAM放不下权重的卷积的实现方法与流程

  • 国知局
  • 2024-09-14 14:48:03

本发明属于神经网络处理,特别涉及一种wram放不下权重的卷积的实现方法。

背景技术:

1、卷积神经网络在图像、视频、语音领域有着广泛的应用,随着神经网络越变越复杂,需要大量资源来训练和评估,而硬件加速器性能增长和通用性提高日趋缓慢。卷积神经网络主要由输入层、卷积层、池化层和全连接层组成,其中卷积层是构成卷积神经网络的核心层,网络中绝大部分计算量由它产生,因此卷积神经网络的运行速度基本上取决于卷积层的运算速度。nna(neural network accelerator)是一种用于处理卷积计算的高性能低功耗的神经网络加速器,拥有自己的指令集,具有灵活的可编程特性,可适用于不同类型的神经网络。nna的wram空间大小为60kb,调用nna指令进行卷积计算前需要将卷积核数据写入wram。

2、然而,由于nna的wram只有60kb,不一定能放下卷积计算需要的所有权重数据,因此在实际应用中通用性不高。并且,卷积过程包含大量的乘累加计算,运算速度慢,在实际应用中不具备实时性,而使用nna进行卷积计算加速需要考虑wram的空间是否能放下所需要的所有权重数据。

3、此外,现有技术中的常用术语包括:

4、1、神经网络:模仿生物神经网络结构和功能的数学模型,通过学习训练样本数据的内在规律,获得分析或者表达样本数据的能力,可应用于目标检测、场景分类、文字识别等多种应用领域。

5、2、深度学习:训练神经网络的过程和方法。

6、3、图像卷积:对于输入图像的每一个像素点,计算它的邻域像素和卷积核矩阵的对应元素的乘积后累加,作为该像素位置的值,通过不断滑动卷积核矩阵,得到最终卷积输出结果。

7、4、特征提取:使用计算机提取图像信息,决定每个像素点是否属于一个图像特征,结果是把图像上的点分为不同的子集,这些子集往往属于独立的点,连续的曲线或者连续的区域。

8、5、nna:神经网络加速器。

9、6、fpram:nna内部存放输入图像数据的片上ram。

10、7、wram:nna内部存放卷积核数据的片上ram,大小为n kb,n根据具体的芯片定义来确定,一般小于等于128kb。

11、8、oram:片上通用ram。

12、9、pad:对输入图像进行边缘填充,分为pad_top,pad_bottom,pad_left,pad_right,表示图像上下左右边缘填充的size。

13、10、stride:卷积核矩阵滑动的步长,分为stride_x,stride_y,表示卷积核矩阵横向和纵向滑动的步长。

14、11、权重:卷积核。

技术实现思路

1、为了解决上述问题,本技术的目的在于:提出一种权重数据大小超出wram空间大小时使用nna计算卷积的实现方法,提高卷积的运算速度。

2、具体地,本发明提供一种wram放不下权重的卷积的实现方法,所述方法包括以下步骤:

3、s1,将权重数据写入wram,将输入图像数据写入fram;

4、s2,由于nna的wram空间大小只有60kb,当权重数据大小超出60kb时,需要对权重数据进行拆解,每次只写一部分权重数据,这部分权重数据大小不超过60kb,分多次向wram写入权重数据,进一步包括:s2.1,需要计算wram一次能放下多少输入通道的权重数据,计算公式为:

5、

6、loop_num=(ic+wram_ic-1)/wram_ic

7、wram_ic_tail=(ic-1)%wram_ic+1

8、ic=(loop_num-1)*wram_ic+wram_ic_tail

9、其中kh为卷积核高,kw为卷积核宽,ic为卷积核输入通道数,权重数据大小为kh*kw*ic*32;wram_ic表示wram一次能放下大小为kh*kw*wram_ic*32的权重数据,wram_size为60kb,loop_num表示需要分loop_num次才能将所需的权重数据全部写入wram,wram_ic_tail表示前loop_num-1次,每次向wram写入大小为kh*kw*wram_ic*32的权重数据,最后一次向wram写入大小为kh*kw*wram_ic_tail*32的权重数据;

10、s2.2,根据步骤s2.1获得的结果,分loop_num次进行nna寄存器配置:使用nna进行卷积加速必须正确配置nna相关寄存器,卷积的步长、卷积核大小参数都通过nna寄存器进行配置,这些参数都必须在nna支持的参数范围内才能得到正确的卷积结果,启动nna进行卷积计算,将每次得到的卷积结果进行累加就得到最终的卷积输出;进一步包括:s2.2.1,第1次,

11、预先在oram分配一段空间用于储存nna输出数据和中间结果,将根据步骤s2.1中公式得到的大小为kh*kw*wram_ic*32的权重数据写入wram,将输入图像数据写入fram,通过配置nna寄存器设置卷积核大小、pad、stride、fram和wram的读地址参数,再通过调用nna硬件指令nnmacg启动nna进行卷积计算,得到卷积结果输出,将该输出数据存储到预先分配好的oram空间里;

12、……

13、以此类推,前loop_num-1次,每次向wram写入大小为kh*kw*wram_ic*32的权重数据,每次都是将大小为kh*kw*wram_ic*32的权重数据直接写入wram,通过配置nna寄存器设置卷积核大小、pad、stride、fram和wram的读地址参数,再通过调用nna硬件指令nnmacg启动nna进行卷积计算,得到卷积结果输出,将该输出数据存储到预先分配好的oram空间里;第一次将输出数据存储到oram预分配空间,之后每次从oram预分配空间取出上一次的输出数据和本次的输出数据累加,将累加结果再存入到oram预分配空间,每次都存入相同的空间地址,进行重新覆盖;

14、s2.2.loop_num,第loop_num次,

15、最后一次向wram写入大小为kh*kw*wram_ic_tail*32的权重数据,通过配置nna寄存器设置卷积核大小、pad、stride、fram和wram的读地址参数,再通过调用nna硬件指令nnmacg启动nna进行卷积计算,得到卷积结果输出,将该输出数据和从oram预分配空间取出的输出数据进行累加得到最终的输出结果,即此时从oram预分配空间取出的输出数据就是前loop_num-1次输出结果的累加,再和第loop_num次的输出结果累加,就得到最终的卷积输出。

16、所述步骤s1进一步包括:数据准备:

17、输入图像大小为:输入图像高ih*输入图像宽iw*输入通道数ic,权重大小为:卷积核高kh*卷积核宽kw*输入通道数ic*输出通道数oc,输入图像边缘填充大小为pad_top,pad_bottom,pad_left,pad_right,卷积步长为stride_x,stride_y,输出图像大小为:输出图像高oh*输出图像宽ow*输出通道数oc,其中oh和ow可通过以下公式计算:

18、

19、

20、所述步骤s2进一步包括:

21、假设:权重大小:卷积核高kh*卷积核宽kw*输入通道数ic*输出通道数32,假设为3*3*256*32,输入图像大小:输入图像高ih*输入图像宽iw*输入通道数ic,假设为28*28*256,不对输入图像进行边缘填充,即pad_top,pad_bottom,pad_left,pad_right都为0,卷积步长stride_x,stride_y都为1时,输出图像的大小:输出图像高oh*输出图像宽ow*输出通道数32,假设为26*26*32;

22、要通过启动nna进行卷积计算得到输出数据,需要将所需的权重数据写入wram,所需权重数据大小:卷积核高kh*卷积核宽kw*输入通道数ic*输出通道数32,假设为3*3*256*32,即72kb,超出了wram 60kb的空间大小,这时需要计算wram一次能放下多少输入通道的权重数据,分多次写入所有输入通道的权重数据;

23、s2.1,根据步骤s2.2中的公式得到:loop_num等于2,wram_ic等于192,wram_ic_tail等于64,需要分两次向wram写入所有的权重数据,第一次向wram写入大小为3*3*192*32即54kb的权重数据,第二次向wram写入大小为3*3*64*32即18kb的权重数据;

24、s2.2,进一步包括:

25、s2.2.1,预先在oram分配一段空间用于储存nna输出数据和中间结果,将大小为3*3*192*32即54kb的权重数据写入wram,将输入图像数据写入fram,通过配置nna寄存器设置卷积核大小、pad、stride、fram和wram的读地址参数,再启动nna进行卷积计算,得到卷积结果输出,将该输出数据存储到预先分配好的oram空间里;

26、s2.2.2,再将剩下的3*3*64*32即18kb的权重数据写入wram,通过配置nna寄存器设置卷积核大小、pad、stride、fram和wram的读地址参数,再启动nna进行卷积计算,得到当前的输出结果,再从oram预分配空间取出上一次的输出结果和当前输出结果进行累加得到最终的卷积输出。

27、所述步骤s2.2还包括wram刷新:当wram写地址相同时,当前写入的wram数据会覆盖之前的wram数据。

28、所述步骤s2.2的wram刷新:第一次将3*3*192*32即54kb的权重数据写入wram,第二次将剩下的3*3*64*32即18kb的权重数据写入wram,第二次写入的wram数据会覆盖第一次的wram数据,两次写入的wram空间地址相同,叫做wram刷新,wram刷新指的是同一块wram空间,空间内存入的数据发生改变。

29、由此,本技术的优势在于:通过简单的方法,对于wram放不下权重的卷积的实现计算,提高卷积的运算速度。设权重大小为:卷积核高kh*卷积核宽kw*输入通道数ic*输出通道数32,当卷积层输入通道数ic过大,导致权重大小超过wram空间大小时,仅通过一次nna卷积过程无法得到正确的卷积结果。但实际应用时常常会碰到卷积层输入通道数ic比较大的情况。为了应对这种情况,此方法通过拆解权重数据,分多次向wram写入权重数据,每次写入的权重数据大小不超过wram空间大小60kb,通过多次nna卷积过程得到每次的卷积结果,对这些卷积结果进行累加,就可以得到正确的卷积输出。

本文地址:https://www.jishuxx.com/zhuanli/20240914/295968.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。