[go: up one dir, main page]

CN107657316B - 通用处理器与神经网络处理器的协同系统设计 - Google Patents

通用处理器与神经网络处理器的协同系统设计 Download PDF

Info

Publication number
CN107657316B
CN107657316B CN201610695285.4A CN201610695285A CN107657316B CN 107657316 B CN107657316 B CN 107657316B CN 201610695285 A CN201610695285 A CN 201610695285A CN 107657316 B CN107657316 B CN 107657316B
Authority
CN
China
Prior art keywords
cpu
data
module
dma
ann
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.)
Active
Application number
CN201610695285.4A
Other languages
English (en)
Other versions
CN107657316A (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.)
Xilinx Technology Beijing Ltd
Original Assignee
Beijing Deephi 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 Beijing Deephi Technology Co Ltd filed Critical Beijing Deephi Technology Co Ltd
Publication of CN107657316A publication Critical patent/CN107657316A/zh
Application granted granted Critical
Publication of CN107657316B publication Critical patent/CN107657316B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)

Abstract

本发明涉及人工神经网络(ANN),例如卷积神经网络(CNN),尤其涉及如何基于通用处理器与神经网络专用处理器的协同系统设计来实现人工神经网络。

Description

通用处理器与神经网络处理器的协同系统设计
引用的优先申请
本申请要求在先提交的中国专利申请201610663201.9、“一种优化人工神经网络的方法”和中国专利申请201610663563.8“一种用于实现ANN的深度处理单元”的优先权。
技术领域
本发明涉及人工神经网络(ANN),例如卷积神经网络(CNN),尤其涉及如何基于通用处理器与神经网络处理器的协同系统设计来实现人工神经网络。
背景技术
卷积神经网络在当前图像处理领域有着非常广泛的应用,神经网络有训练方法简单、计算结构统一的特点。但是神经网络存储计算量都很大。许多工作试图在FPGA上搭建或者直接设计专用芯片来实现神经网络的加速器。但是,由于专用神经网络加速硬件灵活性还是受限,能够完成的任务过于单一。
发明人姚颂等发表的文章“Going Deeper With Embedded FPGA Platform forConvolutional Neural Network”(2016.2)描述了一种利用FPGA的加速系统,其中用到通用处理器(例如,ARM)来完成一些FPGA没有办法完成的计算。例如,ARM负责传输指令以及准备数据。
发明内容
在上述文章的基础上,发明人提出了进一步的改进。本申请提出了结合神经网络专用处理器与通用处理器(CPU)而提供一个灵活的系统,能够适用于复杂的神经网络。
根据本发明的一方面,提出了一种用于运行人工神经网络(ANN)的深度处理单元(DPU),包括:CPU,用于调度可编程处理模块(PL)和直接存储器访问器(DMA);直接存储器访问器(DMA),分别与所述CPU、可编程处理模块和外部存储器连接,用于所述CPU和和可编程处理模块之间的通信;可编程处理器模块(PL),包括:控制器(Controller),用于获取指令,并基于所述指令对计算核进行调度,计算核(Computing Complex),包括多个计算单元(PE),用于基于指令和数据进行计算任务,缓冲区(buffer),用于保存所述可编程处理器模块使用的数据和指令;外部存储器(DDR),与所述CPU、DMA连接,用于保存:用于实现ANN的指令和需要被ANN处理的数据;所述CPU控制所述DMA以在所述外部存储器和所述可编程逻辑模块之间传输指令和数据。
此外,所述DMA通过FIFO在所述外部存储器和所述可编程处理模块之间传输数据;所述DMA通过FIFO在所述外部存储器和所述可编程处理模块之间传输指令。
根据本发明的另一方面,提出了一种用于运行人工神经网络(ANN)的深度处理单元(DPU),包括:CPU,用于调度可编程处理模块(PL)和直接存储器访问器(DMA);直接存储器访问器(DMA),分别与所述CPU、可编程处理模块和外部存储器连接,用于所述CPU和和可编程处理模块之间的通信;可编程处理器模块(PL),包括:控制器(Controller),用于获取指令,并基于所述指令对计算核进行调度,计算核(Computing Complex),包括多个计算单元(PE),用于基于指令和数据进行计算任务,缓冲区(buffer),用于保存所述可编程处理器模块使用的数据和指令;外部存储器(DDR),与所述CPU、DMA和可编程逻辑模块连接,用于保存:用于实现ANN的指令和需要被ANN处理的数据;其中所述CPU控制所述DMA在所述外部存储器和所述可编程逻辑模块之间传输指令;其中所述可编程逻辑模块和所述外部存储器直接传输数据。
此外,所述DMA和所述可编程处理模块之间通过FIFO传输指令。
此外,所述CPU还包括:状态监视模块,用于监视所述可编程逻辑模块的有限状态机(FSM)的状态。
此外,所述计算单元(PE)包括:复杂卷积核(convolver complex),与所述缓冲区相连以接收ANN的权重,输入数据,用于进行所述ANN中的卷积计算操作;加法树(addertree),与所述复杂卷积核连接,用于对卷积计算操作的结果求和;非线性化模块,与所述加法树连接,用于把非线性函数操作应用到所述加法树的输出。
此外,所述计算单元(PE)还包括:汇集模块,与所述非线性模块连接,用于进行所述ANN中的汇集操作。
此外,所述缓冲区包括:输入缓冲区,用于准备所述计算核计算使用的输入数据、指令;输出缓冲区,保存并输出计算结果。
此外,所述缓冲区还包括:偏置移位器(bias shift),用于移位所述权重到不同的量化范围,所述权重为被量化的定点数,并把移位后的权重输出给所述加法树。
根据本发明的一个实施例,所述CPU、可编程逻辑模块、所述DMA被实现在一个SOC上。所述外部存储器被实现在不同于所述SOC的另一个芯片上。
附图说明
图1a和1b显示了人工神经网络模型的常见结构。
图2显示了把人工神经网络模型部署在专用硬件上的流程。
图3显示了优化人工神经网络的整体流程。
图4显示了根据本发明第一实施例的使用CPU和专用加速器(例如,DPU)的协同设计来实现人工神经网络的硬件架构。
图5显示了图3所示硬件架构使用FIFO的数据传输机制。
图6显示了根据本发明第二实施例的使用CPU和专用加速器(例如,DPU)的协同设计来实现人工神经网络的硬件架构。
图7显示了对本发明第一实施例的进一步改进。
图8显示了对本发明第二实施例的进一步改进。
图9显示了第一、第二实施例的处理流程的异同。
具体实施方式
本申请的一部分内容曾经被发明人姚颂的学术文章“Going Deeper WithEmbedded FPGA Platform for Convolutional Neural Network”(2016.2)所发表。本申请在其基础上进行了更多的改进。
本申请中,将主要以图像处理为例来说明本发明对CNN的改进。深度神经网络(DNN)和循环神经网络(RNN)与CNN类似。
CNN基本概念
CNN在广泛的视觉相关任务中都达到最先进的性能。为帮助理解本申请中分析的基于CNN图像分类算法,我们首先介绍了CNN的基础知识,介绍图像网络数据集和现有CNN模型。
如图1(a)所示,典型的CNN由一系列有序运行的层组成。
CNN模型的参数被称为“权重”(weights)。CNN的第一层读取输入图像,并输出一系列的特征图(map)。下面的层读取由上一层产生的特征图,并输出新的特征图。最后一个分类器(classifier)输出输入图像可能属于的每一类别的概率。CONV层(卷积层)和FC层(全连层)是CNN中两种基本层类型。CONV层后,通常有汇集层(Pooling layers)。
例如,对于一个CNN层,
Figure BDA0001084770810000031
表示第j个输入特征图(input feature map),
Figure BDA0001084770810000032
表示第i个输出特征图(output feature map),bi表示第i个输出图的偏置项。
对于CONV层,nin和nout分别代表输入和输出特征图的数量。
对于FC层,nin和nout分别代表输入和输出特征向量的长度。
CONV层(Convolutional layers,卷积层)的定义:CONV层以一系列特征图作为输入,并以卷积内核卷积获得输出特征图。
通常与CONV层相连的非线性层,即,非线性激励函数,被施加到输出特征图中的每个元素。
CONV层可以用表达式1表示:
Figure BDA0001084770810000041
其中gi,j是应用到第j个输入特征图和第i个输出特征图的卷积内核。
FC层(Fully-Connected layers,全连层)的定义:FC层应用于输入特征向量上的一个线性变换:
fout=Wfin+b (2)
W是一个nout×nin变换矩阵,b是偏置项。值得注意,对于FC层,输入的不是几个二维特征图的组合,而是一个特征向量。因此,在表达式2中,参数nin和nout实际上对应于输入和输出特征向量的长度。
汇集(pooling)层:通常与CONV层相连,用于输出每个特征图中的每个分区(subarea)的最大值或平均值。Pooling最大值可以由表达式3表示:
Figure BDA0001084770810000042
其中p是汇集内核的大小。这种非线性的“降采样”不仅为下一层降低了特征图的大小和计算,还提供了一种平移不变(translation invariance)。
CNN可用于前向推理过程中进行图像分类。但在对任何任务使用CNN之前,应该首先训练CNN数据集。最近的研究表明,对于一个给定任务的基于大数据集的前向培训的CNN模型可以用于其他任务,并在网络权值(network weights)中实现高精度的微小调整,这个微小调整叫做“微调(fine-tune)”。CNN的培训主要是在大型服务器上实现。对于嵌入式FPGA平台,我们专注于加速CNN的推理过程。
Image-Net数据集
Image-Net数据集被视为标准参考基准,以评估图像分类和目标检测算法的性能。到目前为止,Image-Net数据集已经在2万1千多个类别里收集了超过1400万幅图像。Image-Net为ILSVRC分类任务发布一个具有1000个类别、120万个图像的子集,大大促进了CV技术的发展。在本申请中,所有CNN模型通过ILSVRC 2014训练集培训,通过ILSVRC 2014验证集评估。
现有CNN模型
在2012年ILSVRC,Supervision队使用AlexNet,在图像分类任务中赢得了第一名,84.7%的前5精度。CaffeNet在复制AlexNet的基础上有微小变化。AlexNet和CaffeNet都包括5个CONV层和3个FC层。
在2013年ILSVRC,Zeiler-and-Fergus(ZF)网络在图像分类任务中赢得了第一名,88.8%的前5精度。ZF网络也有5个CONV层和3个FC层。
如图1(b)所示,从输入-输出的数据流向角度来说明一个典型的CNN。
图1(b)所示的CNN包括5个CONV组Conv1、conv2、conv3、conv4、conv5,3个FC层FC1、FC2、FC3,以及一个Softmax判定函数,其中每个CONV组包括3个卷积层。
图2表示的是人工神经网络的软件优化以及硬件实现的示意图。
如图2所示,为了加速CNN,从优化流程和硬件架构的角度提出了一整套技术方案。
在图2下侧显示了人工神经网络模型。在图2中间显示了如何压缩CNN模型以减少内存占用和操作数量,同时最大限度地减少精度损失。
在图2上侧显示了为压缩后的CNN提供的专用硬件。
如图2上侧所示,在硬件架构中,包括PS和PL两个模块。
通用处理系统中(processing system,PS)包括:CPU和外部存储器(EXTERNALMEMORY)。
可编程逻辑模块(Programmable Logic,PL)包括:DMA和计算核、输入/输出缓冲以及控制器等。
如图2所示,PL设置有:复杂计算(Computing Complex)、输入缓冲区、输出缓冲区、控制器和直接存储器访问(DMA)。
计算核包括多个处理单元(PEs),其负责在人工神经网络的CONV层、汇集层和FC层的大多数的计算任务。
芯片缓冲区包括输入缓冲区和输出缓冲区,准备PEs使用的数据并存储结果。
控制器,获取外部存储器上的指令、对指令解码(如果需要),以及对PL里的所有模块进行调配,除了DMA。
DMAs用于传输外部存储器(例如DDR)和PL之间的数据和指令。
PS包括通用处理器(CPU)8110和外部存储器8120。
外部存储器存储所有的人工神经网络的模型参数、数据和指令。
PS是硬核,硬件结构固定,用软件进行调度。
PL是可编程的硬件逻辑,硬件结构可变。例如,所述可编程逻辑模块(PL)可以是FPGA。
值得一提的是,根据本发明的实施例,DMA虽然在PL侧,却直接接受CPU的控制,将数据从EXTERNAL MEMORY中搬运到PL中。
因此,图2所示的硬件架构仅是功能划分,上述PL和PS之间的界限并不绝对。例如,实际实施中,所述PL和CPU可以实现在一个SOC上,例如xilinx的Zynq芯片。所述外部存储器可以由另一个存储器芯片实现,与所述SOC芯片中的CPU相连接。
图3显示的是在把人工神经网络部署到硬件芯片之前的优化流程。
图3的输入的是原始的人工神经网络。
步骤405:压缩
压缩步骤可以包括对CNN模型进行修剪。网络修剪被证明是一种有效的方法,以减少网络的复杂性和过度拟合。例如,参见B.Hassibi and D.G.Stork的文章“Second orderderivatives for network pruning:Optimal brain surgeon”。
在本申请引用的优先申请201610663201.9、“一种优化人工神经网络的方法”中,提出了一种通过修剪来压缩CNN网络的方法。
第一,初始化步骤,把卷积层、FC层的权重初始化为随机值,其中生成了具有完全连接的ANN,所述连接具有权重参数。
第二,训练步骤,训练所述ANN,根据ANN的精度,来调整ANN的权重,直到所述精度达到预定标准。
例如,所述训练步骤基于随机梯度下降算法来调整所述ANN的权重,即随机调整权重值,基于ANN的精读变化来进行选择。关于随机梯度算法的介绍,可以参见上述“Learningboth weights and connections for efficient neural networks”。
所述精度可以量化为,针对训练数据集,ANN的预测结果和正确结果之间的差异。
第三,修剪步骤,基于预定的条件,发现ANN中的不重要的连接,修剪所述不重要的连接。具体而言,被修剪的连接的权重参数不再被保存。
所述预定条件包括以下任意之一:连接的权重参数为0;或连接的权重参数小于预定值。
第四,微调步骤,将被修剪的连接重新设置为权重参数值为零的连接,即,恢复所述被修剪的连接,并分配权重值为0。
最后,判断ANN的精度达到预定标准。如果没有,重复第二、第三、第四步骤。
步骤410:数据定点量化
对于一个定点数,它的值表示如下:
Figure BDA0001084770810000071
其中bw是数的位宽度,fl是可以是负的部分的长度(fractional length)。
为了将浮点数转换成定点数的同时得到最高精度,发明人提出了一个动态精度数据量化策略和自动工作流程。
与以前的静态精度量化策略不同,我们所给出的数据量化流程中,fl对于不同的层和特征图集是动态变化的,同时在一个层中保持静态,以尽量减少每层的截断误差。
所提出的量化流程主要由两个阶段组成。
(1)权重量化阶段:
权重量化阶段的目的是找到一个层的权重的最佳fl,如表达式5:
Figure BDA0001084770810000072
其中W是权重,W(bw,fl)代表在给定的bw和fl下的W的定点格式。
在一个实施例中,首先分析了每一层权重的动态范围,例如通过采样进行估计。之后,为了避免数据溢出,初始化fl。此外,我们在初始fl的邻域搜索最优fl
根据另一个实施例,在权重定点量化步骤中,采用另一种方式来寻找最佳fl,如表达式6。
Figure BDA0001084770810000073
其中,i代表bw个位中的某一位,ki为该位权重。采用表达式6的方式,对不同的位给予不同的权重,再计算最优的fl
(2)数据量化阶段。
数据量化阶段旨在为CNN模型的两层之间的特征图集寻找最优fl
在此阶段,使用训练数据集(bench mark)来训练CNN。所述训练数据集可以为dataset 0。
根据本发明的一个实施例,首先完成所有CNN的CONV层、FC层的权重量化,再进行数据量化。此时,把训练数据集输入到已经被量化权重的CNN,经过CONV层、FC层的逐层处理,得到各层输入特征图。
针对每一层输入特征图,使用贪婪算法逐层比较定点CNN模型和浮点CNN模型的中间数据,以减少精度损失。每一层的优化目标如表达式7所示:
Figure BDA0001084770810000081
在表达式7中,当A表示一层(例如某一CONV层或FC层)的计算,x表示输入,x+=A·x时,x+代表该层的输出。值得注意的是,对于CONV层或FC层,直接结果x+具有比给定的标准更长的位宽度。因此,当最佳fl选择时需要截断。最后,整个数据量化配置生成。
根据另一个实施例,在数据定点量化步骤中,采用另一种方式来寻找最佳fl,如表达式8。
Figure BDA0001084770810000082
其中,i代表bw个位中的某一位,ki为该位权重。与表达式4的方式类似,对不同的位给予不同的权重,再计算最优的fl
上述数据量化步骤得到最优的fl
此外,根据另一实施例,权重量化和数据量化可以交替进行,不是依次进行。
就数据处理的流程顺序而言,所述ANN的卷积层(CONV层)、全连层(FC层)中各个层为串联关系,所述训练数据集被所述ANN的CONV层和FC层依次处理时得到的各个特征图集。
具体而言,所述权重量化步骤和所述数据量化步骤根据所述串联关系交替进行,其中在所述权重量化步骤完成其中某一层的定点量化之后,对该层所输出的特征图集执行数据量化步骤。
第一实施例
在优先申请中,发明人提出了使用通用处理器和专用加速器的协同设计,但是并没有讨论如何高效的利用通用处理器的灵活性和专用加速器的计算能力,例如如何传输指令、传输数据、执行计算等。本申请中,发明人提出了进一步的优化方案。
图4显示了对图2的硬件结构的进一步改进。
在图4中,CPU控制DMA,DMA负责调度数据。具体而言,CPU控制DMA将外部存储器(DDR)中的指令搬运到FIFO中。随后,专用加速器在FIFO中取指令并且执行。
专用加速器所需要的数据也由CPU控制DMA将数据数从DDR中搬运到FIFO里,计算时从FIFO中搬运数据进行计算。同样,CPU也维护加速器的输出数据的搬运工作。
在运行的时候,CPU需要时刻监控DMA的状态。当Input FIFO不满时,需要把数据从DDR中搬运到Input FIFO中。当output FIFO不空时,需要把数据从Output FIFO搬运回DDR里。
此外,图4的专用加速器中包括:控制器、计算核(computation Complex)和缓冲区(buffer)。
计算核包括:卷积器、加法器树、非线性模块等。
卷积核的大小通常只有几个选项如3×3、5×5和7×7。例如,为卷积操作设计的二维卷积器是一个3×3窗口。
加法器树(AD)对卷积器的所有结果求和。非线性(NL)模块适用于非线性激励函数的输入数据流。例如,所述函数可以是ReLU函数。此外,最大汇集(Max-Pooling)模块(未示出)用于汇集操作,例如,将特定的2×2窗口用于输入数据流,并输出其中的最大值。
缓冲区包括:输入数据缓冲区、输出数据缓冲区、偏置移位(bias shift)模块。
偏置移位(bias shift)用于支持动态量化范围的转换。例如,针对权重进行移位。还例如,针对数据进行移位。
输入数据缓冲区还可以包括:输入数据缓冲器,权重缓冲器。输入数据缓冲器可以是线状数据缓冲器(line buffer),用于保存运算需要的数据,并延迟释放所述数据,以实现所述数据的重用。
图5显示了CPU和专用加速器之间的FIFO交互方式。
图5所示的架构图中有3类FIFO。同样,CPU对DMA的控制也有三种。
第一实施例中,CPU与专用加速器之间完全通过FIFO通信,CPU与专用加速器之间有三类缓存FIFO:指令、输入数据、输出数据。具体而言,在CPU的控制下,DMA负责外部内存与专用加速器之间的输入数据、输出数据、指令传输,其中在DMA和专用加速器之间分别提供了输入数据FIFO、输出数据FIFO、指令FIFO。
对于专用加速器而言,这种设计简单,只需要关心计算,不需要关心数据。数据操作完全由CPU控制。
但是,在某些应用场景,图5所示方案也有不足之处。
首先,CPU执行调度将消耗CPU的资源。例如,CPU需要时刻监听各个FIFO的状态,随时准备接收和发送数据。CPU监听状态以及根据不同的状态处理数据都要消耗大量的CPU时间。有些应用中,CPU监听FIFO和处理数据的代价会很大,导致CPU几乎被全部占用,没有CPU时间处理其他任务(读取图片,预处理图片等)。
其次,专用加速器中需要设置多个FIFO,也占用PL资源。
第二实施例
第二实施例的特点如下:首先,专用处理器与CPU共享外部内存,两者都可以读取外部内存。其次,CPU仅控制专用加速器的指令输入。以此方式,CPU与专用加速器系统协同操作,其中CPU承担一些专用加速器无法完成的任务。
如图6所示,第二实施例中,专用加速器(PL)和外部内存(DDR)直接交互。相应地,取消了DMA和专用加速器之间的Input FIFO和Ouput FIFO(如图5所示),只保留1个FIFO在DMA和专用加速器之间传输指令,节省了资源。
对于CPU而言,不需要对输入输出数据进行复杂的调度,而由专用加速器直接从外部内存(DDR)访问数据。在人工神经网络运行时,CPU可以进行其他的处理,例如从摄像头读取待处理的图像数据等。
因此,第二实施例解决了CPU任务过重的问题,让CPU可以解放出来处理更多的任务。不过,专用加速器需要自己执行对外部内存(DDR)的数据访问控制。
第一、第二实施例的改进
第一和第二实施例中,CPU都是通过指令控制加速器。
加速器可能在运行过程中出现错误“跑飞”(即,程序进入死循环或者毫无意义地乱运行)。目前的方案中,CPU无法确定加速器是否已经跑飞。
在基于第一或第二实施例的改进实施例中,发明人在CPU中还提供了“状态外设”,从而将专用加速器(PL)中的有限状态机(FSM)的状态直接传递给CPU。
CPU可以通过检测有限状态机(FSM)的状态了解加速器的运行情况。如果发现加速器已经跑飞或者卡死,CPU也可以发送信号直接复位加速器。
图7示出了在图4所示第一实施例的架构上添加“状态外设”的例子。
图8示出了在图6所示第二实施例的架构上添加“状态外设”的例子。
如图7、8所示,专用加速器的控制器中设置有限状态机(FSM),有限状态机的状态被直接传输给CPU的状态外设(即,状态监控模块),从而CPU可以监控程序运行死机等故障情况。
第一和第二实施例比较
第一和第二实施例的两种调度策略各有优势。
图4的实施例中,图片数据需要CPU调度DMA以传输给专用加速器,所以专用加速器会有时间闲置。但是由于CPU调度数据搬运,专用加速器只负责计算,计算能力被优化,处理数据的时间也会相应变短。
图6的实施例中,专用加速器具有单独访问数据的能力而无需CPU调度数据搬运。数据处理可以在专用加速器上独立进行。
CPU可以只负责与外部系统之间的数据读取和输出。读取操作是指例如CPU把图片数据从摄像头(未示出)读取出来,传输到外部存储器;输出操作是指CPU把识别后的输出从外部内存输出到屏幕(未示出)。
采用图6的实施例,可以将任务流水线起来,使得多任务的处理速度更快。相应的代价是,专用加速器同时负责计算和数据搬运,效率不高,处理需要更长的时间。
图9对比示出了第一和第二实施例的处理流程的异同。
第二实施例的应用:人脸识别
根据第二实施例,因为有了共享的外部内存(DDR),所以CPU与专用加速器可以共同完成一个计算任务。
例如,在人脸识别的任务中:CPU可以读取摄像头并且检测到输入图片中的人脸;神经网络过加速器加速核可以完成人脸的识别。
利用使用CPU和专用加速器协同设计可以快速将CPU上面的神经网络计算任务部署在嵌入式设备上。
具体而言,参看图9的实例2,在CPU上运行图片的读取(例如,从摄像头读出)和预处理,在专用加速器上完成图片的处理过程。
由于上述方法将CPU的任务和加速器的任务割裂开来,使得CPU和加速器能够完全并行处理任务。
表格1展示了仅利用CPU与第二实施例(CPU+专用加速器协同设计)之间的性能对比。
表格1
Figure BDA0001084770810000111
Figure BDA0001084770810000121
作为对比的CPU使用的是英伟达公司生产的Tegra k1。可以看到利用我们的CPU+专用加速器的协同设计对每一层都有明显的加速,总体加速达到了7倍。
本发明的优点在于,利用CPU(通用处理器)功能丰富的特点弥补专用加速器(可编程逻辑模块PL,例如FPGA)灵活性不足的特点,也利用专用加速器计算速度快的特点弥补CPU计算速度不足以完成实时计算的特点。
此外,通用处理器可以是ARM处理器,或者任何其他的CPU。可编程逻辑模块可以是FPGA,也可以是其他可编程的专用处理器(ASIC)。
需要说明的是,本说明书中的各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本
发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (9)

1.一种用于运行人工神经网络(ANN)的深度处理单元(DPU),包括:
CPU,用于调度可编程处理模块(PL)和直接存储器访问器(DMA);
直接存储器访问器(DMA),分别与所述CPU、可编程处理模块和外部存储器连接,用于所述CPU和可编程处理模块之间的通信;
可编程处理器模块(PL),包括:
控制器(Controller),用于获取指令,并基于所述指令对计算核进行调度;
计算核(Computing Complex),包括多个计算单元(PE),用于基于指令和数据进行计算任务;
缓冲区(buffer),用于保存所述可编程处理器模块使用的数据和指令;
外部存储器(DDR),与所述CPU、DMA和可编程逻辑模块分别连接,用于保存:实现ANN的指令和需要被ANN处理的数据;
其中所述CPU控制所述DMA在所述外部存储器和所述可编程逻辑模块之间传输指令;
其中所述可编程逻辑模块和所述外部存储器直接传输数据。
2.根据权利要求1所述的深度处理单元,其中所述DMA和所述可编程处理模块之间通过FIFO传输指令。
3.根据权利要求1所述的深度处理单元,其中所述CPU还包括:
状态监视模块,用于监视所述可编程逻辑模块的有限状态机(FSM)的状态。
4.根据权利要求1所述的深度处理单元,所述计算单元(PE)包括:
复杂卷积核(convolver complex),与所述缓冲区相连以接收ANN的权重,输入数据,用于进行所述ANN中的卷积计算操作;
加法树(adder tree),与所述复杂卷积核连接,用于对卷积计算操作的结果求和;
非线性化模块,与所述加法树连接,用于把非线性函数操作应用到所述加法树的输出。
5.根据权利要求4所述的深度处理单元,所述计算单元(PE)还包括:
汇集模块,与所述非线性化模块连接,用于进行所述ANN中的汇集操作。
6.根据权利要求1所述的深度处理单元,所述缓冲区包括:
输入缓冲区,用于准备所述计算核计算使用的输入数据、指令;
输出缓冲区,保存并输出计算结果。
7.根据权利要求4所述的深度处理单元,所述缓冲区还包括:
偏置移位器(bias shift),用于移位权重到不同的量化范围,所述权重为被量化的定点数,并把移位后的权重输出给所述加法树。
8.根据权利要求1所述的深度处理单元,其中所述CPU、所述可编程逻辑模块、所述DMA被实现在一个SOC上。
9.根据权利要求8所述的深度处理单元,其中所述外部存储器被实现在不同于所述SOC的另一个芯片上。
CN201610695285.4A 2016-08-12 2016-08-19 通用处理器与神经网络处理器的协同系统设计 Active CN107657316B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201610663563 2016-08-12
CN2016106632019 2016-08-12
CN2016106635638 2016-08-12
CN201610663201 2016-08-12

Publications (2)

Publication Number Publication Date
CN107657316A CN107657316A (zh) 2018-02-02
CN107657316B true CN107657316B (zh) 2020-04-07

Family

ID=61127258

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610698184.2A Active CN107688855B (zh) 2016-08-12 2016-08-19 针对于复杂神经网络的分层量化方法与装置
CN201610695285.4A Active CN107657316B (zh) 2016-08-12 2016-08-19 通用处理器与神经网络处理器的协同系统设计

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201610698184.2A Active CN107688855B (zh) 2016-08-12 2016-08-19 针对于复杂神经网络的分层量化方法与装置

Country Status (1)

Country Link
CN (2) CN107688855B (zh)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11620130B2 (en) 2018-02-13 2023-04-04 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
KR102354720B1 (ko) 2018-02-13 2022-01-21 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 계산 장치 및 방법
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
CN108564165B (zh) * 2018-03-13 2024-01-23 上海交通大学 卷积神经网络定点化优化的方法及系统
US11768979B2 (en) * 2018-03-23 2023-09-26 Sony Corporation Information processing device and information processing method
CN108491890B (zh) * 2018-04-04 2022-05-27 百度在线网络技术(北京)有限公司 图像方法和装置
CN108510067B (zh) * 2018-04-11 2021-11-09 西安电子科技大学 基于工程化实现的卷积神经网络量化方法
CN110413255B (zh) * 2018-04-28 2022-08-19 赛灵思电子科技(北京)有限公司 人工神经网络调整方法和装置
WO2019218896A1 (zh) 2018-05-18 2019-11-21 上海寒武纪信息科技有限公司 计算方法以及相关产品
CN108805265B (zh) * 2018-05-21 2021-03-30 Oppo广东移动通信有限公司 神经网络模型处理方法和装置、图像处理方法、移动终端
KR102788532B1 (ko) * 2018-05-30 2025-03-31 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
CN110555450B (zh) * 2018-05-31 2022-06-28 赛灵思电子科技(北京)有限公司 人脸识别神经网络调整方法和装置
CN110555508B (zh) * 2018-05-31 2022-07-12 赛灵思电子科技(北京)有限公司 人工神经网络调整方法和装置
CN110598839A (zh) * 2018-06-12 2019-12-20 华为技术有限公司 卷积神经网络系统和卷积神经网络量化的方法
CN110728364B (zh) 2018-07-17 2024-12-17 上海寒武纪信息科技有限公司 一种运算装置和运算方法
CN109034025A (zh) * 2018-07-16 2018-12-18 东南大学 一种基于zynq的人脸关键点检测系统
EP3640810A4 (en) 2018-08-28 2021-05-05 Cambricon Technologies Corporation Limited PRE-TREATMENT PROCEDURES AND DEVICE OF DATA, COMPUTER DEVICE AND STORAGE MEDIUM
KR102740541B1 (ko) * 2018-09-03 2024-12-09 삼성전자주식회사 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법
WO2020056718A1 (zh) * 2018-09-21 2020-03-26 华为技术有限公司 在设备中的神经网络模型的量化方法和装置
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
WO2020075957A1 (ko) * 2018-10-08 2020-04-16 주식회사 디퍼아이 분산처리용 인공신경망 연산 가속화 장치, 이를 이용한 인공신경망 가속화 시스템, 및 그 인공신경망의 가속화 방법
CN109389120A (zh) * 2018-10-29 2019-02-26 济南浪潮高新科技投资发展有限公司 一种基于zynqMP的目标检测装置
CN109523016B (zh) * 2018-11-21 2020-09-01 济南大学 面向嵌入式系统的多值量化深度神经网络压缩方法及系统
CN109740619B (zh) * 2018-12-27 2021-07-13 北京航天飞腾装备技术有限责任公司 用于目标识别的神经网络终端运行方法和装置
CN111383637A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN109711367B (zh) * 2018-12-29 2020-03-06 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN110889497B (zh) * 2018-12-29 2021-04-23 中科寒武纪科技股份有限公司 一种人工智能处理器的学习任务编译方法及相关产品
DE102020100209A1 (de) * 2019-01-21 2020-07-23 Samsung Electronics Co., Ltd. Neuronale Netzwerkvorrichtung, neuronales Netzwerksystem und Verfahren zur Verarbeitung eines neuronalen Netzwerkmodells durch Verwenden eines neuronalen Netzwerksystems
US10592799B1 (en) * 2019-01-23 2020-03-17 StradVision, Inc. Determining FL value by using weighted quantization loss values to thereby quantize CNN parameters and feature values to be used for optimizing hardware applicable to mobile devices or compact networks with high precision
CN110009096A (zh) * 2019-03-06 2019-07-12 开易(北京)科技有限公司 基于嵌入式设备的目标检测网络模型优化方法
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
CN111832738B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
WO2020248423A1 (zh) 2019-06-12 2020-12-17 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
US11676029B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
CN110348562B (zh) * 2019-06-19 2021-10-15 北京迈格威科技有限公司 神经网络的量化策略确定方法、图像识别方法和装置
CN110309877B (zh) * 2019-06-28 2021-12-07 北京百度网讯科技有限公司 一种特征图数据的量化方法、装置、电子设备及存储介质
CN111344719A (zh) * 2019-07-22 2020-06-26 深圳市大疆创新科技有限公司 基于深度神经网络的数据处理方法、装置及移动设备
CN110569713B (zh) * 2019-07-22 2022-04-08 北京航天自动控制研究所 一种利用dma控制器实现数据串并行二维传输的目标探测系统及方法
US11635893B2 (en) * 2019-08-12 2023-04-25 Micron Technology, Inc. Communications between processors and storage devices in automotive predictive maintenance implemented via artificial neural networks
US12001955B2 (en) 2019-08-23 2024-06-04 Anhui Cambricon Information Technology Co., Ltd. Data processing method, device, computer equipment and storage medium
CN112434781B (zh) 2019-08-26 2024-09-10 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
CN112446460B (zh) * 2019-08-28 2025-12-16 上海寒武纪信息科技有限公司 用于处理数据的方法、装置以及相关产品
CN110837890A (zh) * 2019-10-22 2020-02-25 西安交通大学 一种面向轻量级卷积神经网络的权值数值定点量化方法
CN110990060B (zh) * 2019-12-06 2022-03-22 北京瀚诺半导体科技有限公司 一种存算一体芯片的嵌入式处理器、指令集及数据处理方法
CN111144511B (zh) * 2019-12-31 2020-10-20 上海云从汇临人工智能科技有限公司 基于神经网络的图像处理方法、系统、介质及电子终端
CN113298843B (zh) 2020-02-24 2024-05-14 中科寒武纪科技股份有限公司 数据量化处理方法、装置、电子设备和存储介质
CN111178522B (zh) * 2020-04-13 2020-07-10 杭州雄迈集成电路技术股份有限公司 一种软硬件协同加速方法、系统及计算机可读存储介质
CN111626414B (zh) * 2020-07-30 2020-10-27 电子科技大学 一种动态多精度神经网络加速单元
CN112561933A (zh) * 2020-12-15 2021-03-26 深兰人工智能(深圳)有限公司 图像分割方法及装置
US12112265B2 (en) 2020-12-18 2024-10-08 Analog Devices International Unlimited Company Architecture for running convolutional networks on memory and mips constrained embedded devices
CN113240101B (zh) * 2021-05-13 2022-07-05 湖南大学 卷积神经网络软硬件协同加速的异构SoC实现方法
CN113361695B (zh) * 2021-06-30 2023-03-24 南方电网数字电网研究院有限公司 卷积神经网络加速器
CN115705482A (zh) * 2021-07-20 2023-02-17 腾讯科技(深圳)有限公司 模型量化方法、装置、计算机设备及存储介质
CN114708180B (zh) * 2022-04-15 2023-05-30 电子科技大学 具有动态范围保持的预失真图像比特深度量化和增强方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1776644A (zh) * 2005-12-09 2006-05-24 中兴通讯股份有限公司 一种基于有限状态机的对内存变量改写进行监控的方法
CN104794102A (zh) * 2015-05-14 2015-07-22 哈尔滨工业大学 一种加速实现Cholesky分解的嵌入式片上系统
CN105224482A (zh) * 2015-10-16 2016-01-06 浪潮(北京)电子信息产业有限公司 一种fpga加速卡高速存储系统
CN105630735A (zh) * 2015-12-25 2016-06-01 南京大学 一种基于可重构计算阵列的协处理器

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106575379B (zh) * 2014-09-09 2019-07-23 英特尔公司 用于神经网络的改进的定点整型实现方式
CN105760933A (zh) * 2016-02-18 2016-07-13 清华大学 卷积神经网络的逐层变精度定点化方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1776644A (zh) * 2005-12-09 2006-05-24 中兴通讯股份有限公司 一种基于有限状态机的对内存变量改写进行监控的方法
CN104794102A (zh) * 2015-05-14 2015-07-22 哈尔滨工业大学 一种加速实现Cholesky分解的嵌入式片上系统
CN105224482A (zh) * 2015-10-16 2016-01-06 浪潮(北京)电子信息产业有限公司 一种fpga加速卡高速存储系统
CN105630735A (zh) * 2015-12-25 2016-06-01 南京大学 一种基于可重构计算阵列的协处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Going Deeper with Embedded FPGA Platform for Convolutional Neural Network;Jiantao Qiu et al.;《FPGA’16 Proceedings of the 2016 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays》;20160229;第30-32页及图4 *

Also Published As

Publication number Publication date
CN107657316A (zh) 2018-02-02
CN107688855A (zh) 2018-02-13
CN107688855B (zh) 2021-04-13

Similar Documents

Publication Publication Date Title
CN107657316B (zh) 通用处理器与神经网络处理器的协同系统设计
US20180046913A1 (en) Combining cpu and special accelerator for implementing an artificial neural network
CN107239829B (zh) 一种优化人工神经网络的方法
US20180174036A1 (en) Hardware Accelerator for Compressed LSTM
KR102592721B1 (ko) 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법
US11055063B2 (en) Systems and methods for deep learning processor
US10902315B2 (en) Device for implementing artificial neural network with separate computation units
US10824939B2 (en) Device for implementing artificial neural network with flexible buffer pool structure
CN107578099B (zh) 计算装置和方法
US20210312267A1 (en) Machine learning network implemented by statically scheduled instructions, with mla chip
CN107657263A (zh) 一种用于实现ann的深度处理单元
CN107862374A (zh) 基于流水线的神经网络处理系统和处理方法
CN110765413B (zh) 矩阵求和结构及神经网络计算平台
Véstias et al. A fast and scalable architecture to run convolutional neural networks in low density FPGAs
KR20190098671A (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN114626516A (zh) 一种基于对数块浮点量化的神经网络加速系统
CN112734020B (zh) 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法
KR20200129666A (ko) 신경망 연산 장치 및 그것의 요소 기반 레이어에 대한 처리 방법
US11488066B2 (en) Efficient convolution of multi-channel input samples with multiple kernels
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
US11586894B2 (en) Ordering computations of a machine learning network in a machine learning accelerator for efficient memory usage
CN114730331B (zh) 数据处理装置和数据处理方法
Xia et al. PAI-FCNN: FPGA based inference system for complex CNN models
CN113673690B (zh) 一种水下噪声分类卷积神经网络加速器

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
TA01 Transfer of patent application right

Effective date of registration: 20180606

Address after: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant after: Beijing deep Intelligent Technology Co., Ltd.

Address before: 100084 Wang Zhuang Road, 1, Haidian District, Beijing, Tsinghua Tongfang Technology Plaza, block D, 1705

Applicant before: Beijing insight Technology Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200907

Address after: Unit 01-19, 10 / F, 101, 6 / F, building 5, yard 5, Anding Road, Chaoyang District, Beijing 100029

Patentee after: Xilinx Electronic Technology (Beijing) Co., Ltd

Address before: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Patentee before: BEIJING DEEPHI TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right