CN112149792A - 用于优化机器学习模型的执行的方法和设备 - Google Patents
用于优化机器学习模型的执行的方法和设备 Download PDFInfo
- Publication number
- CN112149792A CN112149792A CN202010229824.1A CN202010229824A CN112149792A CN 112149792 A CN112149792 A CN 112149792A CN 202010229824 A CN202010229824 A CN 202010229824A CN 112149792 A CN112149792 A CN 112149792A
- Authority
- CN
- China
- Prior art keywords
- layers
- matrix
- machine learning
- learning model
- packed
- 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; 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
- G06N3/045—Combinations of networks
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
Abstract
本文描述了用于优化机器学习模型的执行的方法和设备。公开了用于优化机器学习模型的执行的方法、设备、系统和制品。示例设备包括量化器,该量化器用于基于执行约束对模型的层进行量化,该模型的层由矩阵表示。打包器,该打包器用于打包矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层,该经打包的矩阵具有沿矩阵的行或列中的至少一者被一起编组的矩阵的非零值。分块器,该分块器用于通过将经打包的矩阵中的非零值划分成块来将经打包的层分块成经分块的层。融合器,该融合器用于将经分块的层融合到流水线中。封装器,该封装器用于将流水线封装成二进制件。
Description
技术领域
本公开总体上涉及机器学习,并且更具体地涉及用于优化机器学习模型的执行的方法和设备。
背景技术
包括机器学习(ML)、深度学习(DL)和/或其他人工机器驱动逻辑的人工智能(AI)使机器(例如计算机、逻辑电路等)能够使用模型来处理输入数据以便基于模型先前经由训练过程学习的模式和/或关联来生成输出。例如,可以利用数据来训练模型以识别模式和/或关联,并且在处理输入数据时遵循这样的模式和/或关联,使得(多个)其他输入导致与所识别的模式和/或关联一致的(多个)输出。
附图说明
图1是示例神经网络的示意性图示。
图2是用于优化机器学习模型的执行的示例系统的框图。
图3是具有将由异构硬件执行的节点组的示例神经网络的示意性图示。
图4是表示可被执行以实现图2的示例量化模型生成器的机器可读指令的流程图。
图5是表示示例流水线算法的框图。
图6是表示具有计算根的示例流水线算法的框图。
图7是表示具有量化根的示例流水线算法的框图。
图8是被构造用于执行图4中的指令以实现图2中的量化模型生成器的示例处理平台的框图。
这些图并未按比例绘制。一般来说,在整个附图和所附书面描述中将使用相同的附图标记来指代相同或相似的组件。
当标识可被分别引用的多个元素或组件时,本文使用描述符“第一”、“第二”、“第三”等。除非基于它们的使用上下文另有规定或理解,否则此类描述符并非旨在赋予优先级、物理次序或列表中的布置、或者时间顺序的任何含义,而仅仅是为了便于理解所公开的示例而用作分别指代多个元件或组件的标签。在一些示例中,描述符“第一”可以用于指代详细描述中的元素,而在权利要求中可以使用诸如“第二”或“第三”之类的不同描述符来指代相同的元素。在此类情况下,应当理解,此类描述符仅用于易于引用多个要素或组件。
具体实施方式
存在许多不同类型的机器学习模型和/或机器学习架构。机器学习模型的一个特定类型是神经网络。图1是示例神经网络100的示意性图示。在图1所图示的示例中,神经网络包括输入层、中间层和输出层,该输入层包括输入节点105、110、该中间层包括输入节点130、135、140、145,以及输出层包括输出节点170。在不失一般性的情况下,神经网络中的操作通常类似于yi=∑jwijxj,其中加权值(w)应用于输入值(x)并进行求和以产生输出值(y)。
存在神经网络结构的不同的变体。深度神经网络(DNN)是一种神经网络结构。是深度神经网络(DNN)。DNN通常包括多于一个中间层。当训练DNN模型时,将输入数据变换为某一输出,并使用损失或误差函数来比较模型预测的输出值是否接近期望值。然后,所计算的误差量通过使用随机梯度下降(或另一种训练算法)将该误差从输出传播回模型的输入,并且该过程再次重复,直到误差可接受地足够低或达到最大迭代数为止。在此训练过程中学习到的参数是连接每个节点的权重。在一些示例中,DNN中可能涉及到数百个、数千个、数万个等等的节点。
DNN架构通常对噪声(即权重值中的(多个)扰动)具有恢复力。在目前使用的许多DNN模型中,可能由于中心极限定理,权重通常遵循高斯分布。权重通常表示为浮点数。在一些示例中,此类权重的量化是可能的。例如,可以将权重量化为8位整数值,而没有可感知的模型准确性的损失。与未量化的模型相比,量化导致结约为其大小的四分之一的模型。更重要地,因为该模型使用较小的位宽(例如,8位值,而不是16位值、32位值、64位值、128位值等),所以该模型可以在支持此类较低位宽能力的硬件(例如,现场可编程门阵列(FPGA)、数字信号处理器(DSP)等)上以更优化的方式执行。此类硬件通常消耗更少的硬件资源(例如,功率),并且作为添加的益处,释放中央处理器的计算资源来执行其他任务。因此,可能通过利用这些量化的权重来实现更低的功率(并且在一些示例中,实现更高的吞吐量)。对于可能具有较慢和/或有限处理资源的嵌入式设备,模型大小精简是尤其重要的。存储、处理和能源成本的精简对任何机器都是关键的。
在诸如FPGA和粗粒度降低精度架构(CGRA)之类的平台中,使用甚至更加降低的精度(而不牺牲模型准确性)实现更小的网络是可能的。在一些量化方法中,在空间域中执行权重量化,这在某些情况下可能是限制的,因为权重范围对于特定范围可能太大并且量化可能导致准确性的损失。在一些其他量化方法中,即使权重的范围允许在8位范围内进行拟合,也可以期望减少权重以具有甚至更加降低的精度(例如,更少的位)。这是对于FPGA或CGRA和其他定制加速器的情况。
本文公开的示例方法使得能够将神经网络的某些层(或甚至整个神经网络)中的权重变换为替代表示,从而可以减小加权值。在一些示例中,对数尺度用于变换。在一些其他示例中,使用其他变换表示,诸如,频域映射、时频映射(例如,使用小波变换)等。此类利用替代表示的方法导致一些增加的复杂度,因为输入和权重都需要被变换成替代表示,而且变换会消耗能量。一旦变换完成,系统就需要尽可能多地进行此替代表示中的操作,以便在尽可能多的操作中分摊变换开销。
在本文所公开的示例中,将量化应用于模型可能导致包括多个零的权重和/或激活矩阵(例如,切断先前函数与当前函数之间的连接)。在一些示例中,重新排列权重或激活矩阵会导致更简单的处理。例如,代替密集矩阵乘法或通用矩阵乘法(GEMM)操作,量化可以导致带对角矩阵、特殊的稀疏矩阵结构,量化结果是更快且高效的GEMM操作和更小的存储需求。在一些示例中,将连接从一个函数混洗到另一个函数,会导致更高效的模型表示(例如,在更简单的计算图中)。在本文所公开的示例中,可以基于矩阵的稀疏度来作出是执行变换以在时域中进行操作还是在应用时频变换之后执行变换的选择。
图2是用于优化机器学习模型的执行的示例系统的框图。图2所图示的示例的示例系统200包括模型数据存储201、量化模型生成器210、和模型执行器215。示例模型数据存储201存储供示例模型执行器215执行的机器学习模型。
示例量化模型生成器210包括模型评估器220、模型分析器225、变换器230、量化器235、打包器240、分块器245、融合器250和封装器255。示例量化模型生成器210访问存储在模型数据存储210中的(多个)模型,并优化(多个)模型二进制件260以供模型执行器215执行。
示例模型执行器215包括程序270、调度器275和硬件280。在一些示例中,模型执行器215由与量化模型生成器210相同的硬件设备来实现。
图2所图示的示例中的示例模型数据存储201由用于存储数据的任何存储器、存储设备和/或存储盘(诸如例如闪存、磁介质、光学介质、固态存储器、(多个)硬盘驱动器、(多个)拇指驱动器等)实现。此外,存储在示例模型数据存储201中的数据可以是任何数据格式,诸如例如二进制数据、逗号分隔数据、制表符分隔数据、结构化查询语言(SQL)结构等。虽然在所图示的示例中,模型数据存储201被图示为单个设备,但本文所描述的示例模型数据存储201和/或任何其他数据存储设备可以由任何数量和/或类型的存储器实现。在图2所图示的示例中,示例模型数据存储器201存储将由模型执行器215执行的机器学习模型。所存储的机器学习模型可以是任何机器学习体系结构,诸如,神经网络、深神经网络(DNN)、递归神经网络(RNN)、卷积神经网络(CNN)等。
示例量化模型生成器210由诸如例如云计算服务器之类的服务器实现。然而,可以附加地或可替代地使用任何其他类型的计算设备。示例模型生成器210访问存储在示例模型数据存储201中的模型,并优化该模型以供模型执行器215执行。
图2所图示示例中的示例模型访问器220由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)、(多个)现场可编程逻辑器件(FPLD)、(多个)数字信号处理器(DSP)、(多个)粗粒度降低精度架构(CGRA)、(多个)图像信号处理器(ISP)等。
示例模型访问器220从示例模型数据存储201访问要被优化的模型。在本文所公开的示例中,该模型被表示为张量代数表达式(即,作用于n维阵列的数学公式)。示例模型访问器220可以响应于例如来自用户的指令、来自程序的要执行特定模型的指示等来访问该模型。
图2所图示示例中的示例模型分析器225由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。示例模型分析器225分析由模型访问器220访问的模型的经训练的参数/激活,以从模型推断(多个)加权量值。
图2所图示示例中的示例变换器230是由诸如例如硬件处理器的逻辑电路实现的。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。在一些示例中,示例变换器230对模型执行变换。在一些示例中,此类变换将模型变换成在对数尺度上操作。在一些其他示例中,该变换使用小波变换将模型变换成在频域或某一其他时频映射中操作。
图2所图示示例中的示例量化器230是由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。示例量化器235标识与模型的执行相关联的约束。在本文所公开的示例中,约束可以是用户提供的约束(例如,能耗偏好、在特定硬件上执行的偏好等)。在一些示例中,这些约束表示硬件约束(例如,位宽能力、存储器限制、是否启用8位值的快速指令、向量化、平铺(tiling)、ALU相比于FPU性能等)。示例量化器235标识(例如,选择)用于处理的模型的层,并基于约束来执行该层的量化。
量化将密集矩阵M映射到稀疏矩阵M',其中只有非零元素对y'i作出贡献。硬件加速器(诸如硬件280)分别地支持对有利于1D和/或2D空间存储器布置的向量化和/或平铺指令的执行。在本文所公开的示例中,使用对称线性量化函数。然而,可附加地或替代地使用任何其他量化方案。在一些示例中,在应用量化函数之前,每个操作数的值分布(例如,在DNN模型层内)被移位到适当的数量级。量化应用于模型的(多个)层的多个属性,包括加权、激活、梯度、和误差/损失函数(有时称为“WAGE”)。在一些示例中,量化也可用于渐进式训练的上下文中,其中损失函数不仅应用于在模型的末尾,还应用于块。在一些示例中,量化可以应用于模型的超参数,使得那些经量化的超参数用于模型的后续训练。例如,控制标定模型中有多稀疏的超参数可被量化,这进而有利于将来的量化操作。
图2所图示示例中的示例打包器240是由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。示例打包器240执行对经量化的层的打包。打包将矩阵的非零沿着矩阵的行或列中的至少一者放在一起。
图2所图示示例中的示例分块器245是由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。示例分块器245执行对经打包的层的分块。分块将矩阵中的非零划分成块。
图2所图示示例中的示例融合器250是由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。示例融合器250将模型的一个或多个经量化的/经打包的/经分块的层融合到流水线中。在本文所公开的示例中,使用关注领域专用语言(DSL)的分离来实现流水线。在本文公开的示例中,使用Halide编程语言。然而,可附加地或替代地使用任何其他编程语言。DSL类型的语言使算法能够独立于它们的执行的组织来描述,从而在算法做了什么和它如何具体地完成此硬件(例如,调度)之间提供了清晰的分离。具体而言,关于描述计算问题的Halide原理是将算法(例如,以设备独立的方式组合数学函数)与其调度(例如,函数之间的设备特定数据流)分离。
图2所图示示例中的示例封装器255是由诸如例如硬件处理器之类的逻辑电路实现。然而,可以附加地或替代地使用任何其他类型的电路,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。示例封装器255利用附加元数据封装二进制件260。示例封装器255输出机器二进制件(例如,可执行模型),该机器二进制件可以提前(AOT)与程序二进制件链接(生成“FAT”二进制件),或者动态地使用及时(JIT)编译并存储在高速缓存或文件系统中。在一些示例中,创建对应于模型的某些部分的多个机器二进制件。示例机器二进制件表示必须在多个设备上以特定顺序同步或异步执行的任务。此过程通过减少关于特定设备的数据移动来减少模型存储尺寸且还改善计算性能,并且这有助于编译器利用其标准优化轮次生成更加优化的代码。
在图2所图示的示例中,示例封装器255将(多个)二进制件260提供给模型执行器215以供执行。然而,在一些示例中,(多个)二进制件可以存储在模型数据存储201中,以使得模型执行器215能够随后(例如,稍后)执行经量化的模型。此类方法使得(多个)二进制件能够被分发到具有相似硬件资源280的多个不同模型执行器(例如,边缘设备)。以此方式,量化的益处可以由多个模型执行器设备215实现。
图2所图示示例的示例模型执行器215表示将利用机器学习模型来执行一些任务的计算设备。示例模型执行器215可以由例如膝上型计算机、台式计算机、智能电话、物联网(IoT)设备、嵌入式设备等来实现。如上文所述,示例模型执行器215包括程序270、调度器275、和硬件280。
图2所图示示例的程序270表示将使用机器学习模型的结果来执行一些任务(例如,图像识别、数据分类等)的应用。示例程序270例如可以预处理输入数据以提取由机器学习模型使用的特征,使得调度器275(例如,经由(多个)二进制件260)执行模型,和/或可以后处理结果以实现机器学习模型的执行结果。
图2所图示示例中的示例调度器275是由诸如例如硬件处理器的逻辑电路实现的。然而,可以附加地或替代地使用任何其他类型的电路系统,诸如例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)CGRA、(多个)ISP等。示例调度器275检查由示例封装器255提供的(多个)二进制件260,并调度其部分以用于在示例硬件280上执行。在本文所公开的示例中,示例调度器275使用由封装器255嵌入的附加元数据来协调对关于任务应在哪些设备上执行、应利用哪些资源来执行任务、应针对哪些预期量化误差来执行任务等的决策。此类元数据包括例如可以在其上执行模型和/或其部分的硬件描述、针对模型和/或其部分的所估计的存储器需求、执行模型和/或其部分所需的处理单元的数量、模型和/或其部分的量化误差等。该元数据是可扩展的,并且由调度器275使用该元数据来确定如何执行任务、在哪些硬件上以及利用哪些资源需求。
图2所图示示例的示例硬件280表示可用于执行机器学习模型和/或其部分的任何类型的硬件。示例硬件可以包括例如,一个或多个模拟电路或数字电路、逻辑电路、(多个)可编程处理器、(多个)ASIC、(多个)PLD、(多个)FPLD、(多个)可编程控制器、(多个)GPU、(多个)DSP、(多个)ISP、(多个)CGRA等。示例硬件280在调度器275的指示下执行机器学习模型和/或其部分。
图3是具有将由异构硬件执行的节点组的示例神经网络300的示意性图示。图3的示例神经网络300包括第一组节点310、第二组节点320、和第三组节点330。在异构系统中,DNN模型可以在多个不同的硬件设备上运行。示例程序270通常载有(和/或访问)具有通用精度的经训练的模型,该经训练的模型可以针对其在该系统上运行的所有设备而被拆分、量化和/或压缩。基于数据移动的复杂度和每个设备的算术吞吐量,可以并行地执行模型的部分(例如,节点组、层等),以(例如,通过流水线技术)隐藏存储器子系统之间的数据传输等待时间。此类方法实现比在一个设备上执行模型更高的性能。因此,可以并行地执行对第一组节点310和第三组节点330的执行。
在一些示例中,模型的部分可以由不同的设备更加高效地执行。此类设备可以使用低精度数据表示,例如在定点算术中那样。在图3所图示的示例中,第一组节点310由中央处理单元(CPU)执行。第二组节点320由图形处理单元(GPU)执行。第三组节点330由数字信号处理器(DSP)执行。因此,当接收到输入数据(例如,来自相机传感器的图像数据)时,原始(RAW)值可以被量化为10位宽或12位宽,对于CPU和GPU设备来说是非标准位宽,但其是ISP和DSP设备可以针对DNN模型中找到的卷积和其他信号处理操作进行高效处理的位宽。这些硬件块可以用作模型的一部分,并且它们的量化约束传播到网络的其余部分,使得DNN模型以尽可能最快的方式执行并且在这种情况下,甚至是在较低的功耗下执行。
尽管图2例示出实现示例量化模型生成器210的示例方式,但是图2中示出的元件、过程和/或设备中的一个或多个能以任何其他方式被组合、拆分、重新布置、省略、消除和/或实现。进一步地,图2的示例模型访问器220、示例模型分析器225、示例变换器230、示例量化器235、示例打包器240、示例分块器245、示例融合器250、示例封装器255和/或更一般地,示例量化模型生成器210可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,图2的示例模型访问器220、示例模型分析器225、示例变换器230、示例量化器235、示例打包器240、示例分块器245、示例融合器250、示例封装器255和/或更一般地,示例量化模型生成器210中的任何一个可以由一个或多个模拟或数字电路、逻辑电路、(多个)可编程处理器、(多个)可编程控制器、(多个)图形处理单元(GPU)、(多个)数字信号处理器(DSP)、(多个)专用集成电路(ASIC)、(多个)可编程逻辑器件(PLD)和/或(多个)现场可编程逻辑器件(FPLD)来实现。当阅读涵盖纯软件和/或固件实现的本专利的设备或系统权利要求中的任一项时,图2中的示例模型访问器220、示例模型分析器225、示例变换器230、示例量化器235、示例打包器240、示例分块器245、示例融合器250、示例封装器255和/或更一般地,示例量化模型生成器210中的至少一个由此被明确地限定为包括包含软件和/或固件的非暂态计算机可读存储设备或存储盘(诸如,存储器、数字多功能盘(DVD)、紧凑盘(CD)、蓝光盘等等)。此外,图2的示例量化模型生成器210可包括作为图2中所例示的那些的附加或替代的一个或多个元件、进程和/或设备,和/或可包括任何或所有所例示的元件、进程和/或设备中的多于一个。如本文使用的,短语“通信”包括其各种变体,包含直接通信和/或通过一个或多个中间组件的间接通信,并且不需要直接物理(例如,有线)通信和/或持续通信,而是附加地包括以周期性间隔、预定间隔、非周期性间隔、和/或一次性事件来进行的选择性通信。
在图4中示出了表示用于实现图2的量化模型生成器210的示例硬件逻辑、机器可读指令、硬件实现的状态机和/或其任何组合的流程图。机器可读指令可以是由计算机处理器执行的一个或多个可执行程序或可执行程序的(多个)部分,计算机处理器诸如结合图8在下文中所讨论的示例处理器平台800中示出的处理器812。虽然程序能具体化在存储于与处理器812关联的诸如CD-ROM、软盘、硬驱动器、DVD、蓝光盘或存储器之类的非暂态计算机可读存储介质上的软件中,但是全部程序和/或其部分可替代地由除处理器812之外的设备执行,和/或具体化在固件或专用硬件中。进一步地,虽然参考图4所图示的流程图描述示例程序,但是可替代地使用实现量化模型生成器210的许多其他方法。例如,可改变框的执行次序,和/或可改变、消除或组合所描述的框中的一些框。附加地或替代地,任何或所有框可以由被构造成在不执行软件或固件的情况下执行相应的操作的一个或多个硬件电路(例如,分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现。
本文中描述的机器可读指令可以以压缩格式、加密格式、片段格式、编译格式、可执行格式、封装格式等中的一种或多种来存储。本文描述的机器可读指令可以作为可用于创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码表示等)来存储。例如,机器可读指令可以被分段并被存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要安装、修改、适配、更新、组合、补充、配置、解密、解压缩、拆包、分发、重新分配、编译等中的一项或多项,以使得它们由计算设备和/或其他机器直接可读取、可解释、和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独压缩、加密并存储在单独的计算设备上,其中,这些部分在解密、解压缩和组合时形成实现如本文所述的程序的一组可执行指令。
在另一示例中,机器可读指令可以以它们可被计算机读取的状态存储,但是需要添加库(例如,动态链接库(DLL))、软件开发工具包(SDK)、应用编程接口(API)等,以便在特定的计算设备或其他设备上执行指令。在另一个示例中,在可整体或部分地执行机器可读指令和/或对应的(多个)程序之前,可能需要配置机器可读指令(例如,存储的设置、数据输入、记录的网络地址等)。因此,所公开的机器可读指令和/或对应的(多个)程序旨在包含此类机器可读指令和/或(多个)程序,而不管机器可读指令和/或(多个)程序在存储时或以其他方式处于静态或在传输中时的特定格式或状态如何。
本文所描述的机器可读指令可以由任何过去、现在或将来的指令语言、脚本语言、编程语言等表示。例如,机器可读指令可以用以下中任何一种语言来表示:C、C++语言、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、SWIFT、Halide等。
如上文所提及,可使用存储于非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)实现图4的示例过程,非暂态计算机和/或机器可读介质诸如,硬盘驱动器、闪存、只读存储器、紧凑盘、数字多功能盘、高速缓存、随机存取存储器和/或在其中存储信息达任何时长(例如,达扩展的时间段内、永久地、达简短的实例、用于临时缓冲和/或用于对信息进行高速缓存)的任何其他存储设备或存储盘。如本文中所使用,术语非暂态计算机可读介质被明确地限定为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号并排除传输介质。
“包含”和“包括”(及其所有形式和时态)在本文中用作开放式术语。因此,每当权利要求将任何形式的“包含”或“包括”(例如,包括、包含、包括有、包含有、具有等)用作前言或用于任何种类的权利要求叙述内时,要理解的是,附加的要素、项等可以存在而不超出对应权利要求或叙述的范围。如本文所使用的,当短语“至少”被用作例如与权利要求同步使用的过渡术语时是和术语“包含”和“包括”一样的开放式的。当例如以诸如A、B和/或C之类的形式使用术语“和/或”时,指的是A、B、C的任何组合或子集,诸如(1)单独的A、(2)单独的B、(3)单独的C、(4)A与B、(5)A与C、(6)B与C、以及(7)A与B与C。如本文在描述结构、组件、项目、对象和/或事物的上下文中所使用的,短语"A和B中的至少一个"旨在表示包括(1)至少一个A(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。类似地,如本文在描述结构、组件、项目、对象和/或事物的上下文中所使用的,短语“A或B中的至少一个”旨在表示包括(1)至少一个A(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。如本文在描述过程、指令、动作、活动和/或步骤的处理或执行的上下文中所使用的,短语“A和B中的至少一个”旨在表示包括(1)至少一个A(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。类似地,如本文在描述过程、指令、动作、活动和/或步骤的处理或执行的上下文中所使用的,短语“A或B中的至少一个”旨在表示包括(1)至少一个A、(2)至少一个B和(3)至少一个A和至少一个B中的任何一个的实现。
如本文所用,单数引用(例如,“一个(a)”、“一个(an)”、“第一”、“第二”等)不排除复数。本文所使用的术语“一个(a或an)”实体是指该实体中的一个或多个。术语“一个(a)”(或“一个(an)”)、“一个或多个”和“至少一个”可以在本文中互换使用。此外,尽管单独列出,但多个装置、元件或方法动作可由例如单个单元或处理器来实现。另外,虽然各个特征可以被包括在不同的示例或权利要求中,但是这些特征可能被组合,并且在不同的示例或权利要求中的包含并不意味着特征的组合是不可行和/或不是有利的。
图4是表示可被执行以实现图2的示例量化模型生成器的机器可读指令的流程图。当示例模型访问器220访问要被优化的模型时,图4的示例过程400开始。(框405)。在本文所公开的示例中,该模型被表示为张量代数表达式(即,作用于n维阵列的数学公式)。示例模型分析器225分析模型的经训练的参数/激活以推断(多个)加权量值。(框410)。在一些示例中,由示例变换器230执行变换。(框415)。在一些示例中,变换将模型变换为在对数尺度上操作。在一些示例中,该变换使用小波变换将模型变换成在频域或其他时频映射中操作。
示例量化器235标识与模型的执行相关联的约束。(框418)。在本文所公开的示例中,约束可以是用户提供的约束(例如,能耗偏好、在特定硬件上执行的偏好等)。在一些示例中,这些约束表示硬件限制(例如,位限制、存储器限制、是否启用8位值的快速指令、向量化、平铺、ALU相比于FPU性能等)。示例量化器235标识(例如,选择)模型的层以用于处理。(框420)。
示例量化器235基于约束来执行层的量化。(框430)。量化将密集矩阵M映射到稀疏矩阵M',其中只有非零元素对y'i作出贡献。硬件加速器分别包含有利于1D或2D空间存储器布置的向量化和平铺指令。在本文所公开的示例中,使用对称线性量化函数。然而,可附加地或替代地使用任何其他量化方案。在一些示例中,在应用量化函数之前,每个操作数的值分布(例如,在DNN模型层内)被移位到适当的数量级。
在本文所公开的示例中,使用对称线性中平(mid-tread)量化。使用这种量化方法确保神经网络的连接性被保持达到量化效率。具体而言,DNN模型层中的0参数值意味着与前一层的连接被切断,并且必须被保持。本文所公开的示例方法也适用于其他量化方案,只要在层中使用的参数、输入、和函数被适当地移位和缩放以保持该0值属性。
然后,示例打包器240执行对经量化的层的打包。(框440)。包装将矩阵的非零沿着矩阵的行或列放在一起。然后,示例分块器245执行对经打包的层的分块。(框450)。分块将非零划分成块。作业调度将行、列或块中的非零作为作业调度给某些“机器”,这些机器是具有相同逻辑的硬件单元,将并行地处理这些非零。在本文所公开的示例中,打包和分块操作是对W和X的子矩阵的索引的操作。然后可以并行地执行这些重新排序的子矩阵乘法和加法。
示例量化器230确定是否有任何附加层以用于处理。(框460)。如果存在用于处理的附加层(例如,框460返回“是”的结果),则控制前进到框420,其中重复框420到框460,直到没要附加的层要被处理(例如,直到框460返回“否”的结果)。然后,示例融合器250融合模型的一个或多个经量化的/经打包的/经分块的层。(框470)。
在本文所公开的示例中,这些层融合到流水线中。在本文所公开的示例中,使用关注领域专用语言(DSL)的分离来实现流水线。在本文公开的示例中,使用Halide编程语言。然而,可附加地或替代地使用任何其他编程语言。DSL类型的语言使算法能够独立于它们的执行的组织来描述,从而在算法做了什么和它如何具体地完成此硬件(例如,调度)之间提供了清晰的分离。具体而言,描述计算问题的Halide原理是将算法(例如,以设备独立的方式组合数学函数)与其调度(例如,函数之间的设备特定数据流)分离。
通常,这些DSL的调度侧提供一套执行各种变换的操作,包括改变访问模式(例如,分割、融合、平铺、展开)、并发执行(例如,并行化、向量化、通用图形处理单元(GPGPU)块/线程等)存储器相关操作(存储、重新排序存储等)等。当此类算法被组合成更大的流水线时,调度语言(例如,Halide)可用于描述计算在何处发生和结果存储在何处(计算/存储根、特定的循环嵌套维度下的计算/存储)。
在本文所公开的示例中(例如,利用Halide),默认行为是将所有算法级一起包括(融合)到单个计算中。可以在调度中使用“计算根”来为给定级创建中间结果,从而创建临时缓冲器,该缓冲器由后续级执行填充。这通常是为了改善稍后计算的存储器局部性,因为将许多计算融合在一起会导致不合理的访问模式和较差的性能。本文所公开的示例方法利用“计算根”架构上的变体,这更好地处理量化。
当融合器250将层融合到流水线中时,可以插入量化根(q根)(例如,可以以与计算根相同的方式插入)。与计算根相反,在量化根中,只有所得到的缓冲器基于指定的量化函数集合。当使用量化根时,中间缓冲器数据(例如,基于量化结果)被量化并被打包到可能与原始算法边界不同的存储器布局中。例如,量化函数可导致大量零值。如果知道对零值的后续处理将始终累积到零结果,则在后续级剔除这些零输入将导致减少的处理开销。
对这些零输入的剔除由融合器250通过将计算的稀疏表示转换为中间结果的密集表示来完成。存在稀疏数据表示可以跨网络的多个层被继承的场景。在量化级之后,可能存在变为零且需要被剔除的附加元素。类似地,可能存在需要被添加到稀疏数据结构中的更多非零元素。
当确定后续级不需要此派生的稀疏布局时,使用映射函数来从经量化和经重新打包的中间层解析存储器访问。可以通过指定计算根调度指令来完成往回向密集矩阵表示的转换。在任何情况下,转换总是在流水线的最终输出级处完成。从密集表示到稀疏表示的映射可以通过将参数添加到向量化根指令来指定,该向量化根指令指示如果在量化之后存在足够的稀疏性时,则偏好稀疏矩阵。如果需要,可以一直添加用于进行转换的显式指令。
此类融合方法使得量化和数据重新排序对用户透明,并且因此通过允许量化和数据减少作为调度原语库中的“混入(drop-in)”特征来保持DSL的简单性。量化根指令还可用于指定权重至网络的每一层处的特定数据类型(诸如float32、float1、bfloat16、int8、int4等)的分派。
在一些示例中,当需要对权重和输入进行变换时,可以应用类似的方法。可以使用变换根(它是计算根的扩展)。变换根指令使调度器275生成一个或多个中间缓冲器,在该一个或多个中间缓冲器中,经变换的权重和输入(中间)数据将被打包。经变换的数据可用于多个层。在一些示例中,一旦数据被变换回原始域,就可以丢弃经转换的数据。
如上文所述,诸如打包、分块、融合等之类的技术减少了此特定硬件的代码。示例封装器255利用附加元数据封装二进制260。(框480)。示例封装器255输出机器二进制件(例如,可执行模型),该机器二进制件可以提前(AOT)与程序二进制件(生成“FAT”二进制件)链接,或者动态地使用及时(JIT)编译并存储在高速缓存或文件系统中。在一些示例中,创建对应于模型的某些部分的多个机器二进制件。示例机器二进制件表示必须在多个设备上以特定顺序同步或异步执行的任务。
附加的元数据使调度器275能够协调关于任务应在哪些设备上执行、应利用哪些资源执行任务、应针对哪些预期量化误差来执行任务等的决策。此类元数据包括例如可以在其上执行模型和/或其部分的硬件描述、针对模型和/或其部分的所估计的存储器需求、执行模型和/或其部分所需的处理单元的数量、模型和/或其部分的量化误差等。该元数据是可扩展的,并且由调度器275使用该元数据来确定如何执行任务、在哪些硬件上以及利用哪些资源需求。
在本文所公开的示例中,示例打包器255针对多个对应的硬件生成多个二进制件。生成多个二进制件使调度器275能够监测硬件280的可用性和/或吞吐量,并选择适当的二进制件在最佳可用硬件上运行。
图5是表示示例流水线算法500的框图。示例流水线算法500接收输入505和卷积权重510。然后,示例流水线使用卷积函数520、激活函数530和池化函数580来处理输入和权重,以创建存储在输出缓冲器590中的输出。函数520、530、580使用Halide函数来实现。然而,可附加地或替代地使用任何其他编程语言。
图6是表示具有计算根的示例流水线算法600的框图。示例流水线算法600接收输入605和卷积权重610。然后,示例流水线使用卷积函数620、激活函数630和池化函数680来处理输入和权重,以创建存储在输出缓冲器690中的输出。图6建立在图5之上,并且指示激活函数630被调度为计算根。以此方式,卷积函数和激活函数被融合在一起,以在激活函数630与池化函数680之间产生中间缓冲器640。
图7是表示具有量化根的示例流水线算法700的框图。示例流水线算法700接收输入705和卷积权重710。然后,示例流水线700使用卷积函数720、激活函数730和池化函数780来处理输入和权重,以创建存储在输出缓冲器790中的输出。示例激活函数730被调度为量化根732。如上文所述,量化根执行与(图6的)计算根类似的功能,除了可以通过量化和打包/平铺变换来减小中间缓冲器尺寸。在此,由于必须实现给定层的实际值以执行量化,因此所描述的通用流程需要对图进行部分即时(JIT)计算。当激活函数应用量化根732时,激活函数的输出被实现到临时缓冲器,并通过由调度调用指定的量化函数734传递。
量化函数734应用于层数据以创建箱的集合736。接下来,应用打包和平铺变换738(也由调度调用提供)。打包决策可以基于(例如,存储在箱736中的)箱值,使得可以针对特定的打包/平铺模式选择特定的箱。在图7所图示的示例中,从经打包的表示中剔除一个或多个值(例如,零箱中的值)。中间缓冲器(例如,来自图6中的中间缓冲器640)的缓冲器尺寸将被减少达落在零箱内的有序元组的数量,这定义了中间的、精简缓冲器740的新边界。然后,使用重新映射的存储函数742将激活函数的算法定义的索引重新映射到新布局,使得存储被打包到不需要的数据被剔除的精简缓冲器740中。
使用重新映射的加载函数744来同样地重新映射后续池化级的算法定义的索引,使得池化函数780正确地将数据从精简缓冲器740中加载出来。在一些示例中,一旦对给定层执行了量化,则重映射函数742、744被“烘焙(bake)”到流水线中,并且除非明确地指示这样做,否则不调用量化处理。在量化之前,中间缓冲器的边界未定义,因此,需要针对调度中的每个量化根重新编译流水线。
图8是被构造用于执行图4中的指令以实现图2中的量化模型生成器210的示例处理器平台800的框图。处理器平台800可以是例如服务器、个人计算机、工作站、自学习机(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(PDA)、互联网设备或任何其他类型的计算设备。
所图示示例的处理器平台800包括处理器812。所图示示例的处理器812是硬件。例如,处理器812可以由来自任何所需要的系列或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或控制器实现。硬件处理器可以是基于半导体的(例如,硅基)器件。在此示例中,处理器实现示例模型评估器220、示例模型分析器225、示例变换器230、示例量化器235、示例打包器240、示例分块器245、示例融合器250和示例封装器255。
所图示示例的处理器812包括本地存储器813(例如,高速缓存)。所图示示例的处理器812经由总线818与包括易失性存储器814和非易失性存储器816的主存储器进行通信。易失性存储器814可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、动态随机存取存储器和/或任何其他类型的随机存取存储器设备实现。非易失性存储器816可由闪存和/或任何其他所期望类型的存储器设备实现。由存储器控制器控制对主存储器814、主存储器816的访问。
在所图示示例中,一个或多个输入设备822被连接至接口电路820。(多个)输入设备822准许用户将数据和/或命令输入至处理器812中。(多个)输入设备可以由例如音频传感器、麦克风、相机(静止的或视频)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等点鼠标(isopoint)和/或语音识别系统实现。
一个或多个输出设备824也被连接至所图示示例的接口电路820。输出设备824可例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、面内切换(IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器实现。因此,所图示示例的接口电路820典型地包括图形驱动器卡、图形驱动器芯片和/或图形驱动器处理器。
所图示的示例的接口电路820还包括诸如发射机、接收机、收发机、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进经由网络826与外部机器(例如,任何种类的计算设备)交换数据。通信可经由例如以太网连接、数字订户线路(DSL)连接、电话线连接、同轴电缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等。
所图示示例的处理器平台800还包括用于存储软件和/或数据的一个或多个大容量存储设备828。此类大容量存储设备828的示例包括软盘驱动器、硬驱动器盘、紧凑盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统和数字多功能盘(DVD)驱动器。
图4的机器可执行指令832可以被存储在大容量存储设备828中,存储在易失性存储器814中,存储在非易失性存储器816中,和/或存储在诸如CD或DVD的可移除非暂态计算机可读存储介质上。
从前述内容将理解,已经公开了能够优化机器学习模型的执行的示例方法、设备和制品。所公开的方法、设备和制品通过量化DNN模型的参数和实现基于硬件特定特征对操作高效调度来改善使用计算设备的效率。使用本文所公开的示例,可以由不同的硬件资源执行模型,从而使模型执行能够利用系统上的附加的硬件资源,从而增加执行模型的吞吐量。因此,复杂的DNN模型可以在具有较少的硬件资源的设备上执行,从而使较小和/或较低功率的设备能够用于执行机器学习模型。此外,DNN模型执行可适于执行模型的设备处的硬件改变。例如,硬件改变功率状态(例如,用于保持电池),模型可以由不同的硬件设备执行和/或可以调整模型的质量(例如,量化的水平)以保持实时性能。所公开的方法、设备和制品相应地涉及计算机功能的一个或多个改善。
示例1包括一种用于优化机器学习模型的执行的设备,该设备包括量化器,该量化器用于基于执行约束来量化机器学习模型的层,机器学习模型的层由矩阵表示;打包器,该打包器用于打包矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层,经打包的矩阵具有沿矩阵的行或列中的至少一者被一起编组的矩阵的非零值;分块器,该分块器用于将经打包的层分块成经分块的层,分块通过将经打包的矩阵中的非零值划分成块来执行;融合器,该融合器用于将经分块的层融合到流水线中;以及封装器,该封装器用于将流水线封装成二进制件。
示例2包括示例1的设备,其中,执行约束是硬件约束。
示例3包括示例2的设备,其中,硬件约束表示用于执行机器学习模型的硬件设备的位宽能力。
示例4包括示例1的设备,其中,融合器进一步用于将量化根插入到流水线中。
示例5包括示例4的设备,其中,量化根用于使调度器将激活函数的结果量化到箱的集合中,打包箱的值以创建精简缓冲器,并经由重新映射的加载函数将精简缓冲器提供给池化函数。
示例6包括示例1的设备,进一步包括变换器,该变换器用于在量化器对层进行量化之前执行机器学习模型的层的变换。
示例7包括至少一种包括指令的非暂态机器可读存储介质,当该指令被执行时,使至少一个处理器至少用于:基于执行约束来量化机器学习模型的层,机器学习模型的层由矩阵表示;打包矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层,经打包的矩阵具有沿矩阵的行或列中的至少一者被一起编组的矩阵的非零值;将经打包的层分块成经分块的层,该分块通过将经打包的矩阵中的非零值划分成块来执行;将经分块的层融合到流水线中;以及将流水线封装成二进制件。
示例8包括示例7的至少一个机器可读存储介质,其中,执行约束是硬件约束。
示例9包括示例8的至少一个机器可读存储介质,其中,硬件约束表示用于执行机器学习模型的硬件设备的位宽能力。
示例10包括示例7的至少一个机器可读存储介质,其中,当该指令被执行时,进一步使至少一个处理器用于将量化根插入到流水线中。
示例11包括示例10的至少一个机器可读存储介质,其中,量化根用于使调度器将激活函数的结果量化到箱的集合中,打包箱的值以创建精简缓冲器,并经由重新映射的加载函数将精简缓冲器提供给池化函数。
示例12包括示例7的至少一个机器可读存储介质,其中,当指令被执行时,使至少一个处理器在对层进行量化之前执行机器学习模型的层的变换。
示例13包括一种用于优化机器学习模型的执行的方法,该方法包括:基于执行约束来量化机器学习模型的层,机器学习模型的层由矩阵表示;打包矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层,经打包的矩阵具有沿矩阵的行或列中的至少一者被一起编组的矩阵的非零值;将经打包的层分块成经分块的层,分块通过将经打包的矩阵中的非零值划分成块来执行;将经分块的层融合到流水线中;以及将流水线封装成二进制件。
示例14包括示例13的方法,其中,执行约束是硬件约束。
示例15包括示例14的方法,其中,硬件约束表示用于执行机器学习模型的硬件设备的位宽能力。
示例16包括示例13的方法,其中,将经分块的层融合到流水线包括将量化根插入流水线。
示例17包括示例16的方法,其中,量化根用于使调度器将激活函数的结果量化到箱的集合中,打包箱的值以创建精简缓冲器,并经由重新映射的加载函数将精简缓冲器提供给池化函数。
示例18包括示例13的方法,进一步包括在对层进行量化之前执行机器学习模型的层的变换。
示例19包括一种用于优化机器学习模型的执行的设备,该设备包括:用于基于执行约束来量化机器学习模型的层的装置,机器学习模型的层由矩阵表示;用于打包矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层的装置,经打包的矩阵具有沿矩阵的行或列中的至少一者被一起编组的矩阵的非零值;用于将经打包的层分块成经分块的层的装置,分块通过将经打包的矩阵中的非零值划分成块来执行;用于将经分块的层融合到流水线中的装置;以及用于将流水线封装成二进制件的装置。用于量化的示例装置由示例量化器235实现。用于打包的示例装置由示例打包器240实现。用于分块的示例装置由示例分块器245实现。用于融合的示例装置由示例融合器250实现。用于封装的示例装置由示例包装器255实现。
示例20包括示例19的设备,其中,执行约束是硬件约束。
示例21包括示例20的设备,其中,硬件约束表示用于执行机器学习模型的硬件设备的位宽能力。
示例22包括示例19的设备,其中,将经分块的层融合到流水线包括将量化根插入流水线。
示例23包括示例22的设备,其中,量化根用于使调度器将激活函数的结果量化到箱的集合中,打包箱的值以创建精简缓冲器,并经由重新映射的加载函数将精简缓冲器提供给池化函数。
示例24包括示例19的设备,进一步包括用于在对层进行量化之前执行机器学习模型的层的变换的装置。用于执行变换的示例装置由示例变换器230实现。
尽管本文中已公开了某些示例方法、设备和制品,但本专利涵盖的范围并不限于此。相反,本专利涵盖落入本专利权利要求范围内的全部方法、设备和制品。
所附的权利要求由此通过本参考被并入到具体实施方式中,其中每一项权利要求其本身作为本公开的单独的实施例。
Claims (24)
1.一种用于优化机器学习模型的执行的设备,所述设备包括:
量化器,所述量化器用于基于执行约束来量化机器学习模型的层,所述机器学习模型的所述层由矩阵表示;
打包器,所述打包器用于打包所述矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层,所述经打包的矩阵具有沿所述矩阵的行或列中的至少一者被一起编组的所述矩阵的非零值;
分块器,所述分块器用于将所述经打包的层分块成经分块的层,分块通过将所述经打包的矩阵中的非零值划分成块来执行;
融合器,所述融合器用于将所述经分块的层融合到流水线中;以及
封装器,所述封装器用于将所述流水线封装成二进制件。
2.如权利要求1所述的设备,其特征在于,所述执行约束是硬件约束。
3.如权利要求2所述的设备,其特征在于,所述硬件约束表示用于执行所述机器学习模型的硬件设备的位宽能力。
4.如权利要求1所述的设备,其特征在于,所述融合器进一步用于将量化根插入到所述流水线中。
5.如权利要求4所述的设备,其特征在于,所述量化根用于使调度器用于:
将激活函数的结果量化到箱的集合中;
打包所述箱的值以创建精简缓冲器;以及
经由重新映射的加载函数将所述精简缓冲器提供给池化函数。
6.如权利要求1所述的设备,进一步包括变换器,所述变换器用于在所述量化器对层进行量化之前执行所述机器学习模型的所述层的变换。
7.至少一种机器可读存储介质,包括指令,当所述指令被执行时使至少一个处理器至少用于:
基于执行约束来量化机器学习模型的层,所述机器学习模型的所述层由矩阵表示;
打包所述矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层,所述经打包的矩阵具有沿所述矩阵的行或列中的至少一者被一起编组的所述矩阵的非零值;
将所述经打包的层分块成经分块的层,分块通过将所述经打包的矩阵中的所述非零值划分成块来执行;
将所述经分块的层融合到流水线中;以及
将所述流水线封装成二进制件。
8.如权利要求7所述的至少一种机器可读存储介质,其特征在于,所述执行约束是硬件约束。
9.如权利要求8所述的至少一种机器可读存储介质,其特征在于,所述硬件约束表示用于执行所述机器学习模型的硬件设备的位宽度能力。
10.如权利要求7所述的至少一种机器可读存储介质,其特征在于,当所述指令被执行时,进一步使所述至少一个处理器用于将量化根插入到所述流水线中。
11.如权利要求10所述的至少一种机器可读存储介质,其特征在于,所述量化根用于使调度器用于:
将激活函数的结果量化到箱的集合中;
打包所述箱的值以创建精简缓冲器;以及
经由重新映射的加载函数将所述精简缓冲器提供给池化函数。
12.如权利要求7所述的至少一种机器可读存储介质,其特征在于,当所述指令被执行时,使所述至少一个处理器在对所述层进行量化之前执行所述机器学习模型的所述层的变换。
13.一种用于优化机器学习模型的执行的方法,所述方法包括:
基于执行约束来量化机器学习模型的层,所述机器学习模型的所述层由矩阵表示;
打包所述矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层,所述经打包的矩阵具有沿所述矩阵的行或列中的至少一者被一起编组的所述矩阵的非零值;
将所述经打包的层分块成经分块的层,分块通过将所述经打包的矩阵中的所述非零值划分成块来执行;
将所述经分块的层融合到流水线中;以及
将所述流水线封装成二进制件。
14.如权利要求13所述的方法,其特征在于,所述执行约束是硬件约束。
15.如权利要求14所述的方法,其特征在于,所述硬件约束表示用于执行所述机器学习模型的硬件设备的位宽能力。
16.如权利要求13所述的方法,其特征在于,将所述经分块的层融合到所述流水线包括将量化根插入所述流水线。
17.如权利要求16所述的方法,其特征在于,所述量化根用于使调度器用于:
将激活函数的结果量化到箱的集合中;
打包所述箱的值以创建精简缓冲器;以及
经由重新映射的加载函数将所述精简缓冲器提供给池化函数。
18.如权利要求13所述的方法,进一步包括在对所述层进行量化之前执行所述机器学习模型的所述层的变换。
19.一种用于优化机器学习模型的执行的设备,所述设备包括:
用于基于执行约束来量化机器学习模型的层的装置,所述机器学习模型的所述层由矩阵表示;
用于打包所述矩阵的经量化的层以创建由经打包的矩阵表示的经打包的层的装置,所述经打包的矩阵具有沿所述矩阵的行或列中的至少一者被一起编组的所述矩阵的非零值;
用于将所述经打包的层分块成经分块的层的装置,所述分块通过将所述经打包的矩阵中的所述非零值划分成块来执行;
用于将所述经分块的层融合到流水线中的装置;以及
用于将所述流水线封装成二进制件的装置。
20.如权利要求19所述的设备,其特征在于,所述执行约束是硬件约束。
21.如权利要求20所述的设备,其特征在于,所述硬件约束表示用于执行所述机器学习模型的硬件设备的位宽能力。
22.如权利要求19所述的设备,其特征在于,将所述经分块的层融合到所述流水线包括将量化根插入所述流水线。
23.如权利要求22所述的设备,其特征在于,所述量化根用于使调度器用于:
将激活函数的结果量化到箱的集合中;
打包所述箱的值以创建精简缓冲器;以及
经由重新映射的加载函数将所述精简缓冲器提供给池化函数。
24.如权利要求19所述的设备,进一步包括用于在对所述层进行量化之前执行所述机器学习模型的所述层的变换的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/456,863 | 2019-06-28 | ||
US16/456,863 US11507838B2 (en) | 2019-06-28 | 2019-06-28 | Methods and apparatus to optimize execution of a machine learning model |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112149792A true CN112149792A (zh) | 2020-12-29 |
Family
ID=68236506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010229824.1A Pending CN112149792A (zh) | 2019-06-28 | 2020-03-27 | 用于优化机器学习模型的执行的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11507838B2 (zh) |
CN (1) | CN112149792A (zh) |
DE (1) | DE102020113541A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723047A (zh) * | 2022-04-15 | 2022-07-08 | 支付宝(杭州)信息技术有限公司 | 任务模型训练方法、装置以及系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11868901B1 (en) | 2019-05-21 | 2024-01-09 | Percieve Corporation | Compiler for optimizing memory allocations within cores |
US11494657B2 (en) * | 2019-07-30 | 2022-11-08 | Perceive Corporation | Quantizing neural networks using approximate quantization function |
US11509460B2 (en) * | 2019-10-02 | 2022-11-22 | Samsung Sds Co.. Ltd. | Apparatus and method for performing matrix multiplication operation being secure against side channel attack |
US11537859B2 (en) * | 2019-12-06 | 2022-12-27 | International Business Machines Corporation | Flexible precision neural inference processing unit |
US11586892B1 (en) * | 2020-02-12 | 2023-02-21 | Ambarella International Lp | Modeling quantization loss using a preprocessing network that simulates hardware behavior |
US11641304B2 (en) * | 2020-07-29 | 2023-05-02 | Guavus Inc. | Method for managing a plurality of events |
US11940867B2 (en) | 2020-07-29 | 2024-03-26 | Guavus Inc. | Method for managing a plurality of events |
US11853717B2 (en) | 2021-01-14 | 2023-12-26 | Microsoft Technology Licensing, Llc | Accelerating processing based on sparsity for neural network hardware processors |
US11809849B1 (en) * | 2021-05-20 | 2023-11-07 | Amazon Technologies, Inc. | Global modulo allocation in neural network compilation |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11922313B2 (en) * | 2016-02-11 | 2024-03-05 | William Marsh Rice University | Partitioned machine learning architecture |
US20200380357A1 (en) * | 2017-09-13 | 2020-12-03 | Intel Corporation | Incremental network quantization |
KR20200005480A (ko) * | 2018-07-06 | 2020-01-15 | 한국전자통신연구원 | 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체 |
KR20220094787A (ko) * | 2020-12-29 | 2022-07-06 | 주식회사 딥엑스 | 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법 |
-
2019
- 2019-06-28 US US16/456,863 patent/US11507838B2/en active Active
-
2020
- 2020-03-27 CN CN202010229824.1A patent/CN112149792A/zh active Pending
- 2020-05-19 DE DE102020113541.6A patent/DE102020113541A1/de active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723047A (zh) * | 2022-04-15 | 2022-07-08 | 支付宝(杭州)信息技术有限公司 | 任务模型训练方法、装置以及系统 |
CN114723047B (zh) * | 2022-04-15 | 2024-07-02 | 支付宝(杭州)信息技术有限公司 | 任务模型训练方法、装置以及系统 |
Also Published As
Publication number | Publication date |
---|---|
US11507838B2 (en) | 2022-11-22 |
DE102020113541A1 (de) | 2020-12-31 |
US20190325314A1 (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112149792A (zh) | 用于优化机器学习模型的执行的方法和设备 | |
US11741342B2 (en) | Resource-efficient neural architects | |
CN111652368B (zh) | 一种数据处理方法及相关产品 | |
KR101959376B1 (ko) | 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법 | |
US20240005135A1 (en) | Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits | |
US20240022259A1 (en) | Methods, systems, articles of manufacture, and apparatus to decode zero-value-compression data vectors | |
CN112395547A (zh) | 对张量进行图块遍历以进行卷积运算的方法和装置 | |
CN112148294A (zh) | 用于针对异构系统的有意编程的方法和装置 | |
CN113139648B (zh) | 执行神经网络模型的pim架构的数据布局优化 | |
CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
CN117121018A (zh) | 用于在稀疏加速器上执行机器学习模型操作的方法和装置 | |
CN114127741A (zh) | 用于人工智能建模的动态多层执行 | |
CN114127702A (zh) | 在存储器受限设备上执行大型人工智能模型 | |
US11977885B2 (en) | Utilizing structured sparsity in systolic arrays | |
US20220012592A1 (en) | Methods and apparatus to perform weight and activation compression and decompression | |
US20240231839A1 (en) | Methods and apparatus to load data within a machine learning accelerator | |
US20240036763A1 (en) | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (mac) operations | |
WO2023048824A1 (en) | Methods, apparatus, and articles of manufacture to increase utilization of neural network (nn) accelerator circuitry for shallow layers of an nn by reformatting one or more tensors | |
US10203936B1 (en) | Scaling high-level statistical languages to large, distributed datasets | |
US20230325185A1 (en) | Methods and apparatus to accelerate matrix operations using direct memory access | |
US12001382B2 (en) | Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry | |
CN116339704A (zh) | 用于机器学习引导的编译器优化的方法和装置 | |
WO2024065530A1 (en) | Methods and apparatus to perform artificial intelligence-based sparse computation based on hybrid pattern and dynamic encoding | |
US12008469B1 (en) | Acceleration of neural networks with stacks of convolutional layers | |
WO2023155136A1 (en) | Dynamic triplet convolution for convolutional 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 |