CN110363291A - 神经网络的运算方法、装置、计算机设备和存储介质 - Google Patents

神经网络的运算方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN110363291A
CN110363291A CN201810252109.2A CN201810252109A CN110363291A CN 110363291 A CN110363291 A CN 110363291A CN 201810252109 A CN201810252109 A CN 201810252109A CN 110363291 A CN110363291 A CN 110363291A
Authority
CN
China
Prior art keywords
neural network
power
data
fpga
kernel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810252109.2A
Other languages
English (en)
Other versions
CN110363291B (zh
Inventor
李威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201810252109.2A priority Critical patent/CN110363291B/zh
Publication of CN110363291A publication Critical patent/CN110363291A/zh
Application granted granted Critical
Publication of CN110363291B publication Critical patent/CN110363291B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Feedback Control In General (AREA)

Abstract

本申请涉及一种神经网络运算方法、系统、计算机设备和存储介质,所述方法包括:获取任务处理指令,根据所述任务处理指令生成神经网络运算装置的控制指令和预处理配置指令;根据所述控制指令,得到神经网络运算算法;根据所述预处理配置指令对FPGA IP核进行配置,得到预处理算法;通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据;根据所述神经网络运算算法对所述预处理后的输入神经元数据执行神经网络运算,得到输出神经元数据;通过FPGA IP核输出所述输出神经元数据。通过本申请所提供的方法、装置、计算机设备和存储介质能够使得神经网络运算装置灵活性高、对深度学习算法依赖性小、能够适应不断变化的应用需求或算法变化。

Description

神经网络的运算方法、装置、计算机设备和存储介质
技术领域
本申请涉及人工智能领域,特别是涉及神经网络的运算方法、装置、计算机设备和存储介质。
背景技术
目前一些性能较好的神经网络通常都非常庞大,这也意味着这些神经网络需要大量的计算资源和存储资源。大量的计算和存储资源的开销会降低神经网络的运算速度,同时,对硬件的传输带宽以及运算器的要求也大大提高了。针对这一问题,可以通过改变深度学习处理器的硬件架构来对算法的实现进行加速。
深度学习处理器中除了专门用于神经元计算的深度学习运算单元,通常会通过专用逻辑电路实现对输入数据的预处理和输出数据的后处理,但专用逻辑电路灵活性差,对深度学习算法的依赖性大。一旦应用需求或算法发生变化,则需要重新设计专用逻辑电路,造成时间和经济上的巨大开销;并且专用逻辑电路的开发成本高,开发周期长,开发难度大。
发明内容
基于此,有必要针对上述技术问题,提供一种灵活性高、对深度学习算法依赖性小、能够适应不断变化的应用需求或算法变化的一种基于FPGA IP核的神经网络运算的方法、装置、计算机设备和存储介质。
一种神经网络运算方法,所述方法包括:
获取任务处理指令,根据所述任务处理指令生成控制指令和预处理配置指令;
根据所述控制指令,得到神经网络运算算法;
根据所述预处理配置指令对FPGA IP核进行配置,得到预处理算法;
通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据;
根据所述神经网络运算算法对所述预处理后的输入神经元数据执行神经网络运算,得到输出神经元数据;
通过FPGA IP核输出所述输出神经元数据。
上述神经网络运算方法、装置、计算机设备和存储介质,通过对FPGA IP核进行不同的配置,使得一个神经网络运算装置能够实现对神经元数据不同的预处理操作,从而使得神经网络运算装置的灵活性提高、对深度学习算法依赖性降低、且能够适应不断变化的应用需求或算法变化。
附图说明
图1为一个实施例中基于FPGA IP核的深度学习处理器装置的结构示意图;
图2为一个实施例中神经网络运算方法流程图;
图3为一个实施例中FPGA IP核的内部结构示意图;
图4为一个实施例中当FPGA IP核配置为幂次转换单元时的深度学习处理器的结构示意图;
图5为一个实施例中FPGA IP核配置为幂次转换单元时运算方法的流程示意图;
图6为一个实施例中的编码表的示意图;
图7为一个实施例中的编码表的另一示意图;
图8为一个实施例中的编码表的另一示意图;
图9为一个实施例中的编码表的另一示意图;
图10为一个实施例中的幂次数据的表示方法示意图;
图11为一个实施例中的神经元与幂次权值的乘法操作示意图;
图12为一个实施例中的神经元与幂次权值的乘法操作示意图;
图13为另一个实施例中FPGA IP核配置为幂次转换单元时运算方法的流程示意图;
图14为另一个实施例中的编码表的示意图;
图15为另一个实施例中的编码表的另一示意图;
图16为另一个实施例中的编码表的另一示意图;
图17为另一个实施例中的编码表的另一示意图;
图18为另一个实施例中的幂次数据的表示方法示意图;
图19为另一个实施例中的幂次神经元与幂次权值的乘法操作示意图;
图20为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的神经网络运算方法,可以应用于如图1所示的神经网络运算装置100中,包括:
控制单元102,用于控制整个深度学习处理器的数据和指令的交互;
深度学习运算单元103,与所述控制单元102连接,接收所述控制单元102发送的指令,并执行神经网络运算;
FPGA IP核单元105,与所述控制单元102连接和深度学习运算单元103连接,接收控制单元102发送的指令以完成自身配置,用于神经网络运算装置与外部的通信,同时用于神经元数据的预处理和后处理。
具体的,FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL(Programmable Array Logic)、GAL(Generic-Programmable Array Logic)、CPLD(Complex Programmable Logic Device)等可编程器件的基础上进一步发展的产物,是一种通用的逻辑电路,具有灵活性高、开发风险低的优点。具体的,IP核(intellectualproperty core)在集成电路的可重用设计方法学中,是指某一方提供的、形式为逻辑单元、芯片设计的可重用模块。
在其中一个实施例中,神经网络运算装置100还包括存储单元101,用于存储输入神经元数据、输出神经元数据以及权值数据。
在其中一个实施例中,存储单元101包括:
输入神经元缓存模块1011,用于从FPGA IP核单元接收神经元数据;
权值缓存模块1012,用于从FPGA IP核单元接收权值数据;
输出神经元缓存模块1013,用于接收深度学习运算单元输出的神经元数据。
在其中一个实施例中,神经网络运算装置100还包括DMA(Direct Memory Access直接内存访问)单元106,与存储单元101连接,用于FPGA IP核单元105、深度学习运算单元103与存储单元101的数据传输。
具体地,所述控制单元102包括:
数据控制模块1021,通过I/O口与处理器外部连接,用于完成外部指令、指令缓存模块及FPGAIP核单元配置模块之间的数据和指令交互;
FPGA IP核配置模块1022,与FPGA IP核单元105连接,用于对将用户通过编程生成的位流码数据配置到FPGA IP核单元105中。具体的,将用户通过编程生成的位流码配置到FPGA IP核单元105中的配置方式包括SRAM、flash以及其他能够实现FPGA IP核单元105配置的配置方式。
指令缓存模块1023,与所述数据控制模块1021连接,用于接收数据控制模块1021发送的指令,并进行缓存;
译码模块1024,与所述指令缓存模块1023连接,用于从指令缓存模块2023中读取指令,并将其译码成各运算指令;
在一个实施例中,深度学习运算单元103,分别与所述译码模块1024、DMA单元106连接,接收各运算指令、神经元数据及权值数据,用于接收各运算指令、神经元数据及权值数据,并根据各运算指令对其接收的神经元数据和权值数据执行相应的神经网络运算。深度学习运算单元103输出的神经元数据,通过DMA单元106写入到存储单元101中,作为下一层神经网络运算的输入数据。
具体的,DMA单元106用于FPGA IP核单元105、深度学习运算单元103与存储单元101的数据传输。通过DMA访问存储单元101的最大优势在于,处理器配置完DMA单元106状态机后可继续执行其他指令操作,然后DMA单元106状态机会通过请求总线中断的方式来完成数据传输。DMA单元106主要分为读操作、写操作以及仲裁3部分。初始条件下,DMA单元106处于复位状态,控制单元102通过读取DMA信息标示符来判断当前是否处于空闲状态,并读取DMA单元106控制信息,相应的进入读操作或写操作。
在一个实施例中,FPGA IP核单元通过高速接口,实现神经网络运算装置100与外部的通信。可选的,高速接口包括DDR接口、PCIE接口、Serdes接口以及其他能够内置在FPGAIP核中,以实现神经网络运算装置与外部高速通信的接口皆可。
可以理解的,图1所示的神经网络运算装置100仅是本申请所提供的神经网络运算方法的其中一种应用场景,本申请所提供的神经网络运算方法的并不限于应用于在图1所示的神经网络运算装置100。
在一个实施例中,图2为依据本实施例神经网络运算方法流程图。请一并参照图2,包括:
步骤S11,获取任务处理指令,根据所述任务处理指令生成控制指令和预处理配置指令;
具体的,所述任务处理指令由用户输入,用户根据对神经网络运算方法的处理需求,编译生成对应处理需求的任务处理指令,并将任务处理指令发送至神经网络处理装置。
步骤S12,根据所述控制指令,得到神经网络运算算法;
具体的,所述控制指令是神经网络处理装置根据任务处理指令对神经网络处理装置进行相应配置,以满足用户数据处理的不同需求。
步骤S13,根据所述预处理配置指令对FPGA IP核进行配置,得到预处理算法;
步骤S14,通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据;
具体的,输入神经元数据是指未经过预处理的输入神经元数据。可以理解的,当输入神经元数据不需要进行预处理时,可以直接进行神经网络运算。
步骤S15,根据所述神经网络运算算法对所述预处理后的输入神经元数据执行神经网络运算,得到输出神经元数据;
具体的,神经网络运算算法是在深度学习运算单元中执行,深度学习运算单元依据控制指令,完成算法调度和使用,从而对预处理后的输入神经元数据执行预定的神经网络运算。
步骤S16,通过FPGA IP核输出所述输出神经元数据。
具体的,预处理后的输入神经元数据经过神经网络运算后得到输出神经元数据。若输出神经元数据若不需要经过后处理,则直接通过FPGA IP核输出到外部,若输出神经源数据需要经过后处理,则通过FPGA IP核进行后处理后再输出到外部。
在其中一个实施例中,所述步骤S12包括:
步骤S121,对所述控制指令进行译码,得到神经网络运算指令;
步骤S122,获取所述神经网络运算指令,得到神经网络运算算法。
在其中一个实施例中,所述预处理算法包括幂次转换算法、浮点转定点算法、权值解压缩算法以及激活算法中的一种。
可选的,预处理是神经网络处理器进行神经网络运算的可选的步骤,即不是所有的神经网络运算的输入神经元数据都必须经过预处理才能执行神经网络运算。当原始输入数据的格式等不满足执行神经网络运算的要求时,才对原始神经元数据执行预处理。
在其中一个实施例中,所述预处理算法包括幂次转换算法,所述通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据的步骤包括:
接收所述任务处理指令,并生成幂次转换配置信号;
对所述FPGA IP核进行配置,得到幂次转换单元;
通过所述幂次转换单元将所述输入神经元数据的非幂次神经元数据转换为幂次权值数据,将输入神经元数据的非幂次权值数据转换为幂次权值数据。
在其中一个实施例中,所述神经网络运算装置包括多层神经网络;
所述通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据的步骤包括:
获取所述上一层神经网络的输出神经元数据;
将所述上一层神经网络的输出神经元数据存储于存储单元中;
通过所述FPGA IP核从存储单元中读取所述上一层神经网络的输出神经元数据,并对所述上一层神经网络的输出神经元数据进行预处理,得到本层神经网络的输入神经元数据。
在其中一个实施例中,当所述本层神经网络为最后一层神经网络时,所述通过FPGAIP核输出所述输出神经元数据的步骤包括:
通过所述本层神经网络对所述本层神经网络的输入神经元数据进行运算,得到本层神经网络的输出神经元数据;
通过FPGA IP核将所述本层神经网络的输出神经元数据输出。
具体的,最后一层神经网络的输出神经元数据作为整个神经网络的输出数据,由FPGA IP核中的高速接口传输到外部。容易理解的,第一层神经网络的输入神经元数据作为整个神经网络的输入数据,由FPGA IP核中的高速接口传入到神经网络运算装置中。
在其中一个实施例中,所述神经网络通过FPGA IP核输出所述输出神经元数据,还包括:对所述输出神经元数据进行后处理,得到最终输出神经元数据;通过所述FPGA IP核输出所述最终输出神经元数据。
可选的,后处理是神经网络处理器进行神经网络运算的可选的步骤,即不是所有的神经网络运算的输出神经元数据都必须经过后处理。
可选的,后处理包括幂次转换算法、浮点转定点算法、权值解压缩算法、激活算法以及其他满足神经网络运算需要的后处理操作。
在一个实施例中,当需要对输入神经元数据进行预处理时,FPGA IP核单元105从存储单元101读取输入神经元数据并作输入神经元数据的预处理,例如幂次转换操作、激活操作、浮点转定点操作,权值解压缩操作;
经过FPGA IP核单元105预处理之后的输入神经元数据传输到深度学习运算单元103进行运算,经深度学习运算单元103运算后得到输出神经元数据;
若输入神经元数据不需要进行预处理,则深度学习运算单元103从存储单元101中读取输入神经元数据,并进行运算,得到输出神经元数据。
若输出神经元数据需要经过后处理,则输出神经元数据传输到FPGA IP核单元105中,在FPGA IP核单元105中进行输出神经元数据的后处理,如幂次转换操作、激活操作、浮点转定点操作;经过FPGA IP核单元105后处理的输出神经元数据,经DMA单元106传输到存储单元101进行存储。
若输出神经元数据不需要经过后处理,则输出神经元数据由深度学习运算单元经DMA单元106后直接传输到存储单元101中进行存储。.
一种神经网络运算装置,所述装置包括:
指令获取模块,用于获取任务处理指令,根据所述任务处理指令生成神经网络运算装置的控制指令和预处理配置指令;
神经网络运算算法生成模块,用于所述神经网络运算装置根据所述控制指令,得到神经网络运算算法;
预处理配置模块,用于所述神经网络运算装置根据所述预处理配置指令对FPGAIP核进行配置;
预处理模块,用于通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据;
神经网络运算模块,用于根据所述神经网络运算算法对所述预处理后的输入神经元数据执行神经网络运算,得到输出神经元数据;
数据输出模块,用于通过FPGA IP核输出所述输出神经元数据。
在一个实施例中,如图3所示,提供了一种本申请所述FPGA IP核单元架构。
具体的,本申请所述FPGA IP核单元,其架构为完整的FPGA器件中除去可编程输入输出管脚的部分,请参阅图3,其中包括:可编程逻辑模块CLB(Configurable Logic Block)模块301,可编程存储模块BRAM模块302,数字信号处理DSP模块(digital signalprocessor)303,高速接口模块305,例如双数据速率接口DDR(Double Data SynchronousDynamic Random Access Memory)模块3051、PCIE模块3052、Serdes模块3053。所述的高速接口,可以用于与处理器与外部信号进行通信,不再嵌入额外的接口模块,能够节省器件空间,降低开发成本。
在一个实施例中,每块BRAM模块302有4096个存储胞元,每个端口都有独立的控制信号,使得BRAM模块302的每个端口均可以独立地以特定的数据宽度配置成可读写、只读或只写端口,提供了内嵌的总线宽度转换功能。BRAM模块302是按每5个排成一列,BRAM模块列上有特殊的布线资源,使得可以利用最小的布线时延将BRAM模块302串联起来,能够使得牺牲更少的时序来实现更深的RAM结构。
在一个实施例中,DSP模块303为可编程数字信号处理单元,通常是多位宽浮点或定点乘法器+加法器。
具体的,FPGA IP核单元205中实现的操作包括:
利用DDR接口模块3051或PCIE接口模块3052从深度学习处理器外部读取数据,或将数据输出到深度学习处理器外部;
对权值数据进行处理,例如解压缩处理,包括霍夫曼解码,幂次转换以及其他对权值数据的解压缩算法;
对输入数据进行处理,对输入数据的处理方法有很多种,例如对输入数据进行浮点转定点变换、幂次转换。
对深度学习运算单元的输出数据进行激活操作或幂次转换操作,其中激活操作所采用的激活函数有多种类型,例如sigmoid函数、tanh函数以及ReLu函数。
在一个实施例中,请一并参阅图1和图3,在嵌入FPGA IP核单元205的深度学习处理器中进行卷积神经网络运算,运算过程包括:
将一种卷积神经网络算法和经用户编程生成的位流码通过I/O接口输入到深度学习处理器中;
控制单元102中的FPGA IP核配置模块1022接收位流码,并将位流码配置到FPGAIP核单元105中;
在其中一个实施例中,卷积神经网络算法中的输入数据包含输入神经元数据、权值数据。
可选的,当在卷积神经网络运算中,需要对输入数据进行幂次转换的预处理时,处理过程包括:
FPGA IP核配置模块1022接收用户编程生成的位流码,并生成相应的配置控制信号;
FPGA IP核单元105接收FPGA IP核配置单元1022的配置控制信号,读入位流码将FPGA IP核配置为幂次转换单元。具体的,FPGA IP核单元中的CLB模块301和DSP模块303实现对输入数据的幂次转换操作,得到经幂次转换操作的输入数据,并将经幂次转换操作的输入数据保存在FPGA IP核的BRAM模块302中。FPGA IP核单元105中BRAM模块302中保存的数据传送到深度学习处理器的深度学习运算单元303中进行下一步的运算操作,例如卷积、池化操作。
可选的,当在卷积神经网络运算中,需要对输入数据的权值数据进行解码操作的预处理时,处理过程包括:
FPGA IP核配置模块1022接收用户编程生成的位流码,并生成相应的配置控制信号;
FPGA IP核单元105接收FPGA IP核配置模块1022的配置控制信号,读入位流码将FPGA IP核105配置为解码单元。具体的,FPGA IP核单元105中的CLB模块301和DSP模块303实现对经过霍夫曼编码压缩过的权值数据进行解码操作,得到经解码操作的权值数据,并将经解压缩操作的权值数据保存在FPGA IP核单元105的BRAM模块302中。
可选的,当在卷积神经网络运算中,需要对输入数据的权值数据进行浮点转定点的预处理时,处理过程包括:
FPGA IP核单元105配置模块接收用户编程生成的位流码,并生成相应的配置控制信号;
FPGA IP核单元105接收FPGA IP核配置模块1022的配置控制信号,读入位流码将FPGA IP核单元105配置为浮点转定点单元。具体的,FPGA IP核单元105中的CLB模块301和DSP模块303实现对输入或输出数据的浮点转定点操作,得到经浮点转定点操作的输入或输出数据,并将浮点转定点操作的输入或输出数据保存在FPGA IP核单元105的BRAM模块302中。
可选的,当在卷积神经网络运算中,需要对输出数据的权值数据进行激活操作的后处理时,处理过程包括:
FPGA IP核配置模块1022接收用户编程生成的位流码,并生成相应的配置控制信号;
FPGA IP核单元105接收FPGA IP核配置单元1022的配置控制信号,读入位流码将FPGA IP核单元105配置为激活单元,实现对输出数据的激活运算操作,例如非线性激活运算操作,得到经激活操作的输出数据,并将经激活操作的输出数据保存在FPGA IP核单元105的BRAM模块302中。
在一个实施例中,若深度学习运算单元103进行卷积操作之后的下一步操作是池化操作或卷积操作,则经过深度学习运算单元103卷积运算的数据通过DMA单元106输出到深度学习处理器的存储单元101中。
具体的,当进行下一步的池化操作或卷积时,深度学习运算单元103通过DMA单元从存储单元101中获取经过深度学习运算单元103卷积运算的数据;并且从FPGA IP核单元105中获取解码后的权值数据。
深度学习运算单元103根据从存储单元101获取到的经过深度学习运算单元103运算的数据和从FPGA IP核单元105中获取解码后的权值数据,进行池化运算或卷积运算。
在一个实施例中,若深度学习运算单元103进行卷积操作之后的下一步操作是幂次转换操作,则经过深度学习运算单元103卷积运算的数据输出到FPGA IP核单元105中,进行幂次转换操作,所得的操作结果保存在FPGA IP核单元105的BRAM模块302中,通过FPGAIP核单元105的BRAM模块302输出到深度学习运算单元103中,进行再下一步的运算。
在一个实施例中,若深度学习运算单元103进行的卷积操作为该卷积神经网络算法的最后一步,则在深度学习运算单元计算完成得到经过深度学习运算单元103卷积运算的数据输出至FPGA IP核单元105中,再经过必要的数据格式转换,通过FPGA IP核单元105的DDR接口模块3051、PCIE接口模块3052或Serdes模块3053输出至深度学习处理器外部。
具体的,所述数据格式转换,例如输出的多位并行数据转换成高速串行数据,通过Serdes模块输出;或例如输出的多位并行数据,经过时钟同步、数据对齐处理,通过DDR接口模块输出。
在一个实施例中,幂次转换算法包括:
接收所述任务处理指令,并生成幂次转换配置信号;
对所述FPGA IP核进行配置,得到幂次转换单元;
所述幂次转换单元将所述输入神经元数据的非幂次神经元数据转换为幂次权值数据,将输入神经元数据的非幂次权值数据转换为幂次权值数据。
在一个实施例中,请一并参阅图4,图4提供了一种用于卷积神经网络的运算的神经网络处理装置示意图,并且将FPGA IP核单元配置为幂次转换单元405。
具体的,如图4所示的深度学习处理器包括:
存储单元401,用于存储数据。该存储单元从外部地址空间接收包括神经网络权值数据、神经网络输入数据,同时也接收深度学习运算单元403计算所得的输出数据、经幂次转换单元305操作后的输出数据。
控制单元402,与深度学习处理器外部通过I/O口连接,用于控制数据和指令的交互,其接收深度学习处理器外部发送的指令,并将指令译码成运算指令;并接收深度学习处理器外部发送的位流码,并根据位流码对FPGAIP进行配置。
深度学习运算单元403,与所述控制单元402、存储单元401以及幂次转换单元405连接,深度学习运算单元403的运算过程包括:
接收该控制单元402发送的控制和运算指令,并根据运算指令对其从存储单元401接收的权值数据和神经元数据执行神经网络运算,并将运算结果的输出数据经DMA模块406发送至存储单元401;或
接收该控制单元402发送的控制和运算指令,并根据经幂次转换单元405预处理之后的权值数据和神经元数据,执行神经网络运算,并将运算结果的输出数据经DMA模块406发送至存储单元401;或
接收该控制单元402发送的控制和运算指令,并根据运算指令对其从存储单元301接收的权值数据和神经元数据执行神经网络运算,并将运算结果的输出数据发送至幂次转换单元405进行输出数据的后处理操作。
幂次转换单元405,其与所述存储单元401连接,幂次转换单元405的运算过程包括:
将神经网络输入数据中非幂次神经元数据及非幂次权值数据分别转换为幂次神经元数据及幂次权值数据,并发送至所述存储单元401。而对于神经网络输入数据中的幂次神经元数据及幂次权值数据,则直接存入存储单元401;
同时,
幂次转换单元405,与深度学习运算单元403连接,用于将经幂次转换单元305运算后的神经元数据转换为幂次神经元数据,并发送至所述存储单元401。
进一步的,所述存储单元401包括:
输入神经元缓存模块4011,用于从外部地址空间接收神经元数据;
权值缓存模块4012,用于从外部地址空间接收权值数据;输出神经元缓存单元4013,用于接收深度学习运算单元403输出的神经元数据。
所述控制单元402包括:
数据控制模块4021,与处理器芯片外部连接,用于完成外部控制指令及指令缓存模块之间的数据和指令交互;
FPGA IP核配置模块4022,与所述数据控制模块4021连接,用于接收数据控制模块4021发送的指令,并根据接收到的数据控制模块的4021发送的指令生成FPGA IP核单元的配置控制信号。FPGA IP核单元接收配置控制信号,并读入位流码将FPGA IP核单元配置为幂次转换单元405。
指令缓存模块4023,与所述数据控制模块4021连接,用于接收数据控制模块4021发送的指令;
译码模块4024,与所述指令缓存模块4023连接,用于从指令缓存模块4023中读取指令,并将其译码成各运算指令;
进一步的,幂次转换操作有多种可选方式。下面列举三种幂次转换操作:
第一种幂次转换方法:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,为输入数据的符号,sin为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取下整操作。
第二种幂次转换方法:
sout=sin
其中,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,为输入数据的符号,sin为输出数据的符号,sout为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取上整操作。
第三种幂次转换方法:
sout=sin
dout+=[log2(din+)]
其中,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,dout+=dout×sout,dout+为输出数据的正数部分dout+=dout×sout,;表示对数据x做四舍五入操作。
在一个实施例中,请一并参阅图5,提供了一种神经网络运算方法。具体的,本实施例的神经网络为多层神经网络,对于每层神经网络可按图5所示的运算方法进行运算,其中,深度学习处理器第一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的权值数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据。如图5所示,本实施例提供了一种单层神经网络的运算方法,包括:
步骤S51,获取指令、神经元数据及幂次权值数据。
其中,所述步骤S51包括以下子步骤:
S511,将指令、神经元数据及权值数据输入存储单元;其中,对幂次权值数据直接输入存储单元,对非幂次权值数据经过幂次转换单元转换后输入存储单元;
S512,数据控制模块接收该存储单元发送的指令、神经元数据及幂次权值数据;
S5131,指令缓存模块接收所述数据控制模块发送的指令,并分发给译码模块;
S5132,输入神经元缓存模块接收幂次转换单元发送的神经元数据,并发送到深度学习运算单元;
S5133,权值缓存模块接收幂次转换单元发送的幂次权值数据,并发送到深度学习运算单元。
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,具体为,幂次权值数据包括符号位和幂次位,符号位用一位或多位比特位表示权值数据的符号,幂次位用m位比特位表示权值数据的幂次位数据,m为大于1的正整数。存储单元预存有编码表,提供幂次权值数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次权值数据为0。也就是说,当幂次权值数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次权值数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图6所示一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次权值数据为0。
编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施方式中,y为1,x的数值等于-2m-1。由此幂次权值数据所表示的数值的指数范围为-2m-1~2m-1-1。
在一种实施方式中,如图7所示,一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次权值数据为0。
如图8所示,另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次权值数据为0。
编码表的对应关系可以是负相关的,存储单元预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施方式中,y为1,x的数值等于2m-1。由此幂次权值数据所表示的数值的指数范围为-2m-1-1~2m-1。
如图9所示,一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次权值数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次权值数据为0;当幂次位数据最高位为1时,对应幂次权值数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次权值数据为0;当幂次位数据最高位为0时,对应幂次权值数据不为0。用另一种语言来描述,即幂次权值数据的幂次位被分出一个比特来指示幂次权值数据是否为0。
在一个具体实例图10所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次权值数据对应相应的二进制补码。当幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储权值数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据权值的数据范围采用不同的数据长度。
S52,根据运算指令对神经元数据及幂次权值数据进行神经网络运算。其中,所述步骤S52包括以下子步骤:
S521,译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
S522,深度学习运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模块发送的运算指令、幂次权值数据以及神经元数据,并根据运算指令对神经元数据及幂次表示的权值数据进行神经网络运算。
所述神经元与幂次权值乘法操作具体为,神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次权值数据幂次位对应的指数数值;将指数数值与神经元数据幂次位做加法操作,神经元数据有效位保持不变。
具体的,如图11所示,神经元数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次权值为000110,则其表示的实际数值为64,即26。幂次权值的幂次位加上神经元的幂次位结果为11011,则结果的实际数值为1.40625*212,即为神经元与幂次权值的乘积结果。通过该运算操作,使得乘法操作变为加法操作,减小计算所需的运算量。
具体的,如图12所示,神经元数据为32位浮点数据,符号位为1,幂次位为10000011,有效位为10010010000000000000000,则其表示的实际数值为-1.5703125*24。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则其表示的实际数值为-2-4。(神经元的幂次位加上幂次权值的幂次位结果为01111111,则结果的实际数值为1.5703125*20,即为神经元与幂次权值的乘积结果。
可选的,还包括步骤S53,将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据。
其中,所述步骤S53可包括以下子步骤:
S531,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据。
S532,将输出神经元缓存单元接收的神经元数据传输给数据控制模块,通过输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经元;
S54,判断是否到达神经网络的最后一层运算:
若否,则再重复步骤S51至步骤S53;
若是,则运算结束。
另外,通过幂次转换单元获得的幂次神经元数据可作为神经网络运算下一层的输入幂次神经元,再重复步骤S51至步骤S53直到神经网络最后一层运算结束。通过改变存储单元预存的整数值x和正整数值y,可以调整神经网络运算装置所能表示的幂次神经元数据范围。
另外,所述幂次转换的具体操作方法与附图4所述实施例相同,此处不再赘述。
在一个实施例中,提供了另一种神经网络运算方法,图5为本实施例神经网络运算方法的流程图。
具体而言,本实施例的神经网络为多层神经网络,对于每层神经网络可按图4所示的运算方法进行运算,其中,神经网络第一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据;此后各层神经网络的输入神经元数据可由在该层之前的一层或多层神经网络的输出幂次神经元数据提供。
请参照图13,本实施例提供了一种单层神经网络的运算方法,包括:
步骤S61,获取指令、幂次神经元数据及幂次权值数据。
其中,所述步骤S61包括以下子步骤:
S611,将指令、神经元数据及权值数据输入存储单元;其中,对幂次神经元数据及幂次权值数据直接输入存储单元,对非幂次神经元数据及非幂次权值数据则经过所述第幂次转换单元转换为幂次神经元数据及幂次权值数据后输入存储单元;
S612,数据控制模块接收该存储单元发送的指令、幂次神经元数据及幂次权值数据;
S613,指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收所述数据控制模块发送的指令、幂次神经元数据及幂次权值数据并分发给译码模块或运算单元。
所述幂次神经元数据及幂次权值数据表示神经元数据及权值数据的数值采用其幂指数值形式表示,具体为,幂次神经元数据及幂次权值数据均包括符号位和幂次位,符号位用一位或多位比特位表示神经元数据及权值数据的符号,幂次位用m位比特位表示神经元数据及权值数据的幂次位数据,m为大于1的正整数。存储单元的存储单元预存有编码表,提供幂次神经元数据及幂次权值数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次神经元数据及幂次权值数据为0。也就是说,当幂次神经元数据及幂次权值数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图6所示一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据及幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据及幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例方式中,y为1,x的数值等于-2m-1。由此幂次神经元数据及幂次权值数据所表示的数值的指数范围为-2m-1~2m-1-1。
在一种实施例方式中,如图15所示一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次神经元数据及幂次权值数据为0。
如图16所示另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是负相关的,存储单元预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据及幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据及幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在其中一个实施例中,y为1,x的数值等于2m-1。由此幂次神经元数据及幂次权值数据所表示的数值的指数范围为-2m-1-1~2m-1。
如图17所示一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次神经元数据及幂次权值数据为0;当幂次位数据最高位为1时,对应幂次神经元数据及幂次权值数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次神经元数据及幂次权值数据为0;当幂次位数据最高位为0时,对应幂次神经元数据及幂次权值数据不为0。用另一种语言来描述,即幂次神经元数据及幂次权值数据的幂次位被分出一个比特来指示幂次神经元数据及幂次权值数据是否为0。
在其中一个实施例中,如图18所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次神经元数据及幂次权值数据为0,幂次位数据为其他数值的时候幂次神经元数据及幂次权值数据对应相应的二进制补码。当幂次神经元数据及幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次神经元数据及幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储神经元数据及权值数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据神经元数据及权值数据的数据范围采用不同的数据长度。
S62,根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算。其中,所述步骤S62包括以下子步骤:
S621,译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
S622,运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模块发送的运算指令、幂次神经元数据及幂次权值数据,并根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算。
所述幂次神经元与幂次权值乘法操作具体为,幂次神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次神经元书记及幂次权值数据幂次位对应的指数数值;将幂次神经元数据对应的指数数值与幂次权值数据对应的指数数值做加法操作。
具体的,如图19所示,幂次神经元数据和幂次权值数据符号位为1位,幂次位数据位为4位,即m为4。编码表为幂次位数据为1111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元数据为00010,则其表示的实际数值为22。幂次权值为00110,则其表示的实际数值为64,即26。幂次神经元数据和幂次权值数据的乘积为01000,其表示的实际数值为28。
可以看到,幂次神经元数据和幂次权值的乘法运算相比于浮点数据的乘法以及浮点数据和幂次数据的乘法都更加的简单方便。
本实施例方法还可进一步包括,步骤S53,将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据。
其中,所述步骤S63可包括以下子步骤:
S631,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据。
S632,将输出神经元缓存单元接收的神经元数据传输给数据控制模块,通过输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经元;
S64,判断是否到达神经网络的最后一层运算:
若否,则再重复步骤S61至步骤S63;
若是,则运算结束。
由于神经网络运算后得到的神经元数据也为幂次数据,将其传输给数据控制模块所需带宽相比于浮点数据所需带宽大大减少,因此进一步减小了神经网络存储资源和计算资源的开销,提高了神经网络的运算速度。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
以上将FPGA IP单元配置为幂次转换单元仅表达了本发明的其中一种实施方式,通过对FPGA IP单元的不同配置方式,FPGA IP单元能够在深度学习处理器中实现不同的功能,从而使得专用逻辑电路具备可复用性,灵活性,高适应性。
应该理解的是,虽然各流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
关于基于FPGA IP核的神经网络运算装置的具体限定可以参见上文中对于基于FPGA IP核的神经网络运算方法的限定,在此不再赘述。上述基于FPGA IP核的神经网络运算装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待深度学习处理器处理的数据和经深度学习处理器处理完成的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于FPGA IP核的神经网络运算方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备包括存储器和处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以上任一实施例提供的所述方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (17)

1.一种神经网络的运算方法,其特征在于,所述方法包括:
获取任务处理指令,根据所述任务处理指令生成控制指令和预处理配置指令;
根据所述控制指令,得到神经网络运算算法;
根据所述预处理配置指令对FPGA IP核进行配置,得到预处理算法;
获取输入神经元数据,通过所述FPGA IP核对所述输入神经元数据执行预处理,得到预处理后的输入神经元数据;
根据所述神经网络运算算法对所述预处理后的输入神经元数据执行神经网络运算,得到输出神经元数据;
通过FPGA IP核输出所述输出神经元数据。
2.根据权利要求1所述的方法,其特征在于,所述神经网络运算装置根据所述控制指令,得到神经网络运算算法的步骤包括:
对所述控制指令进行译码,得到神经网络运算指令;
根据所述神经网络运算指令,获取神经网络运算算法。
3.根据权利要求1所述的方法,其特征在于,所述预处理算法包括幂次转换算法、浮点转定点算法、权值解压缩算法以及激活算法中的一种或多种。
4.根据权利要求3所述的方法,其特征在于,所述预处理算法包括幂次转换算法,所述通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据的步骤包括:
接收所述任务处理指令,并生成幂次转换配置信号;
对所述FPGA IP核进行配置,得到幂次转换单元;
通过所述幂次转换单元将所述输入神经元数据的非幂次神经元数据转换为幂次权值数据,将输入神经元数据的非幂次权值数据转换为幂次权值数据。
5.根据权利要求1所述的方法,其特征在于,所述神经网络运算装置包括多层神经网络;
所述通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到输入神经元数据的步骤包括:
获取所述上一层神经网络的输出神经元数据;
将所述上一层神经网络的输出神经元数据存储于存储单元中;
通过所述FPGA IP核从存储单元中读取所述上一层神经网络的输出神经元数据,并对所述上一层神经网络的输出神经元数据进行预处理,得到本层神经网络的预处理后的输入神经元数据。
6.根据权利要求5所述的方法,其特征在于,当所述本层神经网络为最后一层神经网络时,所述通过FPGAIP核输出所述输出神经元数据的步骤包括:
通过所述本层神经网络对所述本层神经网络的预处理后的输入神经元数据进行运算,得到本层神经网络的输出神经元数据;
通过FPGA IP核将所述本层神经网络的输出神经元数据输出。
7.根据权利要求1所述的方法,其特征在于,所述神经网络通过FPGA IP核输出所述输出神经元数据的步骤还包括:
对所述输出神经元数据进行后处理,得到最终输出神经元数据;
通过所述FPGA IP核输出所述最终输出神经元数据。
8.一种神经网络运算装置,其特征在于,所述装置包括:
指令获取模块,用于获取任务处理指令,根据所述任务处理指令生成神经网络运算装置的控制指令和预处理配置指令;
神经网络运算算法生成模块,用于所述神经网络运算装置根据所述控制指令,得到神经网络运算算法;
预处理配置模块,用于所述神经网络运算装置根据所述预处理配置指令对FPGA IP核进行配置;
预处理模块,用于通过所述FPGA IP核对神经网络的输入神经元数据执行预处理,得到预处理后的输入神经元数据;
神经网络运算模块,用于根据所述神经网络运算算法对所述预处理后的输入神经元数据执行神经网络运算,得到输出神经元数据;
数据输出模块,用于通过FPGA IP核输出所述输出神经元数据。
9.一种神经网络运算装置,其特征在于,所述装置包括:
控制单元,用于控制整个深度学习处理器的数据和指令的交互;
深度学习运算单元,与所述控制单元连接,接收所述控制单元发送的指令,并执行神经网络运算;
FPGA IP核单元,与所述控制单元连接和深度学习运算单元连接,接收控制单元发送的指令以完成自身配置,用于神经网络运算装置与外部的通信,同时用于神经元数据的预处理和后处理。
10.根据权利要求9所述装置,其特征在于,所述装置还包括存储单元,用于存储输入神经元数据、输出神经元数据以及权值数据。
11.根据权利要求10所述装置,其特征在于,所述存储单元包括:
输入神经元缓存模块,用于从FPGA IP核单元接收神经元数据;
权值缓存模块,用于从FPGA IP核单元接收权值数据;
输出神经元缓存模块,用于接收深度学习运算单元输出的神经元数据。
12.根据权利要求9所述的装置,其特征在于,所述装置还包括DMA单元,所述DMA单元与所述存储单元连接,用于所述FPGA IP核单元,所述存储单元、所述神经网络运算单元之间的数据传输。
13.根据权利要求9所述装置,其特征在于,所述控制单元包括:
数据控制模块,通过I/O口与外部连接,用于完成外部指令与指令缓存模块、FPGA IP核单元配置模块之间的数据和指令交互;
FPGA IP核配置模块,与FPGA IP核单元连接,用于对将用户通过编程生成的位流码数据配置到FPGA IP核单元中;
指令缓存模块,与所述数据控制模块连接,用于接收数据控制模块发送的指令,并进行缓存;
译码模块,与所述指令缓存模块连接,用于从指令缓存模块中读取指令,并将其译码成各运算指令。
14.根据权利要求9所述装置,其特征在于,所述深度学习运算单元,分别与所述译码模块、DMA单元连接,用于接收各运算指令、神经元数据以及权值数据,并根据各运算指令对其接收的神经元数据和权值数据执行相应的神经网络运算。
15.根据权利要求9所述的装置,其特征在于,所述FPGA IP核单元通过高速接口,实现神经网络运算装置与外部的通信。
16.一种计算机设备,包括存储器和处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN201810252109.2A 2018-03-26 2018-03-26 神经网络的运算方法、装置、计算机设备和存储介质 Active CN110363291B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810252109.2A CN110363291B (zh) 2018-03-26 2018-03-26 神经网络的运算方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810252109.2A CN110363291B (zh) 2018-03-26 2018-03-26 神经网络的运算方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN110363291A true CN110363291A (zh) 2019-10-22
CN110363291B CN110363291B (zh) 2022-02-08

Family

ID=68212079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810252109.2A Active CN110363291B (zh) 2018-03-26 2018-03-26 神经网络的运算方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN110363291B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506518A (zh) * 2020-04-13 2020-08-07 湘潭大学 一种数据存储控制方法及装置
CN111930668A (zh) * 2020-08-03 2020-11-13 中国科学院计算技术研究所 运算装置、方法、多核智能处理器及多核异构智能处理器
CN112163677A (zh) * 2020-10-14 2021-01-01 杭州海康威视数字技术股份有限公司 应用机器学习模型的方法、装置及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
US20160379111A1 (en) * 2015-06-25 2016-12-29 Microsoft Technology Licensing, Llc Memory bandwidth management for deep learning applications
CN106991477A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种人工神经网络压缩编码装置和方法
CN107239829A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种优化人工神经网络的方法
CN107480782A (zh) * 2017-08-14 2017-12-15 电子科技大学 一种片上学习神经网络处理器
CN107748914A (zh) * 2017-10-19 2018-03-02 珠海格力电器股份有限公司 人工神经网络运算电路

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160379111A1 (en) * 2015-06-25 2016-12-29 Microsoft Technology Licensing, Llc Memory bandwidth management for deep learning applications
CN106991477A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种人工神经网络压缩编码装置和方法
CN106228238A (zh) * 2016-07-27 2016-12-14 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN107239829A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种优化人工神经网络的方法
CN107480782A (zh) * 2017-08-14 2017-12-15 电子科技大学 一种片上学习神经网络处理器
CN107748914A (zh) * 2017-10-19 2018-03-02 珠海格力电器股份有限公司 人工神经网络运算电路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
祝芳: "基于FPGA的神经网络实现与应用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506518A (zh) * 2020-04-13 2020-08-07 湘潭大学 一种数据存储控制方法及装置
CN111506518B (zh) * 2020-04-13 2022-12-20 湘潭大学 一种数据存储控制方法及装置
CN111930668A (zh) * 2020-08-03 2020-11-13 中国科学院计算技术研究所 运算装置、方法、多核智能处理器及多核异构智能处理器
CN111930668B (zh) * 2020-08-03 2023-09-26 中国科学院计算技术研究所 运算装置、方法、多核智能处理器及多核异构智能处理器
CN112163677A (zh) * 2020-10-14 2021-01-01 杭州海康威视数字技术股份有限公司 应用机器学习模型的方法、装置及设备
CN112163677B (zh) * 2020-10-14 2023-09-19 杭州海康威视数字技术股份有限公司 应用机器学习模型的方法、装置及设备

Also Published As

Publication number Publication date
CN110363291B (zh) 2022-02-08

Similar Documents

Publication Publication Date Title
CN110378468B (zh) 一种基于结构化剪枝和低比特量化的神经网络加速器
US11151046B2 (en) Programmable interface to in-memory cache processor
Wang et al. PipeCNN: An OpenCL-based open-source FPGA accelerator for convolution neural networks
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
CN108427990B (zh) 神经网络计算系统和方法
CN107423816B (zh) 一种多计算精度神经网络处理方法和系统
CN108268278A (zh) 具有可配置空间加速器的处理器、方法和系统
Bank-Tavakoli et al. Polar: A pipelined/overlapped fpga-based lstm accelerator
CN109409510B (zh) 神经元电路、芯片、系统及其方法、存储介质
CN110363291A (zh) 神经网络的运算方法、装置、计算机设备和存储介质
CN109446996B (zh) 基于fpga的人脸识别数据处理装置及处理方法
Petrica et al. Memory-efficient dataflow inference for deep CNNs on FPGA
CN113392973B (zh) 一种基于fpga的ai芯片神经网络加速方法
Abdelsalam et al. An efficient FPGA-based overlay inference architecture for fully connected DNNs
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
CN108959168A (zh) 基于片上内存的sha512全流水电路及其实现方法
Tsmots et al. Neural-like means for data streams encryption and decryption in real time
CN111563582A (zh) 一种在fpga上实现及优化加速卷积神经网络的方法
Huang et al. A high performance multi-bit-width booth vector systolic accelerator for NAS optimized deep learning neural networks
CN113127407A (zh) 基于nvm进行ai计算的芯片架构
US11995533B1 (en) Executing replicated neural network layers on inference circuit
CN106796502A (zh) 从3d坐标计算3d z曲线索引的机器级指令
Lu et al. SparseNN: A performance-efficient accelerator for large-scale sparse neural networks
Diamantopoulos et al. A system-level transprecision FPGA accelerator for BLSTM using on-chip memory reshaping
EP3859535A1 (en) Streaming access memory device, system and method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant