CN111930681A - 一种计算装置及相关产品 - Google Patents

一种计算装置及相关产品 Download PDF

Info

Publication number
CN111930681A
CN111930681A CN201910396867.6A CN201910396867A CN111930681A CN 111930681 A CN111930681 A CN 111930681A CN 201910396867 A CN201910396867 A CN 201910396867A CN 111930681 A CN111930681 A CN 111930681A
Authority
CN
China
Prior art keywords
instruction
calculation
data
machine learning
input data
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
CN201910396867.6A
Other languages
English (en)
Other versions
CN111930681B (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp 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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910396867.6A priority Critical patent/CN111930681B/zh
Publication of CN111930681A publication Critical patent/CN111930681A/zh
Application granted granted Critical
Publication of CN111930681B publication Critical patent/CN111930681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • 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

Abstract

本申请公开了一种计算装置,该计算装置应用于机器学习芯片,该机器学习芯片设置于板卡上,该板卡包括:存储器件,用于存储数据;接口装置,用于实现机器学习芯片与外部设备之间的数据传输;控制器件,用于对机器学习芯片的状态进行监控和管理,上述计算装置包括:运算单元、控制单元和存储单元。采用本申请实施例能够减少机器学习芯片的计算时间和计算能耗。

Description

一种计算装置及相关产品
技术领域
本申请涉及信息处理技术领域,具体涉及一种计算装置及相关产品。
背景技术
随着信息技术的不断发展和人们日益增长的需求,人们对信息及时性的要求越来越高了。目前,终端对信息的获取以及处理均是基于通用处理器获得的。
在实践中发现,这种基于通用处理器运行软件程序来处理信息的方式,受限于通用处理器的运行速率,特别是在通用处理器负荷较大的情况下,信息处理效率较低、时延较大,对于信息处理的计算模型例如计算模型的正向运算来说,正向运算的计算量更大,通用的处理器完成正向运算的时间长,效率低,功耗高。
发明内容
本申请实施例提供了一种计算装置及相关产品,可以利用机器学习输入的相似性计算的机器学习加速器,可以充分地利用输入的相似性,极大地提高性能。
第一方面,提供一种计算装置,所述计算装置用于执行机器学习计算,所述计算装置包括:运算单元以及控制单元;
所述控制单元,用于获取计算指令,并发送所述计算指令到所述运算单元;
所述运算单元,用于依据所述计算指令对输入数据进行量化,并对量化后的所述输入数据执行运算操作,得到运算结果,具体为:依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算。
第二方面,本申请实施例提供了一种机器学习运算装置,该机器学习运算装置包括一个或者多个第一方面所述的计算装置。该机器学习运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行链接并传输数据;
其中,多个所述计算装置通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第三方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第三方面所述的机器学习处理装置、通用互联接口,和其他处理装置。该机器学习运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
第四方面,本申请实施例提供了一种机器学习芯片,该机器学习芯片包括上述第一方面所述的计算装置、上述第二方面所述的机器学习运算装置或者上述第三方面所述的组合处理装置。
第五方面,本申请实施例提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片;
第六方面,本申请实施例提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。
第七方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的机器学习芯片或者上述第六方面所述的板卡。
第八方面,本申请实施例还提供一种执行机器学习模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行机器学习计算;所述计算装置包括:运算单元以及控制单元;所述方法包括:
所述控制单元获取计算指令,并发送所述计算指令到所述运算单元;
所述运算单元对输入数据进行量化,并对量化后的所述输入数据执行运算操作,得到运算结果,具体为:依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例提供的一种计算装置的结构示意图。
图1B是本申请实施例提供的X位定点数据表示的结构示意图。
图1C是本申请实施例提供的一种聚类算法的演示示意图。
图1D是本申请实施例提供的操作指令的结构示意图。
图1E是本申请一个实施例提供的计算装置的结构图。
图1F是本申请另一个实施例提供的计算装置的结构图。
图1G是本申请实施例提供的主处理电路的结构图。
图1H是本申请实施例提供的另一种计算装置的结构图。
图1I是本申请实施例提供的树型模块的结构示意图。
图1J是本申请实施例提供的又一种计算装置的结构图。
图1K是本申请实施例提供的还一种计算装置的结构图。
图2是本申请实施例提供的一种组合处理装置的结构图。
图2A是本申请实施例提供的一种计算装置的结构示意图。
图3是本申请实施例提供的另一种组合处理装置的结构图。
图3A是本申请实施例提供的一种板卡的结构示意图。
图4是本申请实施例提供的一种计算方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
目前,深度学习技术取得了巨大成功,被应用于各个方向。CPU、GPU和神经网络加速器对深度学习的支持成为了热点。然而,这些技术往往只考虑到了单次(一次)神经网络的传播,没有利用好应用问题中神经网络输入的相似性,从而其性能还有很大的提升空间。例如,在语音处理、视频处理等常见的深度学习任务中,输入总是有很大相似性,神经网络的计算结果经常是冗余的。针对这个问题,本申请提出了一种利用机器学习输入的相似性计算的加速器,可以充分地利用输入的相似性,极大地提高机器学习加速器的性能。
首先介绍本申请使用的计算装置。参阅图1A,提供了一种计算装置,该计算装置用于执行机器学习计算,该计算装置包括:控制单元11和运算单元12,其中,控制单元11与运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路;
控制单元11,用于获取计算指令;在一种可选方案中,具体的,可以通过数据输入输出单元获取计算指令,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向计算指令或反向训练指令,或其他机器学习计算指令等等,例如卷积计算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
控制单元11,还用于将该所述计算指令发送给所述主处理电路;
主处理电路101,用于依据所述计算指令对输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及计算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及计算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
在一个可能的示例中,所述控制单元11,用于获取计算指令,并发送所述计算指令到所述运算单元12;
所述运算单元12,用于依据所述计算指令对输入数据进行量化,并对量化后的所述输入数据执行运算操作,得到运算结果,具体为:依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算。
其中,上述对输入数据进行量化,可以采用线性量化或者聚类量化,在此不作限定。
线性量化的方案:
首先根据训练数据的输入数据范围得到对输入数据整体范围的估计,然后除以量化的区间数得到步长。对于输入,按此方法计算得到量化后的数值。线性量化的公式如下:
Figure BDA0002057344860000051
其中,取整可以为上取整、下取整或四舍五入、向奇数取整,向偶数取整,向零取整和随机取整,在此不作限定,步长根据数据范围和量化区间数事先确定好。
关于量化区间数的选择,对于不同的机器学习模型可以选择不同的合适的区间数目,从而取得精度与计算量的平衡。
实现上述量化,需要线性量化指令的支持,线性量化指令可以配置线性量化所需的步长,以及取整方法。此指令还可以指出输入数据,可以在寄存器中或存储器中,通过各种寻址方式获得。
另外,可以对不同的模型的不同的网络层采取不同量化参数,以取得最好的精度。
采用浮点数转定点数的方法可以达到与上述方法同样的效果,因此,浮点数转定点数也是线性量化的一种,这是线性量化的另一种子方案,具体地,如图1B所示,X位定点数据包括1位符号位,M位整数位,以及N位小数位,对所需各类型数据进行统计分析,得到定点数据的小数点位置Point location,根据定点数据的小数点位置来实现长位浮点数据类型向短位数定点数据类型的转换。
聚类量化的方案:
可以采用聚类的方式进行量化,这种方案与线性量化相比优点是精度可以更高,表达同样精度所需比特位数更小,缺点是硬件代价更大,结构更复杂。
具体原理是:如图1C所示,通过分组和聚类操作,将一组权值分成m个类,每个类计算出一个中心点,每个类中的所有输入数据都用中心点替换;以及对中心点进行编码操作,以得到密码本和字典,形成了一套完整的量化方法。
如下提供了一种输入数据的量化方法,包括步骤S101-S103:
S101、对输入数据进行分组;
S102、根据对各组的输入数据用聚类算法进行聚类操作,将一组输入数据分成m个类,每个类计算出一个中心点,每个类中的所有输入数据都用中心点替换。其中,所述聚类算法包括但不限于K-means、K-medoids、Clara和Clarans。
进一步地,所述一个类的中心点选择方法为,使得代价函数J(w,w0)最小。可选的,代价函数可以是平方距离,
Figure BDA0002057344860000061
其中,w是一个类中的所有权值,w0是该类的中心权值,n是该类中权值的数量,wi是该类中第i个权值,i是大于等于1小于等于n的正整数。
S103、对中心点进行编码操作,得到密码本和权值字典。
在一个可能的示例中,如图1D所示,为本公开实施例的量化装置的结构示意图,其可以用于权值的量化,包括:
存储器1,用于存储操作指令;所述操作指令一般为二进制数形式,由操作码和地址码构成,操作码指示处理器2即将进行的操作,地址码指示处理器2到存储器1中的地址中读取参与操作的数据。
处理器2,用于执行存储器1中的操作指令,在执行指令时依照上述的量化方法进行操作。
将上述基于聚类的量化方法与装置应用于利用输入相似性近似计算方面时,首先对第一次的输入数据进行聚类得到聚类中心点,得到密码本和字典。对于之后的输入数据按照聚类中心点进行量化。为了使得聚类中心能反应输入数据的变化,每隔若干次计算对输入数据进行重训练,根据输入数据的变化调整密码本。
进一步地,量化之后的数据应该存储在专门用来存储这些数据的存储设备中,可以称为输入数据缓存。这里对其物理实现不做限定。输入数据缓存可以是在存储单元中,也可以是在运算单元中。其中存储的数据是经过量化装置处理过的输入数据,并作为“利用输入相似性的复用单元”的输入。输入数据缓存中应该存有本次机器学习运算执行以及上一次机器学习运算执行,共两次计算过程的量化后的输入数据,具体执行时可以将输入数据缓存分成两部分进行乒乓操作:在“利用输入相似性的复用单元”将本次执行和上一次执行的输入数据进行比较,从而,在进行之后的计算时,上一次计算的输入便不再需要,只需保留本次计算过程的量化后输入即可,而不需要的数据所占用的存储空间则可以用来存储再下一次计算过程的量化后的输入数据。
在一些可能的示例中,如一种输入缓存的处理方案,就是只存储一份量化后的输入数据。“利用输入数据的复用单元”将两次的输入数据进行比较后,如果输入数据有变化,则在输入缓存中将有变化的位置的数据更新为变化后的数据。这种方案的电路会比前一种复杂一些,但所需存储空间更少。
上述量化装置的位置,可以放在存储单元中,也可以在运算单元中。放在存储单元中可以直接默认地对输入数据进行量化操作。放在运算单元中可以直接与“利用输入相似性的复用单元”相连。
在一个可能的示例中,所述运算单元12包括复用单元(图中未示出);
所述复用单元,用于将量化后的所述输入数据与上一次计算过程的量化后的输入数据进行比较,若比较结果满足预设条件,则跳过此次输入数据的计算而采用上一次执行运算的结果,若比较结果为不满足所述预设条件,则将量化后的所述输入数据与上一次计算过程的量化后的输入数据之差与权值进行计算,并将得到的结果对上一次执行运算的结果进行修正。
在一个可能的示例中,所述控制单元11包括:依赖关系处理单元112和指令缓存单元110;
所述依赖关系处理单元112,用于确定第j计算指令与所述第j计算指令之前的第j-1计算指令是否存在关联关系,如所述第j计算指令与所述第j-1计算指令存在关联关系,将所述第j计算指令缓存在所述指令缓存单元110内,在所述第j-1计算指令执行完毕后,从所述指令缓存单元110提取所述第j计算指令传输至所述运算单元12,j为正整数。
其中,预设条件为所述量化后的输入数据与所述上一次计算过程的量化后的输入数据之间的差值的绝对值小于预设阈值,或者,量化后的输入数据与上一次计算过程的量化后的输入数据之间的比值处于预设范围,其中,上述预设阈值或者预设范围均可以由用户自行设置或者系统默认。
以神经网络算法为例,说明利用相似性近似计算的原理如下:
假设一次神经网络的计算过程是这样的,z1=i11*w1+i12*w2+i13*w3+b;
其中,z是输出,i是输入,w是权值,b是偏置。相似地,第二次执行神经网络运算的结果是:
z2=i21*w1+i22*w2+i23*w3+b
而如果前两个输入i11、i12没有变化,第二次的结果其实可以更高效地通过z2=z1+(i23-i13)*w3得出。
需要注意的是,上述近似计算的原理是针对全连接层等线性计算的方法,对于激活这种非线性计算不能通过计算原结果加上修正量这种方式得出结果,需要得到真实的输入数据后再进行计算。
本申请的计算装置相当于一种加速器,可以有效地重复利用机器学习运算的执行结果。对于深度神经网络(DNN)的输入,如果其变化小得可以忽略,则可以避免不必要的计算,从而在保证精度的同时,避免大量的计算和访存。使用量化、计算输入数据的差值等方法可以省去很多计算量并节省很多功耗。
在一个可能的示例中,在所述确定第j计算指令与所述第j计算指令之前的第j-1计算指令是否存在关联关系方面,所述依赖关系处理单元具体用于:
依据所述第j计算指令提取所述第j计算指令中所需数据的第j存储地址区间,依据所述第j-1计算指令提取所述第j-1计算指令中所需数据的第j-1存储地址区间,如所述第j存储地址区间与所述第j-1存储地址区间具有重叠的区域,确定所述第j计算指令与所述第j-1计算指令具有关联关系,如所述第j存储地址区间与所述第j-1存储地址区间不具有重叠的区域,确定所述第j计算指令与所述第j计算指令不具有关联关系。
在一个可能的示例中,所述运算单元包括:多个运算模块,所述多个运算模块用于执行n个流水级的计算,n大于或者等于2;
所述运算单元12,具体用于对数据执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,将第n-1结果输入到第n流水级执行第n流水级的计算得到第n结果,将所述第n结果输入到所述存储单元10,所述n为大于等于3的整数。
在一个可能的示例中,所述运算单元12包括一个主处理电路、一个或多个分支处理电路以及多个从处理电路,
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个计算指令中的至少一个计算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块和计算指令;
所述多个从处理电路,用于依据接收到的计算指令和数据块执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行处理得到该计算指令的计算结果,将该计算指令的计算结果发送给所述控制单元11。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
可选的,上述机器学习计算具体可以包括:人工神经网络运算,上述输入数据具体可以包括:输入神经元数据和权值数据。上述计算结果具体可以为:人工神经网络运算的结果即输出神经元数据。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一次人工神经网络执行完成之后,下一层的计算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一次人工神经网络的反向运算执行完成后,下一层计算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
上述机器学习计算还可以包括支持向量机运算,k-近邻(k-nn)运算,k-均值(k-means)运算,主成分分析运算等等。为了描述的方便,下面以人工神经网络运算为例来说明机器学习计算的具体方案。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,可以将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
可选的,上述计算装置还可以包括:该存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取或存储数据。
可选的,该控制单元包括:指令缓存单元110、指令处理单元111和存储队列单元113;
指令缓存单元110,用于存储所述机器学习运算关联的计算指令;
所述指令处理单元111,用于对所述计算指令解析得到多个计算指令;
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个计算指令或计算指令。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制单元,该控制单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制单元,该另一个控制单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 寄存器或立即数 寄存器/立即数 ...
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括机器学习计算指令。以神经网络计算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
Figure BDA0002057344860000111
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
其中,依赖关系处理单元108可用于在具有多个计算指令时,确定第一计算指令与所述第一计算指令之前的第零计算指令是否存在关联关系,如第一计算指令与第零计算指令存在关联关系,则将第一计算指令缓存在指令缓存单元110内,在第零计算指令执行完毕后,从指令缓存单元110提取所述第一计算指令传输至所述运算单元12;
所述确定该第一计算指令与第一计算指令之前的第零计算指令是否存在关联关系包括:
依据所述第一计算指令提取所述第一计算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零计算指令提取所述第零计算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一计算指令与所述第零计算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一计算指令与所述第零计算指令不具有关联关系。
在另一种可选实施例中,运算单元12如图1F所示,可以包括一个主处理电路101和多个从处理电路102。在一个实施例里,如图1F所示,多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图1F所示的K个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
K个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图1G所示,该主处理电路还可以包括:转换处理电路110、激活处理电路111、加法处理电路112中的一种或任意组合;
转换处理电路110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路111,用于执行主处理电路内数据的激活运算;
加法处理电路112,用于执行加法运算或累加运算。
所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个计算指令中的至少一个计算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该计算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该计算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
下面通过神经网络计算指令来说明如图1A所示的计算装置的具体计算方法。对于神经网络计算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将权值w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果s。
在一种可选的实施方案中,如图1H所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口404,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口分别连接多个从处理电路中的一个从处理电路;
上述树型模块具有收发功能,例如如图1H所示,该树型模块即为发送功能,如图2A所示,该树型模块即为接收功能。
所述树型模块,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及计算指令。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为n叉树结构,例如,如图1I所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图1I所示的倒数第一层的节点。
可选的,上述运算单元可以携带单独的缓存,如图1J所示,可以包括:神经元缓存单元,该神经元缓存单元63缓存该从处理电路的输入神经元向量数据和输出神经元值数据。
如图1K所示,该运算单元还可以包括:权值缓存单元64,用于缓存该从处理电路在计算过程中需要的权值数据。
在一种可选实施例中,运算单元12如图1E所示,可以包括分支处理电路103;其具体的连接结构如图1E所示,其中,
主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
在一种可选实施例中,以神经网络运算中的全连接运算为例,过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh、relu、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
控制单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接计算指令,将输入神经元矩阵x,权值矩阵w以及全连接计算指令传输给主处理电路;
主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入神经元矩阵x广播给8个从处理电路,
从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制单元,控制单元将该最终结果y输出或存储至存储单元内。
如图1A所示的计算装置执行神经网络正向计算指令的方法具体可以为:
控制单元11从指令缓存单元110内提取神经网络正向计算指令、神经网络计算指令对应的操作域以及至少一个操作码,控制单元11将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元12。
控制单元11从存储单元10内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元12的主处理电路,控制单元从存储单元10内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
主处理电路依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定权值数据为分发数据,将权值w拆分成n个数据块;
控制单元11的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏置指令将该累加结果执行加偏置b得到最终结果,将该最终结果发送至该控制单元。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案可以通过一个指令即神经网络计算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
本申请还揭露了一个机器学习运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
其中,运算装置还包括“利用输入相似性的复用单元”。当机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置中,可以全部含有所述“依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算”,也可以只有一部分含有所述“依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算”,也可以是主处理电路中含有而从处理电路中不含有。所述“依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算”将本次与上一次的输入数据进行比较,其每个数据的比较结果有两个:相同与不同。相同,则意味着相减结果为0(或绝对值小于一定阈值),不同则不为0(绝对值大于阈值)。如果相同,则相应的运算可以被避免,如果不同,则需要将两次输入的差值送入网络进行计算。最终的运算结果是使用差值算出的修正值与上一次计算结果的和。特殊地,如果输入没有任何变化,则修正值为0,而所有的计算都被避免。
在一个可能的示例中,具体实现中,如果如上所述“相减结果绝对值小于一定的不为0的阈值”作为判断标准,那么如前所述的量化装置是可选的而不是必须的。如果省去量化装置,那么利用相似性复用单元需要变得更复杂,未经量化的数据也会需要更多的存储空间来存储。设计人员可以根据需求进行权衡。
对于最后的计算结果,由于之后的运算还会用到,可以存储在片上的缓存中,也可以存储在片下以及其他地方,这里不做限定。
本申请还揭露了一个组合处理装置,其包括上述的机器学习运算装置,通用互联接口,和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。图2为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在所述机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
对于不同的神经网络运算,本申请所述加速器有不同的使用方法可以让神经网络的计算达到最优的效果。
对于全连接网络,计算单元中的权值应该按照这样的方式存储:一个输入神经元的所有权值存储在一起。这样更方便于在某个神经元没有变化而需要跳过的时候定位它的所有权值。
对于循环神经网络,特别地,对于LSTM(Long short term memory model),一个LSTM单元的至少3个门共享同样的输入,因此我们只需把输入与前次的值比较一次,如果输入没有变化,则可以避免4个门的计算和访存,如果变化小,也可以采用上述的策略减少计算开销。
对于卷积神经网络以及其他神经网络,其中的卷积运算以及其他运算,往往需要对其中的一层神经网络计算多次:即需要将数据进行拆分,加载一部分数据,对其进行运算,将结果存储到存储器中,如此循环多次。此时就需要将上述多次循环中的每一次的输入数据都存储在加速器中的输入数据缓存中,而不能丢弃。在计算下一批数据时,再将输入数据与输入数据缓存中的数据逐块进行比较与复用。由于复用输入数据的需求,对输入数据的拆分需要遵循固定的方式,使得某次计算可以找到前次执行中相应的数据块所在的位置。
对于其他各种类型的神经网络,都可以根据本公开所提出的思想,稍作变化进行利用输入相似性的计算。
对于如前所述的含有多个处理装置或者说多个tile的计算装置,对于全连接层,输出神经元平均地分配到各个tile中。对于卷积层,不同的核分配在不同tile中。对于循环神经网络,不同的tile处理一个LSTM单元的不同门。换句话说,为了最优地使用上述计算装置,能够针对不同的网络制定不同的拆分策略,从而发挥出多个计算装置的性能,多个tile可以理解为多个核以及与核相连的一小块ram,其可以用来存放权值。
如果一个神经网络任务的所有操作都可以一次在片上完成,即只需要一次load和一次store,这种情况往往表明片上资源足够多,或者神经网络层数少,那么采用如前所述的策略就可以达到利用输入相似性近似计算的目的。但是目前的深度神经网络越来越深,片上资源往往不够,往往需要逐层进行计算,即计算完一层的结果需要全部存储到片下,之后在加载到片上进行下一步计算。而当新的输入数据到来时,前次执行的中间结果可能已经丢失,网络的某一层计算时就无法知道它的输入有没有变化,有了多少变化,也就无法进行近似计算。于是我们需要采用这样一种策略,对于所有的如前所述有连续性的输入数据,逐层地进行计算。比如先对所有的输入数据进行第一层的计算。第二个输入数据就可以根据第一个输入数据的计算结果进行近似计算,以此类推。然后所有的输出数据进行第二层神经网络的计算,以此类推。
需要强调,除神经网络算法之外,本申请还可以被应用于其他机器学习算法相应的计算装置的实现中。例如,对逻辑斯蒂回归、线性SVM算法的计算过程,依然可以利用其输入数据的相似性,对其进行上述简化运算,以减少运算量并提升性能。
可选的,该结构如图3所示,还可以包括存储装置,存储装置分别与所述机器学习运算装置和所述其他处理装置连接。存储装置用于保存在所述机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述机器学习运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图3A,图3A提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
参见图4,图4为本申请实施例提供的一种计算方法的流程示意图。如图4所示,应用于上述计算装置,所述计算装置用于执行机器学习计算;所述计算装置包括:运算单元以及控制单元;该方法包括:
401、所述控制单元获取输入数据以及计算指令,并发送所述计算指令到所述运算单元;
402、所述运算单元依据所述计算指令对所述输入数据进行量化,并对量化后的所述输入数据执行运算操作,得到运算结果,具体为:依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算。
在一个可能的示例中,所述运算单元包括复用单元;
所述复用单元将量化后的所述输入数据与上一次计算过程的量化后的输入数据进行比较,若比较结果满足预设条件,则跳过此次输入数据的计算而采用上一次执行运算的结果,若比较结果为不满足所述预设条件,则将量化后的所述输入数据与上一次计算过程的量化后的输入数据之差与权值进行计算,并将得到的结果对上一次执行运算的结果进行修正。
在一个可能的示例中,所述控制单元包括:依赖关系处理单元和指令缓存单元;
所述依赖关系处理单元,用于确定第j计算指令与所述第j计算指令之前的第j-1计算指令是否存在关联关系,如所述第j计算指令与所述第j-1计算指令存在关联关系,将所述第j计算指令缓存在所述指令缓存单元内,在所述第j-1计算指令执行完毕后,从所述指令缓存单元提取所述第j计算指令传输至所述运算单元,j为正整数。
在一个可能的示例中,所述确定第j计算指令与所述第j计算指令之前的第j-1计算指令是否存在关联关系,包括:
依据所述第j计算指令提取所述第j计算指令中所需数据的第j存储地址区间,依据所述第j-1计算指令提取所述第j-1计算指令中所需数据的第j-1存储地址区间,如所述第j存储地址区间与所述第j-1存储地址区间具有重叠的区域,确定所述第j计算指令与所述第j-1计算指令具有关联关系,如所述第j存储地址区间与所述第j-1存储地址区间不具有重叠的区域,确定所述第j计算指令与所述第j计算指令不具有关联关系。
在一个可能的示例中,其特征在于,所述运算单元包括:多个运算模块,所述多个运算模块用于执行n个流水级的计算,n大于或者等于2;
所述运算单元对数据执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,将第n-1结果输入到第n流水级执行第n流水级的计算得到第n结果,将所述第n结果输入到所述存储单元,所述n为大于等于3的整数。
在一个可能的示例中,所述运算单元包括一个主处理电路、一个或多个分支处理电路以及多个从处理电路,
所述主处理电路将将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个计算指令中的至少一个计算指令发送给所述分支处理电路;
所述分支处理电路转发所述主处理电路与所述多个从处理电路之间的数据块和计算指令;
所述多个从处理电路依据接收到的计算指令和数据块执行运算得到中间结果,并将中间结果传输给所述分支处理电路;
所述主处理电路,用于将分支处理电路发送的中间结果进行处理得到该计算指令的计算结果,将该计算指令的计算结果发送给所述控制单元。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种计算装置,其特征在于,所述计算装置用于执行机器学习计算,所述计算装置包括:运算单元以及控制单元;
所述控制单元,用于获取计算指令,并发送所述计算指令到所述运算单元;
所述运算单元,用于依据所述计算指令对输入数据进行量化,并对量化后的所述输入数据执行运算操作,得到运算结果,具体为:依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算。
2.根据权利要求1所述的装置,其特征在于,所述运算单元包括复用单元;
所述复用单元,用于将量化后的所述输入数据与上一次计算过程的量化后的输入数据进行比较,若比较结果满足预设条件,则跳过此次输入数据的计算而采用上一次执行运算的结果,若比较结果为不满足所述预设条件,则将量化后的所述输入数据与上一次计算过程的量化后的输入数据之差与权值进行计算,并将得到的结果对上一次执行运算的结果进行修正。
3.根据权利要求1或2所述的装置,其特征在于,所述控制单元包括:依赖关系处理单元和指令缓存单元;
所述依赖关系处理单元,用于确定第j计算指令与所述第j计算指令之前的第j-1计算指令是否存在关联关系,如所述第j计算指令与所述第j-1计算指令存在关联关系,将所述第j计算指令缓存在所述指令缓存单元内,在所述第j-1计算指令执行完毕后,从所述指令缓存单元提取所述第j计算指令传输至所述运算单元,j为正整数。
4.根据权利要求1-3任一项所述的装置,其特征在于,所述运算单元包括一个主处理电路、一个或多个分支处理电路以及多个从处理电路,
所述主处理电路,用于将一个输入数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个计算指令中的至少一个计算指令发送给所述分支处理电路;
所述分支处理电路,用于转发所述主处理电路与所述多个从处理电路之间的数据块和计算指令;
所述多个从处理电路,用于依据接收到的计算指令和数据块执行运算得到中间结果,并将所述中间结果传输给所述分支处理电路;
所述主处理电路,用于将所述分支处理电路发送的所述中间结果进行处理得到所述计算指令的计算结果。
5.一种机器学习运算装置,其特征在于,所述机器学习运算装置包括一个或多个如权利要求1-4任一项所述的计算装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
6.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求5所述的机器学习运算装置,通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
7.一种机器学习芯片,其特征在于,所述机器学习芯片包括如权利要求5所述的机器学习运算装置或如权利要求6所述的组合处理装置。
8.一种电子设备,其特征在于,所述电子设备包括如所述权利要求7所述的芯片。
9.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求7所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控和管理。
10.一种执行机器学习模型的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行机器学习计算;所述计算装置包括:运算单元以及控制单元;所述方法包括:
所述控制单元获取计算指令,并发送所述计算指令到所述运算单元;
所述运算单元依据所述计算指令对输入数据进行量化,并对量化后的所述输入数据执行运算操作,得到运算结果,具体为:依据量化后的所述输入数据与上一次计算过程的量化后的输入数据之间的相似性进行运算。
CN201910396867.6A 2019-05-13 2019-05-13 一种计算装置及相关产品 Active CN111930681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910396867.6A CN111930681B (zh) 2019-05-13 2019-05-13 一种计算装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910396867.6A CN111930681B (zh) 2019-05-13 2019-05-13 一种计算装置及相关产品

Publications (2)

Publication Number Publication Date
CN111930681A true CN111930681A (zh) 2020-11-13
CN111930681B CN111930681B (zh) 2023-10-10

Family

ID=73282630

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910396867.6A Active CN111930681B (zh) 2019-05-13 2019-05-13 一种计算装置及相关产品

Country Status (1)

Country Link
CN (1) CN111930681B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535638A (zh) * 2021-07-20 2021-10-22 珠海市一微星科技有限公司 一种并行运算加速系统及其运行方法
CN113535637A (zh) * 2021-07-20 2021-10-22 珠海市一微星科技有限公司 一种新型运算加速单元及其运行方法
WO2024004221A1 (ja) * 2022-07-01 2024-01-04 日本電信電話株式会社 演算処理装置、演算処理方法、及び演算処理プログラム

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5517600A (en) * 1990-03-01 1996-05-14 Kabushiki Kaisha Toshiba Neuro-chip and neurocomputer having the chip
US5636327A (en) * 1991-09-18 1997-06-03 Matsushita Electric Industrial Co., Ltd. Neural network circuit
US20040088159A1 (en) * 2002-10-31 2004-05-06 Allan J. Volponi Method for performing an empirical test for the presence of bi-modal data
US20090171994A1 (en) * 2007-12-31 2009-07-02 Eric Sprangle Device, system, and method for improving processing efficiency by collectively applying operations
EP3255586A1 (en) * 2016-06-06 2017-12-13 Fujitsu Limited Method, program, and apparatus for comparing data graphs
CN108427990A (zh) * 2016-01-20 2018-08-21 北京中科寒武纪科技有限公司 神经网络计算系统和方法
CN108960423A (zh) * 2018-06-22 2018-12-07 青岛鹏海软件有限公司 基于机器学习的电机监测系统
CN109472353A (zh) * 2018-11-22 2019-03-15 济南浪潮高新科技投资发展有限公司 一种卷积神经网络量化电路及量化方法
KR101974091B1 (ko) * 2018-11-14 2019-04-30 (주)시큐레이어 머신러닝 기반 쓰레드풀을 관리하는 방법 및 이를 사용한 컴퓨팅 장치
CN109697507A (zh) * 2017-10-24 2019-04-30 上海寒武纪信息科技有限公司 处理方法及装置
CN109726806A (zh) * 2017-10-30 2019-05-07 上海寒武纪信息科技有限公司 信息处理方法及终端设备
CN109740754A (zh) * 2018-12-29 2019-05-10 北京中科寒武纪科技有限公司 神经网络计算装置、神经网络计算方法及相关产品

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5517600A (en) * 1990-03-01 1996-05-14 Kabushiki Kaisha Toshiba Neuro-chip and neurocomputer having the chip
US5636327A (en) * 1991-09-18 1997-06-03 Matsushita Electric Industrial Co., Ltd. Neural network circuit
US20040088159A1 (en) * 2002-10-31 2004-05-06 Allan J. Volponi Method for performing an empirical test for the presence of bi-modal data
US20090171994A1 (en) * 2007-12-31 2009-07-02 Eric Sprangle Device, system, and method for improving processing efficiency by collectively applying operations
CN108427990A (zh) * 2016-01-20 2018-08-21 北京中科寒武纪科技有限公司 神经网络计算系统和方法
EP3255586A1 (en) * 2016-06-06 2017-12-13 Fujitsu Limited Method, program, and apparatus for comparing data graphs
CN109697507A (zh) * 2017-10-24 2019-04-30 上海寒武纪信息科技有限公司 处理方法及装置
CN109726806A (zh) * 2017-10-30 2019-05-07 上海寒武纪信息科技有限公司 信息处理方法及终端设备
CN108960423A (zh) * 2018-06-22 2018-12-07 青岛鹏海软件有限公司 基于机器学习的电机监测系统
KR101974091B1 (ko) * 2018-11-14 2019-04-30 (주)시큐레이어 머신러닝 기반 쓰레드풀을 관리하는 방법 및 이를 사용한 컴퓨팅 장치
CN109472353A (zh) * 2018-11-22 2019-03-15 济南浪潮高新科技投资发展有限公司 一种卷积神经网络量化电路及量化方法
CN109740754A (zh) * 2018-12-29 2019-05-10 北京中科寒武纪科技有限公司 神经网络计算装置、神经网络计算方法及相关产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱明程,徐健,李昆华: "采用MCU多层神经网络模型设计探讨", 东南大学学报(自然科学版), no. 02 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113535638A (zh) * 2021-07-20 2021-10-22 珠海市一微星科技有限公司 一种并行运算加速系统及其运行方法
CN113535637A (zh) * 2021-07-20 2021-10-22 珠海市一微星科技有限公司 一种新型运算加速单元及其运行方法
CN113535637B (zh) * 2021-07-20 2022-11-15 珠海市一微星科技有限公司 一种运算加速单元及其运行方法
CN113535638B (zh) * 2021-07-20 2022-11-15 珠海市一微星科技有限公司 一种并行运算加速系统及其运行方法
WO2024004221A1 (ja) * 2022-07-01 2024-01-04 日本電信電話株式会社 演算処理装置、演算処理方法、及び演算処理プログラム

Also Published As

Publication number Publication date
CN111930681B (zh) 2023-10-10

Similar Documents

Publication Publication Date Title
CN109543832B (zh) 一种计算装置及板卡
CN109522052B (zh) 一种计算装置及板卡
CN110163363B (zh) 一种计算装置及方法
CN110059797B (zh) 一种计算装置及相关产品
CN111045728B (zh) 一种计算装置及相关产品
CN111047022A (zh) 一种计算装置及相关产品
CN111930681A (zh) 一种计算装置及相关产品
CN111353591A (zh) 一种计算装置及相关产品
CN110059809B (zh) 一种计算装置及相关产品
CN109711540B (zh) 一种计算装置及板卡
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN109740730B (zh) 运算方法、装置及相关产品
CN111368967B (zh) 一种神经网络计算装置和方法
CN111198714B (zh) 重训练方法及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN111368986B (zh) 一种神经网络计算装置和方法
CN111367567B (zh) 一种神经网络计算装置和方法
CN111078625B (zh) 片上网络处理系统和片上网络数据处理方法
CN111368990B (zh) 一种神经网络计算装置和方法
CN111078624B (zh) 片上网络处理系统和片上网络数据处理方法
CN111078623B (zh) 片上网络处理系统和片上网络数据处理方法
CN111047024A (zh) 一种计算装置及相关产品
CN111382848A (zh) 一种计算装置及相关产品
CN111222632B (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
GR01 Patent grant
GR01 Patent grant