CN114341882A - 用于训练深度神经网络的无损指数和有损尾数权重压缩 - Google Patents

用于训练深度神经网络的无损指数和有损尾数权重压缩 Download PDF

Info

Publication number
CN114341882A
CN114341882A CN202080061568.8A CN202080061568A CN114341882A CN 114341882 A CN114341882 A CN 114341882A CN 202080061568 A CN202080061568 A CN 202080061568A CN 114341882 A CN114341882 A CN 114341882A
Authority
CN
China
Prior art keywords
mantissa
values
lookup table
exponent
index
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
Application number
CN202080061568.8A
Other languages
English (en)
Inventor
奚锦文
B·普蒂佩迪
M·特伦布莱
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114341882A publication Critical patent/CN114341882A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/26Conversion to or from stochastic codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6064Selection of Compressor
    • H03M7/6082Selection strategies
    • H03M7/6088Selection strategies according to the data type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3077Sorting
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Advance Control (AREA)

Abstract

提供了用于压缩值的系统、方法和装置。可以从存储器中获取多个参数,每个参数包括在模型中的人工神经元或节点之间的关系中使用的浮点数。可以从每个浮点数提取尾数值和指数值以生成尾数值集和指数值集。可以压缩该尾数值集以生成尾数查找表(LUT)和多个尾数LUT索引值。可以对该指数值集进行编码以生成指数LUT和多个指数LUT索引值。可以向一个或多个处理实体提供尾数LUT、尾数LUT索引值、指数LUT和指数LUT索引值,以训练模型。

Description

用于训练深度神经网络的无损指数和有损尾数权重压缩
背景技术
现代深度神经网络(DNN)通常由大量参数表示。每个参数(可以包括权重和/或偏差或其他参数)可以限定网络中的人工神经元或“节点”之间的连接。对于具有多个层并且每层内具有多个节点的复杂DNN,构成DNN的参数的数目可能达到数百万甚至数十亿。参数中的每个参数通常以浮点数据格式表示,诸如32位单精度格式,其中表示参数值的32位中的8个最高有效位(MSB)对应于指数,而23个最低有效位(LSB)加上一个附加隐藏位对应于尾数。
发明内容
提供本“发明内容”以便以简化形式介绍在下面的“具体实施方式”中进一步描述的概念的选择。本“发明内容”不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
提供了用于压缩值的系统、方法和计算机程序产品。可以从存储器中获取多个参数,每个参数包括在模型中的人工神经元或节点之间的关系中所使用的浮点数。可以从每个浮点数提取尾数值和指数值,以生成尾数值集和指数值集。可以压缩该尾数值集,以生成尾数查找表(LUT)和多个尾数LUT索引值。可以对该指数值集进行编码,以生成指数LUT和多个指数LUT索引值。可以向一个或多个处理实体提供尾数LUT、尾数LUT索引值、指数LUT和指数LUT索引值,以训练机器学习模型。
以这种方式,可以以非对称方式来压缩浮点数的尾数值和指数值,其中尾数的压缩可以使用定点值来执行。此外,可以以保留原始指数值的方式对指数进行编码,从而使得已编码的指数能够无损。因此,虽然尾数值的压缩可能是有损的,但与其他技术相比,指数值的无损编码仍可以减少总体损失。
下面参考附图详细描述各种示例实施例的另外的特征和优点以及结构和操作。注意,示例实现不限于本文中所描述的特定实施例。这些示例实施例在本文中仅出于说明性目的而呈现。基于本文中包含的教导,附加实现对于(多个)相关领域的技术人员将是很清楚的。
附图说明
并入本文并且形成说明书的部分的附图示出了本申请的示例实施例,并且与说明书一起进一步用于解释实施例的原理并且使相关领域的技术人员能够制作和使用示例实施例。
图1示出了根据示例实施例的、用于压缩参数值的系统的框图。
图2示出了根据示例实施例的、用于使用压缩参数值来训练模型的方法的流程图。
图3示出了根据示例实施例的、参数压缩系统的框图。
图4示出了根据示例实施例的、用于将该尾数值集分割成多个尾数簇的方法的流程图。
图5示出了根据示例实施例的尾数压缩器的框图。
图6示出了根据示例实施例的、用于使用解压缩浮点数集来训练DNN的方法的流程图。
图7是可以被用于实现各种示例实施例的、示例性的基于处理器的计算机系统的框图。
本文中所描述的实现的特征和优点结合附图从下面所阐述的详细描述中将变得更加明显,其中相同的附图标记自始至终标识对应元素。在附图中,相似的附图标记通常表示相同、功能相似和/或结构相似的元素。元素第一次出现的图由对应附图标记中(多个)最左边的数字表示。
具体实施方式
I.简介
本说明书和附图公开了很多示例实现。本申请的范围不限于所公开的实现,还包括所公开的实现的组合、以及对所公开的实现的修改。说明书中对“一种实现”、“实现”、“示例实施例”、“示例实现”等的引用表明所描述的实现可以包括特定特征、结构或特性,但是每个实现可能不必然包括特定特征、结构或特性。此外,这样的短语不必然指代相同实现。此外,当结合实现描述特定特征、结构或特性时,主张结合其他实现(无论是否明确描述)来实现这样的特征、结构或特性在(多个)相关领域的技术人员的知识范围内。
在讨论中,除非另有说明,否则诸如“基本上”和“大约”等修饰表示本公开的实现的一个或多个特征的特性的条件或关系的形容词应当被理解为表示条件或特性被限定为在针对其预期应用的实现的操作可接受的容差内。
多个示例实施例描述如下。应当注意,本文中所提供的任何节/小节标题并非旨在进行限制。贯穿本文档描述了实现,并且任何类型的实现可以被包括在任何节/小节下。此外,在任何节/小节中公开的实现可以以任何方式与在相同节/小节和/或不同节/小节中描述的任何其他实现组合。
II.示例实现
现代DNN通常由大量参数表示。每个参数(可以包括权重和/或偏差或其他参数)可以用于模型中的人工神经元或“节点”(诸如,网络中的人工神经元或节点)之间的数学关系。对于具有多个层并且每层内具有多个节点的复杂DNN,构成DNN的参数的数目可能达到数百万甚至数十亿。参数中的每个参数通常以浮点数据格式表示,诸如32位单精度格式,其中表示参数值的8个MSB对应于指数,而23个LSB(加上一个隐藏位)对应于尾数。
为了以足够的准确度训练DNN,通常需要多次迭代以确定DNN中的每个参数的适当值。然而,每次个体迭代都需要处理DNN中的所有参数,这不仅增加了训练DNN的延迟,而且需要大量系统资源(例如,处理能力)。克服这些缺点的一种方法是在向负责训练DNN的实体传输参数之前压缩参数。例如,可以采用依赖于浮点聚类算法(例如,K均值聚类)的基于聚类的权重压缩方法,其中参数值可以分割成不同簇。以这种方式,每个簇可以利用单个值来近似落入该簇下的参数值,并且可以仅将这些值而不是实际参数值传输给训练实体。然而,这种方法需要大量FLOP,这仍然可能包括处理和/或计算资源方面的大量开销。此外,这种聚类算法也是迭代的,并且当K的值很大时,可能需要数百次迭代才能充分收敛。
本文中所描述的实现通过用于压缩值的系统来解决这些和其他问题。在示例系统中,浮点数分离器可以从参数存储器获取多个参数(例如,权重矩阵等),每个参数包括浮点数,该浮点数在模型中的人工神经元或节点之间的数学关系中被使用。浮点分离器可以从每个浮点数提取尾数值和指数值,以生成尾数值集和指数值集。尾数压缩器可以压缩该尾数值集,以生成尾数LUT和多个尾数LUT索引值,每个参数被分配多个尾数LUT索引值中的一个。指数编码器可以对该指数值集进行编码,以生成指数LUT和多个指数LUT索引值,每个参数被分配多个指数LUT索引值中的一个指数LUT索引值。压缩参数通信器可以向至少一个处理实体提供尾数LUT、尾数LUT索引值、指数LUT和指数LUT值,以训练模型(例如,机器学习模型,诸如DNN)。
这种方法具有很多优点,包括但不限于提高可以训练机器学习模型(包括DNN)的效率。例如,如本文所述,将诸如权重矩阵的值等浮点参数分离成定点尾数和整数指数可以独立地基于分离的值的统计属性来实现压缩。换而言之,指数整数可以以无损方式编码,而尾数值(其可以是有限范围大于或等于1但小于2的小数)可以使用定点算术运算而被压缩。例如,可以使用定点聚类算法来压缩尾数值,该定点聚类算法与浮点聚类算法相比具有较低处理复杂性,从而使得能够在压缩权重时减少延迟、面积和功率。此外,使用定点聚类算法来对尾数进行聚类(相对于其中所有运算都需要在浮点域中进行的浮点算法)可以以更少迭代执行,从而进一步提高可以压缩值的效率。
更进一步,由于可以以更快的方式和减少的资源执行压缩,所以可以以更快的方式向处理实体传输压缩值,从而加快处理实体可以执行操作以训练机器学习模型的速率。例如,在存在数百万甚至数十亿参数的大型模型中,未压缩参数的传输可能会导致训练过程出现瓶颈,因为加速器通常可以比传输这些参数来更快地处理参数。换而言之,未压缩参数的通信通常比在加速器处使用这些参数的计算时间要长。通过实现本文中描述的技术,可以以减少要传输的值的总数目同时仍保持足够准确度的方式来压缩参数。在很多情况下,压缩值的数目可能是未压缩值的数目的一小部分。结果,可以减少参数在压缩实体(例如,参数服务器)与加速器中的每个加速器之间的通信时间,从而提高系统的总体性能和效率。
更进一步地,与其他技术相比,根据本文中描述的技术压缩值还可以实现压缩损失的减少。例如,由于指数可以以无损方式编码,所以对指数进行解码,以获取原始指数值不会引入任何错误。结果,当通过组合已解码的指数和解压缩尾数(取决于所使用的压缩技术,其可能是有损的)来恢复参数值(例如,通过生成解压缩权重矩阵)时,所产生的总体误差与现有技术相比可能更小。因此,在机器学习模型(例如,DNN)的训练过程中可能存在较小退化,这可能会减少训练过程中的迭代次数。
现在将描述针对用于压缩值的技术的示例实现。例如,图1示出了根据示例实现的、用于压缩参数值的示例系统100的框图。如图1所示,系统100包括参数存储器102、机器学习模型104、参数服务器106和一个或多个加速器110A至加速器110N。加速器110A加速器110N可以被统称为加速器112。
机器学习模型104可以包括任何类型的模型,该模型可以基于训练数据集而被训练以基于附加数据来进行预测。在示例实施例中,机器学习模型104可以包括以下中的一种或多种:人工智能(AI)模型、诸如人工神经网络(ANN)和/或深度神经网络(DNN)的神经网络、或可以包括将输入变量或特征与输出层连接的多个层的任何其他网络。在示例中,神经网络学习算法可以被用于生成和/或训练机器学习模型作为神经网络,该神经网络是互连的人工神经元组,也称为神经网络的节点。尽管本文中可以针对包括DNN的机器学习模型104来描述一些示例实施例,但是这样的实施例不旨在限制,并且一些示例实施例可以包括本文中描述的任何其他类型的模型。
神经网络可以由存储在参数存储器102中的多个参数来表示。参数存储器102可以被配置为存储表示机器学习模型104的参数的主副本。例如,参数存储器102可以包括多个权重、梯度、偏差、超参数等,这些多个权重、梯度、偏差、超参数等可以描述机器学习模型104的不同节点如何在数学上彼此相关。参数存储器102还可以包括其他数据结构,诸如可以作为加速器112在训练期间使用的存储空间而存在的激活存储。
在示例中,训练机器学习模型104可以以各种方式执行。在一种实现中,机器学习模型104可以包括矩阵(或矩阵集),该矩阵(或矩阵集)包括表示模型的参数。在执行训练之前,矩阵中的每个元素可以随机地和/或基于可能不必然准确的估计而被分配在0到1之间的值。参数服务器106可以被配置为从参数存储器102中获取矩阵(其包括参数)并且向加速器112提供参数。加速器112中的每个加速器可以处理分配给相应加速器的该参数集的部分并且确定梯度(例如,与每个参数相对应的误差值)并且反向传播梯度以更新参数值(例如,更新权重和/或偏差)。在一些示例实施例中,可以重复该过程,直到模型被认为已经充分收敛(例如,错误等级低于期望阈值),此时可以认为机器学习模型104已经被训练。
在示例实施例中,存储在参数存储器102中的参数值可以包括浮点值。例如,参数值可以根据电气和电子工程师协会浮点运算标准(IEEE 754)下的一个或多个精度级别进行存储,包括但不限于半精度、单精度和/或双精度。半精度浮点值可以包括16位,其中1位表示值的符号(例如,正或负),5位表示值的指数,10位表示值的尾数。单精度浮点值可以包括32位,其中1位表示值的符号,8位表示指数,23位表示尾数。双精度浮点值可以包括64位,其中1位表示值的符号,11位表示指数,52位表示尾数。实现不限于这些特定示例,而是可以包括具有尾数和指数的任何其他浮点格式。
在示例中,参数存储器102可以包括在参数服务器106外部或内部的一个或多个存储器设备。例如,参数存储器102可以被远程定位(例如,在云存储上),或位于同一位置,或可以包括参数服务器106的片外和/或片上存储器。这种存储设备的示例包括硬盘驱动器、固态驱动器、随机存取存储器(RAM)设备等。在一些实现中,参数存储器可以包括具有本文中所描述的一种或多种类型的存储器设备的组合的多个存储器设备。
如图1所示,参数服务器106可以包括参数压缩系统108。参数服务器106可以被配置为使用加速器112来协调机器学习模型104的训练。参数服务器106可以包括任何一个或多个处理实体,诸如中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、或可以从参数存储器102中获取参数并且向加速器112提供参数用以训练机器学习模型104的任何其他处理器(或包括一个或多个这样的处理器的计算设备)。尽管在图1中示出参数服务器106可以包括独立系统或单个实体,但是这个描述仅是说明性的而不是限制性的。参数服务器106可以包括任何类型或组合的处理实体,无论是独立的还是跨多个其他处理实体(未示出)而分布。下面参考图7讨论可以包含参数服务器106(和/或系统100的其他组件)的功能的示例计算设备。
在实现中,当模型104被训练时,参数服务器106可以从参数存储器102中(例如,以浮点格式)获取参数以提供给加速器112。如下面更详细地讨论的,参数压缩系统108可以被配置为以可以减少传输给加速器112的数据总量的方式来压缩所获取的参数值。作为结果,可以减少参数服务器106与加速器110A至加速器110N中的每个加速器之间的每个通信信道所需要的带宽量,从而增加加速器112可以处理已接收的参数的速度和效率。换而言之,参数压缩系统108可以允许以更快方式将参数(例如,权重和/或偏差)从参数存储器102传输给加速器112。压缩参数到加速器112的传输不仅在具有数百万甚至数十亿参数的较大模型中提供好处,而且带宽的减少也为各种类型的参数服务器配置提供效率好处,包括其中分布式训练可以如图1所示实现的多加速器配置、或单加速器配置(未明确说明)。
加速器112可以以各种方式训练机器学习模型104。例如,如图1所示,可以使用分布式训练配置,其中多个加速器110A至加速器110N(也被称为“工作器”)可以通过多个通信信道而从参数服务器106获取压缩参数。在这样的示例中,压缩参数可以包括权重和/或偏差,并且加速器112可以使用这样的参数来执行训练算法以训练机器学习模型104。加速器110A至加速器110N中的每个加速器可以包括一个或多个硬件加速器,诸如GPU、FPGA、专用集成电路(ASIC)、或者可以被配置和/或优化以用于训练机器学习模型(诸如,神经网络)的算术运算的任何其他处理实体。例如,这样的处理实体可以包括数百甚至数千个处理核心,这些处理核心可以被优化以执行算术功能。
在一些实现中,诸如在使用多个加速器的情况下,可以为每个加速器分配特定参数批次或块以进行处理(例如,基于神经网络中的层、或本领域技术人员理解的任何其他分布)。在通过神经网络来处理参数时,加速器112可以针对每个参数生成误差等级(例如,梯度),该参数可以被提供给参数服务器106。参数服务器106基于梯度来确定已更新的参数值(例如,使用权累加、权重优化和/或其他适当的技术),并且将已更新的权重重新传输给加速器112以用于下一次迭代。在一些实现中,参数服务器106还可以被配置为将已更新的参数存储在参数服务器102中。这样的过程(例如,由加速器112接收压缩参数、向参数服务器106提供梯度、在参数服务器106处确定已更新的参数)可以被重复或迭代,直到平均错误等级低于期望阈值。此时,机器学习模型104被认为已经收敛,并且可以认为训练完成(至少在接收到附加训练数据之前)。
注意,在一些实现中,加速器112可以处理以压缩形式的参数(例如,如由参数压缩系统108压缩的)。例如,在加速器112利用可以被调谐以对压缩参数进行操作的训练算法(基于软件或硬件或其组合)的情况下,本文中所描述的技术可以进一步增强系统的总体性能,尤其是在某些处理实体(例如,GPU)可能没有被优化以执行权重压缩的情况下。在这种实例中,加速器112可以从参数服务器106接收压缩参数,包括压缩权重和/或偏差,利用同态算法或其他算法,其中使用参数而不进行解压缩。在其他实现中,加速器112可以被配置为仅解压缩压缩参数的子集,同时对压缩参数执行其他操作。然而,在每种情况下,整个系统可以以高存储器效率方式操作以加速执行。
此外,应当理解,图1所示的任何组件可以彼此耦合,并且可以经由总线、网络或其他通信信道而被耦合到未明确示出的其他实体。例如,网络可以包括一个或多个网络,诸如局域网(LAN)、广域网(WAN)、个域网(PAN)、企业网络、互联网等,并且可以包括有线和/或无线部分。在实现中,图1所示的组件可以经由一个或多个应用程序编程接口(API)和/或根据其他接口和/或技术来进行通信。这样的组件中的任何一个或多个组件各自可以包括使得能够彼此通信的至少一个网络接口。这种有线或无线网络接口的示例包括IEEE 802.11无线LAN(WLAN)无线接口、全球微波接入互操作性(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙TM接口、近场通信(NFC)接口等。
相关领域的技术人员将理解,实现不限于图1所示的说明性布置。例如,图1所示的组件中的任何一个或多个组件可以在彼此位于同一位置或远程定位的计算设备和/或服务器设备上实现,诸如一个或多个基于云的服务器设备或基于云的计算平台。例如,图1所示的一个或多个组件可以在云中(例如,在一个或多个基于云的服务器上)执行或定位。在一些其他实现中,诸如在“AllReduce”配置中,可能不存在集中式参数服务器,而是每个加速器可以包括存储在参数存储器102中的参数的单独副本(或其部分)。也可以考虑其他配置,包括前述布置中的任何布置的组合,其中参数服务器可以在将参数传输给一个或多个加速器之前压缩参数,或者除了参数服务器之外的任何其他实体可以以与本文所述类似的方式压缩参数。
因此,在实现中,压缩参数值以训练机器学习模型可以以各种方式实现。例如,图2示出了根据示例实施例的、用于使用压缩参数值来训练机器学习模型的方法的流程图200。在实现中,流程图200的方法可以由参数压缩系统108实现。为了说明的目的,流程图200和内容覆盖引擎104关于图3而被描述如下。图3示出了根据示例实施例的参数压缩系统的框图。如图3所示,系统300包括参数存储器102、机器学习模型104、参数服务器106和加速器112的示例实现。参数存储器102包括权重324和梯度326。参数服务器106包括参数压缩系统108和参数更新器322。如图3所示,参数压缩系统108包括浮点数分离器302、尾数值集304、尾数压缩器306、尾数查找表308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数查找表318和指数索引值集320。流程图200和系统300在下文中进一步详细描述。
流程图200从步骤202开始。在步骤202中,从参数存储器获取多个参数,每个参数包括浮点数。例如,参考图3,浮点数分离器302可以被配置为从参数存储器102中获取多个参数。参数存储器102可以包括在诸如机器学习模型104的模型中的人工神经元或节点之间的关系中所使用的权重324。例如,权重324可以包括多个值(诸如,一个矩阵或多个矩阵),该值包括指示机器学习模型104的一层的特定节点如何在数学上与不同层中的另一节点相关的数值。这种权重324的示例可以包括可以用于训练和/或表示DNN的权重和/或参数。
在实现中,权重324可以包括至少基于指数和尾数的组合的多个浮点数。换而言之,权重324中的每个权重的值可以表示为:
w=mw*2ew
其中w表示数值权重值,mw表示尾数值,ew表示指数值。在很多实现中,诸如在权重324以单精度格式被存储的情况下,mw的值大于或等于1但小于2,ew的值在-128到+127之间。然而,可以理解,所描述的特定格式并非旨在限制。示例实施例可以针对任何合适的浮点格式来实现(例如,其中mw可以包括不同值范围或被归一化为不同值范围,ew具有更大或更小范围等)。
因此,在示例中,权重324中的每个权重可以包括可以被分割的位序列,其中一个部分表示指数(ew),而另一部分表示尾数(mw)。在一些另外的示例中,附加位可以包括指示特定权重值是正数还是负数的有符号位。如前所述,权重324可以包括具有任何适当精度的任何一种或多种格式,诸如半精度浮点格式(例如,16位)、单精度浮点格式(例如,32位)、双精度浮点格式(例如,64位)或任何其他合适的浮点格式。
在步骤204中,从每个浮点数提取尾数值和指数值以生成尾数值集和指数值集。例如,参考图3,浮点数分离器302可以被配置为分离表示权重324中的每个权重的数据的部分(例如,以浮点格式)以提取尾数值和指数值。例如,在权重324各自包括长度为32位的单精度浮点数(本文中也称为FP32)的情况下,尾数值可以被提取为总长度为24位的定点数,其格式为s1.23,其包括有符号整数位“1.23”表示在大于等于1并且小于2的范围内的值。换而言之,“1”可以表示在十进制点之前的数的整数值,而“23”表示在小数点之后的23位小数部分。因此,在实现中,“1.23”部分的值因此包括大于或等于1并且小于2的有限范围。在该示例中,24位尾数值(例如,其包括在小数点之前和之后的数)可以被进一步处理(下面详细描述)为24位定点数。由于表示尾数值的24位定点数的范围相对有限,因此所提取的尾数值可以包括小于以FP32格式可表示的全范围的值范围(例如,全范围通过结合尾数值和指数值来计算)。
在示例中,浮点数分离器302可以被配置为如针对权重值324中的每个权重值而描述的那样提取尾数值,以生成尾数值集304。换而言之,尾数值集304可以包括可以针对权重324中的每个权重而提取的多个尾数值(例如,在一个矩阵或多个矩阵中)。
如上所述,浮点数分离器302可以从浮点数中提取指数值。在一些实现中,浮点数分离器302可以彼此并行地提取如上所述的尾数值和指数值,以进一步减少延迟。换而言之,浮点数分离器302可以利用不同硬件组件来提取尾数指数值。例如,在FP32格式中,FP32值的指数部分可以包括8位序列。此外,在诸如FP32等某些格式中,指数值还可以利用指数偏差来使得指数值能够被表示为有符号指数值。例如,实际指数值可以通过从8位值中减去预定偏差值来确定。例如,在FP32格式下,8位指数值可以包括0到255之间的范围。但是,由于用于计算特定权重值的实际指数不限于正数(例如,0到255之间),所以可以使用为127的偏差并且将其从8位值中减去以启用在-128到+127之间的范围。
因此,在示例中,由浮点数分离器302提取的指数值可以类似地包括使用这种预定偏差的-128到+127的范围。作为结果,由浮点数分离器302提取的每个指数值可以包括有限的整数值范围。
浮点数分离器302可以被配置为如针对权重值324中的每个权重值所描述的那样提取指数值,以生成指数值集314。类似于尾数值集304,指数值集314可以包括与权重324中的每个权重相对应的多个指数值(例如,在一个矩阵或多个矩阵中)。
在步骤206中,压缩该尾数值集,以生成尾数查找表和多个尾数查找表索引值,每个参数被分配多个尾数查找表索引值中的一个尾数查找表索引值。例如,参考图3,尾数压缩器306可以获取尾数值集304并且压缩该尾数值集,以生成尾数LUT 308和尾数索引值集310。
尾数压缩器306可以以各种方式来压缩该尾数值集。在一个示例中,尾数压缩器306可以实现基于聚类的算法(例如,K均值聚类),其中来自尾数值集304的值可以被分割成多个K个簇,每个簇包括簇质心,该簇质心表示落入该簇的尾数值集304的所有尾数值。在这样的示例中,可以在尾数LUT 308中提供簇质心中的每个簇质心,其中LUT中的每个簇质心被分配LUT索引值。此外,针对每个参数(例如,权重324中的每个权重),尾数索引值集310可以包括通过为每个参数分配适当尾数LUT索引值而针对分配特定簇质心(即,尾数LUT 308中的值)。以这种方式,可以通过从尾数索引值集310中标识针对尾数值的LUT索引值并且从尾数LUT 308中获取与LUT索引值相对应的适当簇质心来确定尾数值集304的每个个体尾数值。还考虑其他压缩技术,包括但不限于基于稀疏性的压缩、基于精度的压缩或相关领域的技术人员理解的任何其他技术。
在步骤208中,对该指数值集进行编码以生成指数查找表和多个指数查找表索引值,每个参数被分配多个指数查找表索引值中的一个指数查找表索引值。例如,参考图3,指数编码器316可以对指数值集314进行编码以生成指数LUT 318和指数索引值集320。因为跨指数值集314的指数值包括有限的值范围(例如,对于FP32格式的权重,在-128到+127之间),所以指数编码器316可以以无损的方式对指数值集314进行编码。
例如,指数编码器316可以被配置为生成指数值集314中的指数值的直方图,以标识该集中的所有唯一指数值。指数编码器316可以将指数LUT索引值分配给唯一指数值中的每个唯一指数值,并且将LUT索引值和相关联的唯一指数值存储在指数LUT 318中。例如,在由浮点数分离器302提取的指数值(ew)是8位值的情况下,可以生成直方图h_ew,以标识跨整个指数值集314的所有可能的ew值。在该示例中,指数LUT 318可以包括由log2(h_ew)位索引值而索引的h_ew值,并且每个参数的个体指数值(存储在指数索引值集320中)可以由适当的log2(h_ew)位向量表示。以这种方式,可以通过从指数索引值集320中获取分配给参数的指数LUT索引值(长度为log2(h_ew)位)并且使用所获取的指数LUT索引值在指数LUT318中查找指数值来确定与每个参数相对应的原始指数值。应当注意并且理解,指数编码器316不限于使用如上所述的指数直方图来编码指数。例如,也可以实现其他技术,诸如使用类似无损的一种或多种其他编码方法对指数值集314进行编码。
对于很多机器学习模型,跨所有参数所提取的唯一指数值的实际数目通常比可能的指数值的全部范围小一个或多个数量级。例如,在全部指数值范围可以是-128到+127之间的任何数字的FP32格式中,指数编码器316可以标识跨参数上而被实际提取的较少数目的唯一值。在某些情况下,唯一值的数目可能不超过16个离散或不同整数值。在这些场景中,指数编码器316可以对指数值集314进行编码,以生成包括唯一指数值(小于16个值)的指数LUT 318、以及对应数目的索引值。因此,在这种类型的场景中,每个参数的指数值可以由4位指数LUT索引值(或更小)表示,该索引值标识针对参数的特定指数值。因为指数编码器316将所有唯一指数值(而不是近似值或平均值)存储在指数LUT 318中,所以指数值是无损的。换而言之,保留了编码前和编码后的指数值的动态范围,从而增强了压缩过程中指数值的完整性。此外,由于指数编码器316可以被配置为仅使用整数值在定点域中对指数值集314进行编码,所以指数编码器316可以使用具有相对小的门数的硬件来实现。
因此,不是在浮点域中压缩参数,这需要大量的可能是处理器密集型的浮点运算,本文中所描述的实现提供了使用第一技术(例如,基于聚类的压缩)来压缩尾数值并且使用第二技术对指数进行编码(例如,以无损方式对指数进行编码),这两种技术都发生在定点域中。结果,可以更快地并且利用更少处理资源(例如,减少硬件实现中的总体门数)来执行压缩参数。此外,由于可以如本文所述单独利用跨权重324的尾数和指数的不同数据统计,所以可以获取总体上更有效的权重压缩解决方案。
更进一步地,由于指数编码器316被配置为如上所述以无损方式对指数进行编码,因此与其他技术相比,压缩之后的参数的总体准确度增加。更进一步,因为尾数压缩器306可以独立于指数编码器316对指数进行编码来压缩尾数,所以尾数压缩器306可以与指数编码器316对指数值集314进行编码并行地压缩尾数值集304,从而进一步提高参数压缩系统108的效率并且减少总体延迟。
尽管本文中说明了尾数压缩器306可以在步骤206中生成尾数LUT 308和尾数索引值集310,并且指数编码器316可以在步骤208中生成指数LUT 318和指数索引值集320,但是该步骤布置和/或顺序不旨在以任何方式进行限制。例如,尾数压缩器306可以使用第一硬件资源集(例如,处理组件)来生成尾数LUT 308和尾数索引值集310,并且指数编码器316可以使用与第一集不同的第二硬件资源集来生成指数LUT 318和指数索引值集320。以这种方式,尾数压缩器306可以与指数编码器316生成指数LUT 318和指数索引值集320并行地生成尾数LUT 308和尾数索引值集310,以进一步减少处理时间和总压缩延迟。在其他示例中,尾数压缩器306可以在指数编码器316执行之后执行。因此,步骤206和208可以彼此同时执行或者可以乱序执行而没有脱离本公开的范围。
在步骤210中,将尾数查找表、尾数查找表索引值、指数查找表和指数查找表值提供给至少一个处理实体,以训练模型。例如,参考图3,压缩参数通信器312可以被配置为向加速器112传输尾数LUT 308、尾数索引值集310、指数LUT 318和指数索引值集320以训练机器学习模型104。对于每个所接收的压缩参数,加速器112可以通过基于尾数索引值而在尾数LUT 308中查找适当的簇质心,并且基于指数索引值而查找指数值来解压缩参数。通过如前所述组合尾数值和指数值,可以确定解压缩的权重值。在确定针对每个参数的解压缩的权重值之后,加速器112可以通过机器学习训练算法来处理权重值,以训练机器学习模型104。
在一些示例中,如上所述,加速器112(包括多个加速器110A至加速器110N)可以被配置为基于分配给加速器的参数的部分来训练机器学习模型104。例如,多个加速器中的每个加速器可以从压缩参数通信器312接收压缩参数的部分,从中重构解压缩参数,并且通过正在被训练的神经网络来处理解压缩参数。在通过网络来处理该参数集之后,可以确定针对每个参数的梯度(例如,误差值)并且将其反向传播以更新参数存储器102中的参数。换而言之,加速器112可以被配置为将所确定的梯度提供给参数更新器322,然后参数更新器322可以使参数存储器102中的权重324被适当调节。这样的过程可以被迭代多次,直到总体误差等级低于期望阈值,此时可以认为机器学习模型104已经被训练。
在一些示例中,诸如在机器学习模型104包括DNN(或其他类似类型的神经网络)的情况下,加速器112可以被配置为利用机器学习算法来确定用于每一层的每个节点的适当数学操纵,以便准确地将输入映射到期望输出。例如,DNN可以被配置为基于解压缩参数向网络中的个体人工神经元之间的连接中的每个连接分配数值。如果DNN没有以足够的准确度将输入映射到期望输出,则训练算法可以确定一个或多个梯度以改变解压缩参数,直到获取准确映射。
应当注意并且理解,尽管描述了可以执行这些技术以训练机器学习模型,但实现不受限制。所公开的使用一种技术(例如,基于聚类的压缩技术)来压缩尾数值并且使用另一种技术(例如,以无损方式)来对指数进行编码的实施例也可以在其他数据处理实现中执行,其中数字表示可以容忍有损压缩。例如,本文中所描述的技术可以用于图像压缩、视频压缩(或可以使用压缩的任何其他图形处理技术)、音频压缩、或相关领域的技术人员理解的任何其他基于压缩的方案。
如上所述,在示例中,尾数压缩器306可以以各种方式来压缩尾数值集304。例如,图4示出了根据示例实施例的、用于将该尾数值集分割成多个尾数簇的方法的流程图400。在示例中,流程图400的方法可以由尾数压缩器306实现,如图3所示。基于以下关于流程图400和系统300的讨论,其他结构和操作实现对于(多个)相关领域的技术人员将是很清楚的。
流程图400从步骤402开始。在步骤402中,将该尾数值集分割成多个尾数簇,每个簇包括定点簇质心。例如,参考图3,尾数压缩器306可以被配置为获取尾数值集304并且将该值集分割成多个尾数簇。尾数簇中的每个尾数簇可以包括例如定点簇质心,该簇质心包括分割到该特定簇中的所有尾数值的近似值或平均值。
作为说明性示例,如果机器学习模型包括浮点格式的1000个不同参数(尽管对于很多机器学习模型,这样的数字可能大得多),则浮点数分离器302可以因此从该参数集中提取1000个尾数值以生成尾数值集304。尾数压缩器306可以将尾数值集304的1000个尾数值分割成适当数目的尾数簇。作为示例,如果尾数压缩器306可以将1000个尾数值分割成4个簇,则每个簇可以与尾数值集304的大约250个尾数值相关联(尽管对于任何给定簇,该数字可能更高或更低,具体取决于实际数据统计)。在这样的示例中,每个簇可以包括簇质心,该簇质心是落入该簇下的所有尾数值(例如,250个值)的平均值。
在步骤404中,利用定点簇质心来填充尾数查找表。例如,参考图3,尾数压缩器306可以利用定点簇质心中的每个定点簇质心来填充尾数LUT 308。此外,对于定点簇质心中的每个定点簇质心,尾数LUT 308还可以包括标识簇质心的索引值。索引值可以包括log2(K)位索引值,其中K表示簇或分区的数目。
对于已经从中提取和压缩尾数值的每个参数,尾数压缩器306还可以标识参数的尾数值所属的适当尾数簇。例如,尾数值索引集310可以指示(在一个矩阵或多个矩阵中)对应log2(K)位索引值,该索引值用于标识存储在尾数LUT 308中的一个特定的定点簇质心。
因此,在这样的示例中,在利用压缩总共32位的FP32格式,而不是使用24位来表示针对给定参数的尾数值的情况下,尾数可以由较短尾数索引值表示,该较短尾数索引值标识尾数LUT 308中的该特定条目(即,定点簇质心)。换而言之,不是在前面描述的说明性示例中尝试使用昂贵的浮点运算来压缩1000个32位浮点值,而是实现启用将浮点值的尾数部分压缩成更小集(例如,1000个2位索引值,其中仅使用4个簇)。
在一些实现中,对尾数值集304进行聚类以生成尾数LUT 308,并且尾数索引值集310可以根据图5所示的系统来执行。例如,图5示出了根据示例实施例的、用于压缩尾数值的系统500的框图。图5的系统500包括尾数值集304、尾数压缩器308、尾数LUT 308和尾数索引值集310。
例如,在图5中,尾数值中的每个尾数值可以首先与初始质心值进行比较,以确定尾数值与质心值之间的距离。可以确定该差值的绝对值并且将其提供给下一块,该下一块可以确定跨尾数值的最小距离。基于最小距离,尾数值可以被分割成K个尾数簇。执行累加函数,该累加函数累加落在每个尾数簇下的所有尾数值。在数据累加之后,将针对每个簇的累加总和除以落在相应簇下的尾数值的数目,以确定针对簇的簇质心(即,平均值)。所得到的K个簇质心可以被存储在包括K个条目的尾数LUT 308中。在一些实现中,可以将簇质心反馈到初始距离块,并且可以重复该过程,直到针对每个簇质心的变化程度低于期望阈值。换而言之,一旦确定簇质心在后续迭代之间没有改变或改变很小,则可以认为聚类算法完成,并且可以向压缩参数通信器312提供尾数LUT 308和尾数值索引集310,以用于在随后传输给加速器112。
因为尾数值集304包括在定点域中具有有限值范围的所提取的尾数值(与最初从中提取值的浮点域相反),所以尾数压缩器306可以使用定点计算执行在图5中描述的操作中的每个操作,该计算速度更快并且需要更少处理资源(例如,硬件实现中的门更少)。例如,浮点域中的压缩可能需要多个周期来执行每个阶段,诸如对准指数,使得可以使用相同的比例来处理每个尾数值,在浮点域中执行计算,向后移动指数返回到适当格式(例如,FP32),和/或执行其他算术运算,诸如归一化、舍入等,其中每个操作都可能需要若干周期才能完成。相反,由于尾数值集304包括定点域中的值,所以图5中描述的每个操作可以使用具有单个周期的定点算术而不是昂贵的浮点运算来执行,从而使得能够以更少的面积、功率和延迟来执行压缩。此外,利用相对较小范围的值(例如,大于或等于1,但小于2)对尾数值进行聚类也可以减少为确定合适的簇质心集而需要执行的迭代次数。因此,与聚类具有较大动态范围的浮点值相比,聚类具有有限范围的定点尾数值甚至可以进一步减少压缩时间。
如上所述,在示例中,加速器112可以获取压缩参数值以训练机器学习引擎104。例如,图6示出了根据示例实施例的、用于使用解压缩浮点数集来训练DNN的方法的流程图。在示例中,流程图600的方法可以由加速器112实现,如图3所示。基于以下关于流程图600和系统300的讨论,其他结构和操作实现对于(多个)相关领域的技术人员将是很清楚的。
流程图600从步骤602开始。在步骤602中,至少基于尾数查找表、尾数查找表索引值、指数查找表和指数查找表索引值来生成解压缩定点值集。例如,参考图3,如前所述,加速器112可以被配置为从压缩参数通信器312接收尾数LUT 308、尾数索引值集310、指数LUT318和指数值集320。加速器112可以使用所接收的数据集来解压缩或重构源自权重324的参数值。例如,对于每个尾数值,加速器112可以从尾数索引值集310中标识与参数相对应的log2(K)位MLUT索引值,并且基于log2(K)位MLUT索引值从K条目尾数LUT 308中查找对应簇质心。类似地,对于指数值,加速器112可以从指数索引值集320中标识与参数相对应的log2(h_ew)位指数索引值,并且从h_ew条目指数LUT 318中查找对应指数值。在示例中,可以针对每个参数的尾数值和指数值进行解压缩,从而得到解压缩定点值集(即,定点尾数值和指数值)。
在示例中,压缩比可以被确定为32/(log2(h_ew)+log2(K)),其中32表示压缩之前的浮点位数(例如,对于FP32格式为32位)。对于包括多个DNN的多个机器学习模型,h_ew可以在8到16之间,而K可以小到4。使用这样的模型,可以实现5.3X到6.4X左右的压缩比,并且损失量相对较小。例如,当根据本文中描述的实现、基于原始值与解压缩值之间的距离比较来分析均方误差(MSE)时,观察到,与其中浮点值被压缩为整体的其他技术相比,MSE较小。由于较小的MSE,在训练机器学习模型104时可能发生较少的数据退化,从而使训练更高效。
在步骤604中,可以将该解压缩定点值集转换成解压缩浮点参数集。例如,参考图3,加速器302可以被配置为将每个参数的尾数值和指数值转换成浮点参数。例如,这种转换可以通过组合尾数簇质心和与参数相对应的解码指数值来执行。在一些示例中,浮点参数可以包括存储权重324的相同格式,诸如FP32,其中ew表示FP32参数的8位指数部分,而尾数簇质心表示FP32参数的23位尾数部分。在一些实现中,FP32参数的有符号位也可以由压缩参数通信器312提供作为尾数LUT 308、尾数索引值集310、指数LUT 318、指数索引值集320的部分,或者通过包括每个参数的相应有符号位的单独的一个或多个矩阵来提供。
在步骤606中,使用解压缩的该浮点参数集训练深度神经网络。例如,加速器112可以被配置为如本文中描述的使用合适的训练算法来训练机器学习模型104,诸如通过机器学习模型来处理解压缩浮点参数以确定梯度,梯度然后可以被反向传播,直到达到期望误差等级。
然而,应当注意并且理解,加速器112不需要在所有情况下解压缩参数。例如,取决于训练算法,加速器112可以被配置为使用压缩参数集来执行某些操作(例如,同态操作等)。在这种情况下,可以使得加速器112能够更高效地操作,因为不需要进行解压缩。
还应当注意,如相关领域的技术人员所理解的,参考图1至图6说明和/或描述的任何组件、子组件和/或步骤可以使用适当的电路系统以硬件来实现。例如,浮点数分离器302、尾数压缩器306、指数编码器316、压缩参数通信器312或参数更新器322中的任何一个或多个可以使用一个或多个电路来实现,诸如浮点数分离器电路、尾数压缩器电路、指数编码器电路、压缩参数输出电路和参数更新器电路。
III.示例计算机系统实现
参数存储器102、机器学习模型104、参数服务器106、参数压缩系统108、加速器110A至加速器110N、浮点数分离器302、尾数值集304、尾数压缩器306、尾数LUT 308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数LUT 318、指数索引值集320、参数更新器322、权重324、梯度326的组件中的一个或多个组件、以及流程图200、400和600的一个或多个步骤可以以硬件或硬件结合软件和/或固件来实现。例如,参数存储器102、机器学习模型104、参数服务器106、参数压缩系统108、加速器110A至加速器110N、浮点数分离器302、尾数值集304、尾数压缩器306、尾数LUT 308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数LUT 318、指数索引值集320、参数更新器322、权重324、梯度326的组件中的一个或多个组件、以及流程图200、400和600的一个或多个步骤可以被实现为被配置为在一个或多个处理器中执行并且被存储在计算机可读存储介质中的计算机程序代码/指令。
在另一实现中,参数存储器102、机器学习模型104、参数服务器106、参数压缩系统108、加速器110A至加速器110N、浮点数分离器302、尾数值集304、尾数压缩器306、尾数LUT308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数LUT 318、指数索引值集320、参数更新器322、权重324、梯度326的组件中的一个或多个组件、和流程图200、400和600的一个或多个步骤也可以在操作软件即服务(SaaS)或平台即服务(PaaS)的硬件中实现。备选地,参数存储器102、机器学习模型104、参数服务器106、参数压缩系统108、加速器110A至加速器110N、浮点数分离器302、尾数值集304、尾数压缩器306、尾数LUT308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数LUT 318、指数索引值集320、参数更新器322、权重324、梯度326的组件中的一个或多个组件、以及流程图200、400和600的一个或多个步骤可以被实现为硬件逻辑/电路系统。
例如,在实现中,参数存储器102、机器学习模型104、参数服务器106、参数压缩系统108、加速器110A至加速器110N、浮点数分离器302、尾数值集304、尾数压缩器306、尾数LUT 308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数LUT318、指数索引值集320、参数更新器322、权重324、梯度326的组件中的一个或多个组件、以及流程图200、400和600的一个或多个步骤可以在片上系统(SoC)中一起实现。SoC可以包括集成电路芯片,该集成电路芯片包括以下一项或多项:处理器(例如,中央处理单元(CPU)、微控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口、和/或其他电路,并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
图7描绘了可以在其中实现示例实施例的计算设备700的实现。例如,参数存储器102、机器学习模型104、参数服务器106、参数压缩系统108、加速器110A至加速器110N、浮点数分离器302、尾数值集304、尾数压缩器306、尾数LUT 308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数LUT 318、指数索引值集320、参数更新器322、权重324和/或梯度326各自可以在类似于固定或移动计算机实现中的计算设备700的一个或多个计算设备中实现,包括计算设备700的一个或多个特征和/或备选特征。本文中提供的计算设备700的描述是出于说明的目的而提供的,并不旨在进行限制。示例实施例可以在其他类型的计算机系统中实现,如(多个)相关领域的技术人员已知的。
如图7所示,计算设备700包括一个或多个处理器(称为处理器电路702)、系统存储器704、和将包括系统存储器704在内的各种系统组件耦合到处理器电路702的总线706。处理器电路702是作为中央处理单元(CPU)、微控制器、微处理器和/或其他物理硬件处理器电路在一个或多个物理硬件电路设备元件和/或集成电路设备(半导体材料芯片或管芯)中实现的电气和/或光学电路。处理器电路702可以执行存储在计算机可读介质中的程序代码,诸如操作系统730、应用程序732、其他程序734等的程序代码。总线706表示任何多个类型的总线结构中的一种或多种总线结构,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用任何各种总线架构的处理器或本地总线。系统存储器704包括只读存储器(ROM)708和随机存取存储器(RAM)710。基本输入/输出系统712(BIOS)被存储在ROM 708中。
计算设备700还具有以下驱动器的一项或多项:用于从硬盘读取和向其写入的硬盘驱动器714、用于从可移动磁盘718读取或向其写入的磁盘驱动器716、以及用于从诸如CDROM、DVD ROM或其他光学介质等可移动光盘722读取或向其写入的光盘驱动器720。硬盘驱动器714、磁盘驱动器716和光盘驱动器720分别通过硬盘驱动器接口724、磁盘驱动器接口726和光盘驱动器接口728连接到总线706。驱动器及其相关联的计算机可读介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管描述了硬盘、可移动磁盘和可移动光盘,但可以使用其他类型的基于硬件的计算机可读存储介质来存储数据,诸如闪存卡、数字视频磁盘、RAM、ROM和其他硬件存储介质。
多个程序模块可以被存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统730、一个或多个应用程序732、其他程序734和程序数据736。应用程序732或其他程序734可以包括例如用于实现以下项的计算机程序逻辑(例如,计算机程序代码或指令):参数存储器102、机器学习模型104、参数服务器106、参数压缩系统108、加速器110A至加速器110N、浮点数分离器302、尾数值集304、尾数压缩器306、尾数LUT 308、尾数索引值集310、压缩参数通信器312、指数值集314、指数编码器316、指数LUT 318、指数索引值集320、参数更新器322、权重324、梯度326的组件中的一个或多个组件、以及流程图200、400和600的一个或多个步骤和/或本文中描述的另外的实现。
用户可以通过诸如键盘738和定点设备740的输入设备将命令和信息输入到计算设备700中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、触摸屏和/或触摸板、接收语音输入的语音识别系统、接收手势输入的手势识别系统等。这些和其他输入设备通常通过耦合到总线706的串行端口接口742而被连接到处理器电路702,但也可以通过其他接口连接,诸如并行端口、游戏端口或通用串行总线(USB)。
显示屏744还经由接口(诸如,视频适配器746)连接到总线706。显示屏744可以在计算设备700外部,或者并入计算设备700中。显示屏744可以显示信息、以及用于接收用户命令和/或其他信息(例如,通过触摸、手指手势、虚拟键盘、触控笔、笔、定点设备等)的用户界面。除了显示屏744之外,计算设备700可以包括其他外围输出设备(未示出),诸如扬声器和打印机。
计算设备700通过适配器或网络接口750、调制解调器752或用于在网络上建立通信的其他装置而被连接到网络748(例如,互联网)。调制解调器752(可以是内部的或外部的)可以经由串行端口接口742连接到总线706,如图7所示,或者可以使用另一接口类型(包括并行接口)而被连接到总线706。
如本文中使用的,术语“计算机程序介质”、“计算机可读介质”和“计算机可读存储介质”用于指代物理硬件介质,诸如与硬盘驱动器714相关联的硬盘、可移动磁盘718、可移动光盘722、其他物理硬件介质,诸如RAM、ROM、闪存卡、数字视频磁盘、zip磁盘、MEM、基于纳米技术的存储设备、以及其他类型的物理/有形硬件存储介质。这种计算机可读存储介质与通信介质(不包括通信介质)不同并且不交叠。通信介质在诸如载波的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据。术语“调制数据信号”是指一种信号,该信号的一个或多个特性以这样一种方式设置或改变以便对信号中的信息进行编码。作为示例而非限制,通信介质包括诸如声学、RF、红外线和其他无线介质的无线介质、以及有线介质。实现还涉及与涉及计算机可读存储介质的实现分开并且不交叠的这种通信介质。
如上所述,计算机程序和模块(包括应用程序732和其他程序734)可以存储在硬盘、磁盘、光盘、ROM、RAM或其他硬件存储介质上。这种计算机程序也可以经由网络接口750、串行端口接口742或任何其他接口类型来接收。这样的计算机程序在由应用执行或加载时使计算设备700能够实现本文中公开的示例实施例的特征。因此,这样的计算机程序代表计算设备700的控制器。
实现还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机程序产品。这样的计算机程序产品包括硬盘驱动器、光盘驱动器、存储设备包、便携式存储棒、存储卡和其他类型的物理存储硬件。
IV.附加示例实施例
本文中公开了一种用于压缩值的系统。系统包括:一个或多个处理器;以及一个或多个存储器设备,存储被配置为由一个或多个处理器执行的程序代码,程序代码包括:浮点数分离器,被配置为:从参数存储器获取多个参数,每个参数包括浮点数,该浮点数在模型中的人工神经元或节点之间的关系中被使用;从每个浮点数提取尾数值和指数值以生成尾数值集和指数值集;尾数压缩器,被配置为压缩尾数值集,以生成尾数查找表和多个尾数查找表索引值,每个参数被分配多个尾数查找表索引值中的一个尾数查找表索引值;指数编码器,被配置为对指数值集进行编码,以生成指数查找表和多个指数查找表索引值,每个参数被分配多个指数查找表索引值中的一个指数查找表索引值;以及压缩参数通信器,被配置为将向至少一个处理实体提供尾数查找表、尾数查找表索引值、指数查找表和指数查找表值,以训练模型。
在前述系统的一种实现中,至少一个处理实体包括至少一个硬件加速器,并且模型包括深度神经网络。
在前述系统的另一实现中,至少一个处理实体被配置为:至少基于尾数查找表、尾数查找表索引值、指数查找表和指数查找表索引值生成解压缩定点值集;将解压缩定点值集转换成解压缩浮点参数集;以及使用解压缩浮点参数集来训练深度神经网络。
在前述系统的另一实现中,尾数压缩器被配置为通过以下方式来压缩尾数值集以生成尾数查找表:将尾数值集分割成多个尾数簇,每个簇包括定点簇质心;以及利用定点簇质心填充尾数查找表,每个尾数查找表索引值标识定点簇质心中的特定定点簇质心。
在前述系统的另一实现中,已编码的指数值集是无损的。
在前述系统的另一实现中,尾数压缩器被配置为与指数编码器对指数值集进行编码并行地压缩尾数值集。
在前述系统的另一种实现中,每个浮点数是单精度浮点数或双精度浮点数中的一种浮点数。
本文中公开了一种用于压缩值的方法。方法包括:从参数存储器获取多个参数,每个参数包括浮点数,该浮点数在模型中的人工神经元或节点之间的关系中被使用;从每个浮点数提取尾数值和指数值以生成尾数值集和指数值集;压缩尾数值集,以生成尾数查找表和多个尾数查找表索引值,每个参数被分配多个尾数查找表索引值中的一个尾数查找表索引值;对指数值集进行编码,以生成指数查找表和多个指数查找表索引值,每个参数被分配多个指数查找表索引值中的一个指数查找表索引值;以及向至少一个处理实体提供尾数查找表、尾数查找表索引值、指数查找表和指数查找表值,以训练模型。
在前述方法的一种实现中,至少一个处理实体包括至少一个硬件加速器,并且模型包括深度神经网络。
在前述方法的另一实现中,方法还包括:至少基于尾数查找表、尾数查找表索引值、指数查找表和指数查找表索引值生成解压缩定点值集;将解压缩定点值集转换成解压缩浮点参数集;以及使用解压缩浮点参数集来训练深度神经网络。
在前述方法的另一实现中,压缩尾数值集以生成尾数查找表包括:将尾数值集分割成多个尾数簇,每个簇包括定点簇质心;以及利用定点簇质心来填充尾数查找表,每个尾数查找表索引值标识定点簇质心中的特定定点簇质心。
在前述方法的另一实现中,已编码的指数值集是无损的。
在前述方法的另一实现中,压缩尾数值与对指数值进行编码并行执行。
在前述方法的另一种实现中,每个浮点数是单精度浮点数或双精度浮点数中的一种浮点数。
本文中公开了一种设备。设备包括:浮点数分离器电路,被配置为:从参数存储器获取多个参数,每个参数包括浮点数,该浮点数在模型中的人工神经元或节点之间的关系中被使用;以及从每个浮点数提取尾数值和指数值以生成尾数值集和指数值集;尾数压缩器电路,被配置为压缩尾数值集,以生成尾数查找表和多个尾数查找表索引值,每个参数被分配多个尾数查找表索引值中的一个尾数查找表索引值;指数编码器电路,被配置为对指数值集进行编码,以生成指数查找表和多个指数查找表索引值,每个参数被分配多个指数查找表索引值中的一个指数查找表索引值;以及压缩参数输出电路,被配置为输出尾数查找表、尾数查找表索引值、指数查找表和指数查找表值以用于由至少一个处理实体使用,以训练模型。
在前述设备的一种实现中,至少一个处理实体包括至少一个硬件加速器,并且模型包括深度神经网络。
在前述设备的另一实现中,至少一个处理实体包括被配置为进行以下操作的电路系统:至少基于尾数查找表、尾数查找表索引值、指数查找表和指数查找表索引值生成解压缩定点值集;将解压缩定点值集转换成解压缩浮点参数集;以及使用解压缩浮点参数集来训练深度神经网络。
在前述设备的另一实现中,尾数压缩器电路被配置为:将尾数值集分割成多个尾数簇,每个簇包括定点簇质心;以及用定点簇质心填充尾数查找表,每个尾数查找表索引值标识定点簇质心中的特定定点簇质心。
在前述设备的另一实现中,已编码的指数值集是无损的。
在前述设备的另一实现中,尾数压缩器电路被配置为与指数编码器电路对指数值集进行编码并行地压缩尾数值集。
V.结论
尽管上面已经描述了各种示例性实施例,但是应当理解,它们只是作为示例而不是限制性的方式呈现的。(多个)相关领域的技术人员将理解,在不背离如所附权利要求中限定的实施例的精神和范围的情况下,可以对其进行形式和细节的各种改变。因此,本发明的广度和范围不应当受任何上述示例实施例的限制,而应当仅根据以下权利要求及其等同物来限定。

Claims (15)

1.一种用于压缩值的系统,包括:
一个或多个处理器;以及
一个或多个存储器设备,存储被配置为由所述一个或多个处理器执行的程序代码,所述程序代码包括:
浮点数分离器,被配置为:
从参数存储器获取多个参数,每个参数包括浮点数,所述浮点数在模型中的人工神经元或节点之间的关系中被使用;
从每个浮点数提取尾数值和指数值,以生成尾数值集和指数值集;
尾数压缩器,被配置为压缩所述尾数值集,以生成尾数查找表和多个尾数查找表索引值,每个参数被分配所述多个尾数查找表索引值中的一个尾数查找表索引值;
指数编码器,被配置为对所述指数值集进行编码,以生成指数查找表和多个指数查找表索引值,每个参数被分配所述多个指数查找表索引值中的一个指数查找表索引值;以及
压缩参数通信器,被配置为向至少一个处理实体提供所述尾数查找表、所述尾数查找表索引值、所述指数查找表和指数查找表值,以训练所述模型。
2.根据权利要求1所述的系统,其中所述至少一个处理实体包括至少一个硬件加速器,并且
其中所述模型包括深度神经网络。
3.根据权利要求2所述的系统,其中所述至少一个处理实体被配置为:
至少基于所述尾数查找表、所述尾数查找表索引值、所述指数查找表和所述指数查找表索引值来生成解压缩定点值集;
将所述解压缩定点值集转换成解压缩浮点参数集;以及
使用所述解压缩浮点参数集来训练所述深度神经网络。
4.根据权利要求1所述的系统,其中所述尾数压缩器被配置为通过以下方式来压缩所述尾数值集以生成所述尾数查找表:
将所述尾数值集分割成多个尾数簇,每个簇包括定点簇质心;以及
利用所述定点簇质心来填充所述尾数查找表,每个尾数查找表索引值标识所述定点簇质心中的特定定点簇质心。
5.根据权利要求1所述的系统,其中已编码的所述指数值集是无损的。
6.根据权利要求1所述的系统,其中所述尾数压缩器被配置为,与所述指数编码器对所述指数值集进行编码并行地压缩所述尾数值集。
7.根据权利要求1所述的系统,其中每个浮点数是单精度浮点数或双精度浮点数中的一种浮点数。
8.一种用于压缩值的方法,包括:
从参数存储器获取多个参数,每个参数包括浮点数,所述浮点数在模型中的人工神经元或节点之间的关系中被使用;
从每个浮点数提取尾数值和指数值,以生成尾数值集和指数值集;
压缩所述尾数值集,以生成尾数查找表和多个尾数查找表索引值,每个参数被分配所述多个尾数查找表索引值中的一个尾数查找表索引值;
对所述指数值集进行编码,以生成指数查找表和多个指数查找表索引值,每个参数被分配所述多个指数查找表索引值中的一个指数查找表索引值;以及
向至少一个处理实体提供所述尾数查找表、所述尾数查找表索引值、所述指数查找表和指数查找表值,以训练所述模型。
9.根据权利要求8所述的方法,其中所述至少一个处理实体包括至少一个硬件加速器,并且
其中所述模型包括深度神经网络。
10.根据权利要求9所述的方法,还包括:
至少基于所述尾数查找表、所述尾数查找表索引值、所述指数查找表和所述指数查找表索引值来生成解压缩定点值集;
将所述解压缩定点值集转换成解压缩浮点参数集;以及
使用所述解压缩浮点参数集来训练所述深度神经网络。
11.根据权利要求8所述的方法,其中压缩所述尾数值集以生成所述尾数查找表包括:
将所述尾数值集分割成多个尾数簇,每个簇包括定点簇质心;以及
利用所述定点簇质心来填充所述尾数查找表,每个尾数查找表索引值标识所述定点簇质心中的特定定点簇质心。
12.根据权利要求8所述的方法,其中已编码的所述指数值集是无损的。
13.根据权利要求8所述的方法,其中压缩所述尾数值集与对所述指数值集进行编码并行地被执行。
14.根据权利要求8所述的方法,其中每个浮点数是单精度浮点数或双精度浮点数中的一种浮点数。
15.一种设备,包括:
浮点数分离器电路,被配置为:
从参数存储器获取多个参数,每个参数包括浮点数,所述浮点数在模型中的人工神经元或节点之间的关系中被使用;以及
从每个浮点数提取尾数值和指数值,以生成尾数值集和指数值集;
尾数压缩器电路,被配置为压缩所述尾数值集,以生成尾数查找表和多个尾数查找表索引值,每个参数被分配所述多个尾数查找表索引值中的一个尾数查找表索引值;
指数编码器电路,被配置为对所述指数值集进行编码,以生成指数查找表和多个指数查找表索引值,每个参数被分配所述多个指数查找表索引值中的一个指数查找表索引值;以及
压缩参数输出电路,被配置为输出所述尾数查找表、所述尾数查找表索引值、所述指数查找表和指数查找表值,以用于由至少一个处理实体使用,以训练所述模型。
CN202080061568.8A 2019-09-03 2020-06-09 用于训练深度神经网络的无损指数和有损尾数权重压缩 Pending CN114341882A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/559,241 2019-09-03
US16/559,241 US11615301B2 (en) 2019-09-03 2019-09-03 Lossless exponent and lossy mantissa weight compression for training deep neural networks
PCT/US2020/036781 WO2021045810A1 (en) 2019-09-03 2020-06-09 Lossless exponent and lossy mantissa weight compression for training deep neural networks

Publications (1)

Publication Number Publication Date
CN114341882A true CN114341882A (zh) 2022-04-12

Family

ID=71899926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080061568.8A Pending CN114341882A (zh) 2019-09-03 2020-06-09 用于训练深度神经网络的无损指数和有损尾数权重压缩

Country Status (4)

Country Link
US (1) US11615301B2 (zh)
EP (1) EP4008057B1 (zh)
CN (1) CN114341882A (zh)
WO (1) WO2021045810A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114781604A (zh) * 2022-04-13 2022-07-22 广州安凯微电子股份有限公司 神经网络权重参数的编码方法、编码器及神经网络处理器
WO2023227064A1 (zh) * 2022-05-26 2023-11-30 吕仁硕 一种浮点数压缩方法、运算装置及计算器可读取存储媒介

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11005654B2 (en) * 2019-05-14 2021-05-11 Google Llc Outsourcing exponentiation in a private group
CN113452379B (zh) * 2021-07-16 2022-08-02 燕山大学 断面轮廓降维模型训练方法、系统及数据压缩方法、系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019080232A (ja) * 2017-10-26 2019-05-23 株式会社Preferred Networks 勾配圧縮装置、勾配圧縮方法及びプログラム
US20190370667A1 (en) * 2018-06-01 2019-12-05 Samsung Electronics Co., Ltd. Lossless compression of sparse activation maps of neural networks
US10747502B2 (en) * 2018-09-19 2020-08-18 Xilinx, Inc. Multiply and accumulate circuit
US20200143226A1 (en) * 2018-11-05 2020-05-07 Samsung Electronics Co., Ltd. Lossy compression of neural network activation maps
US11588499B2 (en) * 2018-11-05 2023-02-21 Samsung Electronics Co., Ltd. Lossless compression of neural network weights
GB2579399B (en) * 2018-11-30 2020-12-16 Imagination Tech Ltd Data compression and storage
US11562247B2 (en) * 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
US20200264876A1 (en) * 2019-02-14 2020-08-20 Microsoft Technology Licensing, Llc Adjusting activation compression for neural network training
US11416248B2 (en) * 2020-03-28 2022-08-16 Intel Corporation Method and system for efficient floating-point compression

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114781604A (zh) * 2022-04-13 2022-07-22 广州安凯微电子股份有限公司 神经网络权重参数的编码方法、编码器及神经网络处理器
CN114781604B (zh) * 2022-04-13 2024-02-20 广州安凯微电子股份有限公司 神经网络权重参数的编码方法、编码器及神经网络处理器
WO2023227064A1 (zh) * 2022-05-26 2023-11-30 吕仁硕 一种浮点数压缩方法、运算装置及计算器可读取存储媒介

Also Published As

Publication number Publication date
US20210064986A1 (en) 2021-03-04
EP4008057A1 (en) 2022-06-08
EP4008057B1 (en) 2024-04-17
US11615301B2 (en) 2023-03-28
WO2021045810A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
US11615301B2 (en) Lossless exponent and lossy mantissa weight compression for training deep neural networks
CN113424202A (zh) 针对神经网络训练调整激活压缩
CN107340993B (zh) 运算装置和方法
KR102608467B1 (ko) 뉴럴 네트워크의 경량화 방법, 이를 이용한 인식 방법, 및 그 장치
US10114554B1 (en) Arrangements for storing more data in faster memory when using a hierarchical memory structure
CN106549673B (zh) 一种数据压缩方法及装置
CN113273082A (zh) 具有异常块浮点的神经网络激活压缩
CN110880038A (zh) 基于fpga的加速卷积计算的系统、卷积神经网络
CN113348474A (zh) 具有非均匀尾数的神经网络激活压缩
WO2020176250A1 (en) Neural network layer processing with normalization and transformation of data
CN111240746B (zh) 一种浮点数据反量化及量化的方法和设备
US8515882B2 (en) Efficient storage of individuals for optimization simulation
TW202013261A (zh) 算數框架系統及操作浮點至定點算數框架的方法
CN111492369B (zh) 人工神经网络中移位权重的残差量化
US11243743B2 (en) Optimization of neural networks using hardware calculation efficiency and adjustment factors
WO2023159820A1 (zh) 图像压缩方法、图像解压缩方法及装置
TW202312033A (zh) 雙指數邊界框浮點處理器
EP4024198A1 (en) Information processing device, information processing system, and information processing method
US11342933B2 (en) Lossy significance compression with lossy restoration
Madadum et al. A resource-efficient convolutional neural network accelerator using fine-grained logarithmic quantization
CN113255878A (zh) 用于神经网络模型压缩的转义重新排序模式的确定方法和装置
KR102502162B1 (ko) 특징 맵을 컴프레싱하는 장치 및 방법
US20230075932A1 (en) Dynamic variable quantization of machine learning parameters
Song et al. SqueezeBlock: A Transparent Weight Compression Scheme for Deep Neural Networks
US20220188077A1 (en) Arithmetic processing device, arithmetic processing method, and storage medium

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