CN113723589A - 混合精度神经网络 - Google Patents
混合精度神经网络 Download PDFInfo
- Publication number
- CN113723589A CN113723589A CN202110572483.2A CN202110572483A CN113723589A CN 113723589 A CN113723589 A CN 113723589A CN 202110572483 A CN202110572483 A CN 202110572483A CN 113723589 A CN113723589 A CN 113723589A
- Authority
- CN
- China
- Prior art keywords
- data type
- objects
- bits
- model
- blobs
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/16—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using machine learning or artificial intelligence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2219—Large Object storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本公开的实施例涉及混合精度神经网络。用于机器学习(ML)模型的混合精度量化技术。对于ML模型(114),接收目标带宽增加(302),ML模型(114)包括由第一位数目表示的第一数据类型的对象。目标带宽增加涉及将对象的第一部分改变为由不同于第一位数目的第二位数目表示的第二数据类型(310)。方法进一步包括基于带宽对ML模型中的对象进行排序(304)。方法进一步包括:基于目标带宽增加和多个对象的排序来标识对象的第一部分,以从第一数据类型改变为第二数据类型(508)。方法进一步包括将对象的第一部分从第一数据类型改变为第二数据类型(508)。
Description
技术领域
本公开涉及机器学习,并且更具体地涉及使用以不止一个精度表示的值的神经网络。
背景技术
神经网络和其他机器学习(ML)模型可以包括表示数值的变量。这些数值通常被表示为浮点数据类型。例如,浮点值通常用于表示:(1)网络中某个层(诸如卷积或内积)的权重或学习值,以及(2)特征图,也被称为激活或二进制大对象(BLOB)。这些权重和BLOB可以用于例如神经网络中给定层的输出以及后续层的输入。
然而,以浮点值执行神经网络在计算上可能是昂贵的(例如,执行可能较慢,并且功率密集)。许多神经网络包括大量的浮点值,并且浮点算术通常较慢并且消耗功率。另外,浮点数据类型通常为32位或更大,因此加载和存储这种值需要存储空间并且需要时间。因此,使用浮点值可能会抑制神经网络在可用计算资源较少或功率受限的设备(包括诸如智能手机和平板电脑的边缘设备)上的执行。
发明内容
实施例包括一种方法。该方法包括:接收针对机器学习(ML)模型的目标带宽增加,ML模型包括由第一位数目表示的第一数据类型的多个对象。目标带宽增加涉及将多个对象的第一部分改变为由不同于第一位数目的第二位数目表示的第二数据类型。方法还包括基于带宽对ML模型中的多个对象进行排序。方法还包括:基于目标带宽增加和多个对象的排序,标识多个对象的第一部分以从第一数据类型改变为第二数据类型。方法还包括将多个对象的第一部分从第一数据类型改变为第二数据类型。
实施例还包括一种系统,系统包括处理器和存储指令的存储器,该指令在由处理器执行时,使处理器执行操作。操作包括:接收针对神经网络的目标带宽增加,神经网络包括由第一位数目表示的第一数据类型的多个二进制大对象(BLOB)和权重。目标带宽增加涉及:将多个BLOB和权重中的至少一些改变为由不同于第一位数目的第二位数目表示的第二数据类型。操作还包括:基于目标带宽增加,标识多个BLOB和权重的第一部分,以从第一数据类型改变为第二数据类型。操作还包括将多个BLOB和权重的第一部分从第一数据类型改变为第二数据类型。
实施例还包括非暂态计算机可读介质,其包括所存储的指令,该指令在由处理器执行时,使处理器执行操作。操作包括:接收针对机器学习(ML)模型的目标性能改变,ML模型包括由第一位数目表示的第一数据类型的多个对象。目标性能改变涉及:将多个对象中的至少一些改变为由不同于第一位数目的第二位数目表示的第二数据类型。操作还包括基于大小对ML模型中的多个对象进行排序。操作还包括:基于目标性能改变和对多个对象的排序,标识多个对象的第一部分以从第一数据类型改变为第二数据类型。操作还包括将多个对象的第一部分从第一数据类型改变为第二数据类型。操作还包括:使用ML模型(包括将多个对象的第一部分改变为第二数据类型)来推断一个或多个输入的结果。
附图说明
通过下面给出的详细描述和本文描述的示例的附图,将更全面地理解本公开。附图用于提供本文描述的示例的知识和理解,并且不将本公开的范围限制为这些特定示例。此外,附图不必按比例绘制。
图1图示了根据一个实施例的将混合精度值用于ML模型。
图2图示了根据一个实施例的用于将混合精度值用于ML模型的ML训练服务器和混合精度量化服务器。
图3是根据一个实施例的用于将混合精度值用于ML模型的流程图。
图4是根据一个实施例的用于将对象排序以更新用于ML模型的混合精度值的流程图。
图5是根据一个实施例的用于增加对象大小以更新用于ML的混合精度值的流程图。
图6图示了根据一个实施例的用于将ML模型更新为混合精度的示例技术。
图7A图示了根据一个实施例的混合精度ML模型中的示例对象的表。
图7B图示了根据一个实施例的另外的混合精度ML模型中的示例对象的表。
图8是根据一个实施例的用于混合精度量化感知训练的流程图。
图9图示了根据一个实施例的示例计算机系统的抽象图,本公开的示例可以在其中操作。
为了便于理解,在可能的情况下使用相同的附图标记来表示图中共有的相同元件。可以预期,一个实施例中公开的元件可以在没有具体叙述的情况下有益地被用在其他实施例中。
具体实施方式
通过将浮点值中的一些或全部浮点值转换为更小的整数数据类型,可以减少执行具有浮点数据类型的ML模型(例如,神经网络)的计算开销。这可以减少计算开销,但会降低准确性。然后神经网络可以在支持所需整数数据类型(例如12位整数数据类型)的硬件上被执行,从而使执行的计算成本显著减小。
此外,神经网络硬件可以支持不止一个大小的整数数据类型。例如,一些硬件支持12位或8位整数权重和BLOB。神经网络可以将一些对象存储为12位整数数据类型,并且将一些对象存储为8位整数数据类型。这可以被称为混合精度实现。
通常,由于8位整数权重的大小,它们从存储器中加载到乘法器寄存器的速度比12位整数权重更快。与12位整数BLOB相比,在层计算其输出时,8位整数BLOB写入存储器的速度通常也更快。当层将先前计算的BLOB作为输入时,8位整数BLOB加载到乘法器寄存器中的速度也更快。此外,由于8是2的幂,而12不是,因此在硬件实现中,8位整数的加载和存储通常比12位整数的加载和存储更简单并且更便宜。
然而,表示中的位越少,表示浮点值的准确性越低,这可能会降低整个神经网络的推断准确性。有时,用较小的数据类型(例如8位整数)表示神经网络中的所有数值不能提供足够的准确性,因此一些值使用较小的数据类型(例如8位整数)来被表示,而其他值使用较大的数据类型(例如12位整数)来被表示。
本文公开的一个或多个实施例提供了多个技术,当可以存在两个精度水平时,可以通过该技术来选择混合精度ML模型。例如,一些权重和BLOB可以使用较大的整数数据类型(例如12位整数数据类型)来被表示,而其余的可以使用较小的整数数据类型(例如8位整数数据类型)来被表示。本文公开的一种或多种技术可以用于选择哪些权重和BLOB要以不同的精度水平来表示(例如,哪些表示为8位整数以及哪些表示为12位整数)。
图1图示了根据一个实施例的针对ML模型使用混合精度值。在一个实施例中,训练数据102被提供给ML训练服务器110。ML训练服务器110包括ML训练服务112和初始ML模型114。在一个实施例中,ML训练服务112使用训练数据102来训练初始ML模型114。例如,ML训练服务112可以将训练数据102转换为特征向量。ML训练服务112可以使用特征向量以及关联的属性值来训练初始ML模型114。这仅仅是一个示例,可以使用任何合适的训练数据。
此外,可以使用任何合适的监督ML技术来训练浮点ML模型。例如,初始ML模型114可以是神经网络(例如,卷积神经网络(CNN)、对抗神经网络或任何其他合适的神经网络),并且可以使用任何合适的技术来训练。图1仅是一个示例。
在一个实施例中,初始ML模型114包括作为浮点数据类型存储的变量。例如,初始ML模型114可以是具有大量作为浮点变量存储的权重和BLOB的神经网络。如上所述,使用浮点变量表示权重和BLOB可以增加准确性,但在计算上可能昂贵并且功率密集。浮点仅是一个示例,并且初始ML模型114可以使用任何适当的数据类型(例如,大整数数据类型而不是浮点数据类型)来表示数值。
在一个实施例中,ML训练服务器110将初始ML模型114提供给混合精度量化服务器120。ML训练服务器110可以使用任何合适的连接与混合精度量化服务器120进行通信,包括局域网、广域网、因特网或直接连接。此外,如下面关于图2进一步讨论的,在一个实施例中,ML训练服务器和混合精度量化服务器120可以使用任何合适的技术进行通信,包括WiFi、蜂窝连接或有线连接。此外,可以从任何合适的来源将训练数据102提供给ML训练服务器110。例如,训练数据可以被存储在远程数据库(例如,关系数据库)、另一个远程存储位置或与ML训练服务器110一起被本地存储。
混合精度量化服务器120包括混合精度量化服务122。在一个实施例中,混合精度量化服务122通过将初始ML模型114中的变量类型(例如权重和BLOB)改变为不同数据类型来生成混合精度ML模型130,该不同数据类型的精度较低并且在计算上也较便宜。例如,初始ML模型114可以是神经网络,其具有作为浮点变量存储的权重和BLOB。混合精度量化服务122可以将这些浮点变量转换为整数。
作为一个示例,可以使用以下技术:整数I可以被用来经由隐式标度S以等式F=I/S来表示浮点值F。在该示例中,0到2范围内的浮点值可以以12位整数范围0到4095来表示,其隐式标度为4095/2=2047.5。整数值1000表示浮点值1000/2047.5=.488。整数2000表示浮点值2000/2047.5=.977。整数值4095表示浮点值4095/2047.5=2.0。
在一个实施例中,混合精度量化服务122将初始ML模型114中的浮点变量转换为由硬件支持的整数数据类型,该硬件将在推断阶段(例如,当使用ML模型推断一个或多个输入的结果时)执行混合精度ML模型130。例如,硬件可以被配置成在ML模型中支持8位和12位整数数据类型。混合精度量化服务122可以将初始ML模型114中的浮点变量转换为混合精度ML模型130中的8位和12位整数的混合。这将在下面关于图3-图6被进一步讨论。这仅是一个示例。混合精度量化服务122可以转换任何合适的变量,包括将较大的浮点变量转换为较小的浮点变量(例如,将32位浮点转换为16位或12位浮点),将较大的浮点变量转换为较小的浮点变量和整数的混合(例如,将32位浮点转换为16位浮点和8或12位整数),将较大的整数转换为较小的整数,或任何其他适当的组合。
图2图示了根据一个实施例的,用于将混合精度值用于ML模型的ML训练服务器110和混合精度量化服务器120。在一个实施例中,ML训练服务器110与图1中所示的ML训练服务器110相对应。ML训练服务器110包括处理器202、存储器210和网络组件220。处理器202通常取回和执行存储在存储器210中的编程指令。处理器202表示单个中央处理单元(CPU)、多个CPU、具有多个处理核的单个CPU、具有多个执行路径的图形处理单元(GPU)等。
网络组件220包括ML训练服务器110与通信网络对接所必需的组件,如上面关于图1所讨论的。例如,网络组件220可以包括有线、WiFi或蜂窝网络接口组件以及相关联的软件。尽管存储器210被示为单个实体,但是存储器210可以包括具有与物理地址相关联的存储器块的一个或多个存储器设备,诸如随机存取存储器(RAM)、只读存储器(ROM)、闪存,或其他类型的易失性和/或非易失性存储器。
存储器210通常包括用于执行与ML训练服务器110的使用有关的各种功能的程序代码。该程序代码通常被描述为存储器210内的各种功能“应用”或“模块”,但是备选实施方式可以具有不同的功能和/或功能组合。在存储器210内,ML训练服务112促进对初始ML模型114的训练。在一个实施例中,ML训练服务112与图1中所示的ML训练服务112相对应,并且初始ML模型114与图1中所示的初始ML模型114相对应。
在一个实施例中,混合精度量化服务器120对应于图1中所示的混合精度量化服务器120。混合精度量化服务器120包括处理器252、存储器260和网络组件270。处理器252通常取回和执行存储器260中存储的编程指令。处理器252表示单个中央处理单元(CPU)、多个CPU、具有多个处理核的单个CPU、具有多个执行路径的图形处理单元(GPU)等。
网络组件270包括混合精度量化服务器120与通信网络对接所必需的组件,如上面关于图1所讨论的。例如,网络组件270可以包括有线、WiFi或蜂窝网络接口组件和相关联的软件。尽管存储器260被示为单个实体,但是存储器260可以包括一个或多个具有与物理地址相关联的存储器块的存储器设备,诸如随机存取存储器(RAM)、只读存储器(ROM)、闪存,或其他类型的易失性和/或非易失性存储器。
存储器260通常包括用于执行与混合精度量化服务器120的使用有关的各种功能的程序代码。该程序代码通常被描述为存储器260内的各种功能“应用”或“模块”,但是备选实施方式可以具有不同的功能和/或功能组合。在存储器260内,混合精度量化服务122有助于将初始ML模型114转换为混合精度ML模型130。在一个实施例中,混合精度量化服务122对应于图1中所示的混合精度量化服务122,初始ML模型114对应于图1中所示的初始ML模型114,并且混合精度ML模型130对应于图1中所示的混合精度ML模型130。在一个实施例中,将初始ML模型114转换为混合精度ML模型130在下面关于图3-图6被进一步讨论。
图3是根据一个实施例的用于将混合精度值用于ML模型的流程图。在框302处,混合精度量化服务(例如,图2中所示的混合精度量化服务122)接收用于ML模型(例如,用于神经网络)的带宽目标。如下面进一步讨论的,在一个实施例中,带宽目标与ML模型用于推断的期望带宽(例如,ML模型中的对象的期望大小,以位为单位)有关,并且允许用户(例如,ML模型设计者)通过平衡混合精度实现对ML模型的准确性的影响和对使用ML模型进行推断所需的带宽的影响,来生成优选的混合精度实现。关于图3讨论的一种或多种技术可以用于针对给定带宽目标来生成混合精度实现。
例如,初始ML模型(例如,图2中所示的初始ML模型114)可以包括使用较大数据类型(例如,浮点数据类型)表示的对象(例如权重和BLOB)。用户可以量化初始ML模型,以在支持两种较小数据类型(例如,8位整数数据类型和12位整数数据类型)的硬件上操作。如果所有对象被设置为较小的数据类型(例如,使用8位整数表示所有权重和BLOB),则将达到ML模型所需的基线带宽。
在一个实施例中,在框302处,用户向混合精度量化服务提供相对于该基线的带宽目标:例如,用户可以请求一种混合精度实现,其使用比基线多5%的带宽,比基线多10%的带宽,比基线多25%的带宽,等等。这仅是一个示例,并且带宽目标相反也可以是定义的值(例如,用于ML模型中的权重和BLOB的定义大小限制)、最大带宽的一部分(例如,如果使用较大的数据类型(例如12位整数)表示所有权重和BLOB,则为带宽的一部分)或任何其他合适的值。如下面关于图4进一步讨论的,由ML模型中的变量所采用的大小是带宽的代理,但这仅仅是一个示例。备选地或附加地,带宽可以包括变量之间的定性差异(例如,即使对象具有相同的大小,也可以将BLOB视为比权重高的带宽)。此外,带宽仅仅是ML模型的性能目标的一个示例。在一个实施例中,在框302处,混合精度量化服务可以接收任何合适的性能目标。
在框304处,混合精度量化服务对ML模型中的对象进行排序。例如,神经网络中的权重和BLOB可以被称为对象。在框304处,混合精度量化服务按带宽对ML模型中的对象(例如权重和BLOB)进行排序。例如,混合精度量化服务可以按大小(作为带宽的代表)将对象排序。这在下面关于图4被进一步讨论。
在框306处,混合精度量化服务计算基线对象带宽。例如,如上所述,混合精度量化服务可以通过将使用较大数据类型(例如浮点数据类型)表示的对象改变为两个较小数据类型(例如8位整数数据类型和12位整数数据类型)之一,来量化初始ML模型以生成混合精度ML模型(例如,图2中所示的混合精度ML模型130)。在一个实施例中,基线对象带宽是使用较小数据类型来表示ML模型中的所有对象(例如,所有权重和BLOB)的最小可能带宽。例如,假设混合精度ML模型使用8位和12位整数数据类型,则基线对象带宽将是用于将初始ML模型中的所有对象表示为8位整数(例如,代替浮点值)的存储器大小(例如,以位为单位)。
在框308处,混合精度量化服务计算目标对象带宽。在一个实施例中,目标对象带宽提供针对混合精度ML模型的带宽的上限。例如,假设初始ML模型使用浮点数据类型来表示对象(例如权重和BLOB),并且假设混合精度ML模型使用8位和12位整数的组合来代替浮点值。上面关于框306所讨论的基线对象带宽是用于将所有浮点对象表示为8位整数的带宽(例如,被表示为8位整数的这些对象的大小)。目标对象带宽是在框302处接收的应用于该基线的带宽目标(例如,百分比增加)。例如,假设基线对象带宽为1MB,带宽目标为10%的增加。目标对象带宽为1*1.1=1.1MB。
在框310处,混合精度量化服务迭代地增加对象大小。例如,混合精度量化服务可以通过假设所有对象(例如,所有权重和BLOB)应当被转换为较小的数据类型(例如,8位整数)来开始。然后,混合精度量化服务可以迭代地选择对象,以从较小的数据类型增加到较大的数据类型(例如,从8位整数增加到12位整数),同时保持低于目标对象带宽。在一个实施例中,混合精度量化服务可以使用在框304处生成的对象的排序集合来选择哪些对象在大小上应当被增加。例如,混合精度量化服务可以从占用较少带宽的对象开始,并且为占用越来越多带宽的对象迭代地增加对象大小。这在下面关于图5被进一步讨论。
在一个实施例中,用户可以利用多个不同的带宽目标来迭代地运行关于图3公开的技术。例如,用户可以使用这些技术来生成一系列满足不同带宽目标的混合精度ML模型,并且可以分析所得的混合精度ML模型的准确性(例如,使用定义的测试指标)。然后用户可以选择以可接受的准确性最佳地平衡改善的带宽的混合精度ML模型(例如,由于较低的带宽模型可能由于模型中权重和BLOB的精度损失而不太准确)。
图4是根据一个实施例的用于将对象分类以更新用于ML模型的混合精度值的流程图。在一个实施例中,图4对应于上面讨论的图3中的框304。在框402处,混合精度量化服务(例如,图2中所示的混合精度量化服务122)按带宽对初始ML模型(例如,图2中所示的初始ML模型114)中的对象进行排序。如上所述,在一个实施例中,大小被用作带宽的代表。在该实施例中,混合精度量化服务按大小对初始ML模型中的对象(例如,权重和BLOB)进行排序。
例如,混合精度量化服务可以按大小从最小到最大将对象排序。即,混合精度量化服务可以标识初始ML模型中每个对象的大小(例如ML模型中该对象的所有实例的总大小,以位为单位),并且可以从最小到最大将对象排序(例如,从对象的所有实例的最小总大小到对象的所有实例的最大总大小)。大小仅仅是带宽的代表,并且备选地或附加地,混合精度量化服务可以基于其他标准将对象排序。例如,假设BLOB被认为是比权重高的带宽。在对BLOB和权重进行排序之前,可以将BLOB大小乘以调整因子,从而增加BLOB相对于权重的带宽。可以以任何合适的方式来确定该调整因子(例如,通过实验或从先前的模型经验中)。作为另一示例,给定层中的权重或BLOB可以被认为是比其他权重或BLOB更高(或更低)的带宽,并且可以乘以调整因子。这些仅是示例,可以相反地将权重视为比BLOB更高的带宽,也可以使用其他标准。
在框404处,混合精度量化服务使更接近ML模型网络图的根的等带宽对象优先。在一个实施例中,初始ML模型可以是由网络图表示的神经网络,该网络图表达了初始ML模型上的每个对象到根(或多个根)的接近度。距网络图的根更远的对象可能取决于更靠近根的对象。在该实施例中,可以将优先级给予更靠近根的对象,以增加这些对象的表示的准确性。作为一个示例,如果在框402处两个对象被认为具有相等的带宽,则可以将更靠近网络图的根的对象放置在排序中的第一位,以使该对象更有可能使用较大的数据类型来被表示,并且更有可能更准确。相等带宽仅仅是一个示例。备选地或附加地,当比较具有相似但不完全相等的带宽的对象时(例如,当对象在彼此的容差阈值之内时),混合精度量化服务可以使更接近ML模型网络图的根的对象优先。
例如,假设混合精度量化服务将初始ML模型中的浮点值转换为12位和8位整数的混合。更靠近网络图的根的对象可以被给予优先级,以转换为12位整数(而不是8位整数),以避免从网络图的根到外部节点的混合错误。通过使更靠近根的对象更精确,这些对象更加准确,并且通过沿着图进一步向下的节点混合的错误更少。假设两个对象在框402处被认为具有相同带宽,则在框404处,更靠近网络图的根的对象被放在该排序中的第一位,以便它更有可能由12位整数来表示。在排序完成之后,混合精度量化服务继续计算基线对象带宽(例如,如图3中的框306处所示)。
图5是根据一个实施例的用于增加对象大小以更新用于ML模型的混合精度值的流程图。在一个实施例中,图5对应于上面讨论的图3中的框310。在框502处,混合精度量化服务(例如,图2中所示的混合精度量化服务122)从初始ML模型(例如,图2中所示的初始ML模型114)选择对象的排序列表中的下一个对象。例如,混合精度量化服务可以在图3中所示的块304处生成对象的排序列表(例如,权重和BLOB)。如上所述,在一个实施例中,该列表从最低带宽到最高带宽(例如,最小大小到最大大小)被排序,与网络图的根的接近度被用来打破僵局(如图4中所描述的)。
在框504处,如果所选择的对象从较小的数据类型(例如8位整数)增加到较大的数据类型(例如12位整数),则对于整个ML模型,混合精度量化服务计算该大小增加。例如,假设所选择对象在以8位整数表示的情况下具有1MB的大小。如果以12位整数表示,则混合精度量化服务可以确定所选择对象将具有1.5MB的大小。这0.5MB的增加。
在框506处,混合精度量化服务确定大小增加是否使ML模型中的对象的总大小小于或等于目标大小。如果否,则如果所选择对象的大小增加,对象的总大小将大于目标总大小,因此流程结束。如果是,并且如果所选择的对象的大小增加,对象的总大小将小于目标总大小,然后流程进行到框508。
在框508处,混合精度量化服务增加了所选择对象的大小。然后,流程返回到框502。在框502处,混合精度量化服务选择排序列表中的下一个对象,然后进行到框504。
例如,如上面关于图3所讨论的,作为混合精度量化的一部分,ML模型可以以总大小增加10%为目标。如果ML模型中的对象在被表示为较小的数据类型的情况下具有10MB总大小,则目标总大小为11MB,这允许1MB的增加(通过将对象从较小的数据类型转换为较大的数据类型)。假设如上所述,将所选择对象从8位整数增加到12位整数将使ML模型中对象的大小增加0.5MB。如果在增加所选择对象大小之后,对象的大小仍保持在目标以下,则将对象从8位整数增加到12位整数。如果否,则流程结束。
图6图示了根据一个实施例的用于将ML模型更新为混合精度的示例技术。在一个实施例中,图6图示了伪代码600,其表示上面关于图3-图5讨论的技术。“#”符号用于表示解释性注释。在图6的示例中,对象的大小从“小”8位数据类型(例如8位整数)增加到“大”12位数据类型(例如12位整数)。针对给定对象,从小到大的“增加”为0.5(12/8-1)。如果所有对象使用小数据类型来被表示,则“total_size”是初始ML模型中对象大小的总和。“expanded_size”是在应用目标增加之后的总大小(例如,如上面关于图3中的框302所讨论的)。
本技术遍历来自初始ML模型的从小到大排序的对象列表。上面关于图3和图4中的框304讨论了这种排序。对于每个对象,确定“增量”。这是在所选择对象从小数据类型转换为大数据类型的情况下的总大小增加。如果当前total_size和增量的总和小于或等于目标扩展大小,则将对象从小数据类型转换为大数据类型,total_size增加该增量,然后迭代循环继续进行排序列表中的下一个最大对象。如果否,则技术结束。
图7A图示了根据一个实施例的混合精度ML模型中的示例对象的表700。在一个实施例中,图7A图示了示例ML模型resnet_152中的对象。许多ML模型(包括resnet_152)包含许多具有小权重或BLOB的层,使得通过将这些对象表示为更小的数据类型,不会节省大量带宽。上面关于图3-图6讨论的技术将这些较小的对象从较小的数据类型(例如8位整数)提升为较大的数据类型(例如12位整数)。用户可以将这些技术应用于他或她选择的一组目标带宽增加,并且可以选择产生可接受结果(例如,可接受的准确性)的最低带宽增加。
例如,用户可以使用给定的目标带宽,然后使用新对象来评估ML模型(例如神经网络)的有效性。用户可以测试神经网络的推断准确性(例如,神经网络从一个或多个输入推断的结果的准确性),并且将其与准确性标准进行比较。这仅是有效性标准的一个示例,并且可以使用其他标准(例如,速度、处理负载等)。如果所评估的神经网络不满足有效性标准,则可以利用修改的目标带宽增加来再次运行该算法,并且神经网络可以再次被修改和测试。可以重复该过程,直到神经网络满足有效性标准为止(例如,将神经网络的准确性与阈值进行比较)。
表700图示了使用上面在图3-图6中讨论的技术转换为混合精度实现之后的resnet_152ML模型。作为示例,当所有对象都从浮点数转换为8位整数时,resnet_152的准确性显著降低。但是,如表700中所示,当相对于8位整数表示而允许14%的带宽增加时,结果非常接近在所有对象使用12位整数来被表示的情况下的结果(这需要带宽上的50%增加)。
表700中的列702描绘了对象编号(例如,标签)。在一个实施例中,resnet_152模型包括368个权重和BLOB,在表700中示出了对它们的选择。如果对象被表示为8位数据类型(例如8位整数),则列704描绘了给定行中的对象的大小。如果所有对象被表示为8位数据类型,则列706描绘了直到给定行(例如,从对象1到给定行)的对象大小的总和。列708描绘了由直到给定行的对象所使用的模型的总体对象大小的百分比。
列710描述了混合精度实现中的对象大小(例如,在将对象的选择从8位更新为12位数据类型之后)。列712描绘了混合精度实现中的更新的对象大小。列714描绘了直到给定行的对象的更新的总和。对象716描绘了由直到给定行的更新对象所使用的模型的总体对象大小的百分比。列718描绘了在更新之后直到给定行的模型中的对象的大小的总扩展。列720描绘了对象类型(例如,BLOB或权重)。
例如,如在表700中所示,对象1-10(例如,行1-10中所示)都相对较小,并且在混合精度实现中从8位数据类型转换为12位数据类型,对整体对象大小具有相对较小的影响。实际上,前231个对象从8位数据类型转换为12位数据类型,而对象232-368保持为8位数据类型。这导致总扩展为1.139(例如13.9%),如列718中的368行(即最后一行)所示。
图7B图示了根据一个实施例的在另外的混合精度ML模型中的示例对象的表750。在一个实施例中,图7B图示了示例ML模型mobilenet_ssd中的对象,ML模型mobilenet_ssd是计算围绕对象的框(例如,分段)并且将每个框的内容分类为90个不同对象之一的场景分段和分类模型。如所图示的,相对于完全8位表示的带宽(例如大小)的10%增加产生了与将所有对象转换为12位表示一样有效的结果。
就像在图7A中所示的表700中一样,表750中的列702描绘了对象编号(例如,标签)。在一个实施例中,mobilenet_ssd包括111个权重和BLOB,在表750中图示了对它们的选择。如果对象被表示为8位数据类型(例如,8位整数),则列704描绘了给定行中的对象的大小。如果所有对象被表示为8位数据类型,则列706描绘了直到给定行(例如,从对象1到给定行)的对象大小的总和。列708描绘了由直到给定行的对象所使用的模型的总体对象大小的百分比。
列710描绘了混合精度实现中的对象大小(例如,在将对象的选择从8位更新为12位数据类型之后)。列712描绘了混合精度实现中的更新的对象大小。列714描绘了直到给定行的对象的更新的总和。对象716描绘了由直到给定行的更新对象所使用的模型的总体对象大小的百分比。列718描绘了在更新之后直到给定行的模型中的对象的大小的总扩展。并且列720描绘了对象类型(例如,BLOB或权重)。
例如,如表750中所示,对象1-7(例如,在行1-7中被描绘)都相对较小,并且在混合精度实现中从8位数据类型转换为12位数据类型,对整体对象大小具有相对较小的影响。实际上,前81个对象从8位数据类型转换为12位数据类型,而对象82-111保持为8位数据类型。这导致总扩展为1.095(例如9.5%),如在列718中的111行(即最后一行)处所示。
在一个实施例中,目标带宽增加根据实现而变化。例如,对于8位和12位值,可以使用5%(从105%到150%)的递增。这仅仅是一个示例。此外,在一个实施例中,在已经使用初始百分比递增(例如,5%百分比递增)选择了有希望的结果之后,可以围绕结果变化目标带宽增加。例如,如果115%看起来是有希望的结果,则上面关于图3-图6所示的技术可以检查113%、114%、116%和117%。
在一个实施例中,上述技术中的一种或多种技术可以用于调整经训练的神经网络,以增加神经网络进行推断操作的效率。例如,上述算法可以用于调整经训练的神经网络,以确定要用于经训练的神经网络中各种权重和BLOB的位大小。备选地或附加地,上述技术中的一种或多种技术可以用于调整神经网络的训练。例如,上述技术中的一种或多种技术可以用于ML模型的量化感知训练。
图8是根据一个实施例的用于混合精度量化感知训练的流程图800。在一个实施例中,使用不同的数据类型将初始ML模型转换为更新的ML模型(例如,将浮点对象转换为更小的整数对象)可以被称为量化。量化感知训练可以用于在ML模型的训练期间考虑量化,以增加使用最终训练的ML模型进行推断的准确性。在一个实施例中,量化感知训练在训练过程的前向传递中模拟低精度推断时间计算。例如,量化误差可以作为训练期间的噪声以及作为整体损耗的一部分而被引入(例如,优化算法可以尝试将其最小化)。ML模型然后可以学习对量化更鲁棒的参数。
在一个实施例中,上面关于图3-图6描述的混合精度技术可以用于改善量化感知训练。在框802处,ML训练服务(例如,图2中所示的ML训练服务112)开始量化感知训练。在一个实施例中,可以使用任何合适的技术。
在框804处,ML训练服务在训练期间应用混合精度量化。例如,量化感知训练可以被设计为在训练期间引入针对混合精度(而不是单精度)量化的量化误差。上面关于图3-图6描述的技术可以用于确定混合精度实现和适当的误差值(例如,在训练期间作为噪声引入)。然后,量化感知训练可以使用这些误差值来训练ML模型,以对混合精度量化具有鲁棒性。在框806处,ML训练服务完成训练。
图9图示了计算机系统900的示例,在其中可以执行用于使计算机系统执行本文所讨论的方法中的任何一个或多个方法的指令集。在一些实施方式中,计算机系统可以连接(例如,联网)到局域网(LAN)、内联网、外联网和/或因特网中的其他机器或计算机系统。计算机系统可以在客户端-服务器网络环境中以服务器或客户端计算机系统的能力操作,在对等(或分布式)网络环境中作为对等计算机系统操作,或在云计算基础架构或环境中作为服务器或客户端计算机系统操作。
计算机系统可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、交换机或网桥,或能够执行指令集(顺序指令或其他指令)的任何机器,该指令集指定了要由该计算机系统采取的操作。此外,虽然图示了单个计算机系统,但是术语“计算机系统”也应当被认为包括计算机系统的任何集合,这些计算机系统个体地或共同地执行一组(或多组)指令以执行本文讨论的方法中的任何一个或多个方法。
示例计算机系统900包括处理设备902、主存储器904(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM))、静态存储器906(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备918,它们经由总线930彼此通信。主存储器904包括或者是非暂态计算机可读介质。主存储器904(例如,非暂态计算机可读介质)可以存储指令926的一个或多个集合,指令926在由处理设备902执行时,使处理设备902执行本文描述的操作、步骤、方法和过程中的一些或全部。
处理设备902表示一个或多个处理器,诸如微处理器、中央处理器等。更特别地,处理设备902可以是或包括复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器或实现指令集的组合的处理器。处理设备902也可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备902可以被配置成执行指令926,以用于执行本文描述的操作、步骤、方法和过程中的一些或全部。
计算机系统900还可以包括网络接口设备908,以通过网络920进行通信。计算机系统900还可以包括视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备912(例如键盘)、光标控制设备914(例如鼠标)、图形处理单元922、信号生成设备916(例如扬声器)、图形处理单元922、视频处理单元928和音频处理单元932。
数据存储设备918可以包括机器可读存储介质924(例如,非暂态计算机可读介质),其上存储了实施本文描述的方法或功能中的任何一个或多个的指令926的一个或多个集合或软件。在由计算机系统900执行指令926期间,指令926还可以全部或至少部分地驻留在主存储器904内和/或在处理设备902内,主存储器904和处理设备902也包括机器可读存储介质。
在一些实施方式中,指令926包括用于实施上述功能的指令。尽管机器可读存储介质924在示例实施方式中被示为单个介质,但是术语“机器可读存储介质”应当被认为包括单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器),其存储指令的一个或多个集合。术语“机器可读存储介质”也应当被认为包括能够存储或编码指令集以供计算机系统执行并且使计算机系统和处理设备902执行上述方法中的任何一个或多个方法的任何介质。因此,术语“机器可读存储介质”应当被认为包括但不限于固态存储器、光学介质和磁性介质。
已经根据对计算机存储器内的数据位的操作的算法和符号表示呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域技术人员用来最有效地向本领域其他技术人员传达其工作实质的方式。算法可以是导致期望结果的操作的序列。这些操作是需要对物理量进行物理操纵的操作。这种量可以采取能够被存储、组合、比较以及以其他方式被操纵的电或磁信号的形式。这种信号可以被称为比特、值、元素、符号、字符、项、数字等。
然而,应当牢记,所有这些和类似术语均应当与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非另外明确指出,或以其他方式根据本公开而明显,否则应当理解,贯穿本描述,一些术语指代计算机系统或类似电子计算设备的动作和过程,该动作和过程对计算机系统的寄存器和存储器中被表示为物理(电子)量的数据进行操纵,并且将其转换为计算机系统的存储器或寄存器或其他这种信息存储设备内类似地被表示为物理量的其他数据。
本公开还涉及用于执行本文的操作的装置。该装置可以针对预期目的而被专门构造,或者可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这种计算机程序可以被存储在计算机可读存储介质中,诸如但不限于任何类型的盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适于存储电子指令的任何类型的介质,每个均耦合到计算机系统总线。
本文提出的算法和显示不与任何特定的计算机或其他设备固有地相关。各种其他系统可以与根据本文的教导的程序一起使用,或者可以证明构造更专门的装置来执行该方法是方便的。另外,没有参考任何特定的编程语言来描述本公开。应当理解,可以使用各种编程语言来实现如本文所述的本公开的教导。
本公开可以作为计算机程序产品或软件被提供,其可以包括其上存储有指令的机器可读介质,指令可以用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备等。
在前述公开中,已经参考本公开的特定示例实施方式描述了本公开的实施方式。明显的是,在不脱离如所附权利要求中阐述的本公开的更广泛的精神和范围的情况下,可以对其进行各种修改。在本公开以单数形式指代一些元素的情况下,在附图中可以描绘一个以上的元素,并且相同的元素用相同的附图标记来标记。因此,本公开和附图应当以说明性含义而不是限制性含义来理解。
鉴于前述内容,本公开的范围由所附权利要求确定。
Claims (20)
1.一种方法,包括:
接收针对机器学习ML模型的目标带宽增加,所述ML模型包括由第一位数目表示的第一数据类型的多个对象,其中所述目标带宽增加涉及将所述多个对象的第一部分改变为由不同于所述第一位数目的第二位数目表示的第二数据类型;
基于带宽,对所述ML模型中的所述多个对象进行排序;
基于所述目标带宽增加和所述多个对象的所述排序,标识所述多个对象的所述第一部分,以从所述第一数据类型改变为所述第二数据类型;以及
由处理器将所述多个对象的所述第一部分从所述第一数据类型改变为所述第二数据类型。
2.根据权利要求1所述的方法,其中所述ML模型包括神经网络,并且其中所述多个对象包括多个权重和多个二进制大对象BLOB。
3.根据权利要求1所述的方法,其中所述第一数据类型包括由所述第一位数目表示的第一整数数据类型,其中所述第二数据类型包括由所述第二位数目表示的第二整数数据类型,并且其中所述第二位数目大于所述第一位数目。
4.根据权利要求1所述的方法,其中所述目标带宽增加还涉及将所述多个对象中的至少一些对象改变为由大于所述第二位数目的第三位数目表示的第三数据类型,所述方法还包括:
基于所述目标带宽增加和对所述多个对象的所述排序,标识所述多个对象的第二部分,以从所述第一数据类型改变为所述第三数据类型;以及
将所述多个对象的所述第二部分从所述第一数据类型改变为所述第三数据类型。
5.根据权利要求4所述的方法,其中所述第一数据类型包括浮点数据类型,其中所述第二数据类型包括第一整数数据类型,并且其中所述第三数据类型包括第二整数数据类型。
6.根据权利要求1所述的方法,其中对所述基于带宽对所述ML模型中的所述多个对象进行排序包括:基于大小对所述多个对象进行排序。
7.根据权利要求6所述的方法,其中所述ML模型包括神经网络,并且其中对所述ML模型中的所述多个对象进行排序还基于相应对象与表示所述神经网络的网络图的根的接近度。
8.一种系统,包括:
处理器;以及
存储器,存储指令,所述指令在由所述处理器执行时,使所述处理器执行操作,所述操作包括:
接收针对神经网络的目标带宽增加,所述神经网络包括由第一位数目表示的第一数据类型的多个二进制大对象BLOB和权重,其中所述目标带宽增加涉及将所述多个BLOB和权重中的至少一些改变为由不同于所述第一位数目的第二位数目表示的第二数据类型;
基于所述目标带宽增加,标识所述多个BLOB和权重的第一部分,以从所述第一数据类型改变为所述第二数据类型;以及
将所述多个BLOB和权重的所述第一部分从所述第一数据类型改变为所述第二数据类型。
9.根据权利要求8所述的系统,其中所述操作还包括:
基于带宽对所述神经网络中的所述多个BLOB和权重进行排序,其中标识所述多个BLOB和权重中的所述第一部分以从所述第一数据类型改变为所述第二数据类型还基于所述多个BLOB和权重的所述排序。
10.根据权利要求8所述的系统,其中所述第一数据类型包括由所述第一位数目表示的第一整数数据类型,并且其中所述第二数据类型包括由所述第二位数目表示的第二整数数据类型。
11.根据权利要求8所述的系统,其中所述目标带宽增加还涉及将所述多个BLOB和权重中的至少一些改变为由小于所述第二位数目的第三位数目表示的第三数据类型,所述操作还包括:
基于所述目标带宽增加,标识所述多个BLOB和权重的第二部分,以从所述第一数据类型改变为所述第三数据类型;以及
将所述多个BLOB和权重的所述第二部分从所述第一数据类型改变为所述第三数据类型。
12.根据权利要求11所述的系统,其中所述第一数据类型包括浮点数据类型,其中所述第二数据类型包括第一整数数据类型,并且其中所述第三数据类型包括第二整数数据类型。
13.根据权利要求8所述的系统,所述操作还包括:
在将所述多个BLOB和权重的所述第一部分从所述第一数据类型改变为所述第二数据类型之后,确定所述神经网络不满足有效性标准,并且作为响应:
修改所述目标带宽增加;
基于所述修改的目标带宽增加,标识与所述多个BLOB和权重的所述第一部分不同的所述多个BLOB和权重的第二部分,以从所述第一数据类型改变为所述第二数据类型;以及
将所述多个BLOB和权重的所述第二部分从所述第一数据类型改变为所述第二数据类型。
14.一种非暂态计算机可读介质,包括存储的指令,所述指令在由处理器执行时,使所述处理器执行操作,所述操作包括:
接收针对机器学习ML模型的目标性能改变,所述ML模型包括由第一位数目表示的第一数据类型的多个对象,其中所述目标性能改变涉及将多个对象中的至少一些改变为由不同于所述第一位数目的第二位数目表示的第二数据类型;
基于大小对所述ML模型中的所述多个对象进行排序;
基于所述目标性能改变和对所述多个对象的所述排序,标识所述多个对象的第一部分,以从所述第一数据类型改变为所述第二数据类型;
将所述多个对象的所述第一部分从所述第一数据类型改变为所述第二数据类型;以及
使用ML模型,包括将所述多个对象的所述第一部分改变为所述第二数据类型,以从一个或多个输入推断结果。
15.根据权利要求14所述的非暂态计算机可读介质,其中所述ML模型包括神经网络,并且其中所述多个对象包括多个权重和多个二进制大对象BLOB。
16.根据权利要求14所述的非暂态计算机可读介质,其中所述第一数据类型包括由所述第一位数目表示的第一整数数据类型,并且其中所述第二数据类型包括由所述第二位数目表示的第二整数数据类型。
17.根据权利要求14所述的非暂态计算机可读介质,其中所述目标性能改变还涉及:将所述多个对象中的至少一些改变为由小于所述第二位数目的第三位数目表示的第三数据类型,所述操作还包括:
基于所述目标性能改变和对所述多个对象的所述排序,标识所述多个对象的第二部分,以从所述第一数据类型改变为所述第三数据类型;以及
将所述多个对象的所述第二部分从所述第一数据类型改变为所述第三数据类型。
18.根据权利要求17所述的非暂态计算机可读介质,其中所述第一数据类型包括浮点数据类型,其中所述第二数据类型包括第一整数数据类型,并且其中所述第三数据类型包括第二整数数据类型。
19.根据权利要求18所述的非暂态计算机可读介质,其中所述浮点数据类型包括32位浮点数据类型,所述第一整数数据类型包括12位整数数据类型,并且所述第二整数数据类型包括8位整数数据类型。
20.根据权利要求14所述的非暂态计算机可读介质,其中所述ML模型包括神经网络,并且其中所述对所述ML模型中所述多个对象进行排序还基于相应对象与表示所述神经网络的网络图的根的接近度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063030300P | 2020-05-26 | 2020-05-26 | |
US63/030,300 | 2020-05-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113723589A true CN113723589A (zh) | 2021-11-30 |
Family
ID=78672783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110572483.2A Pending CN113723589A (zh) | 2020-05-26 | 2021-05-25 | 混合精度神经网络 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20210377122A1 (zh) |
CN (1) | CN113723589A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11507823B2 (en) * | 2019-01-22 | 2022-11-22 | Black Sesame Technologies Inc. | Adaptive quantization and mixed precision in a network |
US11676068B1 (en) | 2020-06-30 | 2023-06-13 | Cadence Design Systems, Inc. | Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis |
US11687831B1 (en) | 2020-06-30 | 2023-06-27 | Cadence Design Systems, Inc. | Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference |
US11823018B1 (en) | 2020-06-30 | 2023-11-21 | Cadence Design Systems, Inc. | Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth |
US11651283B1 (en) | 2020-06-30 | 2023-05-16 | Cadence Design Systems, Inc. | Method, product, and apparatus for a machine learning process using dynamic rearrangement of sparse data and corresponding weights |
US11615320B1 (en) * | 2020-06-30 | 2023-03-28 | Cadence Design Systems, Inc. | Method, product, and apparatus for variable precision weight management for neural networks |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545066B (zh) * | 2011-12-08 | 2021-01-15 | 甲骨文国际公司 | 用于在易失性存储器内保持关系型数据的列向量的技术 |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
US11004209B2 (en) * | 2017-10-26 | 2021-05-11 | Qualcomm Incorporated | Methods and systems for applying complex object detection in a video analytics system |
JP7120308B2 (ja) * | 2018-07-06 | 2022-08-17 | 日本電気株式会社 | データ処理装置、データ処理回路およびデータ処理方法 |
US11531915B2 (en) * | 2019-03-20 | 2022-12-20 | Oracle International Corporation | Method for generating rulesets using tree-based models for black-box machine learning explainability |
CN111178546B (zh) * | 2019-12-31 | 2023-05-23 | 华为技术有限公司 | 机器学习模型的搜索方法及相关装置、设备 |
US11455195B2 (en) * | 2020-01-03 | 2022-09-27 | International Business Machines Corporation | Workload-based cognitive dynamic computing system optimization |
KR20220153001A (ko) * | 2020-03-13 | 2022-11-17 | 인텔 코포레이션 | 심층 신경망들의 배치를 위한 저정밀도 추론 모델들의 최적화 |
-
2021
- 2021-04-30 US US17/246,156 patent/US20210377122A1/en active Pending
- 2021-05-25 CN CN202110572483.2A patent/CN113723589A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210377122A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113723589A (zh) | 混合精度神经网络 | |
US11423311B2 (en) | Automatic tuning of artificial neural networks | |
US20230229978A1 (en) | Debugging correctness issues in training machine learning models | |
CN108701250B (zh) | 数据定点化方法和装置 | |
US10460230B2 (en) | Reducing computations in a neural network | |
TWI791610B (zh) | 對人工神經網路及浮點神經網路進行量化的方法及裝置 | |
US11694073B2 (en) | Method and apparatus for generating fixed point neural network | |
US11144817B2 (en) | Device and method for determining convolutional neural network model for database | |
US20230259778A1 (en) | Generating and utilizing pruned neural networks | |
CN111105029B (zh) | 神经网络的生成方法、生成装置和电子设备 | |
CN111160550A (zh) | 训练方法、信息处理设备和非暂态计算机可读存储介质 | |
US20220076123A1 (en) | Neural network optimization method, electronic device and processor | |
US20230196202A1 (en) | System and method for automatic building of learning machines using learning machines | |
CN115129386A (zh) | 用于神经网络部署和执行的有效优化 | |
CN110781686A (zh) | 一种语句相似度计算方法、装置及计算机设备 | |
CN116594748A (zh) | 针对任务的模型定制处理方法、装置、设备和介质 | |
CN113095508A (zh) | 回归模型构建优化方法、设备、介质及计算机程序产品 | |
CN112966754A (zh) | 样本筛选方法、样本筛选装置及终端设备 | |
JP7150651B2 (ja) | ニューラルネットワークのモデル縮約装置 | |
CN114830137A (zh) | 用于生成预测模型的方法和系统 | |
US11410036B2 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
CN113111998A (zh) | 信息处理设备、计算机可读存储介质和神经网络计算方法 | |
US20240061906A1 (en) | System and method for downsampling data | |
CN112181642B (zh) | 一种空间计算操作的人工智能优化方法 | |
US20230244534A1 (en) | Electronic device and controlling method of electronic device |
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 |