CN115136141A - 用于实现混合信号集成电路的受限计算的操作变换的系统和方法 - Google Patents
用于实现混合信号集成电路的受限计算的操作变换的系统和方法 Download PDFInfo
- Publication number
- CN115136141A CN115136141A CN202080081426.8A CN202080081426A CN115136141A CN 115136141 A CN115136141 A CN 115136141A CN 202080081426 A CN202080081426 A CN 202080081426A CN 115136141 A CN115136141 A CN 115136141A
- Authority
- CN
- China
- Prior art keywords
- graph
- different
- optimal
- sub
- computational
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24133—Distances to prototypes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/29—Graphical models, e.g. Bayesian networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/0499—Feedforward networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Neurology (AREA)
- Advance Control (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Complex Calculations (AREA)
Abstract
用于改善混合信号集成电路的计算性能的系统和方法包括识别主题应用的计算图的次优图分量,其中:(i)所述计算图包含表示计算操作的多个图形节点和表示所述图形节点之间的数据依赖性的多个图形边缘,并且(ii)所述次优图分量包含不满足最优操作阈值的所述多个图形节点和所述多个图形边缘的子集;在编译时,基于所述次优图分量内的第一激活函数的属性选择性地将优化变换应用于所述次优图分量,其中所述优化变换当被应用时将所述次优图分量变换为满足所述最优操作阈值的最优图分量;以及使用所述最优图分量代替所述次优图分量来重建所述计算图。
Description
相关申请的交叉引用
本申请要求2019年11月26日提交的美国临时申请号62/940,487、2019年2月20日提交的美国临时申请号62/978,910和2020年3月17日提交的美国临时申请号62/990,701的权益,这些申请通过该引用以其整体并入。
技术领域
本文描述的发明总体上涉及集成电路系统架构领域,并且更具体地,涉及新的和有用的智能集成电路以及在集成电路系统架构领域中利用智能集成电路进行计算的方法。
背景技术
如今,人工智能和机器学习的各种实现正在推动许多技术领域的创新。人工智能(AI)系统和人工智能模型(包括算法)由许多系统架构和模型定义,这些系统架构和模型能够实现机器(例如,计算机和/或计算服务器)的机器学习(深度学习)、推理、推断能力和大数据处理能力。这些AI系统和模型经常被密集地训练以执行一个或多个特定任务,例如自然语言处理、图像识别、规划、决策等。例如,这些AI系统和模型的子集包括人工神经网络模型。在许多情况下,人工神经网络模型的训练在整个训练周期中可能需要数千小时和许多万亿字节的训练数据,以在使用之前对模型的相关联神经网络算法进行微调。
然而,一旦被训练,神经网络模型或算法就可以被快速部署以基于当与训练周期期间使用的较大训练数据集相比时相对较小的数据集来做出推断以完成特定任务(例如,从语音输入数据中识别语音等)。由神经网络模型或算法基于较小的数据集做出的推断可以是关于神经网络模型计算为关于环境的正确答案或指示的预测。
然而,尽管实现一个或多个神经网络算法的神经网络模型可能不需要如在训练阶段中所需要的相同量的计算资源,但是在现场部署神经网络模型继续需要大量的电路系统面积、能量和计算能力来对数据进行分类并推断或预测结果。例如,加权和计算通常用于模式匹配和机器学习应用,包括神经网络应用。在加权和计算中,集成电路可以用于将输入(xi)的集合乘以权重(wi)的集合,并将每个乘法运算的结果相加,以计算最终结果(z)。然而,用于机器学习应用的典型加权和计算包括数百或数千个权重,这使得用传统数字电路系统计算加权和计算在计算上非常昂贵。具体而言,从数字存储器中访问数百或数千个权重需要大量的计算时间(即,增加的等待时间)和大量的能量。
因此,用于计算神经网络模型等的加权和计算所需的传统数字电路系统往往很大,以容纳用于存储神经网络模型所需的数十万个权重所需的大量数字存储电路系统。由于电路系统的大尺寸,需要更多的能量来实现许多传统计算机和电路的计算能力。
此外,用于实现人工智能模型和,即神经网络模型的这些传统计算机和电路可以适用于远程计算过程,例如在分布式计算系统(例如,云)中,或者当使用许多现场计算服务器等时。然而,当这些远程人工智能处理系统用于远程、边缘计算装置或现场装置的计算推理等时,等待时间问题是明显的。也就是说,当这些传统的远程系统寻求实现用于生成待在远程现场装置中使用的推断的神经网络模型时,在从远程现场装置接收输入数据中存在不可避免的延迟,因为输入数据必须经常在具有变化的带宽的网络上传输,并且随后,由远程计算系统生成的推断必须经由相同或类似的网络被传输回远程现场装置。此外,这些传统电路通常不能管理计算负载(例如,有限的存储和/或有限的计算),并且可能经常依赖于远程计算系统(例如,云)来执行计算密集型计算并存储计算数据(例如,原始输入和输出。因此,对于连续操作需要对远程计算系统(例如,云)的持续和/或连续访问(例如,24×7访问),这可能由于成本、基础设施限制(例如,有限的带宽、低等级通信系统等)等而不适用于许多应用。
在现场级(例如,在远程现场装置本地)实现AI处理系统可能是解决一些等待时间问题的建议的解决方案。然而,在边缘装置(例如,远程现场装置)处实现这些传统AI计算机和系统中的一些的尝试可能导致具有许多电路的庞大系统,如上所述,由于在处理数据和生成推断中使用的计算系统的所需的复杂架构,该庞大系统消耗大量能量。因此,这种没有更多内容的提议在当前技术的情况下可能是不可行的和/或不可持续的。
因此,需要一种可部署的系统,用于在现场本地实现人工智能模型(例如,本地AI),并且优选地在边缘装置中使用,所述可部署的系统不会导致大的、笨重的(边缘)装置,减少等待时间,并且具有必要的计算能力来实时地或基本上实时地进行预测或推断,同时还节能。
本申请的以下描述的实施例提供了能够解决用于实现AI和机器学习的传统系统和集成电路架构的缺陷的这类先进的和改进的集成电路和实现技术。
发明内容
在一个实施例中,一种用于改进混合信号集成电路的操作性能的方法包括实现一个或多个执行编译器程序的计算装置,所述编译器程序:(i)读入应用或程序的计算图;(ii)识别将所述混合信号集成电路的计算性能降低到低于性能阈值的计算图的低精度子分量;(iii)通过基于现有激活函数的操作属性选择性地对所述低精度子分量应用一个或多个不同的操作变换,将所述低精度子分量变换为高精度子分量,其中所述一个或多个不同的操作变换至少用不同的后续激活函数替换所述低精度子分量内的所述现有激活函数,其中所述高精度子分量内的所述不同的后续激活函数在最小精度阈值处或在高于所述最小精度阈值改善所述混合信号集成电路的所述计算性能;以及(iv)将所述计算图的所述高精度子分量分配给所述混合信号集成电路的一个或多个计算电路。
在一个实施例中,将所述低精度子分量变换为所述高精度子分量包括:通过基于所述不同的后续激活函数的操作属性修改所述混合信号集成电路的矩阵乘法加速器的权重值和偏差值中的一个或多个,来保持所述计算图的所述低精度子分量和所述高精度子分量之间的计算等效性。
在一个实施例中,所述计算图的所述低精度子分量包含来自所述集成电路的矩阵乘法加速器的受限数据类型输出,所述受限数据类型输出不能被分配给包括所述混合信号集成电路的所述一个或多个计算电路的一个或多个下游计算。
在一个实施例中,一种用于在混合信号集成电路中实现操作变换的方法包括识别主题应用或主题程序的计算图的次优图分量,其中:(i)所述计算图包含表示计算操作的多个图形节点和表示所述图形节点之间的数据依赖性的多个图形边缘,以及(ii)所述次优图分量包含不满足最优操作阈值的所述多个图形节点和所述多个图形边缘的子集;在编译时,基于所述次优图分量内的第一激活函数的属性选择性地将优化变换应用于所述次优图分量,其中所述优化变换当被应用时将所述次优图分量变换为满足所述最优操作阈值的最优图分量;以及使用所述最优图分量代替所述次优图分量来重建所述计算图。
在一个实施例中,将所述次优图分量变换为所述最优图分量包括:移除所述次优图分量内的所述第一激活函数;以及安装第二激活函数来代替所述第一激活函数。
在一个实施例中,将所述次优图分量变换为所述最优图分量进一步包括:基于所述第二激活函数的属性,增加或减少与所述混合信号集成电路的矩阵乘法加速器的一个或多个权重相关联的一个或多个偏差的值。
在一个实施例中,所述次优图分量包括两个或更多个不同的计算分支,其中所述两个或更多个不同的计算分支中的每一个产生不同的矩阵乘法加速器的不同输出;将所述次优图分量变换为所述最优图分量包括:(1)将所述两个或更多个不同计算分支中的每一个的所述不同矩阵乘法加速器中的每一个的网络操作合并成单个复合计算分支;(2)连接所述两个或更多个不同计算分支的所述不同矩阵乘法加速器的计算权重;以及(3)对所述两个或更多个不同计算分支的所述不同矩阵乘法加速器的计算偏差进行求和。
在一个实施例中,将所述次优图分量变换为所述最优图分量包括:移除所述次优图分量内的所述第一激活函数;以及安装第二激活函数来代替所述第一激活函数。
在一个实施例中,所述方法包括识别对所述混合信号集成电路的矩阵乘法加速器的受限数据类型输入,其中将所述次优图分量变换为所述最优图分量包括:通过用第二激活函数来增加所述次优图分量,将所述受限数据类型输入转换为对所述矩阵乘法加速器的合适数据类型输入,所述第二激活函数在对所述矩阵乘法加速器的输入之前被应用于所述受限数据类型。
在一个实施例中,所述计算图包含神经网络应用的计算流程,其中所述多个图形节点中的每一个涉及不同的网络计算操作,并且所述多个图形边缘中的每一个涉及一对不同的网络计算操作之间的依赖性。
在一个实施例中,所述最优操作阈值包含所述混合信号集成电路的一个或多个计算输出的最小精度。
在一个实施例中,所述最优操作阈值包含所述混合信号集成电路的计算性能的最低水平。
在一个实施例中,所述方法包括由所述编译器构建所述计算图包括将所述计算图翻译成中间表示,其中所述中间表示包含所述计算图的语义数据。。
在一个实施例中,所述方法包括识别对所述混合信号集成电路的模拟线性变换的受限数据类型输入,其中将所述次优图分量变换为所述最优图分量包括:通过用第二激活函数来增加所述次优图分量,将所述受限数据类型输入转换为对所述模拟线性变换的合适数据类型输入,所述第二激活函数在对所述模拟线性变换的输入之前被应用于所述受限数据类型。
在一个实施例中,所述次优图分量包含源计算节点,所述源计算节点计算对所述多个不同计算节点的受限数据类型输出;所述多个不同计算节点的子集具有数据类型限制,所述数据类型限制限制了对所述受限数据类型输出的接受;将所述次优图分量变换为所述最优图分量包括:在所述源节点和所述子集外的所述多个不同计算节点中的每一个之间的分支内,基于所述源计算节点内的第一激活函数的属性,减去预定的调整值,所述预定的调整值包含向量常数和所述多个不同计算节点的位范围一的位宽度的一半中的一个;以及在所述多个不同计算节点的所述子集中的每一个处的计算之后,从所述多个不同计算节点的所述子集中的每一个的计算输出中减去预定权重和常数的乘积,所述常数包含向量常数和所述多个不同计算节点的位范围一的位宽度的一半中的一个。
在一个实施例中,所述次优图分量包含源计算节点,所述源计算节点计算对多个不同计算节点的受限数据类型输出;所述多个不同计算节点的子集具有数据类型限制,所述数据类型限制限制了对所述受限数据类型输出的接受;将所述次优图分量变换成所述最优图分量包括:在所述多个不同计算节点的子集的分支内增加第二激活函数;以及在所述多个不同计算节点的所述子集中的每一个处的计算之后,从所述多个不同计算节点的所述子集中的每一个的计算输出中减去预定权重和常数的乘积,所述常数包含向量常数和所述多个不同计算节点之一的位宽度的一半中的一个。
在一个实施例中,所述次优图分量包含源计算节点,所述源计算节点计算对多个不同计算节点的受限数据类型输出;所述多个不同计算节点的子集具有数据类型限制,所述数据类型限制限制了对所述受限数据类型输出的接受;将所述次优图分量变换为所述最优图分量包括:在所述源节点和外部的所述多个不同计算节点的子集中的每一个之间的分支内,基于所述源计算节点内的第一激活函数的属性,增加预定的调整值,所述预定的调整值包含向量常数和所述多个不同计算节点之一的位范围的位宽度的一半中的一个;以及在所述多个不同计算节点的子集中的每一个处的计算之后,从所述多个不同计算节点的所述子集中的每一个的计算输出中减去预定权重和常数的乘积,所述常数包含向量常数和所述多个不同计算节点之的位范围一的位宽度的一半中的一个。
在一个实施例中,一种用于改善计算加速器的操作性能的方法包括实现执行编译器程序的一个或多个计算装置,所述编译器程序:(i)读入应用或程序的计算图;(ii)识别将所述计算加速器的操作性能降低到低于性能阈值的计算图的低精度子分量;(iii)通过基于现有网络操作的操作属性选择性地对所述低精度子分量应用一个或多个不同的操作变换,将所述低精度子分量变换为高精度子分量,其中所述一个或多个不同的操作变换至少用不同的后续网络操作替换所述低精度子分量内的现有网络操作,其中所述高精度子分量内的所述不同的后续网络操作将所述计算加速器的所述操作性能提高到等于或高于最小精度阈值;以及(iv)将所述计算图的所述高精度子分量分配给所述计算加速器的一个或多个计算电路。
在一个实施例中,所述计算加速器包含混合信号集成电路,并且所述计算图包含神经网络图。
附图说明
图1至1A示出了根据本申请的一个或多个实施例的智能集成电路100的示意图;
图2示出了根据本申请的一个或多个实施例的方法200的第一实施方式,所述方法用于实现一个或多个操作变换,使得能够在集成电路内进行性能计算;
图3示出了根据本申请的一个或多个实施例的方法200的第二实施方式,所述方法用于实现一个或多个操作变换,使得能够在集成电路内进行性能计算;
图4示出了根据本申请的一个或多个实施例的方法200的第三实施方式,所述方法用于实现一个或多个操作变换,使得能够在集成电路内进行性能计算;
图5示出了按照根据本申请的一个或多个实施例的第一实施方式的第一变换的示例性示意图;
图6示出了按照根据本申请的一个或多个实施例的第二实施方式的第二变换的示例性示意图;
图7示出了按照根据本申请的一个或多个实施例的第三实施方式的第三变换的示例性示意图;
图8示出了按照根据本申请的一个或多个实施例的第四实施方式的第四变换的示例性示意图;
图9示出了按照根据本申请的一个或多个实施例的第四实施方式的变型的第四变换的示例性示意图;并且
图10示出了按照根据本申请的一个或多个实施例的第四实施方式的第二变型的第四变换的示例性示意图。
具体实施方式
本申请的优选的实施例的以下描述并不旨在将本发明限制于这些优选的实施例,而是使本领域的任何技术人员能够做出和使用这些发明。
1.综述
在用于实施计算密集型程序或应用(例如,深度神经网络算法)等的传统集成电路中,典型的集成电路(IC)架构包括需要较大的面积和功率来操作和执行计算的相对较大的电路。这是因为处理数字信号(例如,二进制信号)通常需要电路的大且耗电的实现。因此,对于计算密集型程序的许多技术实现,例如人工智能模型,具有这些用于处理数字信号的大电路的所得的计算机IC也很大,因此不太可能包括在空间受限的边缘装置等中。
此外,在实现计算密集型应用(例如,神经网络模型)时,集成电路的大部分计算工作涉及执行数千至数百万次矩阵乘法。此外,在用于神经网络模型的数字信号处理中,还可以执行乘法-累加操作,其中计算两个数字的乘积,然后将该乘积添加到累加器。因此,当仅使用或主要使用数字电路系统来实现神经网络模型时,所得到的数字电路系统消耗大量的能量来执行计算并存储神经元的权重系数以及许多乘法-累加运算的所得乘积。
作为降低计算所需的功率和能够进行计算密集型处理的集成电路的整体尺寸的技术解决方案,包括提供混合信号计算架构,该架构可以利用极高面积效率的数模转换器(DAC)(而不是基本上很大或面积密集型的标准DAC)与集成电路的各种其他电路系统一起实施,以实现面积和能量效率。然而,对于计算密集型实现,使用传统DAC可实现的集成电路很可能需要非常大量的DAC(例如,数千个DAC)来实现匹配,并实现所需的速度和噪声性能。因此,虽然DAC架构的传统实现对于降低集成电路所需的能量和整体尺寸可能很有用,但这些DAC架构的传统实现可能不可行,因为可能需要大量DAC来处理计算密集型AI程序和应用。
然而,本申请的实施例通过以各种形式实现全局(参考信号源)DAC来至少解决上述技术问题,所述全局DAC与多个本地(输出)DAC进行可操作的通信和控制。本文描述的实施例用于通过能够在不消耗芯片上非常大的面积的情况下创建许多精确的DAC来解决混合信号计算架构的基本技术问题。相比之下,实施计算密集型程序等的现代DAC可通常变得很大,这是因为其各种部件的匹配限制,这决定了装置尺寸的下限。一旦DAC分辨率超过6-8位,这个技术问题就变得更加明显和棘手。因此,一旦在DAC的架构中考虑到噪声和速度,这些传统DAC可能就不具能效或尺寸效率。
在本申请的实施例中,全局(参考)DAC用作每个本地(镜像)DAC的信号源(在一些实施例中,唯一的参考信号源)。在优选的实施例中,本地DAC用于在多个时钟周期内串行累加由全局DAC产生的模拟参考信号。在这样的实施例中,通过每个本地DAC的累加到电容器或其他能量存储装置上,用于提供新的或总的输出(例如,表示参考信号的累加的电荷)。
因此,以上述方式实现全局DAC和多个本地DAC能够减少驱动本地DAC所需的高精度参考装置的数量,因为每个本地DAC通常将需要提供参考信号的相应专用参考装置。在传统DAC中,参考信号产生以及输出电路系统通常可能被集成在单个大型DAC中。因此,在本申请的几个实施例中,全局DAC用于向多个本地DAC中的每一个提供精确的源信号,因此改善了实现精确DAC的匹配要求,更具体地,改善了对多个参考信号源DAC驱动多个本地输出DAC的需要(例如,消除了一对一匹配)。因此,可以实现DAC架构面积的减少,以及允许边缘计算装置等在输入数据源本地执行包括AI计算的复杂和计算机密集型操作的计算机和功率效率。
1.1运算变换概述
由于混合信号计算架构的一个或多个独特的特性,并非纯数字实现中所有可能的操作在混合信号计算中都是可能的。具体而言,例如矩阵乘法加速器等的数字/模拟加速器可能具有输入和/或输出数据类型限制,这可能导致性能和/或精度显著下降或者无法直接执行期望的计算。在本申请的一个或多个实施例中,系统和/或方法可以包括网络图中的变换,其导致性能增强,例如但不限于,改进的准确度、减少的计算时间、减少的功率使用、增加的能量效率、改进的可用资源的利用等。现有的图网络变换不能处理混合信号计算的独特挑战。优选地,在一个或多个所公开的变换之后的网络图可以产生数学上相同或相似的结果。
为了增加混合信号集成电路的函数和/或提高其性能,图形编译器可以接收网络图或构建计算密集型应用或程序(例如,神经网络)的网络图。在一个或多个实施例中,图形编译器可以识别可以被变换成一个或多个图分量的图分量。在优化步骤中,所识别的图分量可以由图形编译器变换。可以执行相同和不同类型变换的多重变换。图形编译器可以基于对网络图的一个或多个分量应用一个或多个优化(如本文所述)来导出或构建应用或算法的新的计算图,用网络图分量的优化来重构所述网络图。图形编译器可以是经由硬件(例如,集成电路)实现的并且接收用户输入以执行本文所述的一个或多个优化操作的任何合适的软件。
附加地或替代地,在本申请的一个或多个实施例中,变换可以包括用HardSigmoid激活替换ReLU激活以及修改矩阵乘法偏差。在ReLU激活期间,所有负数的数字可被设置为零,这可能导致位范围的显著损失。在这类实施例中,变换可以涉及在矩阵乘法期间从偏差中减去大约一半的位范围,并且用HardSigmoid激活替换ReLU激活。这种偏差偏移连同HardSigmoid激活替换可以允许在混合信号计算环境中进行更精确的计算,因为先前的负数的数字被变换捕获,而不是被初始激活函数(即ReLU激活)丢弃。在非限制性实例中,如果计算是在无符号8位中执行的,则在HardSigmoid激活的情况下的偏差偏移可能是128。
根据实施例,一个或多个变换可以包括Fuse MMADot,其中多个MMADot被连接在一起,使得可以在矩阵乘法加速器(MMA)中执行相加。变换前,计算图中节点之间的每条边缘可以执行矩阵乘法,随后是HardTanh(节点),并且结果可以在加法运算中合并。在变换之后,每个支路可以具有连接在一起的各自的权重和偏差,并且权重和偏差的组合值可以用于完成矩阵乘法,其随后是ReLU激活。这种变换可以允许在矩阵乘法加速器中进行更多的计算,这可以导致MMA计算的提高的精度和集成电路的整体改善的性能。
根据又一个实施例,对矩阵乘法加速器的带符号的输入数据可以被转换成无符号的输入数据。矩阵乘法加速器的某些实施例可能无法处理带符号的输入数据。对于变换,可以经由HardSigmoid激活以及随后的矩阵乘法将带符号的数据转换成无符号的数据,其中偏差具有权重的总和乘以从偏差中减去的数据范围或位范围的一半。在非限制性的实例中,如果计算是8位,则新的偏差等于原始偏差减去权重之和乘以128。
2.基于图块的智能处理混合信号计算架构
如图1至1A所示,用于处理计算密集型程序和/或应用(例如,机器学习应用、神经网络等)的智能处理计算架构100(或者替代地在本文中被称为智能处理集成电路100)包括智能处理阵列105,所述智能处理阵列包括多个智能(计算)处理(图块)单元110、包括多个芯片上网络路由器125的芯片上网络系统120、集成电路控制器电路130、图块扇区控制器电路140和串行连接总线150,如在美国专利申请序列号16/458,917(其通过该引用以其整体并入本文)中所述。优选地,多个智能处理单元110中的每一个包括矩阵乘法加速器111(本文也可以被称为加速器电路)、计算机处理电路(例如,微处理器、纳米处理器等)112、流记分板(基于令牌的管理)模块114、单指令多数据(SIMD)单元116(例如,流算术逻辑单元等)和本地缓冲器(例如,静态随机存取存储器(SRAM)等)118。另外,在一个优选的实施例中,130、140和150中的每一个都可以包括计算机处理电路112、流记分板模块114、SALU 116和本地缓冲器118。在一个或多个实施例中,本地数据缓冲器118在本文中有时可以被称为图块上存储器或图块上缓冲器,其指示本地数据缓冲器118可以被布置在智能处理图块110内,并与智能处理图块110内的各种或一个或多个电路、部件和/或模块直接通信。图1A包括智能处理计算架构100的进一步详述的实施例,并且包括用于与智能处理阵列105接口的附加外围互连。例如,测试结构、监视器、模拟探针和/或任何合适的外围装置可以沿着智能计算架构100的智能处理阵列105的外围连接或者沿着所述外围布置。
3.一种用于实现操作变换的方法
如图2所示,一种用于在混合信号计算架构中实现一个或多个操作变换的方法200可以包括构建或接收有向计算图S210,识别所述有向计算图的次优图分量S220,实现优化变换S230,以及用优化来重构有向图S240。
应当注意,所述方法200的每个步骤可以在同一集成电路上或在集成电路部件的网络上并行执行。此外,每个步骤可以在同一集成电路上或者跨过集成电路的网络被细分。在非限制性实例中,在S230中执行的每个优化变换可以由集成电路的网络并行执行,并且S230的结果在S240中组合。在一个或多个实施例中,S210、S220、S230和S240中的任何一个或部分可以由软件、硬件(例如,集成电路)和固件的任何组合来执行。
在一个或多个实施例中,在S240中创建的经变换的网络(即,经变换的有向计算图)可以由混合信号计算装置加载,其中该加载可以是主机装置的推送、来自混合信号计算装置的拉取请求、自动更新或其中期望使混合信号计算装置加载经变换的网络的另一事件。
3.1构建或接收有向计算图
包括识别密集算法等的有向图的输入的S210可以用于接收图或构建示出应用或程序(例如,神经网络应用等)的一个或多个特征和/或操作的新的图。在一些实施例中,所述图可以表示神经网络应用,所述神经网络应用包含识别连接点和网络的操作的节点和边缘(例如,节点之间的数据的输入和输出流,输入的计算流以及沿着计算流的任务的执行)。在这类实施例中,节点可以表示不同的网络操作(或激活函数),并且节点之间的边缘可以表示网络操作之间的依赖性,例如,来自节点的输入和输出。在一个或多个实施例中,网络操作操作数可以是秩n的张量。应当注意,在一些实施例中,所述图可以用任何合适的数据结构或语言来描述,例如开放神经网络交换(ONNX)格式。
优选地,在一个或多个实施例中,S210或S210的子集可以由编译器(例如,图形编译器)执行。在一些实施例中,编译器可以驻留在计算装置或网络计算装置(例如,服务器、云计算等)上,或者可以由所述计算装置或网络计算装置实现。在这类实施例中,编译器可以与管理员交互地运行,或者可以由另一应用控制,或者由交互应用和另一应用的组合控制。在一些实施例中,编译器可以被配置为基于诸如网络图的寿命、神经网络内的事件、在其他应用中发生的事件或任何合适的事件或条件的特定条件来自动运行。优选地,在读取计算图之后,编译器可以将所述计算图翻译成中间表示(IR),其中IR捕获给定应用的计算图的语义。IR可以完全或部分地用于任何剩余步骤,例如步骤S220、S230和S240或本文所述的任何其他方法或技术。
3.2识别次优图分量
包括识别具有一个或多个性能减轻限制或条件的子图的S220
可以用于指定或标记有向图或计算图的一个或多个分量,所述有向图或计算图具有可能导致集成电路以次优方式(例如,在计算性能和/或能量消耗等方面效率低下)操作的属性或条件。在一些实施例中,图的属性或条件可以包括数据类型限制,例如符号性(即,具有正符号或负符号的字符或数值)。在一个或多个实施例中,图的属性或条件可以包括固有地以降低的精度进行计算、以额外或额外的步骤进行计算、或者会以其他方式降低给定的集成电路(例如,集成电路100)的计算效率的任何其他配置的特征。在一个或多个实施例中,一旦已经识别出一个或多个次优子图,S220就可以用于提取和/或解构一个或多个子图中的每一个,以用于不同的优化程序、操作和/或变换。
在一些实施例中,可以识别多种数据类型中的一种或多种,例如,带符号的(例如,用于负数值的负符号等)、无符号的、浮动的、固定的、字符、字符串、指针、阵列、结构、联合、类、变体和前述数据类型的组合,以及在混合信号计算期间可以以自然形式或变换形式使用的任何其他数据类型。应当注意,某些数据类型可能不能以直接方式完全或容易地处理,或者不能以其他方式应用于混合信号计算环境的某些配置。作为非限制性实例,矩阵乘法加速器的某些实施例可能无法利用带符号的输入数据进行计算。因此,在此类实例中,可能需要将带符号的输入数据转换成无符号的输入数据,以使矩阵乘法加速器能够针对输入进行有效计算。
在一些情况下,由于混合信号计算环境的各种硬件限制,某些计算可能比其他计算更精确。作为非限制性实例,由于ReLU激活函数将所有负值设置为零,在ReLU激活函数之后的矩阵乘法加速器操作可能会丢失大约一半的数据范围。实现本申请的一个或多个实施例可以通过改变矩阵乘法加速器的偏差以及用HardSigmoid激活函数替换ReLU激活函数来重新获得或保持全部范围的数据。在这类实施例中,HardSigmoid激活函数可以用于将具有符号性的输出值(即,负符号和负值)移出到正(位)范围。以这种方式,可仅提供沿着位范围的正值作为来自矩阵乘法加速器的输出,从而改进矩阵乘法操作的精度和/或准确度,因为在混合信号集成电路的后续或下游操作中考虑矩阵乘法加速器的所有带符号的(负符号)和无符号的(正)输出值。
附加地或替代地,由于混合信号计算环境中的模拟和数字块需要变化量的功率和计算时间,某些操作可以优选地在模拟或数字域中执行。作为非限制性实例,在含有在线性激活(例如,HardTanh激活)之后被求和在一起的多个并行分支的ResNet跳过链接的情况下,每个并行分支可以含有矩阵乘法加速器操作。在本申请的一个或多个实施例中,所述方法200可以用于将含有矩阵乘法加速器的并行分支的权重和偏差连接成单个矩阵乘法加速器,这可以提高加速器的精度,并且另外减少执行操作所需的时间和功率,如在以下部分中更详细描述的。
3.3优化变换
S230可以用于将图节点和边缘变换为可以利用扩展的容量和/或改进的性能执行的节点和边缘,所述S230包括利用优化变换将次优(例如,低精度,不满足最小精度阈值或最小精度状态的集成电路的测量的精度)子图分量转换为最优(例如,较高的精度,满足最小精度阈值或最小精度状态的集成电路的测量的精度)子图。在一个或多个实施例中,图分量的变换可以包括修改一个或多个参数,例如矩阵乘法加速器的偏差和权重。在一些实施例中,变换可以进一步包括替换、移除或添加激活函数,其中激活函数可以是包括线性激活和/或非线性激活的任何激活函数。
应当注意,只要获得有效的图形配置,就可以执行任何变换,例如,调整矩阵乘法加速器权重和偏差、连接参数、替换激活函数、在节点之间添加激活函数、将并行路径替换为单个路径、用多个并行路径替换串行路径等。该变换可以包括任何数量的节点和边缘,并且可以重复多次。
3.3.1ReLU到HardSigmoid变换
在第一实施方式中,包括实现一个或多个优化变换的S230可以用于识别指定/标记/标志的子图分量内的受限激活函数(例如,整流器线性单元(ReLU)变换),并且用改善集成电路的性能的第二(最优)激活函数(例如,HardSigmoid)来替换受限激活函数,如图2和5中的实例所示。在一个或多个实施例中,受限激活函数优选地涉及针对输出(或对激活函数的输入)进行相反计算的激活函数,使得输出的全部范围变得不可用。S230可以附加地或替代地包括调整加速器(例如,矩阵乘法加速器)的一个或多个特征,包括加速器的偏差项和权重(即,系数值)中的一个或多个。因此,在这类实施例中,S230可以用于调整或改变计算图的初始激活函数以及对加速器的一个或多个对应特征的调整。在一个或多个实施例中,初始激活函数在本文中可以替代地或附加地被称为第一激活函数或现有激活函数。
在该第一实施方式中,一个或多个优化变换可以用扩展给定集成电路的处理能力或输出的后继或新的激活函数来代替子图中的现有或现存激活函数。因此,在一个实例中,在神经网络的有向图的子图中发现的ReLU变换可以被替换或改变为HardSigmoid,使得负值不被自动转换为零,并且因此,实现例如HardSigmoid的后续激活函数通过保持负值而不是将负值转换为零来扩展或保持集成电路的可用输出。HardSigmoid中的hard指的是具有最大值的激活,该最大值对于上限范围可以保持不变,例如,对于所有上限范围,在8位无符号系统中为255。
应当注意,密集算法(例如,神经网络)的计算图的优化可以在训练之前或之后执行。例如,可以在训练底层机器学习算法(例如,神经网络)之前,执行可以在S230中执行的变换,所述变换包括用第二激活函数(例如,HardSigmoid激活)替换受限激活函数(例如,ReLU激活)。一旦完成了对机器学习模型的计算图的调整,机器学习算法可以用其结构中的优化变换来训练。替代地,对计算密集算法的计算图的调整可以在密集算法的训练之后执行。
因此,在此第一实施方式中,S230包括S232,其可以用于调整集成电路的加速器(例如,MMA)的一个或多个特征。在优选的实施例中,S232可以用于通过初始调整矩阵乘法加速器的一个或多个特征(包括矩阵乘法加速器的权重偏差项)来实现第二或替换激活函数,以代替给定的受限激活函数。在这类优选的实施例中,如在S232中实现的替换或最优激活函数可以用于通过减去期望的位宽度或范围的一半来调整矩阵乘法加速器的权重偏差项。应当注意,可以以任何合适的方式进行权重偏移项的调整,包括但不限于增加或减少权重偏差项。在非限制性实例中,在用于计算的期望位宽可以是范围为0到255的256位的情况下,最优激活函数可以从权重偏差项中减去期望位宽的一半,即128。附加地或替代地,矩阵乘法加速器的偏差项的实际调整或减小可以取决于增益和缩放因子。应当认识到,在上述实例中以及关于本文所述的所有其他非限制性实例,可以由使用本文所述的方法和技术优化的集成电路的计算单元(例如,MMA)采用任何合适的位宽度或位范围。例如,计算单元可以采用0-1023的位范围,使得位宽度的一半被计算为512。
在此第一实施方式的一个变型中,S232可以附加地或替代地用于通过添加或减去常数向量来调整矩阵乘法加速器的权重偏差项,所述常数向量可以是任何合适的常数值。附加地或替代地,S232可以用于通过添加或减去常数向量来调整加速器的权重偏差项,所述常数向量可以包括任何数量的常数值。
附加地或替代地,包括S234的S230可以用于用第二(最优)激活函数来替换第一激活函数,所述第二(最优)激活函数能够捕获全位范围。在非限制性实例中,由于将负数设置为零,ReLU激活函数可能丢失大约半个位范围,而HardSigmoid激活(例如,最优激活函数)可能允许全位范围,这可能导致使用密集算法或应用(例如,神经网络预测)的更精确计算。在此实例中,可以从子图中删除或移除ReLU激活,并将HardSigmoid添加到子图的计算中。
在使用中,S230可以任选地用于将第二激活函数分配给计算图的图分量。在优选实施例中,第二激活函数可以是HardSigmoid激活函数。HardSigmoid可以有效地增加所需位范围的一半,这抵消了在MMA的偏差下执行的位范围的一半的减少。任何激活函数都可以用于第二激活函数,包括线性激活函数和非线性激活函数之一或两者。
3.3.2MMA输出的融合
在S230的第二实施方式中,S230可以用于识别具有分支分量的总和的子图分量。每个分支可以使用线性激活函数(例如,HardTanh)或任何合适的激活函数来产生MMA输出。在一些实施例中,激活函数的输出可以被加符号并且可以被发送到SALU,所述SALU可以重新缩放输出,可以将输出相加,并且在一些实施例中,可以应用ReLU激活函数等。在一些实施例中,在对输出求和之后,可以应用任何合适的激活函数或不应用激活函数。
在此第二实施方式中,包括S232的S230可以用于将两个或更多个MMADot乘积融合(连接)成单个MMADot乘积,如通过图3和6中的实例所示。在融合期间,每个原始分支的每个权重被连接,并且每个原始分支的偏差可以被求和或被相加在一起。在非限制性实例中,可以通过对每个原始分支的权重求和来连接权重,并且可以通过将每个原始分支的偏差加在一起来对偏差求和。该连接可以通过任何数学运算来执行。应当注意,任何数量的分支都可以被融合在一起。
在此第二实施方式中,还包括S234的S230可以用于执行模拟线性变换。在非限制性实例中,模拟线性变换可以由MMA来执行,其中MMA的权重是原始分支的级联权重,并且偏差是如在先前步骤(即,S232)中计算的原始分支的附加偏差。
附加地或替代地,包括S236的S230可以用于用优化所应用的激活函数以及从MMA偏差中减去一半位范围的第二后继激活函数(例如,HardSigmoid)来替换第一现有激活函数(例如,ReLU)。在一些实施例中,这可以是与前面3.3.1节中描述的ReLU到HardSigmoid变换类似的变换。
3.3.3对MMA的带符号的输入
在S230的第三实施方式中,S230可以用于识别具有对矩阵乘法加速器的带符号的输入(即,数据类型限制)的子图分量,并且变换所述子图分量,使得对矩阵乘法加速器的输入是无符号的,如通过图4和7中的实例所示。在一些实施例中,随后改变混合信号计算参数的激活函数可以将一种数据类型(例如,带符号的)转换为另一种数据类型(例如,无符号的)。在矩阵乘法加速器的某些实施例中,其硬件可能不能处理带符号的数字(或受限制的数据类型),因此,为了在这类实施例中处理带符号的数字,在这类实施例中,方法200可以将带符号的数字转换成无符号的数字,以使MMA能够针对输入执行计算。
在此第三实施方式中,S230包括S232,S232可以用于将激活函数应用于具有数据类型限制的输入。对带符号的数字应用HardSigmoid激活函数可能会将输入的带符号的数字转换为无符号的数字。
此外,在第三实施方式中,S230包括S234,S234可以用于通过权重向量和常数向量的点积来调整偏差项。的每个元素可以被设置为大约一半位范围的值。在优选的实施例中,S234可以通过减去来实现对MMA权重偏差项的调整。在非限制性实例中,在用于计算的期望的位宽度(256位,范围0,255)的情况下,则中的每个元素都将是128。在另一个非限制性实例中,新的偏差是其中的每个元素被设置为128。
附加地或替代地,S230可以附加地或任选地用于应用MMA,其中通过权重向量和常数向量的点积来调整偏差。在具有期望的位宽度(256位,范围0,255)的非限制性实例中,MMA的偏差是其中的每个元素被设置为128。
尽管已经描述了偏差项b可以是MMA的常数,但是b可以用向量替换,并且b的每个实例可以用相应神经元的偏差(例如,)替换。附加地或替代地,在一些实施例中,运算变换可以包括用向量vec{b}替换偏差b,以及用矩阵matrix{W}替换权重w。
3.3.4对多个输入节点的单个输出
在S230的第四实施方式中,S230可以用于识别具有单个输出源(例如,源MMA)的子图分量,所述输出源可以将其生成的输出作为输入提供给多个下游计算节点或计算层。在一些实施例中,单个输出源可以用于生成具有数据类型限制的输出(例如,带符号的输出),该数据类型限制可能不被接受或不适合于多个下游计算节点的子集(例如,芯片外网络层等),并且可能不被接受或不适合于多个下游计算节点的不同子集。例如,源MMA可以用于生成我的多个下游计算节点可能需要的带符号的输出,其中下游计算节点的第一子集可以用于接受带符号的输入,而第二子集不能接受用于执行计算的带符号的输入。在一些实施例中,源MMA节点可以经由多个不同分支被连接至不同下游计算节点中的每一个,使得来自源MMA的任何输出可以沿着多个不同的分支中的每个分支被复制和传输到不同的下游计算节点。
如通过图8中的实例所示,在此第四实施方式中,包括S232的S230可以优选地用于用激活函数来增加子分量图,该激活函数可以将源MMA的带符号的输出转换成无符号的输出,该无符号的输出可以被具有数据类型限制的下游计算节点的子集接受。在此实施例中,S232可以用于删除或移除现有激活函数(例如,Hardtanh),并在源MMA内安装后续激活函数(例如,Hardsigmoid),该后续激活函数可以在源MMA的输出处应用并且可以最优地变换子图分量以用于改善的精度。结果,多个不同分支中的每一个都可以用于从源MMA接收无符号的输出的副本。
附加地或替代地,S232可以用于容纳接受带符号的输入的下游计算节点,S232可以用于从与接受带符号的输入的每个计算节点(例如,MMA)相关联的分支中减去半个位宽。
附加地或替代地,S230包括S234,S234可以用于通过权重向量和常数向量的点积来调整接收无符号的输入的计算节点的偏差项。的每个元素可以被设置为大约一半位范围的值。因此,在一些实施例中,如果位范围是0,255,则可以被设置为128。
在第四实施方式的第一变型中,包括S232的S230可以用于增强或以其他方式允许在源MMA内应用第一激活函数,该第一激活函数可以生成带符号的输出(例如,Hardtanh),如通过图9中的实例所示。在此第一变型中,S232可以用于在从源MMA延伸的需要无符号的输入的每个分支内安装或增加独立的激活函数(例如,Hardsigmoid等)。以这种方式,用于消除对需要无符号的输入的计算节点的数据限制的额外一个优化变换可以仅被定位于需要无符号的输入的特定分支,从而减轻在与可以接受带符号的输入的其他计算节点相关联的分支内增加调整值(例如,-1/2位范围等)的需求。
附加地或替代地,S230包括S234,S234可以用于通过权重向量和常数向量的点积来调整接收无符号的输入的计算节点的偏差项。的每个元素可以被设置为大约一半位范围的值。因此,在一些实施例中,如果位范围是0,255,则可以被设置为128。
在第四实施方式的第二变型中,包括S232的S230可以用于增加或以其他方式允许在源MMA内应用第一激活函数,该第一激活函数可以生成带符号的输出(例如,Hardtanh)。在此第二变型中,S232可以用于将位宽的一半增加或添加到与需要无符号的输入的计算节点相关联的分支中,如通过图10中的实例所示。例如,S232可以用于将位宽的一半添加到不同计算节点之前的分支中,其可以用于将带符号的输入移位到无符号的输入。在此第二变型中,二分之一位范围的增加或添加可以局限于从需要无符号的输入的源MMA延伸的不同分支。
附加地或替代地,S230包括S234,S234可以用于通过权重向量和常数向量的点积来调整接收无符号的输入的计算节点的偏差项。的每个元素可以被设置为大约一半位范围的值。因此,在一些实施例中,如果位范围是0,255,则可以被设置为128。
3.4用优化导出或重构有向图
S240,其可以用于包括实现由计算装置等执行的编译器,以在每个低精度或低性能子图分量处修改有向计算图,从而基于将在S230中识别的一个或多个优化变换应用于先前计算图的各种网络图分量中的一个或多个来导出或构造新的计算图。S240可以包括执行检查以确保一个或多个变换被正确执行。
在一些实施例中,导出或构建新的计算图可以包括用优化变换分量来重构计算图,所述优化变换分量可以用于替换一个或多个次优图分量。
附加地或替代地,S240可以用于将重构的计算图的分量分配给混合信号集成电路的计算单元。
4.实现智能处理的计算机程序产品
优选的实施例及其变型的系统和方法可以至少部分地被具体化和/或实现为被配置为接收存储计算机可读指令的计算机可读介质的机器。所述指令优选地由优选地与系统以及处理器和/或控制器的一个或多个部分集成的计算机可执行部件执行。计算机可读介质可以被存储在任何合适的计算机可读介质上,例如RAM、ROM、闪速存储器、EEPROM、光学装置(CD或DVD)、硬盘驱动器、软盘驱动器或任何合适的装置。计算机可执行部件优选地是通用或专用处理器,但是任何合适的专用硬件或硬件/固件组合装置可以替代地或附加地执行指令。
尽管为了简明而被省略,但是优选的实施例包括本文描述的各种方法的每个组合和排列。
如本领域技术人员将从前面的详细描述和附图以及权利要求中认识到的,可以对本发明的优选的实施例进行修改和改变,而不脱离在所附权利要求中限定的本发明的范围。
Claims (19)
1.一种用于改进混合信号集成电路的操作性能的方法,所述方法包含:
实现执行编译器程序的一个或多个计算装置,所述编译器程序:
(i)读入应用或程序的计算图;
(ii)识别将所述混合信号集成电路的计算性能降低到低于性能阈值的所述计算图的低精度子分量;
(iii)通过基于现有激活函数的操作属性选择性地对所述低精度子分量应用一个或多个不同的操作变换,将所述低精度子分量变换为高精度子分量,其中所述一个或多个不同的操作变换至少用不同的后续激活函数替换所述低精度子分量内的所述现有激活函数,其中所述高精度子分量内的所述不同的后续激活函数在最小精度阈值处或在高于所述最小精度阈值改善所述混合信号集成电路的所述计算性能;以及
(iv)将所述计算图的所述高精度子分量分配给所述混合信号集成电路的一个或多个计算电路。
2.根据权利要求1所述的方法,其中
将所述低精度子分量变换为所述高精度子分量包括:
通过根据所述不同的后续激活函数的操作属性修改所述混合信号集成电路的矩阵乘法加速器的权重值和偏差值中的一个或多个,来保持所述计算图的所述低精度子分量和所述高精度子分量之间的计算等效性。
3.根据权利要求1所述的方法,其中
所述计算图的所述低精度子分量包含来自所述集成电路的矩阵乘法加速器的受限数据类型输出,所述受限数据类型输出不能被分配给包括所述混合信号集成电路的所述一个或多个计算电路的一个或多个下游计算。
4.一种用于在混合信号集成电路中实现操作变换的方法,所述方法包含:
识别主题应用或主题程序的计算图的次优图分量,其中:
(i)所述计算图包含表示计算操作的多个图形节点和表示所述图形节点之间的数据依赖性的多个图形边缘,并且
(ii)所述次优图分量包含不满足最优操作阈值的所述多个图形节点和所述多个图形边缘的子集;
在编译时,基于所述次优图分量内的第一激活函数的属性选择性地将优化变换应用于所述次优图分量,其中所述优化变换当被应用时将所述次优图分量变换为满足所述最优操作阈值的最优图分量;以及
使用所述最优图分量代替所述次优图分量来重建所述计算图。
5.根据权利要求4所述的方法,其中
将所述次优图分量变换为所述最优图分量包括:
移除所述次优图分量内的所述第一激活函数;以及
安装第二激活函数来代替所述第一激活函数。
6.根据权利要求5所述的方法,其中
将所述次优图分量变换为所述最优图分量进一步包括:
基于所述第二激活函数的属性,增加或减少与所述混合信号集成电路的矩阵乘法加速器的一个或多个权重相关联的一个或多个偏差的值。
7.根据权利要求4所述的方法,其中:
所述次优图分量包括两个或更多个不同的计算分支,其中所述两个或更多个不同的计算分支中的每一个产生不同的矩阵乘法加速器的不同输出;
将所述次优图分量变换为所述最优图分量包括:
(1)将所述两个或更多个不同计算分支中的每一个的所述不同矩阵乘法加速器中的每一个的网络操作合并成单个复合计算分支;
(2)连接所述两个或更多个不同计算分支的所述不同矩阵乘法加速器的计算权重;以及
(3)对所述两个或更多个不同计算分支的所述不同矩阵乘法加速器的计算偏差进行求和。
8.根据权利要求7所述的方法,其中
将所述次优图分量变换为所述最优图分量包括:
移除所述次优图分量内的所述第一激活函数;以及
安装第二激活函数来代替所述第一激活函数。
9.根据权利要求4所述的方法,进一步包含:
识别对所述混合信号集成电路的矩阵乘法加速器的受限数据类型输入,
其中将所述次优图分量变换为所述最优图分量包括:
通过用第二激活函数来增加所述次优图分量,将所述受限数据类型输入转换成对所述矩阵乘法加速器的合适数据类型输入,所述第二激活函数在对所述矩阵乘法加速器的输入之前被应用于所述受限数据类型。
10.根据权利要求4所述的方法,其中
所述计算图包含神经网络应用的计算流程,其中所述多个图形节点中的每一个涉及不同的网络计算操作,并且所述多个图形边缘中的每一个涉及一对不同的网络计算操作之间的依赖性。
11.根据权利要求4所述的方法,其中
所述最优操作阈值包含所述混合信号集成电路的一个或多个计算输出的最小精度。
12.根据权利要求4所述的方法,其中
所述最优操作阈值包含所述混合信号集成电路的计算性能的最低水平。
13.根据权利要求4所述的方法,进一步包含:
由所述编译器来构建所述计算图包括将所述计算图翻译成中间表示,其中所述中间表示包含所述计算图的语义数据。。
14.根据权利要求4所述的方法,进一步包含:
识别对所述混合信号集成电路的模拟线性变换的受限数据类型输入,
其中将所述次优图分量变换为所述最优图分量包括:
通过用第二激活函数来增加所述次优图分量,将所述受限数据类型输入转换为对所述模拟线性变换的合适数据类型输入,所述第二激活函数在对所述模拟线性变换的输入之前被应用于所述受限数据类型。
15.根据权利要求4所述的方法,其中
所述次优图分量包含源计算节点,所述源计算节点计算对多个不同计算节点的受限数据类型输出;
所述多个不同计算节点的子集具有数据类型限制,所述数据类型限制限制了对所述受限数据类型输出的接受;
将所述次优图分量变换为所述最优图分量包括:
在所述源节点和所述子集外的所述多个不同计算节点中的每一个之间的分支内,基于所述源计算节点内的所述第一激活函数的属性,减去预定的调整值,所述预定的调整值包含向量常数和所述多个不同计算节点之一的位范围的位宽度的一半中的一个;以及
在所述多个不同计算节点的所述子集中的每一个处的计算之后,从所述多个不同计算节点的所述子集中的每一个的计算输出中减去预定权重和常数的乘积,所述常数包含向量常数和所述多个不同计算节点的位范围一的位宽度的一半中的一个。
16.根据权利要求4所述的方法,其中
所述次优图分量包含源计算节点,所述源计算节点计算对多个不同计算节点的受限数据类型输出;
所述多个不同计算节点的子集具有数据类型限制,所述数据类型限制限制了对所述受限数据类型输出的接受;
将所述次优图分量变换为所述最优图分量包括:
在所述多个不同计算节点的所述子集的分支内增加第二激活函数;以及
在所述多个不同计算节点的所述子集中的每一个处的计算之后,从所述多个不同计算节点的所述子集中的每一个的计算输出中减去预定权重和常数的乘积,所述常数包含向量常数和所述多个不同计算节点之一的位范围的位宽度的一半中的一个。
17.根据权利要求4所述的方法,其中
所述次优图分量包含源计算节点,所述源计算节点计算对多个不同计算节点的受限数据类型输出;
所述多个不同计算节点的子集具有数据类型限制,所述数据类型限制限制了对所述受限数据类型输出的接受;
将所述次优图分量变换为所述最优图分量包括:
在所述源节点和所述多个不同计算节点外部的所述子集中的每一个之间的分支内,基于所述源计算节点内的所述第一激活函数的属性,增加预定的调整值,所述预定的调整值包含向量常数和所述多个不同计算节点的位范围一的位宽度的一半中的一个;以及
在所述多个不同计算节点的所述子集中的每一个处的计算之后,从所述多个不同计算节点的所述子集中的每一个的计算输出中减去预定权重和常数的乘积,所述常数包含向量常数和所述多个不同计算节点之一的位范围的位宽度的一半中的一个。
18.一种用于改善计算加速器的操作性能的方法,所述方法包含:
实现执行编译器程序的一个或多个计算装置,所述编译器程序:
(i)读入应用或程序的计算图;
(ii)识别将所述计算加速器的操作性能降低到低于性能阈值的所述计算图的低精度子分量;
(iii)通过基于现有网络操作的操作属性选择性地对所述低精度子分量应用一个或多个不同的操作变换,将所述低精度子分量变换为高精度子分量,其中所述一个或多个不同的操作变换至少用不同的后续网络操作替换所述低精度子分量内的所述现有网络操作,其中所述高精度子分量内的所述不同的后续网络操作将所述计算加速器的所述操作性能提高到等于或高于所述最小精度阈值;以及
(iv)将所述计算图的所述高精度子分量分配给所述计算加速器的一个或多个计算电路。
19.根据权利要求19所述的方法,其中
所述计算加速器包含混合信号集成电路,并且所述计算图包含神经网络图。
Applications Claiming Priority (7)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201962940487P | 2019-11-26 | 2019-11-26 | |
| US62/940,487 | 2019-11-26 | ||
| US202062978910P | 2020-02-20 | 2020-02-20 | |
| US62/978,910 | 2020-02-20 | ||
| US202062990701P | 2020-03-17 | 2020-03-17 | |
| US62/990,701 | 2020-03-17 | ||
| PCT/US2020/053692 WO2021108031A1 (en) | 2019-11-26 | 2020-10-01 | Systems and methods for implementing operational transformations for restricted computations of a mixed-signal integrated circuit |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN115136141A true CN115136141A (zh) | 2022-09-30 |
Family
ID=74659158
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202080081426.8A Pending CN115136141A (zh) | 2019-11-26 | 2020-10-01 | 用于实现混合信号集成电路的受限计算的操作变换的系统和方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US10929748B1 (zh) |
| EP (1) | EP4066146A1 (zh) |
| CN (1) | CN115136141A (zh) |
| WO (1) | WO2021108031A1 (zh) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11586958B2 (en) * | 2020-04-06 | 2023-02-21 | Micron Technology, Inc. | Apparatuses, systems, and methods for machine learning using on-memory pattern matching |
| US20220051076A1 (en) * | 2020-08-12 | 2022-02-17 | Cognizant Technology Solutions U.S. Corporation | System and Method For Generating Parametric Activation Functions |
| KR102457154B1 (ko) * | 2021-06-16 | 2022-10-20 | 주식회사 모레 | 가속기에서 실행되는 프로그램에 대한 중간표현을 생성하는 방법 및 시스템 |
Family Cites Families (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6694492B1 (en) * | 2000-03-31 | 2004-02-17 | Ati International Srl | Method and apparatus for optimizing production yield and operational performance of integrated circuits |
| US7689942B2 (en) * | 2007-08-25 | 2010-03-30 | International Business Machines Corporation | Simultaneous power and timing optimization in integrated circuits by performing discrete actions on circuit components |
| US8949763B1 (en) * | 2007-10-02 | 2015-02-03 | Altera Corporation | Apparatus and methods for optimization of integrated circuits |
| US10229356B1 (en) * | 2014-12-23 | 2019-03-12 | Amazon Technologies, Inc. | Error tolerant neural network model compression |
| US10325202B2 (en) * | 2015-04-28 | 2019-06-18 | Qualcomm Incorporated | Incorporating top-down information in deep neural networks via the bias term |
| US10529418B2 (en) * | 2016-02-19 | 2020-01-07 | Hewlett Packard Enterprise Development Lp | Linear transformation accelerators |
| US10068140B2 (en) * | 2016-12-02 | 2018-09-04 | Bayerische Motoren Werke Aktiengesellschaft | System and method for estimating vehicular motion based on monocular video data |
| US10726514B2 (en) * | 2017-04-28 | 2020-07-28 | Intel Corporation | Compute optimizations for low precision machine learning operations |
| US10338919B2 (en) * | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
| US11423288B2 (en) * | 2017-07-18 | 2022-08-23 | Syntiant | Neuromorphic synthesizer |
| SG11202001591UA (en) * | 2017-08-30 | 2020-03-30 | Inpher Inc | High-precision privacy-preserving real-valued function evaluation |
| US12131250B2 (en) * | 2017-09-29 | 2024-10-29 | Intel Corporation | Inner product convolutional neural network accelerator |
| EP3667569B1 (en) * | 2017-10-20 | 2025-04-23 | Shanghai Cambricon Information Technology Co., Ltd | Processing method and device, operation method and device |
| US20190286972A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
| US12099912B2 (en) * | 2018-06-22 | 2024-09-24 | Samsung Electronics Co., Ltd. | Neural processor |
| WO2020150415A1 (en) * | 2019-01-16 | 2020-07-23 | Nasdaq, Inc. | Systems and methods of processing diverse data sets with a neural network to generate synthesized data sets for predicting a target metric |
| GB2581507B (en) * | 2019-02-21 | 2022-10-19 | Xmos Ltd | Logarithmic number system |
| US11604987B2 (en) * | 2019-03-22 | 2023-03-14 | Qualcomm Incorporated | Analytic and empirical correction of biased error introduced by approximation methods |
| US10789402B1 (en) * | 2019-05-01 | 2020-09-29 | Xilinx, Inc. | Compiler and hardware abstraction layer architecture for a neural network accelerator |
| WO2020257531A1 (en) * | 2019-06-18 | 2020-12-24 | The Regents Of The University Of California | Mixed-signal acceleration of deep neural networks |
| US20190392296A1 (en) * | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
| US20210133565A1 (en) * | 2019-10-31 | 2021-05-06 | Google Llc | Smooth Continuous Piecewise Constructed Activation Functions |
| CN113449858B (zh) * | 2020-03-27 | 2024-08-06 | 华为技术有限公司 | 一种神经网络模型的处理方法以及相关设备 |
-
2020
- 2020-10-01 CN CN202080081426.8A patent/CN115136141A/zh active Pending
- 2020-10-01 EP EP20891725.2A patent/EP4066146A1/en not_active Withdrawn
- 2020-10-01 US US17/060,338 patent/US10929748B1/en active Active
- 2020-10-01 WO PCT/US2020/053692 patent/WO2021108031A1/en not_active Ceased
-
2021
- 2021-01-15 US US17/149,843 patent/US20210287077A1/en active Pending
Also Published As
| Publication number | Publication date |
|---|---|
| US10929748B1 (en) | 2021-02-23 |
| EP4066146A1 (en) | 2022-10-05 |
| WO2021108031A1 (en) | 2021-06-03 |
| US20210287077A1 (en) | 2021-09-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20240005135A1 (en) | Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits | |
| US20250363187A1 (en) | Systems and methods for mapping matrix calculations to a matrix multiply accelerator | |
| JP2021072103A (ja) | 人工ニューラルネットワークの量子化方法とそのためのシステム及び人工ニューラルネットワーク装置 | |
| CN113159276B (zh) | 模型优化部署方法、系统、设备及存储介质 | |
| WO2017108399A1 (fr) | Circuit neuronal optimise, architecture et procede pour l'execution des reseaux de neurones | |
| CN115357554A (zh) | 一种图神经网络压缩方法、装置、电子设备及存储介质 | |
| CN115136141A (zh) | 用于实现混合信号集成电路的受限计算的操作变换的系统和方法 | |
| KR102886419B1 (ko) | 소프트맥스 연산 근사화 방법 및 장치 | |
| CN111448573A (zh) | 用于混合信号计算的系统和方法 | |
| US20230244921A1 (en) | Reduced power consumption analog or hybrid mac neural network | |
| CN118133905B (zh) | 一种轻量级目标检测神经网络的实现方法 | |
| Pan et al. | BitSET: Bit-serial early termination for computation reduction in convolutional neural networks | |
| CN110504716A (zh) | 光伏逆变器无功模式优化选择方法、终端设备及存储介质 | |
| WO2023113906A1 (en) | Analog mac aware dnn improvement | |
| US20200242473A1 (en) | Generic quantization of artificial neural networks | |
| KR102541462B1 (ko) | 이형 코어 아키텍처 기반의 캡슐 신경망 추론 장치 및 그 방법 | |
| Li et al. | Neuronquant: Accurate and efficient post-training quantization for spiking neural networks | |
| US11811416B2 (en) | Energy-efficient analog-to-digital conversion in mixed signal circuitry | |
| Yang et al. | CANET: Quantized neural network inference with 8-bit carry-aware accumulator | |
| CN119404194A (zh) | 变换器的模型定制以提高效率 | |
| Li et al. | An energy-efficient architecture of approximate softmax functions for transformer in edge computing | |
| EP3915055B1 (en) | Generic quantization of artificial neural networks | |
| Li et al. | An Efficient Sparse Hardware Accelerator for Spike-Driven Transformer | |
| Brils et al. | How to exploit sparsity in RNNs on event-driven architectures | |
| WO2020152571A1 (en) | Generic quantization of artificial neural networks |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20220930 |
|
| WD01 | Invention patent application deemed withdrawn after publication |