CN116601645A - 经由编译器发现深度学习加速器的硬件特性以用于优化 - Google Patents
经由编译器发现深度学习加速器的硬件特性以用于优化 Download PDFInfo
- Publication number
- CN116601645A CN116601645A CN202180082044.1A CN202180082044A CN116601645A CN 116601645 A CN116601645 A CN 116601645A CN 202180082044 A CN202180082044 A CN 202180082044A CN 116601645 A CN116601645 A CN 116601645A
- Authority
- CN
- China
- Prior art keywords
- integrated circuit
- circuit device
- neural network
- matrix
- deep learning
- 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.)
- Pending
Links
- 238000013135 deep learning Methods 0.000 title claims abstract description 241
- 238000005457 optimization Methods 0.000 title claims description 26
- 238000013528 artificial neural network Methods 0.000 claims abstract description 204
- 239000011159 matrix material Substances 0.000 claims abstract description 152
- 230000015654 memory Effects 0.000 claims abstract description 120
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000004364 calculation method Methods 0.000 claims abstract description 23
- 239000013598 vector Substances 0.000 claims description 124
- 238000012545 processing Methods 0.000 claims description 113
- 230000004044 response Effects 0.000 claims description 22
- 238000003860 storage Methods 0.000 claims description 15
- 230000006399 behavior Effects 0.000 claims description 10
- 239000000523 sample Substances 0.000 abstract description 2
- 239000000872 buffer Substances 0.000 description 38
- 238000013507 mapping Methods 0.000 description 38
- 210000002569 neuron Anatomy 0.000 description 28
- 230000006870 function Effects 0.000 description 22
- 235000019580 granularity Nutrition 0.000 description 16
- 238000004891 communication Methods 0.000 description 11
- 238000012360 testing method Methods 0.000 description 10
- 230000004913 activation Effects 0.000 description 8
- 238000005265 energy consumption Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 210000004027 cell Anatomy 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000000946 synaptic effect Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 241000699670 Mus sp. Species 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000009510 drug design Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000002271 resection Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
本发明描述与深度学习加速器及存储器相关的系统、装置及方法。例如,集成电路装置可经配置以执行具有矩阵运算数的指令,并经配置成具有随机存取存储器。运行编译器的计算装置可交互及/或探测集成电路装置,以在执行矩阵计算时识别所述集成电路装置的硬件特性。所述编译器可至少部分地基于所述集成电路装置的硬件特性,从人工神经网络的描述产生并优化编译结果。所述编译结果可包含第一数据及第二数据,所述第一数据代表所述人工神经网络的参数,所述第二数据代表可由所述集成电路装置执行以基于所述第一数据及到所述人工神经网络的输入来产生所述人工神经网络的输出的指令。
Description
相关申请
本申请要求2020年11月6日申请且标题为“经由编译器发现深度学习加速器的硬件特性以用于优化(DISCOVERY OF HARDWARE CHARACTERISTICS OF DEEP LEARNINGACCELERATORS FOR OPTIMIZATION VIA COMPILER)”的第17/092,033号美国专利申请的优先权,所述申请的全部公开内容特此以引用方式并入本文中。
技术领域
本文公开的至少一些实施例大体上涉及编译器,且更具体地说(但不限于)用于产生可由用于人工神经网络(ANN)(例如通过机器学习及/或深度学习配置的ANN)的加速器执行的指令的编译器。
背景技术
人工神经网络(ANN)使用神经元网络处理到网络的输入且从网络产生输出。
深度学习已用于许多应用领域,例如计算机视觉、语音/音频辨识、自然语言处理、机器翻译、生物信息学、药物设计、医学图像处理、游戏等。
附图说明
实施例通过实例来说明且不限于附图的图,其中相似的元件符号指示类似元件。
图1展示根据一个实施例配置的具有深度学习加速器及随机存取存储器的集成电路装置。
图2展示根据一个实施例的经配置以执行矩阵-矩阵运算的处理单元。
图3展示根据一个实施例的经配置以执行矩阵-向量运算的处理单元。
图4展示根据一个实施例的经配置以执行向量-向量运算的处理单元。
图5展示根据一个实施例的经配置以自主地将输入应用于经训练人工神经网络的深度学习加速器及随机存取存储器。
图6展示根据一个实施例的用于产生可由深度学习加速器执行的指令以实施人工神经网络的技术。
图7及8说明根据一个实施例的将通用深度学习加速器的编译结果映射到可由特定深度学习加速器执行的指令以实施人工神经网络的技术。
图9展示根据一个实施例的用于产生可由深度学习加速器执行的指令以实施人工神经网络的另一技术。
图10展示根据一个实施例配置的具有拥有可配置硬件能力的深度学习加速器以及随机存取存储器的集成电路装置。
图11说明根据一个实施例的可经由存储在寄存器中的选项配置的深度学习加速器的处理单元的不同硬件配置。
图12说明根据一个实施例的用于产生可由具有经优化硬件配置的深度学习加速器执行的指令以实施人工神经网络的技术。
图13展示根据一个实施例的用于发现深度学习加速器的硬件特性的技术。
图14说明根据一个实施例的用于产生可由深度学习加速器执行并根据深度学习加速器的硬件特性优化的指令的技术。
图15展示根据一个实施例的用于基于深度学习加速器的硬件特性来编译指令以在深度学习加速器上实施人工神经网络的方法。
图16展示本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本文公开的至少一些实施例提供集成电路,以用降低的能量消耗及计算时间来实施人工神经网络(ANN)的计算。此集成电路装置是可编程的。编译器可用于从人工神经网络(ANN)的描述产生可在集成电路装置中执行的指令。当在装置中执行时,指令使集成电路装置执行人工神经网络(ANN)的计算。编译器可发现深度学习加速器(DLA)的硬件特性(例如能力及行为),并使用发现的硬件特性来优化产生的指令,以在深度学习加速器(DLA)上实施人工神经网络(ANN)的计算。例如,集成电路装置可包含深度学习加速器(DLA)及随机存取存储器。随机存取存储器经配置以存储人工神经网络(ANN)的参数及具有矩阵运算数的指令。存储在随机存取存储器中的指令可由深度学习加速器(DLA)执行,以根据人工神经网络(ANN)实施矩阵计算。
例如,编译器可自动锻炼深度学习加速器(DLA)的硬件,以发现深度学习加速器(DLA)的特征、选项、行为、性能、延时及/或限制。例如,编译器可将测试指令集加载到随机存取存储器中,以使深度学习加速器(DLA)执行指令,检查执行结果,及/或测量指令执行的性能以发现深度学习加速器(DLA)在能力、性能及/或行为方面的特性。基于深度学习加速器(DLA)的不同硬件平台的经发现特性,编译器自动定制及/或优化相同人工神经网络(ANN)在不同硬件平台上的实施。
举例来说,网络中的每一神经元接收一组输入。到神经元的一些输入可为网络中的特定神经元的输出;且到神经元的一些输入可为提供到神经网络的输入。网络中的神经元中的输入/输出关系表示网络中的神经元连接性。
举例来说,每一神经元可具有分别用于其输入的偏置、激活函数及一组突触权重。激活函数可呈阶梯函数、线性函数、对数S形(log-sigmoid)函数等形式。网络中的不同神经元可具有不同激活函数。
举例来说,每一神经元可产生其输入及其偏置的加权和且接着产生输出,所述输出是使用神经元的激活函数计算的作为加权和的函数。
一般来说,ANN的输入与输出之间的关系由ANN模型定义,ANN模型包含表示网络中的神经元的连接性的数据,以及每一神经元的偏置、激活函数及突触权重。基于给定ANN模型,计算装置可经配置以根据到网络的一组给定输入来计算网络的输出。
举例来说,可基于相机输入产生到ANN网络的输入;且来自ANN网络的输出可为项目的识别,例如事件或物体。
一般来说,ANN可使用监督式方法训练,其中ANN中的参数经调整以最小化或减少由相应输入相关联或源自相应输入的已知输出与经由将输入应用到ANN产生的计算得到的输出之间的错误。监督式学习/训练方法的实例包含强化学习及具有错误校正的学习。
替代地,或组合地,可使用非监督式方法训练ANN,其中源自一组给定输入的精确输出在训练完成之前是未知的。ANN可经训练以将项目分类到多个类别中,或将数据点分类到集群中。
多种训练算法可用于复杂的机器学习/训练范例。
深度学习使用多层机器学习,以从输入数据中逐渐提取特征。例如,较低层可经配置以识别图像中的边缘;并且较高层可经配置以基于使用较低层检测到的边缘来识别图像中捕获的项目,例如面部、物体、事件等。深度学习可经由人工神经网络(ANN)来实施,例如深度神经网络、深度信念网络、递归神经网络及/或卷积神经网络。
典型的深度学习加速器(DLA)可包含一组可编程硬件计算逻辑,其被专门化及/或优化以执行并行向量及/或矩阵计算,包含但不限于向量及/或矩阵的乘法及累加。
此外,深度学习加速器可包含一或多个算术逻辑单元(ALU),以对整数二进制数执行算术及按位运算。
深度学习加速器可经由一组指令进行编程,以执行人工神经网络(ANN)的计算。
对向量及矩阵进行运算的深度学习加速器的粒度对应于可在深度学习加速器执行一条指令期间操作的向量/矩阵的最大单位。在对向量/矩阵运算数的预定义运算的指令执行期间,深度学习加速器可并行地对向量/矩阵运算数的元素进行运算,以减少与存储器/数据存取相关联的执行时间及/或能量消耗。对深度学习加速器粒度的向量/矩阵运算数的运算可用作构建块,以实施对较大大小的向量/矩阵的计算。
典型/实用人工神经网络的实施涉及具有大于深度学习加速器的运算粒度的大小的向量/矩阵运算数。为了使用深度学习加速器实施此人工神经网络,涉及大尺寸的向量/矩阵运算数的计算可被分解为深度学习加速器粒度的向量/矩阵运算数的计算。深度学习加速器可经由指令进行编程,以执行涉及大型向量/矩阵运算数的计算。例如,深度学习加速器响应于指令来操纵深度学习加速器粒度的向量及矩阵的原子计算能力可被编程以在人工神经网络中实施计算。
在一些实施方案中,深度学习加速器缺乏典型中央处理单元(CPU)的一些逻辑操作能力。然而,深度学习加速器可配置有足够的逻辑单元来处理提供给人工神经网络的输入数据,并根据为深度学习加速器产生的一组指令来产生人工神经网络的输出。因此,深度学习加速器可在很少或没有来自中央处理单元(CPU)或另一处理器的帮助下执行人工神经网络的计算。任选地,常规的通用处理器也可经配置为深度学习加速器的部分,以执行不能使用深度学习加速器的向量/矩阵处理单元有效实施及/或不能由深度学习加速器的向量/矩阵处理单元执行的操作。
典型人工神经网络可以标准格式(例如,开放式神经网络交换(ONNX))描述/指定。编译器可用于将人工神经网络的描述转换成深度学习加速器执行人工神经网络计算的一组指令。编译器可优化所述一组指令,以改进深度学习加速器在实施人工神经网络时的性能。
深度学习加速器可具有本地存储器,例如寄存器、缓冲器及/或高速缓存,其经配置以存储向量/矩阵运算数及向量/矩阵运算的结果。寄存器中的中间结果可在深度学习加速器中流水线化/移位,作为后续向量/矩阵运算的运算数,以减少存取存储器/数据的时间及能量消耗,且从而加速实施典型人工神经网络中向量/矩阵运算的典型模式。深度学习加速器中的寄存器、缓冲器及/或高速缓存的容量通常不足以保持用于实施典型人工神经网络的计算的整个数据集。因此,耦合到深度学习加速器的随机存取存储器经配置以提供用于实施典型人工神经网络的经改进数据存储能力。例如,深度学习加速器从随机存取存储器加载数据及指令,并将结果存储回随机存取存储器中。
深度学习加速器与随机存取存储器之间的通信带宽经配置以优化或最大化深度学习加速器的计算能力的利用。例如,可在深度学习加速器与随机存取存储器之间提供高通信带宽,使得向量/矩阵运算数可从随机存取存储器加载到深度学习加速器中,并且结果在约等于深度学习加速器对向量/矩阵运算数执行计算的时间的时间段内存储回随机存取存储器中。深度学习加速器的粒度可经配置以增加深度学习加速器执行的计算量与向量/矩阵运算数的大小之间的比率,使得可减少深度学习加速器与随机存取存储器之间的数据存取业务,这可降低对深度学习加速器与随机存取存储器之间的通信带宽的需求。因此,可减少或消除数据/存储器存取中的瓶颈。
任选地,编译器可经配置以支持深度学习加速器的不同硬件平台。具体来说,编译器可基于人工神经网络的相同描述,为不同的深度学习加速器产生不同的指令集。例如,深度学习加速器可使用不同的技术来实施,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。例如,深度学习加速器在实施矩阵运算时可具有不同的硬件能力,具有可操作以并发执行矩阵运算的不同数目的并行处理单元,及/或具有不同的计算粒度,其中处理单元在执行具有矩阵运算数的指令时可具有处理不同大小的矩阵的不同能力。编译器最初可将通用的、平台无关的优化应用于人工神经网络的描述,以根据使用不同深度学习加速器实施的计算的共同特性来产生通用计算模型。然后,编译器将通用计算模型的编译结果映射到深度学习加速器的不同硬件平台/实施方案。任选地,编译器可进一步优化个别类型的深度学习加速器的编译结果,以减少能量消耗及/或计算时间。
在一些实施方案中,深度学习加速器(DLA)被设计成具有多个可配置的硬件选项。在人工神经网络计算的不同场景中,不同的硬件选项可为最佳的。在人工神经网络的编译及优化期间,编译器经配置以优化经产生用于由深度学习加速器执行的指令。编译器优化可包含硬件选项的选择,以改进深度学习加速器中的人工神经网络(ANN)的实施的整体性能。因此,编译器可在实施特定人工神经网络时优化及/或定制深度学习加速器本身的电路配置。
图1展示根据一个实施例配置的具有深度学习加速器(103)及随机存取存储器(105)的集成电路装置(101)。
图1中的深度学习加速器(103)包含处理单元(111)、控制单元(113)及本地存储器(115)。当向量及矩阵运算数在本地存储器(115)中时,控制单元(113)可使用处理单元(111)以根据指令执行向量及矩阵运算。此外,控制单元(113)可通过存储器接口(117)及高速/带宽连接(119)从随机存取存储器(105)加载指令及运算数。
集成电路装置(101)经配置以包围在具有用于存储器控制器接口(107)的引脚或触点的集成电路封装内。
存储器控制器接口(107)经配置以支持标准存储器存取协议,使得集成电路装置(101)以与没有深度学习加速器(103)的常规随机存取存储器装置相同的方式呈现给典型的存储器控制器。例如,集成电路装置(101)外部的存储器控制器可通过存储器控制器接口(107)使用标准存储器存取协议来存取集成电路装置(101)中的随机存取存储器(105)。
集成电路装置(101)经配置有包围在集成电路装置(101)内的随机存取存储器(105)与深度学习加速器(103)之间的高带宽连接(119)。连接(119)的带宽高于随机存取存储器(105)与存储器控制器接口(107)之间的连接(109)的带宽。
在一个实施例中,存储器控制器接口(107)及存储器接口(117)两者经配置以经由同一组总线或导线存取随机存取存储器(105)。因此,存取随机存取存储器(105)的带宽在存储器接口(117)与存储器控制器接口(107)之间共享。任选地,存储器控制器接口(107)及存储器接口(117)经配置以经由单独的总线或导线组存取随机存取存储器(105)。任选地,随机存取存储器(105)可包含可经由连接(119)并发存取的多个区段。例如,当存储器接口(117)正在存取随机存取存储器(105)的区段时,存储器控制器接口(107)可并发存取随机存取存储器(105)的另一区段。例如,不同的区段可配置在不同的集成电路裸片及/或存储器单元的不同平面/存储体上;并且可并行地存取不同的区段,以增加存取随机存取存储器(105)的吞吐量。例如,存储器控制器接口(107)经配置以一次存取预定大小的一个数据单元;并且存储器接口(117)经配置以一次存取多个数据单元,每一数据单元具有相同的预定大小。
在一个实施例中,随机存取存储器(105)及集成电路装置(101)配置在同一集成电路封装内配置的不同集成电路裸片上。此外,随机存取存储器(105)可配置在允许并发地并行存取多个数据元素的一或多个集成电路裸片上。
在一些实施方案中,可通过连接(119)并行存取的向量或矩阵的数据元素的数目对应于对向量或矩阵运算的深度学习加速器的粒度。例如,当处理单元(111)可并行地对数个向量/矩阵元素进行运算时,连接(119)经配置以经由连接(119)并行地加载或存储相同数目或所述数目的倍数的元素。
任选地,可基于深度学习加速器(103)的处理速度来配置连接(119)的数据存取速度。例如,在一定量的数据及指令已被加载到本地存储器(115)中之后,控制单元(113)可使用处理单元(111)来执行指令以对数据进行运算以产生输出。在用于产生输出的处理的时间段内,连接(119)的存取带宽允许相同量的数据及指令被加载到本地存储器(115)中用于下一个运算,并且允许相同量的输出被存储回随机存取存储器(105)。例如,当控制单元(113)正使用本地存储器(115)的一部分来处理数据并产生输出时,存储器接口(117)可从本地存储器(115)的另一部分将先前运算的输出卸载到随机存取存储器(105)中,并将运算数数据及指令加载到所述另一部分。因此,深度学习加速器的利用及性能不因连接(119)的带宽受限或降低。
随机存取存储器(105)可用于存储人工神经网络的模型数据及缓冲人工神经网络的输入数据。模型数据不频繁变化。模型数据可包含由编译器为深度学习加速器产生以实施人工神经网络的输出。模型数据通常包含在人工神经网络的描述中使用的矩阵及为深度学习加速器(103)产生的指令,以基于深度学习加速器(103)粒度的向量/矩阵运算来执行人工神经网络的向量/矩阵运算。所述指令不仅对人工神经网络的向量/矩阵运算进行操作,而且对人工神经网络的输入数据进行操作。
在一个实施例中,当输入数据被加载或更新到随机存取存储器(105)中时,深度学习加速器(103)的控制单元(113)可自动执行人工神经网络的指令,以产生人工神经网络的输出。输出被存储到随机存取存储器(105)中的预定区域中。深度学习加速器(103)可在没有中央处理单元(CPU)帮助的情况下执行指令。因此,可减少或消除用于深度学习加速器(103)与集成电路装置(101)外部的处理器(例如,中央处理单元(CPU))之间的协调的通信。
任选地,深度学习加速器(103)的逻辑电路可经由互补金属氧化物半导体(CMOS)来实施。例如,可使用随机存取存储器(105)的存储器单元的阵列下CMOS(CUA)技术来实施深度学习加速器(103)的逻辑电路,包含处理单元q(111)及控制单元(113)。或者,可使用随机存取存储器(105)的存储器单元的阵列中CMOS的技术来实施深度学习加速器(103)的逻辑电路。
在一些实施方案中,深度学习加速器(103)及随机存取存储器(105)可在单独的集成电路裸片上实施,并使用穿硅通路(TSV)连接,以增加深度学习加速器(103)与随机存取存储器(105)之间的数据带宽。例如,深度学习加速器(103)可形成在现场可编程门阵列(FPGA)或专用集成电路(ASIC)的集成电路裸片上。
或者,深度学习加速器(103)及随机存取存储器(105)可经配置在单独的集成电路封装中,并经由印刷电路板(PCB)上的多个点对点连接来连接,以用于并行通信,且因此增加数据传送带宽。
随机存取存储器(105)可为易失性存储器或非易失性存储器,或者易失性存储器及非易失性存储器的组合。非易失性存储器的实例包含快闪存储器、基于与非(NAND)逻辑门、或非(NOR)逻辑门形成的存储器单元、相变存储器(PCM)、磁性存储器(MRAM)、电阻随机存取存储器、交叉点存储装置及存储器装置。交叉点存储器装置可使用无晶体管的存储器元件,所述存储器元件中的每一者具有一起堆叠为一列的存储器单元及选择器。存储器元件列经由在垂直方向上延伸的两层导线连接,其中一层导线在定位于存储器元件列上方的层中在一个方向上延伸,且另一层导线在另一方向上延伸且定位于存储器元件列下方。可在两个层中的每一者上的一条导线的交叉点处个别地选择每一存储器元件。交叉点存储器装置是快速的且非易失性的,且可用作用于处理及存储的统一存储器集区。非易失性存储器的另外实例包含只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)及电可擦除可编程只读存储器(EEPROM)存储器等。易失性存储器的实例包含动态随机存取存储器(DRAM)及静态随机存取存储器(SRAM)。
例如,非易失性存储器可经配置以实施随机存取存储器(105)的至少一部分。随机存取存储器(105)中的非易失性存储器可用于存储人工神经网络的模型数据。因此,在集成电路装置(101)断电并重新启动之后,不需要将人工神经网络的模型数据重新加载到集成电路装置(101)中。此外,非易失性存储器可为可编程/可重写的。因此,可更新或替换集成电路装置(101)中的人工神经网络的模型数据,以实施更新的人工神经网络或另一人工神经网络。
深度学习加速器(103)的处理单元(111)可包含向量-向量单元、矩阵-向量单元及/或矩阵-矩阵单元。下面结合图2到4讨论经配置以执行向量-向量运算、矩阵-向量运算及矩阵-矩阵运算的单元的实例。
图2展示根据一个实施例的经配置以执行矩阵-矩阵运算的处理单元。例如,图2的矩阵-矩阵单元(121)可用作图1的深度学习加速器(103)的处理单元(111)中的一者。
在图2中,矩阵-矩阵单元(121)包含多个内核缓冲器(131到133)及多个映射存储体(151到153)。每一映射存储体(151到153)存储矩阵运算数的一个向量,所述矩阵运算数具有分别存储在映射存储体(151到153)中的多个向量;并且每一内核缓冲器(131到133)存储另一矩阵运算数的一个向量,所述另一矩阵运算数具有分别存储在内核缓冲器(131到133)中的多个向量。矩阵-矩阵单元(121)经配置以使用并行运算的多个矩阵-向量单元(141到143)对两个矩阵运算数的元素执行乘法及累加运算。
交叉开关(123)将映射存储体(151到153)连接到矩阵-向量单元(141到143)。存储在映射存储体(151到153)中的相同矩阵运算数经由交叉开关(123)提供给每一个矩阵-向量单元(141到143);且矩阵-向量单元(141到143)并行地从映射存储体(151到153)接收数据元素。每一内核缓冲器(131到133)连接到矩阵-向量单元(141到143)中的相应一者,并向相应的矩阵-向量单元提供向量运算数。矩阵-向量单元(141到143)并发操作以计算存储在映射存储体(151到153)中的相同矩阵运算数乘以存储在内核缓冲器(131到133)中的相应向量的运算。例如,矩阵-向量单元(141)对存储在映射存储体(151到153)中的矩阵运算数及存储在内核缓冲器(131)中的向量运算数执行乘法运算,而矩阵-向量单元(143)并发地对存储在映射存储体(151到153)中的矩阵运算数及存储在内核缓冲器(133)中的向量运算数执行乘法运算。
图2中的矩阵-向量单元(141到143)中的每一者可以图3中所说明的方式实施。
图3展示根据一个实施例的经配置以执行矩阵-向量运算的处理单元。例如,图3的矩阵-向量单元(141)可用作图2的矩阵-矩阵单元(121)中的任何矩阵-向量单元。
在图3中,每一映射存储体(151到153)以类似于图2的映射存储体(151到153)的方式存储矩阵运算数的一个向量,所述矩阵运算数具有分别存储在映射存储体(151到153)中的多个向量。图3中的交叉开关(123)分别将来自映射存储体(151)的向量提供给向量-向量单元(161到163)。存储在内核缓冲器(131)中的相同向量提供给向量-向量单元(161到163)。
向量-向量单元(161到163)并发地运算以计算分别存储在映射存储体(151到153)中的对应向量运算数乘以存储在内核缓冲器(131)中的相同向量运算数的运算。例如,向量-向量单元(161)对存储在映射存储体(151)中的向量运算数及存储在内核缓冲器(131)中的向量运算数执行乘法运算,而向量-向量单元(163)并发地对存储在映射存储体(153)中的向量运算数及存储在内核缓冲器(131)中的向量运算数执行乘法运算。
当图3的矩阵-向量单元(141)在图2的矩阵-矩阵单元(121)中实施时,矩阵-向量单元(141)可使用矩阵-矩阵单元(121)的映射存储体(151到153)、交叉开关(123)及内核缓冲器(131)。
图3中的向量-向量单元(161到163)中的每一者可以图4中所说明的方式实施。
图4展示根据一个实施例的经配置以执行向量-向量运算的处理单元。例如,图4的向量-向量单元(161)可用作图3的矩阵-向量单元(141)中的任何向量-向量单元。
在图4中,向量-向量单元(161)具有多个乘法-累加单元(171到173)。每一乘法-累加单元(例如173)可接收两个数字作为运算数,执行所述两个数字的乘法,并将乘法的结果与维持在乘法-累加单元中的和相加。
每一向量缓冲器(181及183)存储一列数字。一对数字(每一者来自向量缓冲器(181及183)中的一者)可被提供给每一乘法-累加单元(171到173)作为输入。乘法-累加单元(171到173)可并行地从向量缓冲器(181及183)接收多对数字,且并行地执行乘法-累加(MAC)运算。来自乘法-累加单元(171到173)的输出被存储到移位寄存器(175)中;且累加器(177)计算移位寄存器(175)中的结果的和。
当图4的向量-向量单元(161)在图3的矩阵-向量单元(141)中实施时,向量-向量单元(161)可使用映射存储体(例如,151或153)作为一个向量缓冲器(181),并且使用矩阵-向量单元(141)的内核缓冲器(131)作为另一向量缓冲器(183)。
向量缓冲器(181及183)可具有相同的长度以存储相同数目/计数的数据元素。长度可等于向量-向量单元(161)中的乘法-累加单元(171到173)的计数或其倍数。当向量缓冲器(181及183)的长度是乘法-累加单元(171到173)的计数的倍数时,多对输入(等于乘法-累加单元(171到173)的计数)可在每一迭代中从向量缓冲器(181及183)提供作为乘法-累加单元(171到173)的输入;且向量缓冲器(181及183)通过多次迭代将其元素馈送到乘法-累加单元(171到173)中。
在一个实施例中,深度学习加速器(103)与随机存取存储器(105)之间的连接(119)的通信带宽足以使矩阵-矩阵单元(121)将随机存取存储器(105)的部分用作映射存储体(151到153)及内核缓冲器(131到133)。
在另一实施例中,在深度学习加速器(103)的本地存储器(115)的一部分中实施映射存储体(151到153)及内核缓冲器(131到133)。深度学习加速器(103)与随机存取存储器(105)之间的连接(119)的通信带宽足以将矩阵-矩阵单元(121)的下一个运算循环的矩阵运算数加载到本地存储器(115)的另一部分中,同时矩阵-矩阵单元(121)在当前运算循环中正使用在深度学习加速器(103)的本地存储器(115)的不同部分中实施的映射存储体(151到153)及内核缓冲器(131到133)执行计算。
图5展示根据一个实施例的经配置以自主地将输入应用于经训练人工神经网络的深度学习加速器及随机存取存储器。
已通过机器学习(例如,深度学习)训练的人工神经网络(201)可以标准格式(例如,开放式神经网络交换(ONNX))描述。标准格式的经训练人工神经网络(201)的描述识别人工神经元的性质及其连接性。
在图5中,深度学习加速器编译器(203)通过产生用于深度学习加速器(103)的指令(205)及对应于人工神经元的性质及其连接性的矩阵(207)来转换经训练人工神经网络(201)。由DLA编译器(203)从经训练人工神经网络(201)产生的指令(205)及矩阵(207)可存储在深度学习加速器(103)的随机存取存储器(105)中。
例如,随机存取存储器(105)及深度学习加速器(103)可经由高带宽连接(119)以如图1的集成电路装置(101)中的方式连接。基于指令(205)及矩阵(207)的图5的自主计算可在图1的集成电路装置(101)中实施。或者,随机存取存储器(105)及深度学习加速器(103)可配置在印刷电路板上,其具有并行延伸的多条点对点串行总线以实施连接(119)。
在图5中,在DLA编译器(203)的结果被存储在随机存取存储器(105)中之后,可通过随机存取存储器(105)中输入(211)或随机存取存储器(105)中提供的另一指示的存在,触发应用经训练人工神经网络(201)以处理到经训练人工神经网络(201)的输入(211)以产生经训练人工神经网络(201)的对应输出(213)。
作为响应,深度学习加速器(103)执行指令(205)来组合输入(211)及矩阵(207)。矩阵(207)可包含要加载到内核缓冲器(131到133)中的内核矩阵及要加载到映射存储体(151到153)中的映射矩阵。指令(205)的执行可包含为深度学习加速器(103)的一或多个矩阵-矩阵单元(例如,121)的映射存储体(151到153)产生映射矩阵。
在一些实施例中,到人工神经网络(201)的输入呈初始映射矩阵的形式。初始映射矩阵的部分可从随机存取存储器(105)检索作为存储在矩阵-矩阵单元(121)的映射存储体(151到153)中的矩阵运算数。或者,DLA指令(205)还包含深度学习加速器(103)用于从输入(211)产生初始映射矩阵的指令。
根据DLA指令(205),深度学习加速器(103)将矩阵运算数加载到其矩阵-矩阵单元(121)的内核缓冲区(131到133)及映射存储体(151到153)中。矩阵-矩阵单元(121)对矩阵运算数执行矩阵计算。例如,DLA指令(205)根据深度学习加速器(103)的计算粒度(例如,在矩阵-矩阵单元(121)中作为矩阵运算数加载的矩阵的大小/维数)分解经训练人工神经网络(201)的矩阵计算,并将输入特征映射应用于人工神经元层的内核,以产生输出作为下一层人工神经元的输入。
在完成根据指令(205)执行的经训练人工神经网络(201)的计算时,深度学习加速器(103)将人工神经网络(201)的输出(213)存储在随机存取存储器(105)中的预定义位置,或存储在随机存取存储器(105)中提供的指示中所指定的位置,以触发计算。
当图5的技术在图1的集成电路装置(101)中实施时,连接到存储器控制器接口(107)的外部装置可将输入(211)写入到随机存取存储器(105)中,并触发深度学习加速器(103)将输入(211)应用于经训练人工神经网络(201)的自主计算。在一段时间之后,输出(213)在随机存取存储器(105)中可用;且外部装置可经由集成电路装置(101)的存储器控制器接口(107)读取输出(213)。
例如,随机存取存储器(105)中的预定义位置可经配置以存储触发深度学习加速器(103)自主执行指令(205)的指示。所述指示可任选地包含输入(211)在随机存取存储器(105)内的位置。因此,在自主执行指令(205)以处理输入(211)期间,外部装置可检索在指令(205)的前一次运行期间产生的输出,及/或存储用于指令(205)的下一次运行的另一组输入。
任选地,随机存取存储器(105)中的另一预定义位置可经配置以存储指令(205)的当前运行的进度状态的指示。此外,所述指示可包含对指令(205)的当前运行的完成时间的预测(例如,基于指令(205)的先前运行来估计)。因此,外部装置可在适当的时间窗检查完成状态以检索输出(213)。
在一些实施例中,随机存取存储器(105)经配置具有足够的容量以存储多组输入(例如,211)及输出(例如,213)。每一组可配置在随机存取存储器(105)中的预定槽/区域中。
深度学习加速器(103)可自主地执行指令(205),以在没有来自定位于集成电路装置(101)外部的处理器或装置的帮助的情况下根据存储在随机存取存储器(105)中的矩阵(207)从输入(211)产生输出(213)。
在根据一个实施例的方法中,可使用计算装置(例如,集成电路装置(101))到存储器控制器的接口(107)来存取所述计算装置的随机存取存储器(105)。计算装置可具有处理单元(例如,111),所述处理单元经配置以至少对矩阵运算数执行计算,例如存储在映射存储体(151到153)中的矩阵运算数及存储在内核缓冲器(131到133)中的矩阵运算数。
例如,使用集成电路装置(101)及/或其它组件实施的计算装置可被包围在集成电路封装内;且一组连接可将接口(107)连接到定位于集成电路封装外部的存储器控制器。
可由处理单元(例如111)执行的指令(205)可通过接口(107)写入到随机存取存储器(105)中。
人工神经网络(201)的矩阵(207)可通过接口(107)写入到随机存取存储器(105)中。矩阵(207)识别人工神经网络(201)的参数、性质及/或状态。
任选地,随机存取存储器(105)的至少一部分是非易失性的,并且经配置以存储人工神经网络(201)的指令(205)及矩阵(07)。
人工神经网络的第一输入(211)可通过接口(107)写入到随机存取存储器(105)中。
在随机存取存储器(105)中提供指示以使处理单元(111)开始执行指令(205)。响应于所述指示,处理单元(111)执行指令以将人工神经网络(201)的第一输入(211)与矩阵(207)组合以从人工神经网络(201)产生第一输出(213)并将第一输出(213)存储在随机存取存储器(105)中。
例如,所述指示可为随机存取存储器(105)中的第一输入(211)的地址;并且所述指示可被存储在随机存取存储器(105)中的预定位置,以致使发起用于由所述地址识别的输入(211)的指令(205)的执行。任选地,所述指示还可包含用于存储输出(213)的地址。
第一输出(213)可通过接口(107)从随机存取存储器(105)读取。
例如,计算装置(例如,集成电路装置(101))可具有形成在第一集成电路裸片上的深度学习加速器(103)及形成在一或多个第二集成电路裸片上的随机存取存储器(105)。第一集成电路裸片与一或多个第二集成电路裸片之间的连接(119)可包含穿硅通路(TSV),以提供用于存储器存取的高带宽。
例如,人工神经网络(201)的描述可使用编译器(203)转换成指令(205)及矩阵(207)。存储在随机存取存储器(105)及深度学习加速器(103)中的指令(205)及矩阵(207)的组合提供了人工神经网络(201)的自主实施方案,其可自动将到人工神经网络(201)的输入(211)转换为其输出(213)。
例如,在深度学习加速器(103)根据人工神经网络(201)的矩阵(207)执行指令(205)以从第一输入(211)产生第一输出(213)的时间段期间,到人工神经网络(201)的第二输入可通过接口(107)在替代位置写入到随机存取存储器(105)中。在第一输出(213)存储在随机存取存储器(105)中之后,可在随机存取存储器中提供指示,以致使深度学习加速器(103)再次开始指令的执行,并从第二输入产生第二输出。
在深度学习加速器(103)根据人工神经网络(201)的矩阵(207)执行指令(205)以从第二输入产生第二输出的时间段期间,可通过接口(107)从随机存取存储器(105)读取第一输出(213);并且可将另一输入写入到随机存取存储器中以替换第一输入(211),或写入于不同的位置。可对一系列输入重复所述过程。
深度学习加速器(103)可包含至少一个矩阵-矩阵单元(121),其可对两个矩阵运算数执行指令。两个矩阵运算数可为第一矩阵及第二矩阵。两个矩阵中的每一者有多个向量。矩阵-矩阵单元(121)可包含经配置以并行运算的多个矩阵-向量单元(141到143)。矩阵-向量单元(141到143)中的每一者经配置以与其它矩阵-向量单元并行地对第一矩阵及来自第二矩阵的一个向量进行运算。此外,矩阵-向量单元(141到143)中的每一者可具有经配置以并行运算的多个向量-向量单元(161到163)。向量-向量单元(161到163)中的每一者经配置以与其它向量-向量单元并行地对来自第一矩阵的向量及对应矩阵-向量单元的共同向量运算数进行运算。此外,向量-向量单元(161到163)中的每一者可具有经配置以并行运算的多个乘法-累加单元(171到173)。
除了处理单元(111)之外,深度学习加速器(103)可具有本地存储器(115)及控制单元(113)。控制单元(113)可从随机存取存储器(105)加载指令(205)及矩阵运算数(例如,矩阵(207)中的一些)以供处理单元(111)执行。本地存储器可高速缓存由矩阵-矩阵单元使用的矩阵运算数。连接(119)可经配置有足够的带宽,以在矩阵-矩阵单元对两个其它矩阵运算数执行运算的时间段期间将一组矩阵运算数从随机存取存储器(105)加载到本地存储器(115)中。此外,在所述时间段期间,带宽足以将在先前指令执行中由矩阵-矩阵单元(121)产生的结果从本地存储器(115)存储到随机存取存储器(105)。
本文公开的至少一些实施例提供一种编译器,其可将人工神经网络的相同描述转换成可在深度学习加速器的不同硬件平台上执行的不同指令集。
深度学习加速器可使用不同的集成电路技术来实施,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。此外,深度学习加速器在实施矩阵运算时可具有不同的硬件能力。
例如,深度学习加速器的不同硬件实施方案可具有不同数目的并行处理单元,其可操作以并发地执行矩阵运算。
例如,深度学习加速器的不同硬件实施方案可具有不同的矩阵计算粒度。指令可用于对矩阵运算数执行预定义矩阵运算。然而,指令的矩阵运算数的维数大小可因深度学习加速器而异。
在一个实施例中,编译器经配置以最初对通用深度学习加速器执行平台无关的编译及优化。通用深度学习加速器的硬件能力经预定义以捕获数个不同深度学习加速器的共同特性。通用深度学习加速器的编译结果可映射到不同深度学习加速器的编译结果。因此,人工神经网络的相同描述可被编译成可在不同深度学习加速器上执行的不同指令集,所述深度学习加速器使用不同的集成电路技术(例如,FPGA或ASIC)及/或以不同的粒度及并行执行能力来实施。任选地,编译器可进一步优化个别类型的深度学习加速器的编译结果,以进一步减少能量消耗及/或计算时间。
图6展示根据一个实施例的用于产生可由深度学习加速器执行的指令以实施人工神经网络的技术。
在图6中,ANN描述(221)识别人工神经网络(201)的参数,包含人工神经元的行为模型及网络中人工神经元的连接性。例如,参数可包含人工神经元的激活函数、偏置及/或状态的识别。例如,参数可包含人工神经元之间连接的突触权重。标准格式(例如,开放式神经网络交换(ONNX))的描述(221)可被提供作为到DLA编译器(203)的输入。
DLA编译器(203)可根据通用DLA规范(225)执行编译及优化(223)。通用DLA规范(225)识别通用深度学习加速器的计算能力。
例如,通用深度学习加速器可具有许多深度学习加速器的共同硬件特征,所述深度学习加速器可使用不同的技术、以不同的粒度及不同的容量来实施。
例如,通用深度学习加速器可被构建为虚拟深度学习加速器,以在深度学习加速器的特定硬件平台上实施。
例如,通用深度学习加速器可为可经由ASIC、FPGA或另一种技术实施的一类深度学习加速器的平台无关特性描述。
DLA编译器(203)通过对通用深度学习加速器的编译及优化(223)而产生通用结果(227)。例如,通用结果(227)可包含用于在符合通用DLA规范(225)的通用或虚拟深度学习加速器上实施人工神经网络(201)的矩阵计算的指令。
DLA编译器(203)可进一步执行DLA映射(233),其将通用结果(227)映射到深度学习加速器的特定硬件平台的编译器输出(237)中。特定DLA规范(235)识别深度学习加速器的特定硬件平台的硬件能力。编译器输出(237)包含可在符合特定DLA规范(235)的深度学习加速器(103)上执行的DLA指令(205)。编译器输出(237)进一步包含代表人工神经网络(201)的参数的DLA矩阵(207)。
任选地,通用深度学习加速器的一些方面可被参数化,例如可操作以并行地处理数据的预定类型的处理单元的数目、处理单元的处理粒度等。因此,通用深度学习加速器的此类方面可经配置用于编译及优化(223),以通过DLA映射(233)产生与特定DLA规范(235)匹配的优化结果的通用结果(227)。
DLA编译器(203)可通过使用特定平台的指令及例程实施通用深度学习加速器的指令及/或例程,将针对通用深度学习加速器编译的通用结果(227)映射到深度学习加速器的特定平台的编译器输出(237)中。
图7及8说明根据一个实施例的将通用深度学习加速器的编译结果映射到可由特定深度学习加速器执行的指令以实施人工神经网络的技术。
图7说明使用DLA例程(例如,243)将通用深度学习加速器的指令映射到可在由特定DLA规范(235)指定或识别的硬件平台上执行的DLA指令(205)的技术。
例如,通用DLA指令(241)可使用可在特定硬件平台中执行的DLA例程(243)来实施。在编译的通用结果(227)中使用通用DLA指令(241)可替换为使用根据特定硬件平台的特定DLA规范(235)配置的DLA例程(243)。
例如,DLA例程(243)可被预优化以用于在具有特定DLA规范(235)的硬件平台上实施通用DLA指令(241)。
在图8中,使用根据通用DLA规范(225)的指令实施的通用例程(245)被映射到使用根据特定DLA规范(225)的指令实施的DLA例程(247)。可预优化DLA例程(247)以改进由例程执行的整体任务的性能,使得DLA例程(247)的性能优于用对应的DLA例程(例如,243)替换通用例程(245)中的对应通用DLA指令(例如,241)。
一般来说,通用结果(227)中的不同例程或指令组合在实施人工神经网络(201)的计算时对编译的通用结果(227)的性能的贡献可具有不同的权重。具有较大计算工作负载份额的例程或指令组合可被映射到经优化的DLA例程(例如,247)以改进编译器输出(237)的性能。
任选地,在DLA映射(233)之后,DLA编译器(203)可进一步执行进一步优化以改进编译器输出(237)的性能,如图9所说明。
图9展示根据一个实施例的用于产生可由深度学习加速器执行的指令以实施人工神经网络的另一技术。
在图9中,DLA编译器(203)可基于ANN描述(221)及通用DLA规范(225)以类似于图6的方式执行人工神经网络(201)的初始编译及优化(223)。此外,DLA编译器(203)可根据特定DLA规范(235)执行DLA映射(233)以将编译的通用结果(227)转换成映射结果(229)以用于实施。可使用图7及8的技术来执行DLA映射(233)。
在DLA映射(233)之后,DLA编译器(203)可进一步执行编译的经映射结果(229)的优化(231)以产生编译器输出(237)。例如,DLA编译器(203)可变换经映射结果(229)以减少在由特定DLA规范(235)识别的平台上实施ANN描述(221)的能量消耗及/或计算时间。
在根据一个实施例的方法中,编译器将人工神经网络的描述转换成用于在深度学习加速器上实施的指令。例如,所述方法可在计算装置上实施,以产生DLA指令(205)及DLA矩阵(207),以用于在图1所说明的集成电路装置(101)或图5所说明的系统中实施人工神经网络(201)的矩阵计算。
在计算装置接收到人工神经网络(201)的描述(221)之后,计算装置根据第一装置的规范从人工神经网络(201)的描述(221)产生编译的第一结果。
例如,第一装置的规范可为通用DLA规范(225);并且编译的第一结果可为图6到9所说明的通用结果(227),即DLA编译器(203)根据通用DLA规范(225)执行编译及优化(223)的结果。
第一结果可包含代表可在第一装置上执行以根据第一装置的规范实施人工神经网络(201)的矩阵计算的第一指令的第一数据。
例如,可在第一装置上执行的第一指令可包含在通用结果(227)中使用以在通用深度学习加速器上实施人工神经网络(201)的计算的通用DLA指令(例如,241)及/或通用例程(例如,245)。通用深度学习加速器可为根据通用DLA规范(225)的虚拟装置,或者通用DLA规范(225)的参考实施方案。
计算装置根据第二装置的规范将编译的第一结果映射到第二结果。
例如,第二装置的规范可为特定的DLA规范(235);并且第二结果可为图7中所说明的编译器输出(237),或者图8中所说明的经映射结果(229)。例如,第二装置可为图8的集成电路装置(101),其具有图2到4中所说明的矩阵处理单元。
第二结果可包含代表可在第二装置上执行以实施人工神经网络(201)的矩阵计算的第二指令的第二数据。
例如,第二指令可为根据特定DLA规范(235)的DLA指令(205)。第二指令可包含DLA例程(例如,243及/或247)。
计算装置可进一步从人工神经网络(201)的描述(221)产生代表人工神经网络(201)的参数的第三数据。
例如,代表人工神经网络(201)的参数的第三数据可包含DLA矩阵(207)。一些DLA矩阵(207)可被加载到集成电路装置(101)的处理单元(111)中的内核缓冲器(131到133)中。一些DLA矩阵(207)可被加载到集成电路装置(101)的处理单元(111)中的映射存储体(151到153)中。
例如,第二装置可为图1的集成电路装置(101),其具有经配置以存储代表人工神经网络的参数的第三数据及代表第二指令的第二数据的随机存取存储器(105)。图1的集成电路装置(101)进一步包含至少一个处理单元(111),所述处理单元经配置以执行第二指令,以基于代表人工神经网络(201)的参数的第三数据及代表到人工神经网络(201)的输入(211)的第四数据来产生人工神经网络(201)的输出(213)。
如图7及8所说明,将第一结果映射到第二结果可包含将第一结果中可由第一装置执行的指令映射到第二结果中可由第二装置执行的例程。例如,通用结果(227)中的通用DLA指令(241)可映射到由特定DLA规范(235)识别的特定平台的深度学习加速器(103)可执行的DLA例程(243)。优选地,DLA例程(243)可被预优化以执行由通用DLA指令(241)定义的任务。
如图8所说明,将第一结果映射到第二结果可包含将第一结果中可由第一装置执行的指令的组合映射到第二结果中可由第二装置执行的例程。例如,指令的组合可为在DLA映射(233)的操作期间映射到对应DLA例程(247)的通用例程(245)。优选地,对应DLA例程(247)可被预优化以执行由指令的组合(例如,通用例程(245))定义的任务。
任选地,如图9所说明,DLA编译器(203)可进一步将第二结果变换成具有代表可在第二装置中执行的第三指令的第五数据的第三结果。
例如,第二结果可包含图9所说明的映射结果(229);且第三结果可为图9所说明的编译器输出(237)。DLA编译器(203)在变换中执行优化(231),使得当在根据或符合特定DLA规范(235)的深度学习加速器(103)中执行时,在编译器输出(237)中编译的DLA指令(205)具有比在经映射结果(229)中编译的指令更好的性能。
任选地,计算装置可将代表人工神经网络(201)的参数的第三数据及代表第二指令的第二数据(或代表第三指令的第五数据)存储到集成电路装置(101)的随机存取存储器(105)中。此外,计算装置或另一装置可将代表到人工神经网络(201)的输入(211)的第四数据存储到集成电路装置(101)的随机存取存储器(105)中,以使集成电路装置(101)执行第二指令(或第三指令)并产生人工神经网络(201)的输出(213)。
图10展示根据一个实施例配置的具有拥有可配置硬件能力的深度学习加速器以及随机存取存储器的集成电路装置。
在图10中,处理单元(111)可以不同的配置使用。处理单元(111)的不同配置在功能性、效率、性能及/或能量消耗方面提供不同的权衡。
提供一组寄存器(251)以控制当前可用于执行计算的电路配置。寄存器(251)中指定的一组硬件选项(253)选择处理单元(111)在执行矩阵运算的指令时使用的电路配置。
当一组硬件选项(253)存储在寄存器(251)中时,处理单元(111)经配置以在数据处理期间根据电路配置的多个设计中的经选定一者来操作。当另一组硬件选项(253)存储在寄存器(251)中时,处理单元(111)经配置以根据多个设计中的另一者来操作。因此,可通过在寄存器中指定硬件选项(253)来配置或选择性地使用处理单元(111)的至少一些计算方面。
例如,在一个实施例中的深度学习加速器(103)可具有经配置以控制矩阵计算的粒度的硬件选项。
例如,基于寄存器(251)中指定的硬件选项,向量-向量单元(例如,161)可经配置以计算来自其向量缓冲器的元素的乘积的和,或来自其向量缓冲器的前一半元素的乘积的和,或来自其向量缓冲器的后一半元素的乘积的和,或其组合。
例如,基于寄存器(251)中指定的硬件选项,矩阵-向量单元(例如,141)可经配置以计算矩阵(例如,存储在一组映射存储体(151、…、153)中)与向量(例如,存储在内核缓冲器(131)中)的乘积,或矩阵的一部分与向量的一部分的乘积,或矩阵的另一部分与向量的另一部分的乘积,或其组合。
例如,基于寄存器(251)中指定的硬件选项,矩阵-向量单元(例如,141)可经配置以计算矩阵(例如,存储在一组映射存储体(151、…、153)中)及向量(例如,存储在内核缓冲器(131)中)的乘积,或矩阵的一部分及向量的一部分的乘积,或矩阵的另一部分及向量的另一部分的乘积,或其组合。
例如,基于寄存器(251)中指定的硬件选项,矩阵-矩阵单元(例如,121)可经配置以计算矩阵(例如,存储在一组映射存储体(151、…、153)中)及另一矩阵(例如,存储在一组内核缓冲器(131、…、133)中)的乘积,或矩阵的部分的乘积,或矩阵的替代部分的乘积,或其组合。
因此,硬件选项(253)可用于调整处理单元(111)的粒度级别并组织并行单元(例如矩阵-矩阵单元(121)中的矩阵-向量单元(141、…、143)、矩阵-向量单元(141)中的向量-向量单元(161、…、163)及/或向量-向量单元(161)中的乘法-累加单元(171、…、173))的并发执行。
当在寄存器(251)中指定不同的选项组时,处理单元(111)被有效地配置为具有用于矩阵计算的不同硬件能力。
图11说明根据一个实施例的可经由存储在寄存器中的选项配置的深度学习加速器的处理单元的不同硬件配置。例如,图11的处理单元可用于图1、5及/或10的深度学习加速器(103)中。
在图11中,处理单元(255)由寄存器(257)控制。
在配置A(265)中,在寄存器(257)中指定选项A(261)。寄存器(257)中的选项A(261)使处理单元(255)在功能性及/或性能上用作处理单元A(259)。
当寄存器(257)中的选项A(261)改变为选项B(263)时,处理单元(255)及寄存器(257)的组合处于配置B(267)。寄存器(257)中的选项B(263)使处理单元(255)在功能性及/或性能上用作处理单元B(269)。
处理单元A(259)及处理单元B(269)在功能性及/或性能上不同。在一些计算任务或场景中,使用处理单元A(259)能比使用处理单元B(269)更有利,但在其它计算任务或场景中则不然。选项(261及263)可选择性地存储在寄存器(257)中,以选择性地将处理单元(255)配置或转换为处理单元A(259)及处理单元B(269)。因此,处理单元(259及269)可选择性地部署在用于不同的计算任务或场景的不同配置(265及267)中。
图12说明根据一个实施例的用于产生可由具有经优化硬件配置的深度学习加速器执行的指令以实施人工神经网络的技术。
DLA编译器(203)最初根据通用DLA规范通过编译及优化(223)将ANN描述(221)转换成通用结果。
例如,ANN描述(221)可识别人工神经网络(201)的各种方面,包含人工神经元的行为模型及网络中人工神经元的连接性。ANN描述(221)中使用的参数可包含人工神经元的激活函数、偏置及/或状态的识别。此外,参数可包含人工神经元之间连接的突触权重。描述(221)可指定为标准格式(例如,开放式神经网络交换(ONNX))且被提供作到DLA编译器(203)的输入。
通用DLA规范(225)识别通用深度学习加速器的计算能力。因此,编译及优化(223)与深度学习加速器的硬件平台或能力无关。
通用结果(227)可包含用于在符合通用DLA规范(225)的通用或虚拟深度学习加速器上实施人工神经网络(201)的矩阵计算的指令。
随后,DLA编译器(203)可通过DLA映射(233)的操作将通用结果(227)映射到经映射结果(229)中。DLA映射(233)是根据识别深度学习加速器的特定硬件平台的硬件能力的特定DLA规范(235)。
在图12中,根据特定DLA规范(235)的深度学习加速器具有可配置的硬件选项(253),如图10及11所说明。DLA编译器(203)在执行DLA映射(233)时使用一组默认选项来将通用结果(227)转换成经映射结果(229)。因此,经映射结果(229)中的指令经配置以使用深度学习加速器(103),其中所述一组默认硬件选项(253)存储在其寄存器(251)中。
例如,可使用图7及8的技术来执行DLA映射(233)。DLA编译器(203)可将为通用深度学习加速器编译的通用结果(227)映射到可在深度学习加速器的特定平台上执行的经映射结果(229)中,所述深度学习加速器使用其寄存器(251)中的所述一组默认硬件选项(253)来配置。
在DLA映射(233)之后,DLA编译器(203)可进一步执行编译的经映射结果(229)的优化(231)以产生编译器输出(237)。在优化(231)期间,DLA编译器(203)可选择性地调整硬件选项(253),以改进深度学习加速器在实施由ANN描述(221)指定的人工神经网络(201)时的性能。
例如,DLA编译器(203)可通过减少在执行深度学习加速器(103)中的DLA指令(205)时使用的能量消耗及/或计算时间来执行优化(231)。经优化硬件选项(253)组可用于特定针对实施由ANN描述(221)指定的特定人工神经网络(201)来优化深度学习加速器(103)的硬件。在集成电路装置(101)的制造之后,可通过将经优化硬件选项(253)组存储在寄存器(251)中来实施硬件优化。
例如,DLA指令(205)可包含用于在初始化操作期间将经优化硬件选项(253)组存储到寄存器(251)中以配置深度学习加速器(103)用于执行DLA指令(205)的剩余部分的指令。
在一些实施方案中,可在执行DLA指令(205)期间调整硬件选项(253)。例如,可使用寄存器(251)中的第一组硬件选项(253)来执行DLA指令(205)的第一部分;并且可使用寄存器(251)中的第二组硬件选项(253)来执行DLA指令(205)的第二部分。
在一些实施方案中,DLA指令(205)不包含改变寄存器(251)内容的指令。在将编译器输出(237)加载到集成电路装置(101)的随机存取存储器(105)中以配置人工神经网络(201)的计算的操作中,集成电路装置(101)的主机系统将DLA编译器(203)选择的硬件选项(253)加载到寄存器(251)中。因此,深度学习加速器(103)经配置以执行针对硬件选项(253)优化的DLA指令(205),以实施人工神经网络(201)的计算。
在根据一个实施例的方法中,DLA编译器(203)经配置以产生并优化用于具有可配置硬件选项的深度学习加速器的指令。所述方法可用于使用图1、5及10到11中所说明的深度学习加速器(103)产生指令并选择用于实施人工神经网络(201)的计算的硬件选项。
在所述方法中,计算装置接收人工神经网络(201)的描述(221)。此外,计算装置根据第一装置的规范(235)从人工神经网络(201)的描述(221)产生编译的第一结果。
例如,第一结果可为图12中所说明的由于根据通用DLA规范(225)的编译及优化(223)以及根据特定DLA规范(235)的DLA映射所得的经映射结果(229)。
例如,第一装置可至少一个处理单元(例如,111、141或255),其经配置以执行矩阵计算,并且具有可经由至少一个寄存器(例如,257)选择的硬件配置(例如,265及267)。
例如,处理单元(例如,111、141或255)的功能可根据存储在至少一个寄存器(例如,257)中的内容进行调整。如图11中所说明,当在至少一个寄存器(例如257)中指定第一组硬件选项(例如261)时,处理单元(例如111、141、255)经配置以执行处理单元A(259)的第一功能;并且当在至少一个寄存器(例如,257)中指定第二组硬件选项(例如,263)时,处理单元(例如,111、141、255)经配置以执行另一处理单元B(259)的与第一功能不同的第二功能。
此外,计算装置将编译的第一结果变换成第二结果以选择第一装置的硬件选项(例如,253)。
例如,第二结果可为图12中所说明的编译器输出(237)。第二结果可包含代表人工神经网络的参数的第一数据,例如DLA矩阵(207)。第二结果可进一步包含第二数据,所述第二数据代表可由第一装置的至少一个处理单元执行以响应于代表到人工神经网络(201)的输入(211)的第三数据来产生人工神经网络(201)的输出(213)的指令。第二结果可进一步包含第四数据,所述第四数据代表要存储在至少一个寄存器(例如257)中以配置至少一个处理单元(例如111、141或255)的硬件选项(例如253)。
在一个实施方案中,至少一个寄存器(例如251、257)中的内容可经由执行由存储在连接到深度学习加速器(103)的随机存取存储器(105)中的第二数据表示的指令的一部分来更新。
例如,集成电路装置(101)的至少一个接口(例如107)可经配置以接收第三数据作为到人工神经网络(201)的输入(211)并将第三数据存储到随机存取存储器(105)中。
在执行由存储在随机存取存储器(105)中的第二数据表示的指令(205)之前,可通过至少一个接口(例如107)更新存储在至少一个寄存器(251)中的内容。因此,在执行由DLA编译器(203)产生的DLA指令(205)期间,至少一个寄存器(251)中的内容不会改变。
或者,存储在至少一个寄存器(251)中的内容可经由深度学习加速器(103)指令的一部分来动态更新。例如,处理单元(255)可使用配置A(265)对一些DLA矩阵(207)进行操作,并且使用配置B(267)对其它DLA矩阵(207)进行操作。
例如,要由处理单元(255)处理的指令的两个矩阵运算数的维数可根据用于在处理单元(255)中执行指令的至少一个寄存器(257)来配置。
任选地,DLA编译器(203)可不仅基于硬件配置选项,而且基于深度学习加速器(103)的总体硬件特性来优化经产生以在深度学习加速器(103)中实施人工神经网络(201)的指令。深度学习加速器(103)的此类硬件特性可包含深度学习加速器(DLA)的特性、选项、行为、性能、延时及/或限制。DLA编译器(203)可通过与深度学习加速器(DLA)交互来学习深度学习加速器(DLA)的硬件特性。例如,DLA编译器(203)可基于执行不同指令、不同指令组合、不同指令执行场景以及结合不同硬件配置选项的计算性能来测试深度学习加速器(103)的硬件。例如,DLA编译器(203)可任选地通过运行测试指令集来发现及/或测量硬件能力、选项、性能、延时等,来锻炼深度学习加速器(DLA)的硬件。任选地,DLA编译器(203)可使用人工神经网络来通过机器学习来确定深度学习加速器(DLA)的特征、选项、行为、性能、延时及/或限制。关于深度学习加速器(DLA)的硬件特性的信息可在编译器的优化操作中用于产生或定制用于在深度学习加速器(DLA)上实施人工神经网络(201)的指令及/或运行时间。
图13展示根据一个实施例的发现深度学习加速器的硬件特性的技术。
在图13中,具有DLA编译器(203)的计算装置(271)连接到集成电路装置(101)以使用测试程序(273)学习其硬件特性。测试程序(273)的执行结果可从随机存取存储器(105)中检索作为对测试程序的响应(275)。可分析响应(275)以识别深度学习加速器(103)的硬件特性(279)。
例如,DLA编译器(203)可根据深度学习加速器(103)的DLA规范(235)产生一或多个测试程序(273)。一些测试程序可根据人工神经网络(例如,201)的实例来产生。任选地,或组合地,可产生一些测试程序以在不对特定的人工神经网络建模的情况下锻炼深度学习加速器(103)的各种处理单元(111)。
例如,测试程序(273)可以类似于人工神经网络(201)的实施方案的DLA指令(205)及DLA矩阵(207)被写入到随机存取存储器(105)中以供深度学习加速器(103)执行的方式被写入到随机存取存储器(105)中。此外,测试程序(273)的执行可以类似于向随机存取存储器(105)中的人工神经网络(201)提供输入(211)以触发人工神经网络(201)的DLA指令(205)的执行的方式,经由向随机存取存储器(105)写入输入来触发。
响应(275)可包含在测试程序(273)的各种阶段的执行的时间戳。时间戳可用于测量时间时间戳之间的指令的执行时间,及因此测量深度学习加速器(103)的处理单元(111)执行特定指令及/或特定指令序列的性能特性。
在一些实施方案中,集成电路装置(101)能够在执行存储在随机存取存储器(105)中的指令期间产生时间戳;并且测试程序可由DLA编译器(203)配置为包含引导集成电路装置(101)产生时间戳的指令。
在一些实施方案中,计算装置(271)产生用于触发存储在随机存取存储器(105)中的测试程序(273)的执行的时间戳及用于接收由测试程序(273)的执行产生的响应(275)的时间戳。所述时间戳测量深度学习加速器(103)在执行测试程序(273)时的性能。不同测试程序(273)的性能测量可用于确定测试程序(273)中指令差异的性能。
例如,两个测试程序可共享共同指令集,而其中一个测试程序具有额外的指令集。因此,两个测试程序的执行时间的差异提供深度学习加速器(103)在执行额外指令集时的性能测量。额外的指令集可在对应的测试程序中重复多次,以改进性能测量的准确性。因此,可构造多个测试程序来测量可在处理单元(111)中执行的各种指令的性能水平。
例如,当深度学习加速器(103)具有不同的硬件选项(253)时,DLA编译器(203)可使用不同的硬件选项(253)产生不同的例程来执行相同的任务。可测量例程的性能水平,以识别用于任务的最优例程及对应的硬件选项(253)。最优例程可在运行时或程序库中配置,并用于在深度学习加速器(103)中实施人工神经网络(201)。
任选地,在计算装置(271)中运行的DLA编译器(203)经配置以识别连接到计算装置(271)的深度学习加速器(103)的规范及/或DLA硬件特性(279)。例如,根据深度学习加速器的已知硬件平台的一组规范,DLA编译器(203)可构建测试程序(273)以供连接到计算装置(271)的深度学习加速器(103)执行。基于响应(275)中的计算结果,DLA编译器(203)可确定连接到计算装置(271)的深度学习加速器(103)符合哪个规范。任选地,在识别深度学习加速器(103)的规范之后,DLA编译器(203)可构建测试程序(273)来验证及确认深度学习加速器(103)的功能性当前符合规范。
在一些情况下,连接到计算装置(271)的深度学习加速器(103)的硬件平台对于DLA编译器(203)可能是新的。深度学习加速器(103)不是根据DLA编译器(203)已知的任何规范制造的。在这种情况下,DLA编译器(203)可使用测试程序来探测深度学习加速器(103)的功能性。探测操作可用于发现类似于一些已知平台的功能性。探测的结果可产生深度学习加速器(103)的功能性的至少一个子集的规范。当子集足以实施人工神经网络(201)的计算时,DLA编译器(203)可产生用于实施人工神经网络(201)的编译器输出(237),即使深度学习加速器(103)的完整及/或官方规范不可用。
图14说明根据一个实施例的用于产生可由深度学习加速器执行并根据深度学习加速器的硬件特性优化的指令的技术。
在图14中,构建及/或执行DLA切除(277)以确定DLA硬件特性(279),以支持在编译由特定DLA规范(235)识别的深度学习加速器的硬件平台的ANN描述(221)中的优化(231)。
例如,DLA切除(277)可包含根据规范(235)在深度学习加速器(103)中运行测试程序(273)以及分析深度学习加速器(103)对测试程序(273)的响应(275),如图13所说明。
任选地,从DLA切除(277)获得的DLA硬件特性(279)可包含在深度学习加速器(103)的规范(235)中。
在图14中,DLA编译器(203)最初根据通用DLA规范(225)通过编译及优化(223)将ANN描述(221)转换成通用结果(227)。
ANN描述(221)可人工神经元的行为模型及网络中人工神经元的连接性。ANN描述(221)可包含人工神经元的激活函数、偏置及/或状态的识别。ANN描述(221)可包含用于人工神经元之间连接的突触权重。
DLA编译器(203)将标准格式(例如,开放式神经网络交换(ONNX))的描述(221)转换成可在符合通用DLA规范(225)的深度学习加速器上实施的通用结果(227)。
例如,通用结果(227)可包含用于在根据通用DLA规范(225)配置的虚拟深度学习加速器上实施人工神经网络(201)的计算的DLA指令及DLA矩阵。例如,虚拟深度学习加速器可经由在微处理器及/或计算装置(271)上运行的软件来实施。
随后,DLA编译器(203)可通过DLA映射(233)的操作将通用结果(227)映射到经映射结果(229)中。DLA映射(233)是根据特定的DLA规范(235),所述规范识别深度学习加速器(例如连接到其中运行DLA编译器(203)的计算装置(271)的深度学习加速器(103))的特定硬件平台的硬件能力。
在图14中,根据特定DLA规范(235)的深度学习加速器可任选地具有可配置的硬件选项(253),如图10及11所说明。DLA编译器(203)在执行DLA映射(233)时使用一组默认选项来将通用结果(227)转换成经映射结果(229)。因此,经映射结果(229)中的指令经配置以使用深度学习加速器(103),其中所述一组默认的硬件选项(253)存储在其寄存器(251)中。
例如,可使用图7及8的技术来执行DLA映射(233)。DLA编译器(203)可将为通用深度学习加速器编译的通用结果(227)映射到可在深度学习加速器的特定平台上执行的经映射结果(229)中,所述深度学习加速器使用其寄存器(251)中的所述一组默认硬件选项(253)来配置。
在DLA映射(233)之后,DLA编译器(203)可进一步执行编译的经映射结果(229)的优化(231)以产生编译器输出(237)。在优化(231)期间,DLA编译器(203)可根据DLA硬件特性(279)选择性地调整硬件选项(253)及/或指令序列或例程,以改进深度学习加速器在实施由ANN描述(221)指定的人工神经网络(201)时的性能。
例如,计算任务可使用不同的指令序列来实施(任选地使用不同的硬件选项来运行)。基于硬件特性(279),DLA编译器(203)可计算或估计执行不同序列所需的时间段,并在不同序列中选择具有最佳性能的序列。DLA编译器(203)可任选地递增地变换指令,以减少优化(231)期间计算/估计的执行时间。
图15展示根据一个实施例的用于编译指令以基于深度学习加速器的硬件特性来在深度学习加速器上实施人工神经网络的方法。
例如,图15的方法可在运行图14中所说明的DLA编译器(203)的计算装置(271)中实施。
在框301,计算装置(271)与集成电路装置(101)交互,以在执行矩阵计算时识别集成电路装置(101)的硬件特性(279)。
例如,集成电路装置(101)可具有图1或10中说明的深度学习加速器(103)。深度学习加速器(103)可具有如图1到4中所说明的一或多个处理单元(例如,111、121、141、161),以执行矩阵计算。
例如,集成电路装置的硬件特性(279)识别集成电路装置(101)的至少一个处理单元(例如,111、121、141、161)的特征、选项、行为、性能或延时,或其任何组合。
例如,如图13中所说明,计算装置(271)可通过产生测试程序并将其加载到集成电路装置(101)中并接收在集成电路装置(101)中执行测试程序的响应(275)来与集成电路装置(101)交互。
例如,计算装置(271)可从响应(275)确定硬件特性(279),包含测试程序(273)的计算结果及/或与集成电路装置(101)中测试程序(273)的执行相关联的时间戳。
例如,计算装置(271)可基于在集成电路装置中执行测试程序的响应(275)而在集成电路装置的多个预定规范中识别集成电路装置(101)的规范。例如,当测试程序(273)的结果与符合所识别的规范的集成电路装置产生的结果匹配,但与符合其它规范的集成电路装置产生的结果不匹配时,可作出识别。
任选地,计算装置(271)可通过试错并基于在集成电路装置(101)中执行测试程序(273)的响应(275)来探测集成电路(101)的处理单元(例如,111、121、141、161)的硬件选项(253)。
例如,计算装置(271)可基于经配置以执行矩阵计算的集成电路装置的多个硬件平台的规范产生测试程序。在确定硬件特性(279)时,计算装置(271)可检查响应(275)以确定哪些指令以什么延时起作用及/或执行什么功能等。
在框303,计算装置(271)接收人工神经网络(201)的描述(221)。
在框305,在计算装置(271)中运行的DLA编译器(203)至少部分地基于集成电路装置(101)的硬件特性(279)从人工神经网络(201)的描述(221)产生编译结果。
例如,编译的结果可包含代表人工神经网络(201)的参数的第一数据,例如DLA矩阵(207)。编译的结果可进一步包含第二数据,所述第二数据代表可由集成电路装置(101)执行以基于代表人工神经网络(201)的参数的第一数据及基于到人工神经网络(201)的输入(211)而产生人工神经网络(201)的输出(213)的指令(205)。
例如,DLA编译器(203)可变换来自人工神经网络(201)的描述(221)的编译结果,以基于集成电路装置(101)的硬件特性(279)来改进当在集成电路装置(101)中运行或执行编译结果时编译结果的性能。例如,如图14中所说明,可基于硬件选项(253)及/或硬件特性(279)执行优化(231)。
例如,计算装置(271)可使用图16中所说明的机器实施。
图16说明计算机系统的实例机器,可在其内执行用于致使机器执行本文论述的方法中的任一或多者的指令集。
在一些实施例中,图16的计算机系统可用具有图2到4中所说明的矩阵处理单元的图1的集成电路装置(101)实施图5的系统。
图16的计算机系统可用于通过执行经配置以执行对应于DLA编译器(203)的操作的指令来执行参考图1到15描述的DLA编译器(203)的操作。
在一些实施例中,所述机器可连接(例如,联网)到局域网(LAN)、内联网、外联网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
例如,机器可经配置为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥或能够(循序或以其它方式)执行指定由所述机器所采取的动作的一组指令的任何机器。此外,虽然说明单个机器,但是术语“机器”还应被认为包含个别地或联合地执行一组(或多组)指令以执行本文所论述的方法中的任一者或多者的机器的任何集合。
图16中说明的实例计算机系统包含经由总线(430)彼此通信的处理装置(402)、主存储器(404)及数据存储系统(418)。例如,处理装置(402)可包含一或多个微处理器;主存储器可包含只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM))、静态随机存取存储器(SRAM)等。总线(430)可包含多条总线或由多条总线替代。
图16中的处理装置(402)表示一或多个通用处理装置,例如微处理器、中央处理单元或类似物。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的一个处理器或实施指令集组合的多个处理器。处理装置(402)也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似物。处理装置(402)经配置以执行用于执行结合DLA编译器(203)讨论的操作的指令(426)。任选地,处理装置(402)可包含深度学习加速器(103)。
图16的计算机系统可进一步包含网络接口装置(408)以通过计算机网络(420)进行通信。
任选地,总线(430)连接到集成电路装置(101),所述集成电路装置具有图1及/或10中所说明的深度学习加速器(103)及随机存取存储器(105)。编译器(203)可将其编译器输出(237)写入集成电路装置(101)的随机存取存储器(105)中,以使集成电路装置(101)能够执行由ANN描述(221)指定的人工神经网络(201)的矩阵计算。任选地,编译器输出(237)可通过网络接口装置(408)及计算机网络(420)存储到一或多个其它集成电路装置(101)的随机存取存储器(105)中。
数据存储系统(418)可包含其上存储体现本文中描述的方法或功能中的任一或多者的一或多组指令(426)或软件的机器可读媒体(424)(也称为计算机可读媒体)。指令(426)在其由计算机系统执行期间还可完全或至少部分驻存于主存储器(404)内及/或处理装置(402)内,主存储器(404)及处理装置(402)也构成机器可读存储媒体。
在一个实施例中,指令(426)包含用以实施对应于DLA编译器(203)(例如,参考图5到15描述的DLA编译器(203))的功能性的指令。尽管在实例实施例中将机器可读媒体(424)展示为单个媒体,但是术语“机器可读存储媒体”应被认为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码一组指令以供机器执行并且致使机器执行本公开的方法中的任一者或多者的任何媒体。因此,术语“机器可读存储媒体”应被认为包含(但不限于)固态存储器、光学媒体及磁性媒体。
本公开包含方法及执行上述方法的设备,所述设备包含执行这些方法的数据处理系统,以及含有当在数据处理系统上执行时使系统执行这些方法的指令的计算机可读媒体。
典型数据处理系统可包含互连件(例如,总线及系统核心逻辑),所述互连件互连(若干)微处理器及存储器。微处理器通常耦合到高速缓存存储器。
互连件将(若干)微处理器及存储器互连到一起且还将其经由(若干)输入/输出(I/O)控制器互连到(若干)I/O装置。I/O装置可包含显示器装置及/或外围装置,例如鼠标、键盘、调制解调器、网络接口、打印机、扫描仪、摄像机及所属领域中已知的其它装置。在一个实施例中,当数据处理系统是服务器系统时,一些I/O装置(例如,打印机、扫描仪、鼠标及/或键盘)是可选的。
互连件可包含通过各种网桥、控制器及/或适配器彼此连接的一或多个总线。在一个实施例中,I/O控制器包含用于控制USB(通用串行总线)外围设备的USB适配器,及/或用于控制IEEE-1394外围设备的IEEE-1394总线适配器。
存储器可包含以下中的一或多者:ROM(只读存储器)、易失性RAM(随机存取存储器)及非易失性存储器,例如硬盘驱动器、快闪存储器等。
易失性RAM通常实施为动态RAM(DRAM),动态RAM不断需要电力以便刷新或维持存储器中的数据。非易失性存储器通常是磁硬盘驱动器、磁光驱动器、光驱动器(例如,DVDRAM)或即使在系统断电后维持数据的其它类型的存储器系统。非易失性存储器还可为随机存取存储器。
非易失性存储器可为直接耦合到数据处理系统中的剩余组件的本地装置。也可使用远离系统的非易失性存储器,例如,通过例如调制解调器或以太网接口的网络接口耦合到数据处理系统的网络存储装置。
在本公开中,一些功能及操作描述为由软件代码执行或由软件代码引起,以简化描述。但是,这类表达也用于指定所述功能是由例如微处理器之类的处理器执行代码/指令产生的。
替代地,或组合,本文描述的功能及操作可使用专用电路系统来实施,无论有或没有软件指令,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。实施例可在不使用软件指令的情况下使用硬接线电路系统实施,或结合软件指令实施。因此,技术既不限于硬件电路系统及软件的任何特定组合,也不限于用于由数据处理系统执行的指令的任何特定源。
虽然一个实施例可在全功能计算机及计算机系统中实施,但各种实施例能够以各种形式作为计算产品分布,且能够不管用于实际实现分布的机器或计算机可读媒体的特定类型而应用。
公开的至少一些方面可至少部分地以软件体现。即,技术可响应于计算机系统或其它数据处理系统的处理器(例如微处理器)执行存储器(例如ROM、易失性RAM、非易失性存储器、高速缓存或远程存储装置)中含有的指令序列而在所述计算机系统或其它数据处理系统中执行。
为实现实施例而执行的例程可实施为操作系统的部分或特定应用程序、组件、程序、对象、模块或称为“计算机程序”的指令序列的部分。计算机程序通常包含在计算机的各种存储器及存储装置中在不同时间设置的一或多个指令,且当由计算机中的一或多个处理器读取及执行时,所述指令使计算机执行实行涉及各个方面的元件所必需的操作。
机器可读媒体可用于存储当由数据处理系统执行时使系统执行各种方法的软件及数据。可执行的软件及数据可存储在各种位置,包含(例如)ROM、易失性RAM、非易失性存储器及/或高速缓存。此软件及/或数据的部分可存储在这些存储装置中的任一者中。此外,数据及指令可从集中式服务器或对等网络获得。数据及指令的不同部分可在不同时间及在不同通信会话中或在同一通信会话中从不同的集中式服务器及/或对等网络获得。在执行应用程序之前,可整体获得数据及指令。替代地,当执行需要时,可动态地、恰好及时地获得数据及指令的部分。因此,不要求数据及指令在特定的时刻全部在机器可读媒体上。
计算机可读媒体的实例包含(但不限于)非暂时性、可记录及非可记录类型的媒体,例如易失性及非易失性存储器装置、只读存储器(ROM)、随机存取存储器(RAM)、快闪存储器装置、软盘及其它可装卸磁盘、磁盘存储媒体、光存储媒体(例如,光盘只读存储器(CDROM)、数字多功能磁盘(DVD)等)及其它。计算机可读媒体可存储指令。
指令还可体现在用于电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)的数字及模拟通信链路中。但是,例如载波、红外信号、数字信号等的传播信号并非有形的机器可读媒体且未经配置以存储指令。
一般来说,机器可读媒体包含以机器(例如,计算机、网络装置、个人数字助理、制造工具、具有一组一或多个处理器的任何装置等)可存取的形式提供(即,存储及/或传输)信息的任何机制。
在各种实施例中,硬接线电路系统可与软件指令组合使用来实施技术。因此,技术既不限于硬件电路系统及软件的任何特定组合,也不限于用于由数据处理系统执行的指令的任何特定源。
以上描述及附图是说明性的且不视为限制性的。描述许多特定细节来提供通透的理解。但是,在特定例子中,未描述熟知或常规的细节以免模糊描述。对本公开中的一个或一实施例的引用不一定是对同一实施例的引用;并且,此类引用意味着至少一个。
在前述说明书中,已参考本公开的特定示范性实施例描述了本公开。将明显的是,在不背离随附权利要求书中所陈述的更宽精神及范围的情况下,可对其做出各种修改。因此,本说明书及附图被视为说明性的意义而不是限制性的意义。
Claims (20)
1.一种方法,其包括:
由计算装置向集成电路装置传输一或多个命令,每一命令与对指示所述集成电路装置在执行矩阵计算时的硬件特性的响应的一或多个请求相关联;
在所述计算装置处并在确定所述集成电路装置的所述硬件特性之后,接收代表人工神经网络的描述的数据;及
由所述计算装置至少部分地基于所述集成电路装置的所述硬件特性,从代表所述人工神经网络的所述描述的所述数据产生编译结果,所述编译结果包含第一数据及第二数据,所述第一数据代表所述人工神经网络的参数,所述第二数据代表能够由所述集成电路装置执行以基于所述第一数据及到所述人工神经网络的输入来产生所述人工神经网络的输出的指令。
2.根据权利要求1所述的方法,其中所述集成电路装置的所述硬件特性识别所述集成电路装置的至少一个处理单元的特征、选项、行为、性能或延时,或其任何组合。
3.根据权利要求2所述的方法,其中所述向所述集成电路装置传输所述一或多个命令包含将测试程序加载到所述集成电路装置中,以接收在所述集成电路装置中执行所述测试程序的响应。
4.根据权利要求3所述的方法,其进一步包括:
从在所述集成电路装置中执行所述测试程序的所述响应来确定所述硬件特性。
5.根据权利要求3所述的方法,其进一步包括:
从与所述集成电路装置中的所述测试程序的执行相关联的时间戳确定所述硬件特性。
6.根据权利要求3所述的方法,其进一步包括:
基于在所述集成电路装置中执行所述测试程序的所述响应,在集成电路装置的多个预定规范中识别所述集成电路装置的规范。
7.根据权利要求3所述的方法,其进一步包括:
基于在所述集成电路装置中执行所述测试程序的所述响应来探测所述集成电路的矩阵处理单元的硬件选项。
8.根据权利要求3所述的方法,其进一步包括:
基于经配置以执行矩阵计算的集成电路装置的多个硬件平台的规范而产生所述测试程序。
9.根据权利要求3所述的方法,其进一步包括:
变换来自所述人工神经网络的所述描述的所述编译结果,以基于所述集成电路装置的所述硬件特性改进当在所述集成电路装置中执行时所述结果的性能。
10.一种计算装置,其包括:
存储器;及
至少一个微处理器,其耦合到所述存储器,并且经配置以探测集成电路装置以在执行矩阵计算时识别所述集成电路装置的硬件特性,并且至少部分地基于所述集成电路装置的所述硬件特性,从代表人工神经网络的描述的数据产生编译结果,所述编译结果包含第一数据及第二数据,所述第一数据代表所述人工神经网络的参数,所述第二数据代表能够由所述集成电路装置执行以基于所述第一数据及到所述人工神经网络的输入来产生所述人工神经网络的输出的指令。
11.根据权利要求10所述的计算装置,其中所述集成电路装置的所述硬件特性识别所述集成电路装置的至少一个处理单元的特征、选项、行为、性能或延时,或其任何组合。
12.根据权利要求10所述的计算装置,其中所述至少一个微处理器进一步经配置以产生测试程序,将所述测试程序加载到所述集成电路装置中以供执行,及从所述集成电路装置检索执行所述测试程序的结果;且其中所述集成电路装置的所述硬件特性是从所述结果来识别。
13.根据权利要求12所述的计算装置,其中所述至少一个微处理器进一步经配置以基于所述集成电路装置的所述硬件特性来执行对所述编译结果的优化。
14.根据权利要求13所述的计算装置,其进一步包括与所述至少一个微处理器耦合的所述集成电路装置。
15.根据权利要求14所述的计算装置,其中所述集成电路装置包括实施深度学习加速器的现场可编程门阵列(FPGA)或专用集成电路(ASIC)的集成电路裸片,所述深度学习加速器包括经配置以执行矩阵运算的至少一个处理单元。
16.根据权利要求15所述的计算装置,其中所述至少一个处理单元包含矩阵-矩阵单元,其经配置以对指令的两个矩阵运算数进行运算;
其中所述矩阵-矩阵单元包含经配置以并行运算的多个矩阵-向量单元;
其中所述多个矩阵-向量单元中的每一者包含经配置以并行运算的多个向量-向量单元;且
其中所述多个向量-向量单元中的每一者包含经配置以并行运算的多个乘法-累加单元。
17.一种存储当由计算装置执行时致使所述计算装置执行方法的指令的非暂时性计算机存储媒体,所述方法包括:
由所述计算装置向集成电路装置传输一或多个请求,以在执行矩阵计算时提供指示所述集成电路装置的硬件特性的一或多个响应;
在所述计算装置中接收代表人工神经网络的描述的数据;及
由所述计算装置至少部分地基于所述集成电路装置的所述硬件特性,从代表所述人工神经网络的所述描述的所述数据产生编译结果,所述编译结果包含第一数据及第二数据,所述第一数据代表所述人工神经网络的参数,所述第二数据代表能够由所述集成电路装置执行以基于所述第一数据及到所述人工神经网络的输入来产生所述人工神经网络的输出的指令。
18.根据权利要求17所述的非暂时计算机存储媒体,其中所述集成电路装置的所述硬件特性识别所述集成电路装置的至少一个处理单元的特征、选项、行为、性能或延时,或其任何组合。
19.根据权利要求18所述的非暂时性计算机存储媒体,其中所述方法进一步包括:
根据经配置以执行矩阵计算的装置的多个硬件平台的预定规范产生测试程序;
将所述测试程序加载到所述集成电路装置中;
指示所述集成电路装置执行所述测试程序;
测量所述集成电路装置在执行用于所述测试程序中所含有的指令时的性能水平;及
至少部分地基于所述性能水平来确定所述集成电路装置的所述硬件特性。
20.根据权利要求19所述的非暂时性计算机存储媒体,其中所述方法进一步包括:
基于在所述集成电路装置中执行所述测试程序的结果来探测所述集成电路装置的处理单元的硬件选项。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/092,033 US20220147810A1 (en) | 2020-11-06 | 2020-11-06 | Discovery of hardware characteristics of deep learning accelerators for optimization via compiler |
US17/092,033 | 2020-11-06 | ||
PCT/US2021/055611 WO2022098505A1 (en) | 2020-11-06 | 2021-10-19 | Discovery of hardware characteristics of deep learning accelerators for optimization via compiler |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116601645A true CN116601645A (zh) | 2023-08-15 |
Family
ID=81454447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180082044.1A Pending CN116601645A (zh) | 2020-11-06 | 2021-10-19 | 经由编译器发现深度学习加速器的硬件特性以用于优化 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220147810A1 (zh) |
CN (1) | CN116601645A (zh) |
WO (1) | WO2022098505A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220413852A1 (en) * | 2021-06-25 | 2022-12-29 | Intel Corporation | Processor embedded streaming buffer |
CN115576699B (zh) * | 2022-11-25 | 2024-03-12 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7152116B1 (en) * | 1998-08-24 | 2006-12-19 | National Instruments Corporation | System and method for automatically creating URLs for accessing data sources and data targets |
US10726328B2 (en) * | 2015-10-09 | 2020-07-28 | Altera Corporation | Method and apparatus for designing and implementing a convolution neural net accelerator |
US9501493B1 (en) * | 2015-12-04 | 2016-11-22 | International Business Machines Corporation | Instantiating virtualization unit on storage or proxy node for performing operation based on node having hardware characteristics for serving required file system role for operation |
WO2018217222A1 (en) * | 2017-05-26 | 2018-11-29 | The Charles Stark Draper Laboratory, Inc. | Machine intelligence and learning for graphic chip accessibility and execution |
US11474555B1 (en) * | 2017-08-23 | 2022-10-18 | Xilinx, Inc. | Data-driven platform characteristics capture and discovery for hardware accelerators |
US20190050263A1 (en) * | 2018-03-05 | 2019-02-14 | Intel Corporation | Technologies for scheduling acceleration of functions in a pool of accelerator devices |
CN112088383A (zh) * | 2018-05-10 | 2020-12-15 | 松下半导体解决方案株式会社 | 神经网络构筑装置、信息处理装置、神经网络构筑方法及程序 |
KR20200075185A (ko) * | 2018-12-17 | 2020-06-26 | 삼성전자주식회사 | 뉴럴 프로세싱 시스템 및 그것의 동작 방법 |
US11169853B2 (en) * | 2018-12-28 | 2021-11-09 | Intel Corporation | Technologies for providing dynamic selection of edge and local accelerator resources |
US11580371B2 (en) * | 2019-03-13 | 2023-02-14 | Roviero, Inc. | Method and apparatus to efficiently process and execute Artificial Intelligence operations |
US11521116B2 (en) * | 2019-06-25 | 2022-12-06 | Nxp Usa, Inc. | Self-optimizing multi-core integrated circuit |
US20190392296A1 (en) * | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
US11656872B2 (en) * | 2019-12-13 | 2023-05-23 | Intel Corporation | Systems and methods for loading weights into a tensor processing block |
-
2020
- 2020-11-06 US US17/092,033 patent/US20220147810A1/en active Pending
-
2021
- 2021-10-19 WO PCT/US2021/055611 patent/WO2022098505A1/en active Application Filing
- 2021-10-19 CN CN202180082044.1A patent/CN116601645A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022098505A1 (en) | 2022-05-12 |
US20220147810A1 (en) | 2022-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11874897B2 (en) | Integrated circuit device with deep learning accelerator and random access memory | |
US20220147812A1 (en) | Compiler with an artificial neural network to optimize instructions generated for execution on a deep learning accelerator of artificial neural networks | |
US11887647B2 (en) | Deep learning accelerator and random access memory with separate memory access connections | |
CN116601645A (zh) | 经由编译器发现深度学习加速器的硬件特性以用于优化 | |
CN116635936A (zh) | 用于支持集成电路装置中的深度学习加速器的存储器配置 | |
CN115443468A (zh) | 具有摄像头接口的深度学习加速器及随机存取存储器 | |
US20220076095A1 (en) | Multi-level sparse neural networks with dynamic rerouting | |
US20210400286A1 (en) | Video Compression in Removable Storage Device having Deep Learning Accelerator and Random Access Memory | |
WO2022098495A1 (en) | Compiler configurable to generate instructions executable by different deep learning accelerators from a description of an artificial neural network | |
CN116134452A (zh) | 具有集成随机存取存储器的深度学习加速器中的优化传感器融合 | |
CN116210006A (zh) | 用于深度学习加速器和随机存取存储器的智能低功率模式 | |
CN116569178A (zh) | 具有可经由编译器优化的可配置硬件选项的深度学习加速器 | |
US20220044102A1 (en) | Fault tolerant artificial neural network computation in deep learning accelerator having integrated random access memory | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
US11574100B2 (en) | Integrated sensor device with deep learning accelerator and random access memory | |
US20220147813A1 (en) | Runtime optimization of computations of an artificial neural network compiled for execution on a deep learning accelerator | |
US20220147811A1 (en) | Implement the computation of an artificial neural network using multiple deep learning accelerators | |
Blott | Benchmarking neural networks on heterogeneous hardware | |
US20220358748A1 (en) | Object Detection with a Deep Learning Accelerator of Artificial Neural Networks | |
Jooya | GPGPU design space exploration using neural networks |
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 |