CN105678379B - 一种cnn的处理方法和装置 - Google Patents

一种cnn的处理方法和装置 Download PDF

Info

Publication number
CN105678379B
CN105678379B CN201610017755.1A CN201610017755A CN105678379B CN 105678379 B CN105678379 B CN 105678379B CN 201610017755 A CN201610017755 A CN 201610017755A CN 105678379 B CN105678379 B CN 105678379B
Authority
CN
China
Prior art keywords
module
asic
resources
arithmetic unit
cnn
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
CN201610017755.1A
Other languages
English (en)
Other versions
CN105678379A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610017755.1A priority Critical patent/CN105678379B/zh
Publication of CN105678379A publication Critical patent/CN105678379A/zh
Priority to CA2987325A priority patent/CA2987325C/en
Priority to EP17738111.8A priority patent/EP3404587B1/en
Priority to JP2017564718A priority patent/JP6507271B2/ja
Priority to PCT/CN2017/070628 priority patent/WO2017121297A1/zh
Priority to BR112017026917-1A priority patent/BR112017026917A2/zh
Priority to MYPI2017704511A priority patent/MY188759A/en
Priority to SG11201709689PA priority patent/SG11201709689PA/en
Priority to KR1020177035657A priority patent/KR102192468B1/ko
Priority to US15/822,627 priority patent/US11151442B2/en
Application granted granted Critical
Publication of CN105678379B publication Critical patent/CN105678379B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Stored Programmes (AREA)
  • Feedback Control In General (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Testing And Monitoring For Control Systems (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明公开了一种CNN的处理方法和装置,用于在ASIC上实现CNN的模型中的模块运算,保证CNN计算性能的同时降低运算成本。本发明实施例提供一种CNN的处理方法,包括:获取CNN的模型中第一模块的密集类型;若所述第一模块的密集类型属于计算密集型,将所述第一模块部署到专用集成电路ASIC上,并获取到所述第一模块占用所述ASIC的多个运算器资源;对所述第一模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第一模块;运行部署在所述ASIC上的完成运算器资源合并后的第一模块。

Description

一种CNN的处理方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种卷积神经网络(英文全称:Convolutional Neural Networks,英文简称:CNN)的处理方法和装置。
背景技术
随着机器学习的不断发展,图片识别的准确性越来越高,越来越多的应用开始使用图片识别技术,例如最早的数字识别,到现在应用非常广泛的人脸识别。要使得图片识别达到人类的智能水平,必须要使用大量的计算资源进行计算,从而对计算性能有极大的要求,在满足性能要求的同时,计算成本的控制需要限制计算消耗的资源规模。
当前,主流图片识别算法为CNN,主要由图形处理器(英文全称:GraphicsProcessing Unit,英文简称:GPU)和中央处理器(英文全称:Central Processing Unit,英文简称:CPU)实现,这种算法的计算量巨大,成本高。虽然GPU具有很高的并行计算效率,但是存在对计算资源元器件利用率不高的问题。
当前CNN的实现方案主要是基于CPU和GPU,在CNN的实现方案中主要包括三个步骤:输入步骤、特征提取步骤和分类步骤。其中计算最复杂且消耗资源最多的就是特征提取步骤,在特征提取过程中主要涉及两个层次的计算:采样层和卷积层。在基于GPU的模型实现中,将计算复杂度较高的计算均传输到GPU中完成,通过GPU的模型能提高CNN计算性能,降低计算时间。
CPU和GPU实现CNN方案的最大优点是高性能,但是目前部署GPU的成本很高,尤其部署一个大型GPU集群的成本更高,而且GPU消耗功率也很大,无论硬件的部署成本还是后续运营成本都很高。
发明内容
本发明实施例提供了一种CNN的处理方法和装置,用于在ASIC上实现CNN的模型中的模块运算,保证CNN计算性能的同时降低运算成本。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种CNN的处理方法,包括:
获取CNN的模型中第一模块的密集类型;
若所述第一模块的密集类型属于计算密集型,将所述第一模块部署到专用集成电路ASIC上,并获取到所述第一模块占用所述ASIC的多个运算器资源;
对所述第一模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第一模块;
运行部署在所述ASIC上的完成运算器资源合并后的第一模块。
第二方面,本发明实施例还提供一种CNN的处理装置,包括:
类型获取单元,用于获取CNN的模型中第一模块的密集类型;
部署单元,用于若所述第一模块的密集类型属于计算密集型,将所述第一模块部署到专用集成电路ASIC上,并获取到所述第一模块占用所述ASIC的多个运算器资源;
合并单元,用于对所述第一模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第一模块;
模块运行单元,用于运行部署在所述ASIC上的完成运算器资源合并后的第一模块。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,首先获取CNN的模型中第一模块的密集类型,若第一模块的密集类型属于计算密集型,将第一模块部署到ASIC上,并获取到第一模块占用ASIC的多个运算器资源,对第一模块占用ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在ASIC上的完成运算器资源合并后的第一模块,最后运行部署在ASIC上的完成运算器资源合并后的第一模块。本发明实施例中可以将计算密集型的第一模块迁移到ASIC上,在ASIC上实现CNN的模型中的模块运算,而不需要再使用GPU来完成模块运算,而ASIC的部署成本和运营成本显然远低于GPU。并且本发明实施例中对计算密集型的第一模块中相同的运算器资源进行了合并,因此对运算器资源实现了最大化的利用,从而可以保证CNN计算性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种CNN的处理方法的流程方框示意图;
图2为本发明实施例提供的CNN的处理方法在CAFFE模型下的实现架构示意图;
图3为本发明实施例提供的一种资源整合过程的示意图;
图4为本发明实施例提供的一种模块切换的示意图;
图5-a为本发明实施例提供的一种CNN的处理装置的组成结构示意图;
图5-b为本发明实施例提供的另一种CNN的处理装置的组成结构示意图;
图6为本发明实施例提供的CNN的处理方法应用于服务器的组成结构示意图。
具体实施方式
本发明实施例提供了一种CNN的处理方法和装置,用于在ASIC上实现CNN的模型中的模块运算,保证CNN计算性能的同时降低运算成本。
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
以下分别进行详细说明。
本发明CNN的处理方法的一个实施例,具体可以应用于CNN的运算加速处理中,请参阅图1所示,本发明一个实施例提供的CNN的处理方法,可以包括如下步骤:
101、获取CNN的模型中第一模块的密集类型。
在本发明实施例中,CNN的模型可以有多种,例如CNN的模型可以为开源模型:CAFFE(英文全称:Convolutional Architecture for Fast Feature Embedding)模型、cuda-convNet模型等。在CNN的模型中根据运算顺序和层次划分可以包括多个模块,本发明实施例中以CNN的模型中包括的第一模块为例进行说明,本发明实施例中CNN的模型中包括的其它模块都可以参阅后续实施例中对第一模块的处理方式进行实现。首先获取到CNN的模型中第一模块,确定该第一模块的密集类型。在CNN的模型中一个模块的密集类型是根据卷积神经网络层次的计算密集程度来划分的类型方式,其中,一个模块的密集类型可以是多种类型,例如该模块可以是计算密集型,该模块也可以是存储密集型,具体可以CNN的具体实现场景来确定在CNN的模型中各个模块的密集类型。举例说明如下,以CNN的模型具体为CAFFE模型为例,在CAFFE模型中有卷积层、池化层和数据层等,在卷积层和池化层中存在计算量巨大的模块,这些模块属于计算密集型,可以通过本发明实施例描述的CNN的处理方法进行加速计算。而数据层中的模块通常计算量不大,这些模块属于存储密集型,可以通过中央处理器(英文全称:Central Processing Unit,英文简称:CPU)完成处理。
102、若第一模块的密集类型属于计算密集型,将第一模块部署到专用集成电路(英文全称:Application Specific Integrated Circuit,英文简称:ASIC)上,并获取到第一模块占用ASIC的多个运算器资源。
在本发明实施例中,获取到CNN的模型中第一模块的密集类型属于计算密集型时,将属于计算密集型的第一模块部署到ASIC上,即第一模块的功能通过ASIC上的运算器资源来实现,该第一模块部署到ASIC之后,第一模块会占用ASIC的多个运算器资源。例如,CAFFE模型中使用大量的用于计算卷积的乘法资源。
在本发明的一些实施例中,属于计算密集型的第一模块部署到ASIC上实现运算功能,本发明实施例中CNN的处理不需要使用GPU来完成,以避免使用GPU带来的高消耗功率以及避免使用GPU带来的硬件部署成本和运营成本。本发明实施例中CNN的模型中第一模块通过部署在ASIC上来完成,ASIC的运算成本远低于GPU。进一步的,在本发明的一些实施例中,ASIC具体可以为现场可编程门阵列(英文全称:Field Programmable Gate Array,英文简称:FPGA)。也就是说,本发明实施例中属于计算密集型的第一模块可以部署到FPGA上实现运算功能,则在本发明的实施例中,第一模块可以部署在FPGA上来完成。需要说明的是,本发明实施例中第一模块可以不局限于部署在FPGA上,属于计算密集型的第一模块还可以部署在除FPGA以外的其它可编程器件上,例如,第一模块可以部署在复杂可编程逻辑器件(英文全称:Complex Programmable Logic Device,英文简称:CPLD)。本发明实施例中只要作为专用集成电路中的半定制电路均可以用于部署第一模块。
103、对第一模块占用ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在ASIC上的完成运算器资源合并后的第一模块。
其中,第一模块部署在ASIC上需要占用ASIC的多个运算器资源,在第一模块占用的多个运算器资源中可以存在相同的运算器资源,在第一模块占用的多个运算器资源中也可以存在完全不相同的运算器资源,具体取决于实现场景。对于第一模块占用的多个运算器资源中可以存在相同的运算器资源的情况,可以进行运算器资源的合并,即第一模块的多个运算器资源中可以存在使用相同运算器的多个资源,对这些相同的运算器资源可以合并为一个运算器资源,从而实现对运算器资源的最大化利用。举例说明如下,对于相同的运算器资源可以合并,例如加减乘除等最简单的计算,可以复用计算资源。而对于不相同的运算器资源则不能合并,例如逻辑比较复杂,不能简单复用的资源不能进行合并,另外运算操作完全不一样的资源也无法合并。对于第一模块占用ASIC的多个运算器资源,在对相同的运算器资源进行合并之后,可以得到部署在ASIC上的完成运算器资源合并后的第一模块,完成上述资源合并后的第一模块对ASIC的整体资源量利用率得到提高。
104、运行部署在ASIC上的完成运算器资源合并后的第一模块。
在本发明实施例中,对于前述的步骤103完成运算器资源合并后第一模块可以在ASIC上来运行,从而在ASIC上实现第一模块的功能。例如第一模块可以是卷积运算模块,则通过步骤103完成运算器资源合并后,在ASIC上运行该卷积运算模块,从而可以实现CNN的模型中卷积层的运算。因此本发明实施例中,可以通过第一模块在ASIC上的运行完成CNN的计算,并且通过运算器资源的合并提高CNN的计算性能,使得本发明实施例提供的CNN的处理方法可以实现与GPU执行CNN计算的相同效率,但是不需要使用GPU,从而可以节省硬件的部署成本和运营成本。
在本发明的一些实施例中,除了执行前述的步骤之外,本发明实施例提供的CNN的处理方法,还可以包括如下步骤:
A1、获取CNN的模型中第二模块的密集类型;
A2、若第一模块的密集类型属于计算密集型,将第二模块部署到ASIC上,并获取到第二模块占用ASIC的多个运算器资源;
A3、若第一模块和第二模块在ASIC占用了相同的运算器资源,对第一模块和第二模块进行合并,得到部署在ASIC上的完成模块合并后的第三模块,第三模块的功能包括:第一模块的功能和第二模块的功能;
A4、运行部署在ASIC上的完成模块合并后的第三模块。
其中,在本发明的一些实施例中,CNN的模型中除了包括第一模块之外,CNN的模型中还可以包括第二模块,该第二模块是指CNN的模型中的一个模块,该第二模块可以用于实现CNN的模型中的特定计算功能。结合前述步骤101至步骤102的描述可知,本发明实施例中CNN的模型可以包括第一模块和第二模块,这两个模块都可以部署到ASIC上。举例说明,CN的模型中包括的第一模块和第二模块都可以部署到FPGA上,则第一模块和第二模块分别部署到ASIC上之后,这两个模块都会占用ASIC的多个运算器资源,因此可以进一步的判断第一模块在ASIC占用的多个运算器资源与第二模块在ASIC占用的多个运算器资源中是否存在相同的运算器资源,在两个模块占用有相同的运算器资源的情况下执行步骤A3,对第一模块和第二模块进行合并,得到部署在ASIC上的完成模块合并后的第三模块,则该第三模块的功能可以包括:第一模块的功能和第二模块的功能,也就是说,在ASIC上部署的第一模块和第二模块在占用相同的运算器资源的情况下可以进行模块级别的合并,将第一模块和第二模块通过一个单独的模块(将这个单独的模块定义为第三模块)来实现,该第三模块的功能需要包括第一模块的功能,该第三模块的功能还需要包括第二模块的功能。在步骤A4运行部署在ASIC上的完成模块合并后的第三模块就可以完成第一模块的功能,或者完成第二模块的功能。本发明实施例中对于CNN的模型中两个模块还可以进行合并,从而实现单独模块的多个功能,提高CNN的计算性能。
在本发明的一些实施例中,上述实施例的步骤A13对第一模块和第二模块进行合并,具体可以包括如下步骤:
A131、对第一模块和第二模块在ASIC占用了相同的运算器资源进行合并,并对第一模块的输入接口和第二模块的输入接口进行合并,对第一模块的输出接口和第二模块的输出接口进行合并。
其中,对于ASIC上部署的第一模块和第二模块中,对于两个模块占用的相同运算器资源可以进行资源合并,同时对于两个模块的输入输出接口也可以进行合并,即将第一模块的输入接口和第二模块的输入接口合并,对第一模块的输出接口和第二模块的输出接口进行合并,因为在CNN的模型中多个模块输入输出都会占用ASIC的接口资源,从而减少输入输出代理的资源浪费。通过两个模块的输入输出接口合并可以实现模块的框架整合。需要说明的是,在本发明实施例提供的步骤A1至步骤A4的实现场景中以两个模块的合并为例进行说明,不限定的是,本发明实施例中三个模块的合并甚至更多模块的合并都可以参阅此处的实现方式,不再逐一举例说明。
在本发明的一些实施例中,上述实施例的步骤A14运行部署在ASIC上的完成模块合并后的第三模块,具体可以包括如下步骤:
A141、按照第一模块的功能和第二模块的功能配置第三模块的功能的生效条件;
A142、当第三模块满足生效条件时,在ASIC上运行第三模块的功能。
其中,在ASIC上运行第三模块时,该第三模块的运行可以实现第一模块的功能以及第二模块的功能,在一些情况下第三模块需要实现第一模块的功能,在另一些情况下就需要实现第二模块的功能,因此需要对第三模块的所有功能配置生效条件,以决定该第三模块在什么情况下实现第一模块的功能,在什么情况下实现第二模块的功能。对于第三条件的不同功能可以具体配置相应的生效条件,则在各个生效条件下可以实现第三模块的对应功能。举例说明如下,第一模块的功能为功能A,第二模块的功能为功能B,在生成的第三模块的功能需要包括:功能A和功能B。例如,功能A输入为1,2,功能B输入为1,2,3,那么合并AB的输入还是1,2,3。实现功能A的实现,配置的生效条件就是输入3无效,实现功能B的生效条件就是输入3有效。因此第三模块需要根据配置的生效条件确定实现的是功能A还是功能B,在输入3无效的时候,第三模块需要跳转。
在本发明的一些实施例中,步骤A2将第二模块部署到ASIC上,并获取到第二模块占用ASIC的多个运算器资源之后,本发明实施例提供的CNN的处理方法还可以包括如下步骤:
A5、对第二模块占用ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在ASIC上的完成运算器资源合并后的第二模块;
A6、运行部署在ASIC上的完成运算器资源合并后的第二模块。
其中,步骤A5至步骤A6的实现方式与前述的步骤103至步骤104的实现方式相类似,不同指出在于步骤A5至步骤A6中是对于第二模块进行的运算器资源合并以及运行第二模块,详见前述实施例的说明。
在本发明的一些实施例中,除了执行前述的步骤之外,本发明实施例提供的CNN的处理方法,还可以包括如下步骤:
B1、在运行部署在ASIC上的完成运算器资源合并后的第一模块的过程中,监控第一模块在ASIC上的运行状态;
B2、当第一模块在ASIC上运行完成之后,将第一模块从ASIC上卸载,然后在ASIC中装载CNN的模型中的第四模块。
其中,CNN的模型中包括有多个模块,以CNN的模型中包括两个模块为例进行说明本发明实施例中模块切换的实现方式,从而解决ASIC资源有限无法部署所有模块的问题。例如,在CNN的模型中包括有第一模块和第四模块,在步骤104运行部署在ASIC上的完成运算器资源合并后的第一模块的过程中,监控第一模块在ASIC上的运行状态,CNN的模型中模块在ASIC上的运行状态可以包括:正在运行、运行完成和即将运行这三个状态,若第一模块正在运行,则监控第一模块在ASIC上的运行状态,由于在CNN的模型运算过程中并不是每个模块时刻都处于计算状态,而是模块之间有先后执行顺序,当第一模块运行完成之后,可以将第一模块从ASIC上卸载,此时第四模块处于即将运行,可以在ASIC中装载CNN的模型中的第四模块,则第四模块可以在ASIC上运行。通过对第一模块和第四模块的模块切换,可以实现CNN的模型中所有模块的部署和计算。需要说明的是,前述实施例中以CNN的模型包括两个模块为例进行了模块切换的说明,在实际应用中CNN的模型还可以包括更多的模块,模块切换的过程可以参阅步骤B1和步骤B2的描述。
在本发明的一些实施例中,除了执行前述的步骤之外,本发明实施例提供的CNN的处理方法,还可以包括如下步骤:
C1、将CNN的模型的数学库部署在ASIC上,数学库中包括第一模块。
其中,对于CNN的不同模型可以设置具体的数学库,CNN的模型中的数学库可以包括第一模块,还可以包括前述的第二模块以及第四模块。在本发明的一些实施例中,可以将CNN的模型的数学库部署在ASIC上,那么CNN的模型的数学库中包括的模块都可以部署在ASIC上,从而节省更多的运算器资源。举例说明如下,以CNN的模型为CAFFE为例,在CAFFE的原实现中,数学库包括的各种简单的计算模块都会实现一个小的接口,但实际功能都非常简单,如加减乘除,如果每一个都在ASIC上实现,就会浪费很多框架资源,这就是接口带来的浪费,如果数学库直接硬搬到ASIC上,就会避免很多这样的资源浪费。
通过以上实施例对本发明实施例的描述可知,首先获取CNN的模型中第一模块的密集类型,若第一模块的密集类型属于计算密集型,将第一模块部署到ASIC上,并获取到第一模块占用ASIC的多个运算器资源,对第一模块占用ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在ASIC上的完成运算器资源合并后的第一模块,最后运行部署在ASIC上的完成运算器资源合并后的第一模块。本发明实施例中可以将计算密集型的第一模块迁移到ASIC上,在ASIC上实现CNN的模型中的模块运算,而不需要再使用GPU来完成模块运算,而ASIC的部署成本和运营成本显然远低于GPU。并且本发明实施例中对计算密集型的第一模块中相同的运算器资源进行了合并,因此对运算器资源实现了最大化的利用,从而可以保证CNN计算性能。
为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。接下来以CNN的模型为CAFFE为例进行说明,CAFFE模型中的模块部署在FPGA上为例,FPGA可以将资源进行编程处理,同等资源下,提高利用率,降低成本。本发明实施例可以利用FPGA在克服资源限制的条件下,实现和部署CNN。FPGA与GPU不同,同等元器件下,其资源利用率比GPU高,决定了达到相同的性能时,FPGA可利用更少的元器件资源,更节约成本。FPGA相对于GPU资源少很多,对于较为复杂的模型,会面临无法部署所有计算层次的情景,本发明实施例将以CAFFE模型为例,阐述在FPGA上部署CNN各个层次的过程和方法。
本发明实施例中可以将CAFFE模型的GPU CUDA的实现方式,改造为FPGA上opencl的实现,使得整个模型可以在FPGA上部署和运行。如图2所示,为本发明实施例提供的CNN的处理方法在CAFFE模型下的实现架构示意图。本发明实施例中,可以执行如下三个关键步骤:
1)模块选择:根据卷积神经网络层次的计算密集程度,确定CNN的模型中各个模块是否用FPGA实现;
2)资源合并:合并多模块的运算器资源和框架资源,从而整合模块部署在FPGA上的资源,减少资源浪费;
3)模块切换:利用多层次多模块之间的运算延迟,在FPGA上切换和运算。
首先对模块选择进行举例说明。卷积神经网络分多层,如CAFFE模型有卷积层、池化(英文名称:Pooling)层、数据层等。其中,卷积层是提取图片特征的层次,Pooling层是将提取出来的海量的图片特征进行归类,如取一种特征的最大值,降低数据复杂度。数据层是原始数据存储的层次,例如数据库或者磁盘或者内存。在CAFFE模型中,有些层次计算量不大,适合CPU处理,如数据层。而有些层次计算量巨大,必须进行加速计算,如卷积层,由于FPGA的资源有限,选择最耗时的资源使用opencl实现至关重要。在对模块选择需要遵循以下原则:对于计算密集型的层次与模块,可以使用FPGA实现,如卷积层里面的卷积计算模块,计算复杂度高,且计算频率高。对于存储密集型的层次与模块,如数据层,主要进行内存访问和交换,对内存带宽要求较高而计算少,因此不适合使用FPGA实现。对于计算复杂度高,但计算频率低的计算模块,可以根据FPGA资源情况,决定是否使用FPGA来实现。
接下来对资源合并进行举例说明。CAFFE模型中使用了大量计算资源,特别是用于计算卷积的乘法资源,但FPGA的资源有限,如altera stratix V中适用于opencl开发的板子,数字信号处理器(英文全称:Digital Signal Processor,英文简称:DSP)的乘法器资源只有256个。要让CAFFE模型中可加速模块均能迁移到FPGA上,例如卷积计算模块就是可加速模块,随机计算模块也是可加速模块,可加速的都是计算密集型的模块;但数据存储则属于存储密集型操作,无法进行加速。将可加速模块部署到FPGA上之后,可以将多个模块中相同的运算器资源进行合并,使得资源得到最大化的利用。对于不能合并的运算器资源,可以合并整个模块,单独模块实现多个功能。
在本发明的一些实施例中,在FPGA上每实现一个模块,这个模块都会占用部分的显示查找表(英文全称:Look Up Table,英文简称:LUT)和内存块(英文全称:memory,英文简称:MEM)作为模块接口、选择器等。一种可实现的方式是将CAFFE模型所用的数学库整个迁移到FPGA上,如果数学库中各模块仅实现接口不实现功能。如图3所示,为本发明实施例提供的一种资源整合过程的示意图,整合分为两部分:运算器整合和框架整合,在实测中进行模块资源合并之后,整体资源可以下降8%左右。
其中,在运算器整合中,运算器包括乘法器、加法器等DSP可以实现的计算。CNN的卷积层主要是卷积计算,卷积计算包括了乘法和加法,适合与运算器整合的场景。类似的模块还有CAFFE模型的数学库中的点乘、加乘、缩放、乘和等操作,这些模块中均包含乘法和加法操作,可用于合并。整合方法举例说明如下:1、将多模块中的加法和乘法均指定使用同一个加法器和乘法器,例如图3中将两个运算c合并为一个运算c;2、当两个模块之间在FPGA上部署的位置相隔较远,共用无法满足时延时,可尝试合并模块,将多种功能实现到一起,统一输入输出。例如两个运算模块,在FPGA上部署下来之后,在印制电路板(英文全称:Printed Circuit Board,英文简称:PCB)上的元器件相隔较远,如果仅仅是其中某个元器件复用的话,会导致电路延时不满足标准,这种情况下,就直接将整个运算模块合并到一起,从而可以自动的将资源合并。
在框架整合中,多个模块中输入输出占用FPGA的接口资源,会消耗FPGA的LUT资源,因此对于很多输入输出格式相同或者相近的模块,可以合并起来,减少输入输出带来的资源浪费。例如,CAFFE模型的数学库中的加减乘除等运算,接口类似,只是其中运算有些差异,将模块合并后,不仅可以实现运算器整合,模块框架能整合。整合方法举例说明如下:1、梳理计算模块,找出输入输出接口相同或相近(即相差一个参数)的模块。举例说明:输入输出接口相同就是输出都是32位的整数,或者64位的整数,即输入输出都相同,输入输出接口相近是指64位可以兼容32位的,这种属于相近的模块。2、将模块功能合并到一个大的模块中,整合相同的计算资源(即实现运算器整合),例如图3中,将两个输入接口合并为一个输入接口,将两个输出接口合并为一个输出接口。3、对相近的模块,有参数差异的部分使用条件判断来跳过或者执行。举例说明如下,功能A输入为1,2,功能B输入为1,2,3,那么合并AB的输入还是1,2,3,只是实现A的时候输入3无效,这里就需要判断3的范围,就是条件判断,而且AB功能不一样,3有效和无效的时候,功能模块会有跳转。
接下来对模块切换进行举例说明。CNN分为多个模块,在迭代过程中,并不是每个模块都处于计算状态,模块之间有先后执行顺序。例如在Mnist模型中,就先后经过了卷积层、池化层和全连接层等,循环迭代计算。FPGA资源有限,一般情况下无法部署整个CNN模型的所有模块,可以利用模块间计算的延时,在一个模块运行过程中,将已计算完成的模块切换为即将计算的模块,以此不断切换,来达到CNN整个模块部署和计算的目的,如图4所示,为本发明实施例提供的一种模块切换的示意图。模块切换方法以及效果评估包括如下步骤:
1、以CNN的模型包括三个模块(分别为模块1、模块2和模块3)为例进行说明,先部署模块1和模块2到FPGA上,开始计算,两个模块分别计算时间为t1和t2;
2、监控FPGA上模块运行状态,当模块1运行完毕之后,开始计算模块2,此时将模块1卸载,装载模块3,模块3运行时间为t3,装载时间统一为T;
3、如此往复以上过程,进行多模块之间在FPGA上切换和运算;
4、如果装载时间T小于t1、t2、t3,则说明每次切换没有任何延时。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图5-a所示,本发明实施例提供的一种CNN的处理装置500,可以包括:类型获取单元501、部署单元502、合并单元503、模块运行单元504,其中,
类型获取单元501,用于获取CNN的模型中第一模块的密集类型;
部署单元502,用于若所述第一模块的密集类型属于计算密集型,将所述第一模块部署到专用集成电路ASIC上,并获取到所述第一模块占用所述ASIC的多个运算器资源;
合并单元503,用于对所述第一模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第一模块;
模块运行单元504,用于运行部署在所述ASIC上的完成运算器资源合并后的第一模块。
在本发明的一些实施例中,所述类型获取单元501,还用于获取所述CNN的模型中第二模块的密集类型;
所述部署单元502,还用于若所述第一模块的密集类型属于计算密集型,将所述第二模块部署到所述ASIC上,并获取到所述第二模块占用所述ASIC的多个运算器资源;
所述合并单元503,还用于若所述第一模块和所述第二模块在所述ASIC占用了相同的运算器资源,对所述第一模块和所述第二模块进行合并,得到部署在所述ASIC上的完成模块合并后的第三模块,所述第三模块的功能包括:所述第一模块的功能和所述第二模块的功能;
所述模块运行单元504,还用于运行部署在所述ASIC上的完成模块合并后的第三模块。
在本发明的一些实施例中,所述合并单元503,具体用于对所述第一模块和所述第二模块在所述ASIC占用了相同的运算器资源进行合并,并对所述第一模块的输入接口和所述第二模块的输入接口进行合并,对所述第一模块的输出接口和所述第二模块的输出接口进行合并。
在本发明的一些实施例中,所述模块运行单元504,具体用于按照所述第一模块的功能和所述第二模块的功能配置所述第三模块的功能的生效条件;当所述第三模块满足所述生效条件时,在所述ASIC上运行所述第三模块的功能。
在本发明的一些实施例中,所述合并单元503,还用于所述部署单元将所述第二模块部署到所述ASIC上,并获取到所述第二模块占用所述ASIC的多个运算器资源之后,对所述第二模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第二模块;
所述模块运行单元504,还用于运行部署在所述ASIC上的完成运算器资源合并后的第二模块。
在本发明的一些实施例中,请参阅如图5-b所示,所述CNN的处理装置500还包括:模块切换单元505,其中,
所述模块切换单元505,用于所述模块运行单元504在运行部署在所述ASIC上的完成运算器资源合并后的第一模块的过程中,监控所述第一模块在所述ASIC上的运行状态;当所述第一模块在所述ASIC上运行完成之后,将所述第一模块从所述ASIC上卸载,然后在所述ASIC中装载所述CNN的模型中的第四模块。
在本发明的一些实施例中,所述部署单元502,还用于将所述CNN的模型的数学库部署在所述ASIC上,所述数学库中包括所述第一模块。
在本发明的一些实施例中,所述ASIC具体为现场可编程门阵列FPGA。
通过以上实施例对本发明实施例的描述可知,首先获取CNN的模型中第一模块的密集类型,若第一模块的密集类型属于计算密集型,将第一模块部署到ASIC上,并获取到第一模块占用ASIC的多个运算器资源,对第一模块占用ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在ASIC上的完成运算器资源合并后的第一模块,最后运行部署在ASIC上的完成运算器资源合并后的第一模块。本发明实施例中可以将计算密集型的第一模块迁移到ASIC上,在ASIC上实现CNN的模型中的模块运算,而不需要再使用GPU来完成模块运算,而ASIC的部署成本和运营成本显然远低于GPU。并且本发明实施例中对计算密集型的第一模块中相同的运算器资源进行了合并,因此对运算器资源实现了最大化的利用,从而可以保证CNN计算性能。
图6是本发明实施例提供的一种服务器结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备),ASIC633。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作,该ASIC633可以是FPGA,或者CPLD。
服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图6所示的服务器结构,该服务器可以执行前述的CNN的处理方法,详见前述实施例的描述说明。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (16)

1.一种卷积神经网络CNN的处理方法,其特征在于,包括:
获取CNN的模型中第一模块的密集类型;
若所述第一模块的密集类型属于计算密集型,将所述第一模块部署到专用集成电路ASIC上,并获取到所述第一模块占用所述ASIC的多个运算器资源;
对所述第一模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第一模块;
运行部署在所述ASIC上的完成运算器资源合并后的第一模块;
获取所述CNN的模型中第二模块的密集类型;
若所述第二模块的密集类型属于计算密集型,将所述第二模块部署到所述ASIC上,并获取到所述第二模块占用所述ASIC的多个运算器资源;
若所述第一模块和所述第二模块在所述ASIC占用了相同的运算器资源,对所述第一模块和所述第二模块进行合并,得到部署在所述ASIC上的完成模块合并后的第三模块,所述第三模块的功能包括:所述第一模块的功能和所述第二模块的功能;
运行部署在所述ASIC上的完成模块合并后的第三模块。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一模块和所述第二模块进行合并,包括:
对所述第一模块和所述第二模块在所述ASIC占用了相同的运算器资源进行合并,并对所述第一模块的输入接口和所述第二模块的输入接口进行合并,对所述第一模块的输出接口和所述第二模块的输出接口进行合并。
3.根据权利要求1所述的方法,其特征在于,所述运行部署在所述ASIC上的完成模块合并后的第三模块,包括:
按照所述第一模块的功能和所述第二模块的功能配置所述第三模块的功能的生效条件;
当所述第三模块满足所述生效条件时,在所述ASIC上运行所述第三模块的功能。
4.根据权利要求1所述的方法,其特征在于,所述将所述第二模块部署到所述ASIC上,并获取到所述第二模块占用所述ASIC的多个运算器资源之后,所述方法还包括:
对所述第二模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第二模块;
运行部署在所述ASIC上的完成运算器资源合并后的第二模块。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在运行部署在所述ASIC上的完成运算器资源合并后的第一模块的过程中,监控所述第一模块在所述ASIC上的运行状态;
当所述第一模块在所述ASIC上运行完成之后,将所述第一模块从所述ASIC上卸载,然后在所述ASIC中装载所述CNN的模型中的第四模块。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述CNN的模型的数学库部署在所述ASIC上,所述数学库中包括所述第一模块。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述ASIC具体为现场可编程门阵列FPGA。
8.一种卷积神经网络CNN的处理装置,其特征在于,包括:
类型获取单元,用于获取CNN的模型中第一模块的密集类型;
部署单元,用于若所述第一模块的密集类型属于计算密集型,将所述第一模块部署到专用集成电路ASIC上,并获取到所述第一模块占用所述ASIC的多个运算器资源;
合并单元,用于对所述第一模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第一模块;
模块运行单元,用于运行部署在所述ASIC上的完成运算器资源合并后的第一模块;
所述类型获取单元,还用于获取所述CNN的模型中第二模块的密集类型;
所述部署单元,还用于若所述第二模块的密集类型属于计算密集型,将所述第二模块部署到所述ASIC上,并获取到所述第二模块占用所述ASIC的多个运算器资源;
所述合并单元,还用于若所述第一模块和所述第二模块在所述ASIC占用了相同的运算器资源,对所述第一模块和所述第二模块进行合并,得到部署在所述ASIC上的完成模块合并后的第三模块,所述第三模块的功能包括:所述第一模块的功能和所述第二模块的功能;
所述模块运行单元,还用于运行部署在所述ASIC上的完成模块合并后的第三模块。
9.根据权利要求8所述的装置,其特征在于,所述合并单元,具体用于对所述第一模块和所述第二模块在所述ASIC占用了相同的运算器资源进行合并,并对所述第一模块的输入接口和所述第二模块的输入接口进行合并,对所述第一模块的输出接口和所述第二模块的输出接口进行合并。
10.根据权利要求8所述的装置,其特征在于,所述模块运行单元,具体用于按照所述第一模块的功能和所述第二模块的功能配置所述第三模块的功能的生效条件;当所述第三模块满足所述生效条件时,在所述ASIC上运行所述第三模块的功能。
11.根据权利要求8所述的装置,其特征在于,
所述合并单元,还用于所述部署单元将所述第二模块部署到所述ASIC上,并获取到所述第二模块占用所述ASIC的多个运算器资源之后,对所述第二模块占用所述ASIC的多个运算器资源中相同的运算器资源进行合并,得到部署在所述ASIC上的完成运算器资源合并后的第二模块;
所述模块运行单元,还用于运行部署在所述ASIC上的完成运算器资源合并后的第二模块。
12.根据权利要求8所述的装置,其特征在于,所述CNN的处理装置还包括:模块切换单元,其中,
所述模块切换单元,用于所述模块运行单元在运行部署在所述ASIC上的完成运算器资源合并后的第一模块的过程中,监控所述第一模块在所述ASIC上的运行状态;当所述第一模块在所述ASIC上运行完成之后,将所述第一模块从所述ASIC上卸载,然后在所述ASIC中装载所述CNN的模型中的第四模块。
13.根据权利要求8所述的装置,其特征在于,所述部署单元,还用于将所述CNN的模型的数学库部署在所述ASIC上,所述数学库中包括所述第一模块。
14.根据权利要求8至13中任一项所述的装置,其特征在于,所述ASIC具体为现场可编程门阵列FPGA。
15.一种服务器,其特征在于,包括存储介质与处理器;
所述存储介质,用于存储程序;
所述处理器用于执行所述程序,以实现如权利要求1~7任一项所述的CNN的处理方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于在被计算机设备执行时,实现如如权利要求1~7任一项所述的CNN的处理方法的步骤。
CN201610017755.1A 2016-01-12 2016-01-12 一种cnn的处理方法和装置 Active CN105678379B (zh)

Priority Applications (10)

Application Number Priority Date Filing Date Title
CN201610017755.1A CN105678379B (zh) 2016-01-12 2016-01-12 一种cnn的处理方法和装置
EP17738111.8A EP3404587B1 (en) 2016-01-12 2017-01-09 Cnn processing method and device
CA2987325A CA2987325C (en) 2016-01-12 2017-01-09 Cnn processing method and device
JP2017564718A JP6507271B2 (ja) 2016-01-12 2017-01-09 Cnn処理方法およびデバイス
PCT/CN2017/070628 WO2017121297A1 (zh) 2016-01-12 2017-01-09 Cnn的处理方法和装置
BR112017026917-1A BR112017026917A2 (zh) 2016-01-12 2017-01-09 CNN processing method and apparatus
MYPI2017704511A MY188759A (en) 2016-01-12 2017-01-09 Cnn processing method and device
SG11201709689PA SG11201709689PA (en) 2016-01-12 2017-01-09 Cnn processing method and device
KR1020177035657A KR102192468B1 (ko) 2016-01-12 2017-01-09 Cnn 처리 방법 및 디바이스
US15/822,627 US11151442B2 (en) 2016-01-12 2017-11-27 Convolutional neural network processing method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610017755.1A CN105678379B (zh) 2016-01-12 2016-01-12 一种cnn的处理方法和装置

Publications (2)

Publication Number Publication Date
CN105678379A CN105678379A (zh) 2016-06-15
CN105678379B true CN105678379B (zh) 2020-08-07

Family

ID=56300134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610017755.1A Active CN105678379B (zh) 2016-01-12 2016-01-12 一种cnn的处理方法和装置

Country Status (10)

Country Link
US (1) US11151442B2 (zh)
EP (1) EP3404587B1 (zh)
JP (1) JP6507271B2 (zh)
KR (1) KR102192468B1 (zh)
CN (1) CN105678379B (zh)
BR (1) BR112017026917A2 (zh)
CA (1) CA2987325C (zh)
MY (1) MY188759A (zh)
SG (1) SG11201709689PA (zh)
WO (1) WO2017121297A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105678379B (zh) 2016-01-12 2020-08-07 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
CN106228240B (zh) * 2016-07-30 2020-09-01 复旦大学 基于fpga的深度卷积神经网络实现方法
KR20180034853A (ko) 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
US10733505B2 (en) * 2016-11-10 2020-08-04 Google Llc Performing kernel striding in hardware
WO2018113597A1 (zh) * 2016-12-20 2018-06-28 上海寒武纪信息科技有限公司 矩阵乘加运算装置、神经网络运算装置和方法
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US10467795B2 (en) * 2017-04-08 2019-11-05 Intel Corporation Sub-graph in frequency domain and dynamic selection of convolution implementation on a GPU
CN107491809B (zh) * 2017-08-21 2020-10-16 苏州浪潮智能科技有限公司 一种fpga实现残差网络中激活函数的方法
CN108021938A (zh) * 2017-11-29 2018-05-11 中冶南方工程技术有限公司 一种冷轧带钢表面缺陷在线检测方法以及检测系统
JP6574004B2 (ja) * 2018-01-25 2019-09-11 株式会社モルフォ 計算手法決定システム、計算手法決定装置、処理装置、計算手法決定方法、処理方法、計算手法決定プログラム、及び、処理プログラム
CN108470211B (zh) * 2018-04-09 2022-07-12 郑州云海信息技术有限公司 一种卷积计算的实现方法、设备和计算机存储介质
CN110533666B (zh) * 2018-05-25 2022-09-23 杭州海康威视数字技术股份有限公司 一种获取数据块尺寸的方法、处理数据的方法及装置
CN108805285B (zh) * 2018-05-30 2022-03-29 山东浪潮科学研究院有限公司 一种卷积神经网络池化单元设计方法
KR102544059B1 (ko) * 2018-06-27 2023-06-16 아마존 테크놀로지스, 인크. 부착된 가속기 기반 추론 서비스
US11960935B2 (en) 2018-06-27 2024-04-16 Amazon Technologies, Inc. Fault-tolerant accelerator based inference service
CN109165736B (zh) * 2018-08-08 2023-12-12 北京字节跳动网络技术有限公司 应用于卷积神经网络的信息处理方法和装置
KR101984730B1 (ko) * 2018-10-23 2019-06-03 (주) 글루시스 서버 장애 자동 예측 시스템 및 자동 예측 방법
CN111488216B (zh) * 2019-01-28 2024-04-30 北京灵汐科技有限公司 一种数据处理的方法、装置及电子设备
CN110032374B (zh) * 2019-03-21 2023-04-07 深兰科技(上海)有限公司 一种参数提取方法、装置、设备及介质
CN110555519B (zh) * 2019-10-08 2023-07-28 东南大学 一种基于符号随机计算的低复杂度卷积神经网络架构
CN111767059B (zh) * 2020-06-30 2023-03-31 北京百度网讯科技有限公司 深度学习模型的部署方法、装置、电子设备和存储介质
CN111915016B (zh) * 2020-07-10 2022-03-25 深圳云天励飞技术股份有限公司 一种基于tvm编译器的异构平台的部署方法及装置
CN111984864B (zh) * 2020-08-14 2023-12-26 北京达佳互联信息技术有限公司 对象推荐方法、装置、电子设备和存储介质
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
JPWO2022185527A1 (zh) * 2021-03-05 2022-09-09

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915195A (zh) * 2015-05-20 2015-09-16 清华大学 一种基于现场可编程门阵列实现神经网络计算的方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4212676B2 (ja) * 1998-02-12 2009-01-21 富士ゼロックス株式会社 情報処理システムおよび情報処理方法
US20080228719A1 (en) * 2007-03-13 2008-09-18 Fatdoor, Inc. People and business search result optimization
JP2008235992A (ja) * 2007-03-16 2008-10-02 Matsushita Electric Ind Co Ltd リコンフィギュラブル回路、リコンフィギュラブル回路システムおよびリコンフィギュラブル回路の配置配線方法
JP5402940B2 (ja) * 2008-11-28 2014-01-29 日本電気株式会社 再構成可能回路生成装置、方法およびプログラム
US8442927B2 (en) * 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
CN102799563B (zh) * 2011-05-26 2015-08-26 上海红神信息技术有限公司 一种可重构计算阵列及构建方法
US10860946B2 (en) * 2011-08-10 2020-12-08 Konlanbi Dynamic data structures for data-driven modeling
US20130132962A1 (en) * 2011-11-22 2013-05-23 Microsoft Corporation Scheduler combinators
GB2516627A (en) * 2013-07-26 2015-02-04 Warsaw University Of Technology Parallel decision-or regression-tree growing
US10042894B2 (en) * 2013-10-31 2018-08-07 Microsoft Technology Licensing, Llc Temporal-based professional similarity
US9978014B2 (en) 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
CN104077233B (zh) * 2014-06-18 2017-04-05 百度在线网络技术(北京)有限公司 多通道卷积层处理方法和装置
CN104035751B (zh) * 2014-06-20 2016-10-12 深圳市腾讯计算机系统有限公司 基于多图形处理器的数据并行处理方法及装置
JP6381368B2 (ja) * 2014-08-26 2018-08-29 キヤノン株式会社 画像処理装置、画像処理方法、およびプログラム
CN104287764B (zh) * 2014-09-11 2017-05-31 沈阳东软医疗系统有限公司 一种ct灌注成像方法和设备
US20160314410A1 (en) * 2015-04-23 2016-10-27 Rovi Guides, Inc. Systems and methods for improving accuracy in media asset recommendations based on data from one data space
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US10579628B2 (en) * 2015-12-17 2020-03-03 The Nielsen Company (Us), Llc Media names matching and normalization
CN105678379B (zh) * 2016-01-12 2020-08-07 腾讯科技(深圳)有限公司 一种cnn的处理方法和装置
US9903733B2 (en) * 2016-03-17 2018-02-27 Honda Motor Co., Ltd. Vehicular communications network and methods of use and manufacture thereof
CN106709532B (zh) * 2017-01-25 2020-03-10 京东方科技集团股份有限公司 图像处理方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915195A (zh) * 2015-05-20 2015-09-16 清华大学 一种基于现场可编程门阵列实现神经网络计算的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"A Deep Learning prediction process accelerator based FPGA";Qi Yu et.al.;《2015 15th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing》;20151231;全文 *
基于FPGA的卷积神经网络并行结构研究;陆志坚;《万方》;20140417;文献第2章 *

Also Published As

Publication number Publication date
KR20180005241A (ko) 2018-01-15
CN105678379A (zh) 2016-06-15
JP2018526714A (ja) 2018-09-13
KR102192468B1 (ko) 2020-12-17
EP3404587A1 (en) 2018-11-21
WO2017121297A1 (zh) 2017-07-20
BR112017026917A2 (zh) 2018-08-14
EP3404587A4 (en) 2019-10-30
US20180082175A1 (en) 2018-03-22
MY188759A (en) 2021-12-29
US11151442B2 (en) 2021-10-19
JP6507271B2 (ja) 2019-04-24
EP3404587B1 (en) 2023-11-01
CA2987325A1 (en) 2017-07-20
CA2987325C (en) 2019-10-22
SG11201709689PA (en) 2017-12-28

Similar Documents

Publication Publication Date Title
CN105678379B (zh) 一种cnn的处理方法和装置
US10949328B2 (en) Data flow graph computation using exceptions
Kim et al. FPGA-based CNN inference accelerator synthesized from multi-threaded C software
CN109685201B (zh) 运算方法、装置及相关产品
Kästner et al. Hardware/software codesign for convolutional neural networks exploiting dynamic partial reconfiguration on PYNQ
CN109657794B (zh) 一种基于指令队列的分布式深度神经网络性能建模方法
CN110574007B (zh) 执行双输入值绝对值和求和操作的电路
US20150220134A1 (en) Optimizing boot-time peak power consumption for server/rack systems
CN112084037A (zh) 神经网络的内存分配方法及装置
CN112686379A (zh) 集成电路装置、电子设备、板卡和计算方法
CN109711540B (zh) 一种计算装置及板卡
Palaniappan et al. Parallel flux tensor analysis for efficient moving object detection
CN112084023A (zh) 数据并行处理的方法、电子设备及计算机可读存储介质
US10209765B2 (en) Method for achieving low power consumption of three-dimensional measurement chip
Hu et al. High-performance reconfigurable DNN accelerator on a bandwidth-limited embedded system
CN115775199A (zh) 数据处理方法和装置、电子设备和计算机可读存储介质
Li et al. Low power design methodology for signal processing systems using lightweight dataflow techniques
Qiu et al. An FPGA‐Based Convolutional Neural Network Coprocessor
CN112241872A (zh) 分布式数据计算分析方法、装置、设备和存储介质
Li et al. Fpga-based object detection acceleration architecture design
CN116805155B (zh) 一种lstm网络处理方法、装置、设备及可读存储介质
WO2022246617A1 (zh) 卷积运算方法、图像处理方法、装置和存储介质
CA2778576C (fr) Procede et dispositif de traitement de taches optimise pour un fws
CN116931876A (zh) 矩阵运算系统、矩阵运算方法、卫星导航方法及存储介质
Palaniappan et al. Multicore energy efficient flux tensor for video analysis

Legal Events

Date Code Title Description
C06 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