缓存控制器、集成电路装置及板卡的制作方法

文档序号:26229100发布日期:2021-08-10 16:29阅读:174来源:国知局
缓存控制器、集成电路装置及板卡的制作方法

本发明一般地涉及神经网络领域。更具体地,本发明涉及缓存控制器、集成电路装置及板卡。



背景技术:

随着人工智能技术的普及与发展,深度神经网络模型趋向复杂,有些模型包括上百层的算子,使得运算量急速上升。

减少运算量有多种途经,其中一种便是量化。量化指的是把以高精度浮点数表示的权值和激活值转换用低精度的整数来近似表示,其优点包括低内存带宽、低功耗、低计算资源占用以及低模型存储需求等。

量化是目前常用简化数据量的方式,但量化操作尚缺硬件支持,对于现有的加速器来说,大都采用离线量化数据,故需要通用处理器来辅助处理,效率不佳。

因此,一种高能效的量化硬件是迫切需要的。



技术实现要素:

为了至少部分地解决背景技术中提到的技术问题,本发明的方案提供了一种缓存控制器、集成电路装置及板卡。

在一个方面中,本发明揭露一种缓存控制器,连接至直接存储器访问与缓存阵列,缓存阵列的一行存储相同量化格式的数据,缓存控制器包括量化数据缓存元件,用以暂存直接存储器访问发送的量化数据及标签,标签记录量化数据的量化格式。

在另一个方面,本发明揭露一种集成电路装置,包括前述的缓存控制器,还揭露一种板卡,包括前述的集成电路装置。

本发明实现了在线动态统计的量化,减少不必要的数据访问,达到高精度参数更新的技术功效,使得神经网络模型更精准且更轻量,且数据直接在内存端进行量化,抑制因量化长尾分布数据所导致的误差。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:

图1是示出本发明实施例的板卡的结构图;

图2是示出本发明实施例的集成电路装置的结构图;

图3是示出本发明实施例的计算装置的内部结构示意图;

图4是示出本发明实施例的处理器核的内部结构示意图;

图5是示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图;

图6是示出本发明实施例与量化运算相关硬件的示意图;

图7是示出本发明实施例的统计量化器的示意图;

图8是示出本发明实施例的缓存控制器与缓存阵列的示意图;以及

图9是示出本发明实施例的近数据处理装置的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,本发明的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本发明的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本发明。如在本发明说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本发明说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。

下面结合附图来详细描述本发明的具体实施方式。

深度学习已被证明在包括图像分类、目标检测、自然语言处理等任务上效果很好。现今大量的应用程序都配备了图像(计算机视觉)相关的深度学习算法。

深度学习一般都利用神经网络模型来实现。随着模型预测越来越准确,网络越来越深,运行神经网络所需的内存容量与内存带宽相当大,使得设备为了变得智能而付出高昂的代价。

实务上,开发者通过压缩、编码数据等方式来减小网络规模,量化是最广泛采用的压缩方法之一。所谓的量化指的是将高精度的浮点数数据(如fp32)转换成低精度的定点数数据(int8),高精度的浮点数需要较多比特来描述,低精度的定点数则需要较少的比特便能完整描述,通过减少数据的比特数,便能有效地释放智能设备的负担。

图1示出本发明实施例的板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(systemonchip,soc),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,可以利用量化优化的处理方式来支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。

芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如pcie接口等。

板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储元件105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(microcontrollerunit,mcu)。

图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和近数据处理装置204。

计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。

接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。

处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(centralprocessingunit,cpu)、图形处理器(graphicsprocessingunit,gpu)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本发明的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。

近数据处理装置204为有处理能力的内存,用以存储待处理的数据,内存的大小通常为16g或更大,用于保存计算装置201和/或处理装置203的数据。

图3示出了计算装置201的内部结构示意图。计算装置201用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,图中的计算装置201采用多核分层结构设计,计算装置201作为一个片上系统,其包括多个集群(cluster),每个集群又包括多个处理器核,换言之,计算装置201是以片上系统-集群-处理器核的层次所构成的。

以片上系统的层级来看,如图3所示,计算装置201包括外部存储控制器301、外设通信模块302、片上互联模块303、同步模块304以及多个集群305。

外部存储控制器301可以有多个,在图中示例性地展示2个,其用以响应处理器核发出的访问请求,访问外部存储设备,例如图2中的近数据处理装置204,从而自片外读取数据或是将数据写入。外设通信模块302用以通过接口装置202接收来自处理装置203的控制信号,启动计算装置201执行任务。片上互联模块303将外部存储控制器301、外设通信模块302及多个集群305连接起来,用以在各个模块间传输数据和控制信号。同步模块304是一种全局同步屏障控制器(globalbarriercontroller,gbc),用以协调各集群的工作进度,确保信息的同步。多个集群305是计算装置201的计算核心,在图中示例性地展示4个,随着硬件的发展,本发明的计算装置201还可以包括8个、16个、64个、甚至更多的集群305。集群305用以高效地执行深度学习算法。

以集群的层级来看,如图3所示,每个集群305包括多个处理器核(ipucore)306及一个存储核(memcore)307。

处理器核306在图中示例性地展示4个,本发明不限制处理器核306的数量。其内部架构如图4所示。每个处理器核306包括三大模块:控制模块41、运算模块42及存储模块43。

控制模块41用以协调并控制运算模块42和存储模块43的工作,以完成深度学习的任务,其包括取指单元(instructionfetchunit,ifu)411及指令译码单元(instructiondecodeunit,idu)412。取指单元411用以获取来自处理装置203的指令,指令译码单元412则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块42和存储模块43。

运算模块42包括向量运算单元421及矩阵运算单元422。向量运算单元421用以执行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元422负责深度学习算法的核心计算,即矩阵乘及卷积。

存储模块43用来存储或搬运相关数据,包括神经元缓存元件(neuronram,nram)431、权值缓存元件(weightram,wram)432、输入/输出直接内存访问模块(input/outputdirectmemoryaccess,iodma)433、搬运直接内存访问模块(movedirectmemoryaccess,mvdma)434。nram431用以存储供处理器核306计算的特征图及计算后的中间结果;wram432则用以存储深度学习网络的权值;iodma433通过广播总线309控制nram431/wram432与近数据处理装置204的访存;mvdma434则用以控制nram431/wram432与sram308的访存。

回到图3,存储核307主要用以存储和通信,即存储处理器核306间的共享数据或中间结果、以及执行集群305与近数据处理装置204之间的通信、集群305间彼此的通信、处理器核306间彼此的通信等。在其他实施例中,存储核307具有标量运算的能力,用以执行标量运算。

存储核307包括共享缓存元件(sram)308、广播总线309、集群直接内存访问模块(clusterdirectmemoryaccess,cdma)310及全局直接内存访问模块(globaldirectmemoryaccess,gdma)311。sram308承担高性能数据中转站的角色,在同一个集群305内不同处理器核306之间所复用的数据不需要通过处理器核306各自向近数据处理装置204获得,而是经sram308在处理器核306间中转,存储核307只需要将复用的数据从sram308迅速分发给多个处理器核306即可,以提高核间通讯效率,亦大大减少片上片外的输入/输出访问。

广播总线309、cdma310及gdma311则分别用来执行处理器核306间的通信、集群305间的通信和集群305与近数据处理装置204的数据传输。以下将分别说明。

广播总线309用以完成集群305内各处理器核306间的高速通信,此实施例的广播总线309支持核间通信方式包括单播、多播与广播。单播是指点对点(即单一处理器核至单一处理器核)的数据传输,多播是将一份数据从sram308传输到特定几个处理器核306的通信方式,而广播则是将一份数据从sram308传输到所有处理器核306的通信方式,属于多播的一种特例。

cdma310用以控制在同一个计算装置201内不同集群305间的sram308的访存。图5示出当一个处理器核欲将数据写入至另一个集群的处理器核时的示意图,以说明cdma310的工作原理。在此应用场景中,同一个计算装置包括多个集群,为方便说明,图中仅展示集群0与集群1,集群0与集群1分别包括多个处理器核,同样为了说明方便,图中的集群0仅展示处理器核0,集群1仅展示处理器核1。处理器核0欲将数据写入至处理器核1。

首先,处理器核0发送单播写请求将数据写入本地的sram0中,cdma0作为主(master)端,cdma1作为从(slave)端,主端向从端推送写请求,即主端发送写地址aw和写数据w,将数据传送到集群1的sram1中,接着从端发送写响应b作为回应,最后集群1的处理器核1发送单播读请求将数据从sram1中读取出来。

回到图3,gdma311与外部存储控制器301协同,用以控制集群305的sram308到近数据处理装置204的访存,或是将数据自近数据处理装置204读取至sram308中。从前述可知,近数据处理装置204与nram431或wram432间的通信可以经由2个渠道来实现。第一个渠道是通过iodam433直接联系近数据处理装置204与nram431或wram432;第二个渠道是先经由gdma311使得数据在近数据处理装置204与sram308间传输,再经过mvdma434使得数据在sram308与nram431或wram432间传输。虽然表面上看来第二个渠道需要更多的元件参与,数据流较长,但实际上在部分实施例中,第二个渠道的带宽远大于第一个渠道,因此近数据处理装置204与nram431或wram432间的通信通过第二个渠道可能更有效率。本发明的实施例可根据本身硬件条件选择数据传输渠道。

在其他实施例中,gdma311的功能和iodma433的功能可以整合在同一部件中。本发明为了方便描述,将gdma311和iodma433视为不同部件,对于本领域技术人员来说,只要其实现的功能以及达到的技术效果与本发明类似,即属于本发明的保护范围。进一步地,gdma311的功能、iodma433的功能、cdma310的功能、mvdma434的功能亦可以由同一部件来实现。

为方便说明,将图1至图4中所显示的与量化运算相关硬件整合如图6所示。此处理系统可以在训练过程中优化深度神经网络的参数,其包括近数据处理装置204与计算装置201,其中近数据处理装置204用以存储并量化运行于深度神经网络的原始数据,以产生量化数据;计算装置201是一种加速装置,用以基于量化数据训练深度神经网络,以产生并量化训练结果。近数据处理装置204基于量化后的训练结果更新参数,各类数据基于更新后参数由计算装置201运行训练好的深度神经网络,以获得计算结果(预测结果)。

如前所述,近数据处理装置204不仅具有存储能力,更具有基本的运算能力,如图6所示,近数据处理装置204包括内存601、统计量化器(statisticquantizationunit,squ)602及优化器603。

内存601可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),例如是可变电阻式存储器(resistiverandomaccessmemory,rram)、动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)、增强动态随机存取存储器(enhanceddynamicrandomaccessmemory,edram)、高带宽存储器(highbandwidthmemory,hbm)、混合存储器立方体(hybridmemorycube,hmc)、rom和ram等。运行深度神经网络所需的输入数据存储在内存601中。

统计量化器602用以对输入数据进行量化处理,图7示出此实施例的统计量化器602的示意图,统计量化器602包括缓冲元件701、统计元件702及筛选元件703。

缓冲元件701用以暂存来自内存601的多个输入数据。当深度神经网络模型处于训练阶段时,此处的输入数据指的是供训练用的原始数据,例如用以训练的权值、偏置或其他参数等。当深度神经网络模型训练完毕后,此处的输入数据指的是训练结果,也就是更新后的权值、偏置或其他参数等,获得训练后的深度神经网络模型,训练后的深度神经网络模型进行推理时使用。

缓冲元件701包括多个缓冲组件,为方便说明,以第一缓冲组件和第二缓冲组件为例。来自内存601的多个输入数据首先依序暂存至第一缓冲组件,当第一缓冲组件的空间被填满时,缓冲元件701会进行切换,使得之后的输入数据依序暂存至第二缓冲组件。当输入数据依序暂存至第二缓冲组件的同时,筛选元件703自第一缓冲组件读取暂存其中的输入数据。当第二缓冲组件的空间被填满时,缓冲元件701再度进行切换,后续输入数据改暂存至第一缓冲组件,覆盖原存储在第一缓冲组件的输入数据。由于筛选元件703已经自第一缓冲组件读取原暂存其中的输入数据,此时覆盖原存储在第一缓冲组件的输入数据并不会造成数据访问错误。如此反复在第一缓冲组件与第二缓冲组件间同步交替写入与读取输入数据,此实施例可以加速数据的访问。具体地,在此实施例中,每个缓冲组件的大小为4kb。此实施例的缓冲组件的大小仅为示例,可以根据实际情况规划大小。

统计元件702用以根据来自内存601的多个输入数据生成统计参数。此实施例是基于统计量化法进行量化的,统计量化法已经被广泛用于深度神经网络中,其需要根据量化历史数据计算出统计参数,不再赘述。

为了实现统计量化法,统计元件702可以是具有基本运算能力的处理器或是asic逻辑电路,用以生成输入数据x的绝对值的最大值(max|x|)、输入数据x与相对应中间数据x’的余弦距离(cos(x,x’))、输入数据x与相对应中间数据x’的平均值距离等统计参数。

如前所述,执行统计量化法需要在量化前将所有的输入数据做全局统计,以获得统计参数,欲做全局统计,则需要搬运所有的输入数据,此举极度耗费硬件资源,使得全局统计成为训练过程中的瓶颈。此实施例的统计元件702直接设置在内存601端,不设置在计算装置201端,如此便可以在内存本地做全局统计并量化,省去了将所有的输入数据自内存601搬运至计算装置201的程序,大大舒缓硬件的容量与带宽压力。

筛选元件703用以根据统计参数,自缓冲元件701的缓冲组件中逐一读取输入数据,以生成输出数据,其中输出数据即为输入数据量化后的结果,也就是量化数据。如图7所示,筛选元件703包括多个量化组件704及误差复用组件705。

量化组件704自缓冲元件701的缓冲组件接收输入数据,基于不同的量化格式来量化输入数据(或称为原始数据),更详细来说,将前述各种统计量化法进行整理可以归类出几种量化运算,每个量化组件704执行不同的量化运算,根据统计参数max|x|以得到不同的中间数据,换言之,量化组件704的量化格式实现前述各种统计量化法。图中展示4个量化组件704,表示前述各种统计量化法可以归类成4种量化运算,每个量化组件704执行一种量化运算。在此实施例中,这些量化运算差异在于输入数据裁剪量的不同,也就是每个量化格式对应输入数据不同的裁剪量,例如某个量化运算采用所有输入数据的95%的数据量,另一个量化运算采用所有输入数据的60%的数据量等,这些裁剪量是由前述各种统计量化法所决定的。一旦统计量化法有所取舍,则量化组件704亦要做相应的调整。

误差复用组件705用以根据中间数据与输入数据确定对应的误差,选择多个中间数据其中之一作为输出数据,也就是根据这些误差确定量化数据。误差复用组件705包括多个误差计算单元706、选择单元707、第一复用单元708及第二复用单元709。

多个误差计算单元706接收输入数据、中间数据及统计参数,计算输入数据与中间数据的误差值,更详细来说,每个误差计算单元706对应一个量化组件704,量化组件704所生成的中间数据输出至相对应的误差计算单元706,误差计算单元706计算相对应的量化组件704所生成的中间数据与输入数据的误差值,这误差值表示了量化组件704所生成的量化数据与量化前的输入数据的差距,其差距与来自统计元件702的统计参数cos(x,x’)或是作比较。误差计算单元706除了产生误差值外,还会生成标签,其用以记录所对应的量化组件704的量化格式,也就是记录了该误差值是根据何种量化格式所生成的。

选择单元707接收所有误差计算单元706的误差值,并与输入数据作比较后,选择这些误差值中最小的,并生成对应至误差值最小值的中间数据的控制信号。

第一复用单元708用以根据控制信号输出误差值最小值的中间数据作为输出数据,换言之,控制信号控制第一复用单元708输出几种量化格式中误差最小的中间数据作为输出数据,也就是量化数据。

第二复用单元709用以根据控制信号输出误差值最小值的中间数据的标签,也就是记录了输出数据(量化数据)的量化格式。

图6中箭头表示数据流,为区分未量化数据与量化后数据的差异,未量化数据以实线箭头来表示,量化后数据以虚线箭头来表示,例如从内存601传输至统计量化器602的输入数据,其为原始未量化数据,因此其数据流以实线箭头表示之,而自统计量化器602输出的输出数据为量化后数据,因此其数据流以虚线箭头表示之。图中省去了标签的数据流。

综上所述,近数据处理装置204根据存储在内存601中的输入数据,经过统计量化器602量化计算和选择后,获得误差值最小的量化数据作为输出数据与记录了输出数据的量化格式的标签。

继续参阅图6,此实施例的计算装置201包括直接存储器访问、缓存控制器604与缓存阵列。直接存储器访问即是外部存储控制器301,负责控制计算装置201与近数据处理装置204间的数据搬移,例如将近数据处理装置204的输出数据及标签搬移至计算装置201的缓存阵列中。缓存阵列包括nram431及wram432。

图8示出缓存控制器604与缓存阵列801的示意图。缓存控制器604用以暂存外部存储控制器301发送的输出数据及标签,并控制输出数据及标签存储至缓存阵列801中的适当位置。缓存阵列801可以是现有或是定制化的存储空间,其中包括多个缓存元件,这些缓存元件在物理结构上形成一个阵列,每个缓存元件可以用阵列的行和列来表示,进一步来说,缓存阵列801是由行选择元件802与列选择元件803所控制,当需要访问缓存阵列801中第i行第j列的缓存元件时,外部存储控制器301会分别发送行选择信号与列选择信号至行选择元件802与列选择元件803,行选择元件802与列选择元件803根据行选择信号与列选择信号使能缓存阵列801,使量化元件807可以读取存储在第i行第j列的缓存阵列801中的缓存元件的数据或是将数据写入至第i行第j列的缓存阵列801中的缓存元件。在此实施例中,由于每个量化数据的量化格式不一定相同,为了方便存储与管理,缓存阵列801中同一行的数据只能是相同量化格式,但不同行可以存储不同量化格式的数据。

缓存控制器604包括标签缓存器804、量化数据缓存元件805、优先级缓存元件806及量化元件807。

标签缓存器804用以存储行标签,该行标签记录缓存阵列801的该行的量化格式。如前所述,缓存阵列801的同一行存储相同量化格式的数据,但各行间不一定存储相同量化格式的数据,标签缓存器804便是用来记录每一行的量化格式。具体来说,标签缓存器804的数量与缓存阵列801的行数相同,每一个标签缓存器804对应至缓存阵列801的一行,即第i个标签缓存器804记录缓存阵列801的第i行的量化格式。

量化数据缓存元件805包括数据缓存组件808及标签缓存组件809。数据缓存组件808用以暂存自外部存储控制器301发送来的量化数据,标签缓存组件809用以暂存自外部存储控制器301发送来的标签。当该量化数据欲存储至缓存阵列801的第i行第j列的缓存元件时,外部存储控制器301发送优先级标签至优先级缓存元件806,优先级标签用以表示这次访问应基于特定量化格式来处理,同时外部存储控制器301发送行选择信号至行选择元件802,响应该行选择信号,行选择元件802将第i行的行标签取出并发送至优先级缓存元件806。

如果优先级缓存元件806判断优先级标签与行标签一致,表示这次的访问以第i行的量化格式处理,量化元件807确保量化数据的量化格式与第i行的量化格式一致。

如果优先级标签与行标签不一致,以优先级标签为准,即这次的访问以优先级标签所记录的量化格式处理,量化元件807不仅要确保量化数据的量化格式与优先级标签所记录的量化格式一致,还需要调整原本存储在第i行的数据的量化格式,使得整行的量化数据的量化格式均为优先级标签所记录的特定量化格式。

更详细来说,优先级缓存元件806判断量化数据的标签与优先级标签是否相同。如相同,表示待存储的量化数据的量化格式与优先级标签的量化格式一致,量化数据无需进行调整。优先级缓存元件806进一步判断行标签与优先级标签是否相同。如相同,已存储在第i行的量化数据亦无需进行调整,行选择元件802打开缓存阵列801第i行的通道,第j列的量化元件807将量化数据存储至第i行第j列的缓存元件中。如行标签与优先级标签不同,优先级缓存元件806控制所有的量化元件807,将每个第i行的量化数据的量化格式转换成优先级标签的量化格式。行选择元件802打开缓存阵列801第i行的通道,量化元件807将调整格式后的量化数据存储至第i行的缓存元件中。

如果优先级缓存元件806判断量化数据的标签与优先级标签不同,则量化数据需要进行格式转换,优先级缓存元件806进一步判断行标签与优先级标签是否相同。如相同,已存储在第i行的量化数据无需进行调整,仅来自外部存储控制器301的量化数据需要进行格式转换,优先级缓存元件806控制第j列的量化元件807对来自外部存储控制器301的量化数据进行格式转换,使其成为优先级标签的量化格式。行选择元件802打开缓存阵列801第i行的通道,第j列的量化元件807将转换后的量化数据存储至第i行第j列的缓存元件中。如优先级缓存元件806判断行标签与优先级标签不同,优先级缓存元件806控制所有的量化元件807,将每个第i行的量化数据的量化格式转换成优先级标签的量化格式。行选择元件802打开缓存阵列801第i行的通道,量化元件807将调整格式后的量化数据存储至第i行的缓存元件中。

在此实施例中,量化元件807有多个,其空间大小与数量搭配量化数据的长度和缓存阵列801的行的长度,更详细来说,缓存阵列801包括m×n个缓存元件,也就是具有m行及n列,假设量化数据的长度固定为s比特,则每个缓存元件的长度亦为s比特,且每行的长度等于n×s。对应缓存阵列801具有n列,量化元件807便配置有n个,每列对应一个量化元件807。具体来说,在此实施例中,缓存阵列包括8092×32个缓存元件,也就是具有8092行(图中的第0行至第8191行)及32列,量化元件807相对应亦有32个(图中的量化元件0至量化元件31),而量化数据的长度、量化元件807的空间、缓存元件的空间均设定为8比特,每行的长度为32×8比特。

至此,缓存控制器604得以将量化数据存储至预设的nram431或wram432的缓存元件中,并确保量化数据的量化格式与存储至nram431或wram432特定行的量化格式一致。

回到图6,存储在缓存阵列(nram431及/或wram432)的数据均已被量化,当需要执行向量运算时,存储在nram431的量化数据被取出并输出至运算模块42中的向量运算单元421进行向量运算。当需要执行矩阵乘及卷积运算时,存储在nram431的量化数据与存储在wram432的权值被取出并输出至运算模块42中的矩阵运算单元422进行矩阵运算。其计算结果将被存储回nram431中。在其他的实施例中,计算装置201可以包括计算结果缓存元件,运算模块42所产出的计算结果并不存储回nram431,而是存储至计算结果缓存元件中。

在神经网络的推理阶段,计算结果是预测后的产出,由于计算结果是非量化的数据,直接处理会占用太多资源,同样需要进一步量化,因此计算装置201还包括统计量化器605,其与统计量化器602的结构相同,用以对计算结果进行量化,以获得量化后的计算结果。量化后的计算结果经由外部存储控制器301传送至内存601进行存储。

如果是在神经网络的训练阶段,计算结果是权值的梯度,这些梯度需要被传送回近数据处理装置204以更新参数。虽然梯度同样是非量化的数据,但梯度不能被量化,一旦量化会导致梯度信息丧失,无法用来更新参数。在这种情况下,外部存储控制器301直接从nram431取出梯度并发送至近数据处理装置204。

图9示出近数据处理装置204更为详细的示意图。内存601包括多个内存颗粒901及参数缓存器902,多个内存颗粒901是内存601的存储单元,用以存储运行神经网络所需的参数,参数缓存器902用以自多个内存颗粒902中读取并缓存参数,当各设备欲对内存601进行访问时,均需通过参数缓存器902对内存颗粒901的数据进行搬移。此处所指的参数是在训练神经网络时可以持续更新以优化神经网络模型的数值,例如权值与偏置。优化器603用以自参数缓存器902中读取参数,并根据外部存储控制器301发送来的训练结果(即前述的梯度)更新参数。

近数据处理装置204还包括常数缓存器903,常数缓存器903则用以存储与神经网络相关的常数,例如超参数,供优化器603根据这些常数执行多种运算来更新参数。超参数一般是基于开发者的经验所设定的变量,并不会随着训练而自动更新数值,学习率、衰减率、迭代次数、神经网络的层数、每层神经元的个数等都属于常数。优化器603将更新后参数存储至参数缓存器902中,参数缓存器902再将更新后参数存储至内存颗粒901中,以完成参数的更新。

优化器603可以执行随机梯度下降法(sgd)。随机梯度下降法根据参数、常数中的学习率及梯度,使用微积分里的导数,通过求出函数导数的值,从而找到函数下降的方向或者是最低点(极值点)。通过随机梯度下降法不断地调整权值,使得损失函数的值越来越小,也就是预测误差越来越小。随机梯度下降法的公式如下:

wt=wt-1-η×g

其中,wt-1为权值,η为常数中的学习率,g为梯度,wt为更新后权值,下标t-1指的是现阶段,下标t为经历一次训练后的下一个阶段,即指的是一次更新后。

优化器603还可以根据参数、常数中的学习率及梯度执行adagrad算法。adagrad算法的思想是独立地适应模型的每个参数,即具有较大偏导的参数相应有一个较大的学习率,具有小偏导的参数则对应一个较小的学习率,每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根。其公式如下:

mt=mt-1+g2

其中,wt-1及mt-1为参数,η为常数中的学习率,g为梯度,wt及mt为更新后参数,下标t-1指的是现阶段,下标t为经历一次训练后的下一个阶段,即指的是一次更新后。

优化器603还可以根据参数、常数中的学习率、常数中的衰减率及梯度执行rmsprop算法。rmsprop算法使用指数衰减平均以丢弃遥远的历史,使其能够在找到某个“凸”结构后快速收敛,此外,rmsprop算法还引入一个超参数(衰减率)来控制衰减速率。其公式如下:

mt=β×mt-1+(1-β)×g2

其中,wt-1及mt-1为参数,η为常数中的学习率,β为常数中的衰减率,g为梯度,wt及mt为更新后参数,下标t-1指的是现阶段,下标t为经历一次训练后的下一个阶段,即指的是一次更新后。

优化器603还可以根据参数、常数中的学习率、常数中的衰减率及梯度执行adam算法。adam算法在rmsprop算法的基础上更进一步,除了加入历史梯度平方的指数衰减平均外,还保留了历史梯度的指数衰减平均。其公式如下:

mt=β1×mt-1+(1-β1)×g

vt=β2×vt-1+(1-β2)×g2

其中,wt-1、mt-1及vt-1为参数,η为常数中的学习率,β1及β2为常数中的衰减率,g为梯度,wt、mt及vt为更新后参数,下标t-1指的是现阶段,下标t为经历一次训练后的下一个阶段,即指的是一次更新后,上标t则表示进行了t次训练,故βt表示β的t次方,为动量mt和vt经过衰减后的动量。

优化器603利用简单的加法电路、减法电路、乘法电路及复用器,以实现前述各种算法。总结前述各种算法后,优化器603需要实现以下的运算:

mt=c1×mt-1+c2×g

vt=c3×vt-1+c4×g2

t1=mt或g

wt=wt-1-c5×t1×t2

即,前述任一种算法都可以根据这些运算来更新参数,但每种算法所搭配的常数不同,以adam算法为例,其常数的配置如下:

c1=β1

c2=1-β1

c3=β2

c4=1-β2

s1=s2=1

在每一次训练中,参数从内存601被取出,经统计量化器602量化,通过缓存控制器604的控制存储到wram432中,再被运算模块42进行正向传播与反向传播推导,产生梯度,梯度被传送至优化器603,执行前述各算法以更新参数。经过一代或数代训练后,参数被调试完成,至此该深度神经网络模型已经成熟可以用来进行预测。在推理阶段,神经元数据(例如图像数据)和训练好的权值从内存601被取出,经统计量化器602量化,通过缓存控制器604的控制分别存储到nram431及wram432中,再被运算模块42进行计算,计算结果由统计量化器604量化,最终量化后的计算结果(即预测结果)被存储至内存601中,以完成神经网络模型的预测任务。

上述实施例提出了一种全新的混合架构,其包括一个加速装置和一个近数据处理装置。基于硬件友好的量化技术(hardware-friendlyquantizationtechnique,hqt),在内存端进行统计分析和量化。由于统计量化器602与缓存控制器604的存在,此实施例实现了动态统计的量化,并减少不必要的数据访问,达到高精度参数更新的技术功效,使得神经网络模型更精准且更轻量。再者,由于此实施例引入近数据处理装置,数据在内存端便进行量化,还可以直接抑制因量化长尾分布数据所导致的误差。根据不同的应用场景,本发明的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本发明的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本发明的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本发明方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。

需要说明的是,为了简明的目的,本发明将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本发明的方案并不受所描述的动作的顺序限制。因此,依据本发明的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本发明所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本发明某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本发明对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本发明某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。

在具体实现方面,基于本发明的公开和教导,本领域技术人员可以理解本发明所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。

在本发明中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本发明实施例所述方案的目的。另外,在一些场景中,本发明实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。

在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、gpu、fpga、dsp和asic等。

依据以下条款可更好地理解前述内容:

以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1