CN109697509A - 处理方法及装置、运算方法及装置 - Google Patents

处理方法及装置、运算方法及装置 Download PDF

Info

Publication number
CN109697509A
CN109697509A CN201711061069.5A CN201711061069A CN109697509A CN 109697509 A CN109697509 A CN 109697509A CN 201711061069 A CN201711061069 A CN 201711061069A CN 109697509 A CN109697509 A CN 109697509A
Authority
CN
China
Prior art keywords
instruction
weight
neuron
neural network
vector
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
CN201711061069.5A
Other languages
English (en)
Other versions
CN109697509B (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
Priority to CN201711061069.5A priority Critical patent/CN109697509B/zh
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to EP19215858.2A priority patent/EP3667569A1/en
Priority to US16/482,710 priority patent/US11593658B2/en
Priority to PCT/CN2018/095548 priority patent/WO2019076095A1/zh
Priority to KR1020197023878A priority patent/KR102434726B1/ko
Priority to EP19215860.8A priority patent/EP3660706B1/en
Priority to KR1020197037566A priority patent/KR102434728B1/ko
Priority to KR1020197037574A priority patent/KR102434729B1/ko
Priority to EP18868807.1A priority patent/EP3627397B1/en
Priority to EP19215859.0A priority patent/EP3660628B1/en
Publication of CN109697509A publication Critical patent/CN109697509A/zh
Priority to US16/528,624 priority patent/US10657439B2/en
Priority to US16/831,273 priority patent/US20200265300A1/en
Application granted granted Critical
Publication of CN109697509B publication Critical patent/CN109697509B/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/5057Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination using table look-up; using programmable logic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Neurology (AREA)
  • Mathematical Optimization (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Evolutionary Biology (AREA)
  • Executing Machine-Instructions (AREA)
  • Machine Translation (AREA)

Abstract

本公开提供了一种运算方法及装置,将量化后的数据,通过数据的查表,以实现运算操作,简化了结构,减少数据的计算能耗。同时,还实现了多元化的运算操作。

Description

处理方法及装置、运算方法及装置
技术领域
本公开涉及数据处理领域,尤其涉及一种处理方法及装置、运算方法及装置。
背景技术
神经网络(neural network)已经获得了非常成功的应用。但是神经网络的大规模参数和大规模计算成为神经网络应用的一个巨大挑战。一方面,大规模的参数对存储容量提出了很高的要求,同时导致大量的访存能耗。另一方面,大规模计算对运算单元的设计提出了很高的要求,同时导致大量的计算能耗。因此,如何减少神经网络的参数和计算量成为一个亟待解决的问题。
发明内容
(一)要解决的技术问题
本公开的目的在于提供一种处理方法及装置、运算方法及装置,以解决上述的至少一项技术问题。
(二)技术方案
本公开的一方面,提供了一种处理方法,包括:
分别对权值和输入神经元进行量化,确定权值字典、权值密码本、神经元字典和神经元密码本;以及
根据所述权值密码本和神经元密码本,确定运算密码本。
在本公开的一些实施例中,对权值进行量化包括步骤:对权值分组,对每一组权值用聚类算法进行聚类操作,将一组权值分成m类,m为正整数,每一类权值对应一个权值索引,确定权值字典,其中,权值字典包括权值位置和权值索引,权值位置指权值在神经网络结构中的位置;以及将每一类的所有权值用一中心权值替换,确定权值密码本,其中,权值密码本包括权值索引和中心权值。
在本公开的一些实施例中,对输入神经元进行量化包括步骤:将输入神经元分为n段,每一段输入神经元对应一个神经元范围及一个神经元索引,确定神经元字典,其中,n为正整数;以及对所述输入神经元进行编码,将每一段的所有输入神经元用一中心神经元替换,确定神经元密码本。
在本公开的一些实施例中,所述确定运算密码本,具体包括步骤:根据所述权值确定权值密码本中的对应的权值索引,再通过权值索引确定该权值对应的中心权值;根据所述输入神经元确定神经元密码本中对应的神经元索引,再通过神经元索引确定该输入神经元对应的中心神经元;以及将该中心权值和中心神经元进行运算操作,得到运算结果,并将该运算结果组成矩阵,从而确定所述运算密码本。
在本公开的一些实施例中,所述运算操作包括以下的至少一种:加法、乘法和池化,其中,池化包括:平均值池化,最大值池化和中值池化。
在本公开的一些实施例中,还包括步骤:对权值和输入神经元进行重训练,重训练时只训练权值密码本和神经元密码本,权值字典和神经元字典的内容保持不变,所述重训练采用反向传播算法。
在本公开的一些实施例中,所述分组包括:分为一组,将神经网络的所有权值归为一组;层类型分组,将神经网络中所有卷积层的权值、所有全连接层的权值和所有长短时记忆网络层的权值各划分成一组;层间分组,将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组;以及层内分组,将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。
在本公开的一些实施例中,所述聚类算法包括K-means、K-medoids、Clara和/或Clarans。
在本公开的一些实施例中,每一类的中心权值的选择方法为使得代价函数J(w,w0)最小,代价函数为平方距离:其中,J是代价函数,w是类中所有权值,w0是中心权值,n是每一类中权值数量,wi是类中第i个权值,i是大于等于1小于等于n的正整数。
本公开的另一方面,还提供了一种处理装置,包括:
存储器,用于存储操作指令;以及
处理器,用于执行存储器中的操作指令,在执行该操作指令时依照前述处理方法进行操作。
在本公开的一些实施例中,所述操作指令为二进制数,包括操作码和地址码,操作码指示处理器即将进行的操作,地址码指示处理器到存储器中的地址中读取参与操作的数据。
本公开的再一方面,还提供了一种运算装置,包括:
指令控制单元,用于对接收的指令进行译码,生成查找控制信息;以及
查找表单元,用于根据所述查找控制信息,以及接收的权值字典、神经元字典、运算密码本、权值和输入神经元,从运算密码本中查找输出神经元。
在本公开的一些实施例中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。
在本公开的一些实施例中,还包括:预处理单元,用于对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;存储单元,用于存储输入神经元、权值、权值字典、神经元字典、运算密码本和指令,以及接收输出神经元;缓存单元,用于缓存所述指令、输入神经元、权值、权值索引、神经元索引和输出神经元;以及直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。
在本公开的一些实施例中,所述缓存单元包括:指令缓存,用于缓存所述指令,并将缓存的指令输出至指令控制单元;权值缓存,用于缓存所述权值;输入神经元缓存,用于缓存所述输入神经元;以及输出神经元缓存,用于缓存查找表单元输出的输出神经元。
在本公开的一些实施例中,所述缓存单元还包括:权值索引缓存,用于缓存权值索引;以及神经元索引缓存,用于缓存神经元索引。
在本公开的一些实施例中,所述预处理单元中,对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和/或归一化。
在本公开的一些实施例中,查找表单元包括:乘法查找表:用于输入权值索引in1和神经元索引in2,通过乘法查找表经过查表操作mult_lookup,完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的乘法操作,即用查表操作out=mult_lookup(in1,in2)完成乘法功能out=data1*data2;和/或加法查找表:用于根据输入索引in通过逐级加法查找表经过查表操作add_lookup完成索引对应的中心数据data的加法操作,其中,in和data是长度为N的向量,N是正整数,即用查表操作out=add_lookup(in)完成加法功能out=data[1]+data[2]+...+data[N],和/或输入权值索引in1和神经元索引in2通过加法查找表经过查表操作完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的加法操作,即用查表操作out=add_lookup(in1,in2)完成加法功能,out=data1+data2;和/或池化查找表:用于输入索引对应的中心数据data的池化操作,即用查表out=pool_lookup(in)完成池化操作out=pool(data),池化操作包括平均值池化、最大值池化和中值池化。
在本公开的一些实施例中,所述指令为神经网络专用指令,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在本公开的一些实施例中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
在本公开的一些实施例中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
本公开的又一方面,还提供了一种运算方法,包括:
接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本;
对所述指令进行译码,确定查找控制信息;以及
根据所述查找控制信息、权值、权值字典、神经元字典和输入神经元,在运算密码本中查找输出神经元。
在本公开的一些实施例中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引,神经元索引以及权值和输入神经元的运算结果。
在本公开的一些实施例中,根据所述查找控制信息、权值和输入神经元,在运算密码本中查找输出神经元,包括步骤:根据所述权值、输入神经元、权值字典和神经元字典,在神经元字典中通过确定神经元范围以确定神经元索引、以及在权值字典中通过确定权值位置以确定权值索引;根据所述权值索引和神经元索引,在运算密码本中查找该运算结果,以确定输出神经元。
在本公开的一些实施例中,所述运算结果包括以下的至少一种运算操作的结果:加法、乘法和池化,其中,池化包括:平均值池化,最大值池化和中值池化。
在本公开的一些实施例中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之前,还包括步骤:对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;以及在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:存储权值、输入神经元、指令、权值字典、神经元字典、运算密码本、以及接收输出神经元;以及缓存所述指令、输入神经元、权值和输出神经元。
在本公开的一些实施例中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:缓存所述权值索引和神经元索引。
在本公开的一些实施例中,所述预处理包括切分、高斯滤波、二值化、正则化和/或归一化。
在本公开的一些实施例中,所述指令为神经网络专用指令,所述神经网络专用指令包括:控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
在本公开的一些实施例中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
在本公开的一些实施例中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
(三)有益效果
本公开提供的处理方法及装置、运算方法及装置,相较于现有技术,至少具有以下优点:
1、采用量化的方法将神经网络的神经元和权值进行量化,用权值字典和权值密码本表示量化后权值,用神经元字典和神经元密码本表示量化后的神经元,然后将神经网络中的运算转化成为查表操作,从而减少神经网络参数存储量,减少访存能耗和计算能耗。神经网络处理器中集成基于查找表的计算方法,优化了查表操作,简化了结构,减少神经网络访存能耗和计算能耗,同时还能实现运算的多元化。
2、可以对神经网络进行重训练,且重训练时只需训练密码本,不需要训练权值字典,简化了重训练操作。
3、采用针对局部量化的多层人工神经网络运算的神经网络专用指令和灵活的运算单元,解决了CPU(中央处理器)和GPU(图形处理器)运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持。
4、通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
附图说明
图1为本公开实施例的处理方法的步骤示意图。
图2为本公开实施例对权值进行量化的过程示意图。
图3为本公开实施例的对输入神经元进行量化的过程示意图。
图4为本公开实施例的确定运算密码本的过程示意图。
图5为本公开实施例的处理装置的结构示意图。
图6为本公开实施例的运算装置的结构示意图。
图7为本公开一具体实施例提供的运算装置的结构示意图。
图8为本公开实施例的运算方法的步骤示意图。
图9为本公开实施例的具体实施例的运算方法的步骤示意图。
具体实施方式
基于现有技术中,神经网络的数据处理时超大的计算量使得神经网络的应用受到阻碍的技术缺陷,本公开提供了一种处理方法及装置、运算方法及装置。其中,处理方法及装置通过量化输入神经元和权值这两种数据,分别挖掘层间、段间数据之间的相似性以及层内、段内数据局部相似性,以挖掘两种数据分布特性从而进行低比特量化,减小了表示每一个数据的比特数,从而降低了数据存储开销和访存开销。运算方法及装置将量化后的神经元和权值,通过查表操作实现了二者的运算操作,减少了神经网络访存能耗和计算能耗。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
本公开实施例的一方面,提供了一种处理方法,图1为本公开实施例的处理方法的步骤示意图,如图1所示,处理方法包括:
步骤S1、分别对权值和输入神经元进行量化,确定权值字典、权值密码本、神经元字典和神经元密码本;
其中,对权值进行量化的过程具体包括步骤:
对权值进行分组,对每一组权值用聚类算法进行聚类操作,将一组权值分成m类,m为正整数,每一类权值对应一个权值索引,确定权值字典,其中,权值字典包括权值位置和权值索引,权值位置指权值在神经网络结构中的位置;
将每一类的所有权值用一中心权值替换,确定权值密码本,该权值密码本包括权值索引和中心权值。
图2为本公开实施例对权值进行量化的过程示意图,如图2所示,按照分组的策略对权值进行分组,得到有序排列的权值矩阵。再对分组后的权值矩阵进行组内采样以及聚类操作,从而将值相近的权值划为同一类别,得到1.50、-0.13、-1.3和0.23这4个中心权值,并分别对应四个类别的权值。其中,中心权值为-1.3的类别的权值索引为00,中心权值为-0.13的类别的权值索引为01,中心权值为0.23的类别的权值索引为10,中心权值为1.50的类别的权值索引为11,此为密码本内容。另外,还分别用4个权值对应的权值索引(00、01、10和11)分别表示对应类别中的权值,从而得到权值字典。需要注意的是,权值字典还包括权值位置,即权值在神经网络结构中的位置,在权值字典中,权值位置指其中第p行第q列的坐标即(p,q),在本实施例中,1≤p≤4,1≤q≤4。
可见,该量化过程充分挖掘了神经网络层间权值的相似性以及层内权值局部相似性,得到神经网络的权值分布特性从而进行低比特量化,减小了表示每一个权值的比特数,从而降低了权值存储开销和访存开销。
一般来说,分组包括但不限于以下几种:分为一组,将神经网络的所有权值归为一组;层类型分组,将神经网络中所有卷积层的权值、所有全连接层的权值和所有长短时记忆网络层的权值各划分成一组;层间分组,将神经网络中一个或者多个卷积层的权值、一个或者多个全连接层的权值和一个或者多个长短时记忆网络层的权值各划分成一组;以及层内分组,将神经网络的一层内的权值进行切分,切分后的每一个部分划分为一组。
聚类算法包括K-means、K-medoids、Clara和/或Clarans。每一类的中心权值的选择方法为使得代价函数J(w,w0)最小,代价函数可以为平方距离:其中,J是代价函数,w是类中所有权值,w0是中心权值,n是每一类中权值数量,wi是类中第i个权值,i是大于等于1小于等于n的正整数。
接下来,对输入神经元进行量化进行说明,其包括步骤:
将输入神经元分为n段,每一段输入神经元对应一个神经元范围及一个神经元索引,确定神经元字典,其中,n为正整数;以及
对所述输入神经元进行编码,将每一段的所有输入神经元用一中心神经元替换,确定神经元密码本。
图3为本公开实施例的对输入神经元进行量化的过程示意图,如图3所示,本实施例以对ReLU激活层神经元进行量化。首先将ReLU函数进行分段,共分为四段,分别用0.0、0.2、0.5和0.7分别表示表示四段的中心神经元,以00、01、10和11来表示神经元索引。最后生成包含有神经元索引和中心神经元的神经元密码本;以及包含有神经元范围和神经元索引的神经元字典。其中,x表示未量化神经元时神经元的值。该输入神经元的量化过程能够按照实际需求将输入神经元分成多段,以及得到每一段的索引,组成神经元字典。再根据神经元索引,将每一段中的输入神经元替换为神经元密码本中的中心神经元,能够充分挖掘输入神经元之间的相似性,得到输入神经元的分布特性从而进行低比特量化,减小了表示每一个输入神经元的比特数,从而降低了输入神经元的存储开销和访存开销。
步骤S2、根据所述权值密码本和神经元密码本,确定运算密码本,具体包括步骤:
S21、根据所述权值确定权值密码本中的对应的权值索引,再通过权值索引确定该权值对应的中心权值;
S22、根据所述输入神经元确定神经元密码本中对应的神经元索引,再通过神经元索引确定该输入神经元对应的中心神经元;以及
S23、将该中心权值和中心神经元进行运算操作,得到运算结果,并将该运算结果组成矩阵,从而确定所述运算密码本。
图4为本公开实施例的确定运算密码本的过程示意图,如图4所示,本实施例以乘法密码本为例,在其他实施例中,该运算密码本还可以为加法密码本、池化密码本等。先在权值字典中,根据权值确定对应的权值索引、以及该权值索引对应的中心权值;再在神经元密码本中,根据输入神经元确定对应的神经元索引、以及该神经元索引对应的中心神经元。最后将该神经元索引和权值索引作为运算密码本的行索引和列索引,中心神经元和中心权值进行乘法运算,组成矩阵,即可得到乘法密码本。
在步骤S2之后还可以包括步骤S3、对权值和输入神经元进行重训练,重训练时只训练权值密码本和神经元密码本,权值字典和神经元字典的内容保持不变,简化了重训练操作,减小了工作量。优选地,所述重训练采用反向传播算法。
本公开实施例的另一方面,还提供了一种处理装置,图5为本公开实施例的处理装置的结构示意图,如图5所示,该处理装置包括:
存储器51,用于存储操作指令;以及
处理器52,用于执行存储器51中的操作指令,在执行该操作指令时依照前述的处理方法进行操作。其中,操作指令可以为二进制数,包括操作码和地址码,操作码指示处理器即将进行的操作,地址码指示处理器到存储器中的地址中读取参与操作的数据。
本公开的数据的处理装置,处理器52通过执行存储器51中的操作指令,依照前述数据的处理方法进行操作,能够对杂乱无章的权值和输入神经元进行量化,得到低比特化且规范化的中心权值和中心神经元,充分挖掘了权值之间和输入神经元之间的局部相似性,得到二者分布特性从而进行低比特量化,减小了表示每一个权值和输入神经元的比特数,从而降低了二者的存储开销和访存开销。
本公开实施例的再一方面,还提供了一种运算装置,图6为本公开实施例的运算装置的结构示意图,如图6所示,该运算装置包括指令控制单元1和查找表单元2。
指令控制单元1,用于对接收的指令进行译码,生成查找控制信息;
查找表单元2,用于根据指令控制单元1生成的查找控制信息,以及接收的权值字典、神经元字典和运算密码本,根据权值、权值字典、神经元字典和输入神经元,从运算密码本中查找输出神经元。其中,所述权值字典包括权值位置(权值在神经网络结构中的位置,在权值字典中为第p行第q列的位置,用(p,q)表示)和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。
其中,该查找表单元的具体工作过程为:根据权值确定权值在权值字典中对应的权值位置以确定权值索引,以及根据输入神经元在神经元字典中对应的神经元范围以确定神经元索引,再依据权值索引和神经元索引作为运算密码本的列索引和行索引,从运算密码本中查找出该列和该行的数值(运算结果),即为输出神经元。
请再参照图2至图4,在进行查找时,假定某神经元的神经元索引为01,某权值的权值索引为10时,则将该神经元和权值进行运算时,查找乘法密码本中第2行第3列对应的数值0.046,即为输出神经元。类似地,加法和池化操作与乘法操作类似,此处不再赘述。可以理解的是,池化包括但不限于平均值池化,最大值池化和中值池化。
更具体地,根据不同的运算操作,该查找表可以包括以下的至少一种:
乘法查找表:用于输入权值索引in1和神经元索引in2,通过乘法查找表经过查表操作mult_lookup,完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的乘法操作,即用查表操作out=mult_lookup(in1,in2)完成乘法功能out=data1*data2;和/或
加法查找表:用于根据输入索引in通过逐级加法查找表经过查表操作add_lookup完成索引对应的中心数据data的加法操作,其中,in和data是长度为N的向量,N是正整数,即用查表操作out=add_lookup(in)完成加法功能out=data[1]+data[2]+...+data[N],和/或输入权值索引in1和神经元索引in2通过加法查找表经过查表操作完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的加法操作,即用查表操作out=add_lookup(in1,in2)完成加法功能,out=data1+data2;和/或
池化查找表:用于输入索引对应的中心数据data的池化操作,即用查表out=pool_lookup(in)完成池化操作out=pool(data),池化操作包括平均值池化、最大值池化和中值池化。
图7为本公开一具体实施例提供的运算装置的结构示意图,如图7所示,该具体实施例的运算装置相较于图6中的运算装置还包括:预处理单元4、存储单元3、缓存单元6和直接内存存取单元5,能够优化本公开的处理过程,使得数据的处理更有序。
预处理单元4,用于对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典和运算密码本,预处理包括但不限于切分、高斯滤波、二值化、正则化和/或归一化。
存储单元3,用于存储输入神经元、权值、权值字典、神经元字典、运算密码本和指令,以及接收输出神经元;
缓存单元6,用于缓存所述指令、权值索引、神经元索引和输出神经元,可以包括:
指令缓存61,用于缓存所述指令,并将缓存的指令输出至指令控制单元1;
权值缓存62,用于缓存所述权值,并将缓存的权值输出至查找表单元;
输入神经元缓存63,用于缓存所述输入神经元,并将缓存的输入神经元输出至查找表单元;
输出神经元缓存64,用于缓存查找表单元输出的输出神经元,并将缓存的输出神经元输出至查找表单元;
神经元索引缓存65,用于根据输入神经元确定对应的神经元索引,缓存该神经元索引,并将缓存的神经元索引输出至查找表单元;以及
权值索引缓存66,用于根据权值确定对应的权值索引,缓存该权值索引,并将缓存的权值索引输出至查找表单元。
直接内存存取单元5,用于在所述存储单元3和缓存单元6之间进行数据或者指令读写,加速了数据和指令的读取过程。
关于指令部分,该指令可以为神经网络专用指令,包括所有专用于完成人工神经网络运算的指令。神经网络专用指令包括但不仅限于控制指令,数据传输指令,运算指令和逻辑指令。其中,控制指令控制神经网络执行过程。数据传输指令完成不同存储介质之间的数据传输,数据格式包括但不仅限于矩阵,向量和标量。运算指令完成神经网络的算术运算,包括但不仅限于矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令和MAXOUT神经网络运算指令。逻辑指令完成神经网络的逻辑运算,包括但不仅限于向量逻辑运算指令和标量逻辑运算指令。
其中,RBM神经网络运算指令用于实现Restricted Boltzmann Machine(RBM)神经网络运算。
LRN神经网络运算指令用于实现Local Response Normalization(LRN)神经网络运算。
LSTM神经网络运算指令用于实现Long Short-Term Memory(LSTM)神经网络运算。
RNN神经网络运算指令用于实现Recurrent Neural Networks(RNN)神经网络运算。
RELU神经网络运算指令用于实现Rectified linear unit(RELU)神经网络运算。
PRELU神经网络运算指令用于实现Parametric Rectified Linear Unit(PRELU)神经网络运算。
SIGMOID神经网络运算指令用于实现S型生长曲线(SIGMOID)神经网络运算
TANH神经网络运算指令用于实现双曲正切函数(TANH)神经网络运算。
MAXOUT神经网络运算指令用于实现(MAXOUT)神经网络运算。
更进一步地,该神经网络专用指令包括Cambricon指令集。
所述Cambricon指令集包括至少一种Cambricon指令,且Cambricon指令的长度为64bit,该Cambricon指令包括操作码和操作数。Cambricon指令包含四种类型的指令,分别是Cambricon控制指令(control instructions)、Cambricon数据传输指令(data transferinstructions)、Cambricon运算指令(computational instructions)和Cambricon逻辑指令(logical instructions)。
其中,Cambricon控制指令用于控制执行过程。Cambricon控制指令包括跳转(jump)指令和条件分支(conditional branch)指令。
Cambricon数据传输指令用于完成不同存储介质之间的数据传输。Cambricon数据传输指令包括加载(load)指令、存储(store)指令和搬运(move)指令。load指令用于将数据从主存加载到缓存,store指令用于将数据从缓存存储到主存,move指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据。数据传输指令支持三种不同的数据组织方式,包括矩阵,向量和标量。
Cambricon运算指令用于完成神经网络算术运算。Cambricon运算指令包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令。
Cambricon矩阵运算指令完成神经网络中的矩阵运算,包括矩阵乘向量(matrixmultiply vector)、向量乘矩阵(vector multiply matrix)、矩阵乘标量(matrixmultiply scalar)、外积(outer product)、矩阵加矩阵(matrix add matrix)和矩阵减矩阵(matrix subtract matrix)。
Cambricon向量运算指令完成神经网络中的向量运算,包括向量基本运算(vectorelementary arithmetics)、向量超越函数运算(vector transcendental functions)、内积(dot product)、向量随机生成(random vector generator)和向量中最大/最小值(maximum/minimum of a vector)。其中,向量基本运算包括向量加、减、乘、除(add、subtract、multiply、divide),向量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数、对数函数、三角函数和反三角函数。
Cambricon标量运算指令完成神经网络中的标量运算,包括标量基本运算(scalarelementary arithmetics)和标量超越函数运算(scalar transcendental functions)。其中,标量基本运算包括标量、减、乘、除(add、subtract、multiply、divide),标量超越函数是指那些不满足任何以多项式作系数的多项式方程的函数,包括但不仅限于指数函数,对数函数,三角函数,反三角函数。
Cambricon逻辑指令用于神经网络的逻辑运算。Cambricon逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令。
Cambricon向量逻辑运算指令包括向量比较(vector compare)、向量逻辑运算(vector logical operations)和向量大于合并(vector greater than merge)。其中,向量比较包括但不小于大于、小于,等于、大于等于、小于等于、不等于。向量逻辑运算包括与、或、非。
Cambricon标量逻辑运算包括标量比较(scalar compare),标量逻辑运算(scalarlogical operations)。其中,标量比较包括但不限于大于、小于、等于、大于等于,小于等于和不等于。标量逻辑运算包括与、或、非。
本公开实施例的又一方面,还提供了一种运算方法,图8为本公开实施例的运算方法的步骤示意图,如图8所示,该运算方法包括以下步骤:
S81、接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本;其中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。
S82、对所述指令进行译码,确定查找控制信息;
S83、根据所述查找控制信息、权值、权值字典、神经元字典和输入神经元,在运算密码本中查找输出神经元。步骤S83与查找表单元的具体工作过程类似,具体包括以下子步骤:
S831、根据所述权值、输入神经元、权值字典和神经元字典,在神经元字典中通过确定神经元范围以确定神经元索引、以及在权值字典中通过确定权值位置以确定权值索引;以及
S382、根据所述权值索引和神经元索引,在运算密码本中查找该运算结果,以确定输出神经元。
为了优化本公开的运算方法,使得处理更方便、有序,在本公开的一些实施例中还可以增加一些步骤,图9为本公开实施例的具体实施例的运算方法的步骤示意图,如图9所示,该具体实施例的运算方法中:
在接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本之前,还包括步骤S80、对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典和运算密码本;所述预处理包括切分、高斯滤波、二值化、正则化和/或归一化。
在接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本之后,还包括步骤S811、存储权值、输入神经元、指令、权值字典、神经元字典、运算密码本、以及接收输出神经元;以及步骤S812、缓存所述指令、输入神经元、权值、输出神经元、权值索引和神经元索引。
在一个实施例里,本公开还提供了一种芯片,其包括了前述运算装置,该芯片能够同时对权值和输入神经元进行多种运算,实现了运算的多元化。另外,通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
在一个实施例里,本公开提供了一个芯片封装结构,其包括了上述芯片。
在一个实施例里,本公开提供了一个板卡,其包括了上述芯片封装结构。
在一个实施例里,本公开提供了一个电子装置,其包括了上述板卡。
上述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
各功能单元/模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (20)

1.一种运算装置,包括:
指令控制单元,用于对接收的指令进行译码,生成查找控制信息;以及
查找表单元,用于根据所述查找控制信息,以及接收的权值字典、神经元字典、运算密码本、权值和输入神经元,从运算密码本中查找输出神经元。
2.根据权利要求1所述的运算装置,其中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引、神经元索引以及输入神经元和权值的运算结果。
3.根据权利要求2所述的运算装置,还包括:
预处理单元,用于对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;
存储单元,用于存储输入神经元、权值、权值字典、神经元字典、运算密码本和指令,以及接收输出神经元;
缓存单元,用于缓存所述指令、输入神经元、权值、权值索引、神经元索引和输出神经元;以及
直接内存存取单元,用于在所述存储单元和缓存单元之间进行数据或者指令读写。
4.根据权利要求2或3所述的运算装置,其中,所述缓存单元包括:
指令缓存,用于缓存所述指令,并将缓存的指令输出至指令控制单元;
权值缓存,用于缓存所述权值;
输入神经元缓存,用于缓存所述输入神经元;以及
输出神经元缓存,用于缓存查找表单元输出的输出神经元。
5.根据权利要求4所述的运算装置,其中,所述缓存单元还包括:
权值索引缓存,用于缓存权值索引;以及
神经元索引缓存,用于缓存神经元索引。
6.根据权利要求3至5任一所述的运算装置,其中,所述预处理单元中,对外部输入的输入信息进行的预处理包括:切分、高斯滤波、二值化、正则化和/或归一化。
7.根据权利要求2至6任一所述的运算装置,其中,查找表单元包括:
乘法查找表:用于输入权值索引in1和神经元索引in2,通过乘法查找表经过查表操作mult_lookup,完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的乘法操作,即用查表操作out=mult_lookup(in1,in2)完成乘法功能out=data1*data2;和/或
加法查找表:用于根据输入索引in通过逐级加法查找表经过查表操作add_lookup完成索引对应的中心数据data的加法操作,其中,in和data是长度为N的向量,N是正整数,即用查表操作out=add_lookup(in)完成加法功能out=data[1]+data[2]+...+data[N],和/或输入权值索引in1和神经元索引in2通过加法查找表经过查表操作完成权值索引对应的中心权值data1和神经元索引对应的中心神经元data2的加法操作,即用查表操作out=add_lookup(in1,in2)完成加法功能,out=data1+data2;和/或
池化查找表:用于输入索引对应的中心数据data的池化操作,即用查表out=poo1_lookup(in)完成池化操作out=poo1(data),池化操作包括平均值池化、最大值池化和中值池化。
8.根据权利要求1至7任一所述运算装置,其中,所述指令为神经网络专用指令,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及
逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
9.根据权利要求8所述的运算装置,其中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;
Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及
Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
10.根据权利要求9所述的运算装置,其中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
11.一种运算方法,包括:
接收权值、输入神经元、指令、权值字典、神经元字典和运算密码本;
对所述指令进行译码,确定查找控制信息;以及
根据所述查找控制信息、权值、权值字典、神经元字典和输入神经元,在运算密码本中查找输出神经元。
12.根据权利要求11所述的运算方法,其中,所述权值字典包括权值位置和权值索引;所述神经元字典包括输入神经元和神经元索引;所述运算密码本包括权值索引,神经元索引以及权值和输入神经元的运算结果。
13.根据权利要求12所述的运算方法,其中,根据所述查找控制信息、权值和输入神经元,在运算密码本中查找输出神经元,包括步骤:
根据所述权值、输入神经元、权值字典和神经元字典,在神经元字典中通过确定神经元范围以确定神经元索引、以及在权值字典中通过确定权值位置以确定权值索引;
根据所述权值索引和神经元索引,在运算密码本中查找该运算结果,以确定输出神经元。
14.根据权利要求12或13所述的运算方法,其中,所述运算结果包括以下的至少一种运算操作的结果:加法、乘法和池化,其中,池化包括:平均值池化,最大值池化和中值池化。
15.根据权利要求12至14任一所述的运算方法,其中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之前,还包括步骤:对外部输入的输入信息进行预处理,得到所述权值、输入神经元、指令、权值字典、神经元字典、运算密码本;以及
在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:存储权值、输入神经元、指令、权值字典、神经元字典、运算密码本、以及接收输出神经元;以及缓存所述指令、输入神经元、权值和输出神经元。
16.根据权利要求15所述的运算方法,其中,在接收权值、输入神经元、指令、权值字典、神经元字典、运算密码本之后,还包括步骤:缓存所述权值索引和神经元索引。
17.根据权利要求15或16所述的运算方法,其中,所述预处理包括切分、高斯滤波、二值化、正则化和/或归一化。
18.根据权利要求11至17任一所述的运算方法,其中,所述指令为神经网络专用指令,所述神经网络专用指令包括:
控制指令,用于控制神经网络执行过程;
数据传输指令,用于完成不同存储介质之间的数据传输,数据格式包括矩阵、向量和标量;
运算指令,用于完成神经网络的算术运算,包括矩阵运算指令、向量运算指令、标量运算指令、卷积神经网络运算指令、全连接神经网络运算指令、池化神经网络运算指令、RBM神经网络运算指令、LRN神经网络运算指令、LCN神经网络运算指令、LSTM神经网络运算指令、RNN神经网络运算指令、RELU神经网络运算指令、PRELU神经网络运算指令、SIGMOID神经网络运算指令、TANH神经网络运算指令、MAXOUT神经网络运算指令;以及
逻辑指令,用于完成神经网络的逻辑运算,包括向量逻辑运算指令和标量逻辑运算指令。
19.根据权利要求18所述的运算方法,其中,所述神经网络专用指令包括至少一种Cambricon指令,该Cambricon指令包括操作码和操作数,所述Cambricon指令包括:
Cambricon控制指令用于控制执行过程,且该Cambricon控制指令包括跳转指令和条件分支指令;
Cambricon数据传输指令用于完成不同存储介质之间的数据传输,包括加载指令、存储指令、搬运指令;其中,所述加载指令用于将数据从主存加载到缓存;存储指令用于将数据从缓存存储到主存;搬运指令用于在缓存与缓存或者缓存与寄存器或者寄存器与寄存器之间搬运数据;
Cambricon运算指令用于完成神经网络算术运算,包括Cambricon矩阵运算指令、Cambricon向量运算指令和Cambricon标量运算指令;其中,所述Cambricon矩阵运算指令用于完成神经网络中的矩阵运算,包括矩阵乘向量、向量乘矩阵、矩阵乘标量、外积、矩阵加矩阵和矩阵减矩阵;所述Cambricon向量运算指令用于完成神经网络中的向量运算,包括向量基本运算、向量超越函数运算、内积、向量随机生成和向量中最大/最小值;Cambricon标量运算指令用于完成神经网络中的标量运算,包括标量基本运算和标量超越函数运算;以及
Cambricon逻辑指令用于神经网络的逻辑运算,逻辑运算包括Cambricon向量逻辑运算指令和Cambricon标量逻辑运算指令;其中,所述Cambricon向量逻辑运算指令包括向量比较、向量逻辑运算和向量大于合并;向量逻辑运算包括与、或、非;所述Cambricon标量逻辑运算包括标量比较和标量逻辑运算。
20.根据权利要求19所述的运算方法,其中,所述Cambricon数据传输指令支持以下的一种或者多种数据组织方式:矩阵、向量和标量;所述向量基本运算包括向量加、减、乘、除;向量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述标量基本运算包括标量加、减、乘、除;标量超越函数指不满足以多项式作系数的多项式方程的函数,包括指数函数、对数函数、三角函数、反三角函数;所述向量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述向量逻辑运算包括与、或、非;所述标量比较包括大于、小于、等于、大于等于、小于等于和不等于;所述标量逻辑运算包括与、或、非。
CN201711061069.5A 2017-10-20 2017-10-24 处理方法及装置、运算方法及装置 Active CN109697509B (zh)

Priority Applications (12)

Application Number Priority Date Filing Date Title
CN201711061069.5A CN109697509B (zh) 2017-10-24 2017-10-24 处理方法及装置、运算方法及装置
EP18868807.1A EP3627397B1 (en) 2017-10-20 2018-07-13 Processing method and apparatus
PCT/CN2018/095548 WO2019076095A1 (zh) 2017-10-20 2018-07-13 处理方法及装置
KR1020197023878A KR102434726B1 (ko) 2017-10-20 2018-07-13 처리방법 및 장치
EP19215860.8A EP3660706B1 (en) 2017-10-20 2018-07-13 Convolutional operation device and method
KR1020197037566A KR102434728B1 (ko) 2017-10-20 2018-07-13 처리방법 및 장치
EP19215858.2A EP3667569A1 (en) 2017-10-20 2018-07-13 Processing method and device, operation method and device
US16/482,710 US11593658B2 (en) 2017-10-20 2018-07-13 Processing method and device
EP19215859.0A EP3660628B1 (en) 2017-10-20 2018-07-13 Dynamic voltage frequency scaling device and method
KR1020197037574A KR102434729B1 (ko) 2017-10-20 2018-07-13 처리방법 및 장치
US16/528,624 US10657439B2 (en) 2017-10-24 2019-08-01 Processing method and device, operation method and device
US16/831,273 US20200265300A1 (en) 2017-10-24 2020-03-26 Processing method and device, operation method and device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711061069.5A CN109697509B (zh) 2017-10-24 2017-10-24 处理方法及装置、运算方法及装置
CN201711004974.7A CN109697507B (zh) 2017-10-24 2017-10-24 处理方法及装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201711004974.7A Division CN109697507B (zh) 2017-10-20 2017-10-24 处理方法及装置

Publications (2)

Publication Number Publication Date
CN109697509A true CN109697509A (zh) 2019-04-30
CN109697509B CN109697509B (zh) 2020-10-20

Family

ID=66229360

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201711061069.5A Active CN109697509B (zh) 2017-10-20 2017-10-24 处理方法及装置、运算方法及装置
CN201711004974.7A Active CN109697507B (zh) 2017-10-20 2017-10-24 处理方法及装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201711004974.7A Active CN109697507B (zh) 2017-10-20 2017-10-24 处理方法及装置

Country Status (1)

Country Link
CN (2) CN109697509B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110245750A (zh) * 2019-06-14 2019-09-17 西南科技大学 一种基于fpga的神经网络数值模拟方法
US20200097824A1 (en) * 2017-12-11 2020-03-26 Cambricon Technologies Corporation Limited Neural network calculation apparatus and method

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930681B (zh) * 2019-05-13 2023-10-10 中科寒武纪科技股份有限公司 一种计算装置及相关产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102496060A (zh) * 2011-12-07 2012-06-13 高汉中 基于神经网络的云端智能机系统
CN102594927A (zh) * 2012-04-05 2012-07-18 高汉中 基于神经网络的云端服务器结构
US9053429B2 (en) * 2012-12-21 2015-06-09 International Business Machines Corporation Mapping neural dynamics of a neural model on to a coarsely grained look-up table
CN106599990A (zh) * 2015-10-08 2017-04-26 上海兆芯集成电路有限公司 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列
CN107016175A (zh) * 2017-03-23 2017-08-04 中国科学院计算技术研究所 适用神经网络处理器的自动化设计方法、装置及优化方法
CN107086910A (zh) * 2017-03-24 2017-08-22 中国科学院计算技术研究所 一种针对神经网络处理的权重加解密方法和系统
CN107103113A (zh) * 2017-03-23 2017-08-29 中国科学院计算技术研究所 面向神经网络处理器的自动化设计方法、装置及优化方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107563497B (zh) * 2016-01-20 2021-03-19 中科寒武纪科技股份有限公司 用于稀疏人工神经网络的计算装置和运算方法
CN108427990B (zh) * 2016-01-20 2020-05-22 中科寒武纪科技股份有限公司 神经网络计算系统和方法
CN107239823A (zh) * 2016-08-12 2017-10-10 北京深鉴科技有限公司 一种用于实现稀疏神经网络的装置和方法
CN106485316B (zh) * 2016-10-31 2019-04-02 北京百度网讯科技有限公司 神经网络模型压缩方法以及装置
CN106529609B (zh) * 2016-12-08 2019-11-01 郑州云海信息技术有限公司 一种基于神经网络结构的图像识别方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102496060A (zh) * 2011-12-07 2012-06-13 高汉中 基于神经网络的云端智能机系统
CN102594927A (zh) * 2012-04-05 2012-07-18 高汉中 基于神经网络的云端服务器结构
US9053429B2 (en) * 2012-12-21 2015-06-09 International Business Machines Corporation Mapping neural dynamics of a neural model on to a coarsely grained look-up table
CN106599990A (zh) * 2015-10-08 2017-04-26 上海兆芯集成电路有限公司 具有神经存储器的神经网络单元和集体将来自神经存储器的数据列移位的神经处理单元阵列
CN107016175A (zh) * 2017-03-23 2017-08-04 中国科学院计算技术研究所 适用神经网络处理器的自动化设计方法、装置及优化方法
CN107103113A (zh) * 2017-03-23 2017-08-29 中国科学院计算技术研究所 面向神经网络处理器的自动化设计方法、装置及优化方法
CN107086910A (zh) * 2017-03-24 2017-08-22 中国科学院计算技术研究所 一种针对神经网络处理的权重加解密方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SHIJIN ZHANG等: "Cambricon-X: An Accelerator for Sparse Neural Networks", 《2016 49TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE (MICRO)》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200097824A1 (en) * 2017-12-11 2020-03-26 Cambricon Technologies Corporation Limited Neural network calculation apparatus and method
US11657258B2 (en) 2017-12-11 2023-05-23 Cambricon Technologies Corporation Limited Neural network calculation apparatus and method
US11803735B2 (en) 2017-12-11 2023-10-31 Cambricon Technologies Corporation Limited Neural network calculation apparatus and method
CN110245750A (zh) * 2019-06-14 2019-09-17 西南科技大学 一种基于fpga的神经网络数值模拟方法
CN110245750B (zh) * 2019-06-14 2022-07-15 西南科技大学 一种基于fpga的神经网络数值模拟方法

Also Published As

Publication number Publication date
CN109697507B (zh) 2020-12-25
CN109697509B (zh) 2020-10-20
CN109697507A (zh) 2019-04-30

Similar Documents

Publication Publication Date Title
US11727276B2 (en) Processing method and accelerating device
CN111221578B (zh) 计算装置以及计算方法
US10657439B2 (en) Processing method and device, operation method and device
CN107316078A (zh) 用于执行人工神经网络自学习运算的装置和方法
CN107578014A (zh) 信息处理装置及方法
CN107203808B (zh) 一种二值卷积装置及相应的二值卷积神经网络处理器
CN111325321A (zh) 基于多神经网络融合的类脑计算系统及指令集的执行方法
CN110163355A (zh) 一种计算装置及方法
CN109697509A (zh) 处理方法及装置、运算方法及装置
CN110383300A (zh) 一种计算装置及方法
CN110163350A (zh) 一种计算装置及方法
CN108170640A (zh) 神经网络运算装置及应用其进行运算的方法
CN110276447A (zh) 一种计算装置及方法
CN108320018A (zh) 一种人工神经网络运算的装置及方法
CN109389209A (zh) 处理装置及处理方法
CN109389218A (zh) 数据压缩方法及压缩装置
CN108960420B (zh) 处理方法及加速装置
CN112949610A (zh) 一种基于降噪算法的改进Elman神经网络的预测方法
CN109389213A (zh) 存储装置及方法、数据处理装置及方法、电子装置
CN112988548A (zh) 一种基于降噪算法的改进Elman神经网络的预测方法
Evangelista et al. Short-and-Long-Term Impact of Initialization Functions in NeuroEvolution
Hassan et al. Hyperdimensional Computing Versus Convolutional Neural Network: Architecture, Performance Analysis, and Hardware Complexity
CN117765164A (zh) 三维人体姿态的重建方法及装置
El Hadi et al. Improvement Deep Leaning Network Performance by Increasing Its Complexity
Sun et al. A High-Dimensional and Multi-granularity Feature Selection Method Based on CNN and RF

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