本发明属于npu领域,具体涉及一种适用于机器学习的硬件加速器及其对应的神经网络处理器芯片和计算机设备。
背景技术:
1、关键词识别是一个重要的研究领域,在智能设备上的设备唤醒和用户交互中起着关键作用。但在移动电话等资源有限的设备中高效运行的同时,将错误最小化是一个挑战。现有的高效的cnn通常由相同结构的重复块组成,并基于残差学习和深度可分离卷积。这种趋势在基于cnn的kws方法中仍在存在,通过1d或2d卷积处理所有特征,使用一维卷积可以在参数数量和计算量方面实现高效设计,但它缺乏诸如频率方向上的平移等特性。另一方面,与一维方法相比,二维卷积需要更多的计算。
2、广播残差网络的提出解决了上述问题。广播残差学习允许1d和2d特征结合在一起,即:2d特征上执行频率卷积。然后对二维特征进行频率平均,得到时间特征1d。经过一些时间计算后,通过广播1d残差信息将残差映射应用到输入的2d特征。这种学习方法能够在频率方向上进行卷积处理,以获得2d cnn的优势,同时最小化计算成本。广播残差网络以较小的模型尺寸和计算量实现了高精度,这种残差映射使网络能够有效地表示有用的音频特征,与传统卷积神经网络相比计算量更小。
3、现有的计算机系统中采用cou或gpu来执行广播残差网络的数据处理任务时,运算效率较低,对cpu和图形卡占有率较高。因此如何开发出一种更适用于广播残差网络等类似的机器学习算法的数据处理器,正成为本领域技术人员亟待解决的技术难题。
技术实现思路
1、为了解决现有cpu和gpu等通用处理器不适用于处理广播残差网络等基于机器学习算法的新型运算任务问题,本发明提供一种适用于机器学习的硬件加速器、芯片、计算机设备。
2、本发明采用以下技术方案实现:
3、一种适用于机器学习的硬件加速器,其用于在计算机系统中处理基于机器学习算法的数据处理任务,以提高这样数据处理任务的运算速率。该硬件加速器包括:数据计算模块、数据存储模块、数据读写模块、数据分配模块和计算控制模块。
4、其中,数据计算模块内包含适用于的指定机器学习算法的所有算子,各个算子用于实现不同的计算操作和特征提取。
5、数据存储模块包括多个内部缓冲区,各个缓冲区用于按照指令输出16位、32位和64位三种不同的数据位宽。各个缓存区的写入操作均为64位,并采用参数化设计的方式,以满足不同的应用场景和精度要求。
6、数据读写模块包含两个用于访问外部memory的dma。其中一个dma用户从外部存储器获取数据源,另一个dma用于向外部存储发送运算结果。dma采用内存映射的数据传输模式在外部存储器与内部的数据存储模块之间实现数据传送。
7、数据分配模块用于根据获取的配置信息对特征图进行预处理。经过预处理的数据,会被分类存储到数据存储模块中的各个内部缓冲区中;数据分配模块还用于从输出缓冲区中读取计算结果并传输到外部存储器中。
8、计算控制模块用于获取网络配置与参数,进而在接收到开始信号后生成适当的接口时序来启动dma并获取所需的网络配置信息。计算控制模块通过监测dma的中断信号来判断是否完成配置信息,并清除相关的中断和状态。
9、作为本发明进一步的改进,数据计算模块中的算子包括:卷积、转置卷积、relu、元素相加、深度可分离卷积、逐点卷积、最大池化、平均池化。
10、作为本发明进一步的改进,数据存储模块中包括四个数据缓冲区,分别为输入缓冲区、权重缓冲区、偏置缓冲区和输出缓冲区。输入缓存区用于预存机器学习算法中网络模型的输入数据。权重缓冲区用于预存网络模型中动态更新的权重。偏置缓冲区中预存网络模型运算过程的偏置信息。输出缓冲区用于存储网络模型的数据处理结果。
11、作为本发明进一步的改进,数据存储模块中还包括一个配置寄存器组,配置寄存器组中包含了16个64位寄存器,并用于存储机器学习算法的网络模型中包括通道数、特征图尺寸的配置信息。
12、作为本发明进一步的改进,数据读写模块采用基于descriptor数据结构的dma,包括dma_write和dma_read。dma_read用于获取外部存储器中的数据,并将其写入到数据存储区中的输入缓冲区、权重缓冲区、偏置缓冲区和配置寄存器组中。dma_write用于将获取自输出缓冲区的数据写入到外部存储器。
13、作为本发明进一步的改进,数据分配模块包括scatter模块和gather模块。scatter模块根据获取的配置信息对通过dma读取的特征图进行预处理,经过预处理的数据被分类存储到输入缓冲区、权重缓冲区和偏置缓冲区和配置寄存器组。其中,scatter模块支持的预处理方法包括数据格式的转换、填充、旋转、缩放操作。gather模块在数据传输过程中负责从输出缓冲区中读取数据。
14、作为本发明进一步的改进,计算控制模块包括fetch config模块与fetch param模块。fetch config模块在接收到start信号后生成适当的接口时序来启动dma并获取所需的网络配置信息,通过监测dma的中断信号来判断是否完成配置信息,并清除相关的中断和状态。fetch param模块用于根据接收到的信号同步完成包括权重,偏置在内的网络参数的获取。
15、作为本发明进一步的改进,该适用于机器学习的硬件加速器采用遵循avalon总线的接口时序,应用的接口信号包括:clock、reset_n、process_start、process_done、mem_address、mem_write、mem_write_waitrequest、mem_writedata、mem_read、mem_read_waitrequest、mem_readdatavalid、mem_qout。
16、本发明还包括一种神经网络处理器芯片,其内封装有如前述的适用于机器学习的硬件加速器。该神经网络处理器芯片用于执行基于包括广播残差网络在内的其它任意一项指定的机器学习算法的数据处理任务。
17、本发明还包括一种计算机设备,其包括存储器、处理器以及存储在存储器上并在处理器上运行的计算机程序。处理器包括cpu和/或gpu。特别的,该计算机设备的处理器还包括如前述的神经网络处理器芯片。
18、本发明提供的技术方案,具有如下的有益效果:
19、本发明针对新兴的神经网络的数据处理任务设计了一种新的硬件加速器,该加速器可以根据不同任务对网络模型的调整,灵活配置数据计算模块的结构,进而适用于不同机器学习算法的应用,尤其适用于包含广播网络残差结构的复杂神经网络的应用。
20、本发明提供的硬件加速器可以大幅提高计算机系统处理机器学习算法类任务的运算速度和效率,并降低对cpu和gpu等硬件的占用,节省计算机能耗。
1.一种适用于机器学习的硬件加速器,其用于在计算机系统中处理基于机器学习算法的数据处理任务,以提高这样数据处理任务的运算速率;其特征在于,所述硬件加速器包括:
2.如权利要求1所述的适用于机器学习的硬件加速器,其特征在于:所述数据计算模块中的算子包括:卷积、转置卷积、relu、元素相加、深度可分离卷积、逐点卷积、最大池化、平均池化。
3.如权利要求1所述的适用于机器学习的硬件加速器,其特征在于:所述数据存储模块中包括四个数据缓冲区,分别为输入缓冲区、权重缓冲区、偏置缓冲区和输出缓冲区;所述输入缓存区用于预存机器学习算法中网络模型的输入数据;所述权重缓冲区用于预存网络模型中动态更新的权重;所述偏置缓冲区中预存网络模型运算过程的偏置信息;所述输出缓冲区用于存储网络模型的数据处理结果。
4.如权利要求1所述的适用于机器学习的硬件加速器,其特征在于:所述数据存储模块中还包括一个配置寄存器组,配置寄存器组中包含了16个64位寄存器,并用于存储机器学习算法的网络模型中包括通道数、特征图尺寸的配置信息。
5.如权利要求1所述的适用于机器学习的硬件加速器,其特征在于:所述数据读写模块采用基于descriptor数据结构的dma,包括dma_write和dma_read;所述dma_read用于获取外部存储器中的数据,并将其写入到数据存储区中的输入缓冲区、权重缓冲区、偏置缓冲区和配置寄存器组中;所述dma_write用于将获取自输出缓冲区的数据写入到外部存储器。
6.如权利要求1所述的适用于机器学习的硬件加速器,其特征在于:所述数据分配模块包括scatter模块和gather模块;所述scatter模块根据获取的配置信息对通过dma读取的特征图进行预处理,经过预处理的数据被分类存储到输入缓冲区、权重缓冲区和偏置缓冲区和配置寄存器组;所述scatter模块支持的预处理方法包括数据格式的转换、填充、旋转、缩放操作;所述gather模块在数据传输过程中负责从输出缓冲区中读取数据。
7.如权利要求1所述的适用于机器学习的硬件加速器,其特征在于:所述计算控制模块包括fetch config模块与fetch param模块;所述fetch config模块在接收到start信号后生成适当的接口时序来启动dma并获取所需的网络配置信息,通过监测dma的中断信号来判断是否完成配置信息,并清除相关的中断和状态;所述fetch param模块用于根据接收到的信号同步完成包括权重,偏置在内的网络参数的获取。
8.如权利要求1所述的适用于机器学习的硬件加速器,其特征在于,其采用遵循avalon总线的接口时序,应用的接口信号包括:clock、reset_n、process_start、process_done、mem_address、mem_write、mem_write_waitrequest、mem_writedata、mem_read、mem_read_waitrequest、mem_readdatavalid、mem_qout。
9.一种神经网络处理器芯片,其特征在于:其其内封装有如权利要求1-8中任意一项所述的适用于机器学习的硬件加速器;所述神经网络处理器芯片用于执行基于包括广播残差网络在内的其它任意一项指定的机器学习算法的数据处理任务。
10.一种计算机设备,其包括存储器、处理器以及存储在存储器上并在处理器上运行的计算机程序;所述处理器包括cpu和/或gpu,其特征在于:所述处理器还包括如权利要求9所述的神经网络处理器芯片。