CN113419779B - 可扩展多精度数据流水线系统和方法 - Google Patents

可扩展多精度数据流水线系统和方法 Download PDF

Info

Publication number
CN113419779B
CN113419779B CN202110485500.9A CN202110485500A CN113419779B CN 113419779 B CN113419779 B CN 113419779B CN 202110485500 A CN202110485500 A CN 202110485500A CN 113419779 B CN113419779 B CN 113419779B
Authority
CN
China
Prior art keywords
tensor
input
dataset
local
output
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.)
Active
Application number
CN202110485500.9A
Other languages
English (en)
Other versions
CN113419779A (zh
Inventor
汪一
齐峥
王辉
李政
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.)
Black Sesame Intelligent Technology Chongqing Co Ltd
Original Assignee
Black Sesame Intelligent Technology Chongqing Co Ltd
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 Black Sesame Intelligent Technology Chongqing Co Ltd filed Critical Black Sesame Intelligent Technology Chongqing Co Ltd
Publication of CN113419779A publication Critical patent/CN113419779A/zh
Application granted granted Critical
Publication of CN113419779B publication Critical patent/CN113419779B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Mathematics (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Processing (AREA)

Abstract

一种可扩展多精度数据流水线系统,包括:本地缓存器,其以本地存储格式存储输入本地数据集;耦接到本地缓存器的输入张量整形器,其读取输入本地数据集,并将输入本地数据集转换为具有向量宽度N乘以张量长度L的张量格式的输入张量数据集;耦接到输入张量整形器的级联流水线,其使输入张量数据集路由通过至少一个函数级,从而得到输出张量数据集;耦接到级联流水线的输出张量整形器,其将输出张量数据集转换为具有本地存储格式的输出本地数据集,并且其中输出张量整形器将输出本地数据集写入本地缓存器。

Description

可扩展多精度数据流水线系统和方法
技术领域
本公开涉及人工神经网络,并且尤其涉及提供了用于计算人工神经网络中的非线性和算术函数的可扩展多精度数据流水线系统和方法。
背景技术
人工神经网络中利用了非线性函数。大多数当前的人工神经网络依赖于中央处理单元 (CPU)和/或图形处理单元(GPU)架构来执行非线性函数,这降低了硬件利用率/效率,并且在大多数计算均由硬件专用集成电路(ASIC)进行时,停止或暂停数据管道,使得中间计算可返回CPU/GPU以执行非线性计算,然后使用CPU/GPU来计算最终结果或者将中间结果再次发送回硬件。缺少可提供通用解决方案以满足不同人工神经网络架构的各种需求的通用架构。
发明内容
一种示例可扩展多精度数据流水线系统,包括以下中的至少之一:本地缓存器,其以本地存储格式存储输入本地数据集;耦接到所述本地缓存器的输入张量整形器,其读取所述输入本地数据集,并将所述输入本地数据集转换为输入张量数据集,所述输入张量数据集具有向量宽度N乘以张量长度L的张量格式;耦接到所述输入张量整形器的级联流水线,其使所述输入张量数据集路由通过至少一个函数级,从而得到输出张量数据集;耦接到所述级联流水线的输出张量整形器,其将所述输出张量数据集转换为具有所述本地存储格式的输出本地数据集,并且其中所述输出张量整形器将所述输出本地数据集写入所述本地缓存器。
在其中一个实施例中,所述的可扩展多精度数据流水线系统进一步包括耦接到所述级联流水线的封装器,其用于将多个函数级融合成融合运算。
在其中一个实施例中,所述级联流水线允许以内联方式计算多个运算,并节省存储器带宽。
在其中一个实施例中,所述的可扩展多精度数据流水线系统进一步包括所述至少一个函数级内的逐元素级,其沿着所述张量长度L在逐个元素的基础上处理所述输入张量数据集。
在其中一个实施例中,所述的可扩展多精度数据流水线系统进一步包括所述至少一个函数级内的逐张量级,其处理所述输入张量数据。
在其中一个实施例中,所述的可扩展多精度数据流水线系统进一步包括所述至少一个函数级内的量化调整器,其通过所述至少一个函数级动态地调整量化。
在其中一个实施例中,所述至少一个函数级保留中间步骤值的定点表示法,并定义局部优化的数据表示,以实现动态范围。
在其中一个实施例中,所述中间步骤值包括输入值、结果值和输出值中的至少一个。
在其中一个实施例中,所述的可扩展多精度数据流水线系统进一步包括所述至少一个函数级内的归一化器,所述归一化器将所述输入张量数据集标准化为较小的范围。
在其中一个实施例中,所述的可扩展多精度数据流水线系统进一步包括所述至少一个函数级内的查找级,其将经标准化的输入张量数据集映射到索引存储器存储,所述索引存储器存储输出所述经标准化的输入张量数据集与用于确定存储器存储中的查找位置的参考值之间的差。
一种示例可扩展多精度数据流水线方法,包括以下中的至少之一:读取以本地存储格式存储的输入本地数据集;将所述输入本地数据集转换为输入张量数据集,所述输入张量数据集具有向量宽度N乘以张量长度L的张量格式;使所述输入张量数据集路由通过至少一个函数级,从而得到输出张量数据集;将所述输出张量数据集转换为具有所述本地存储格式的输出本地数据集,并将所述输出本地数据集写入本地缓存器。
在其中一个实施例中,所述的可扩展多精度数据流水线方法进一步包括将多个函数级封装成融合运算。
在其中一个实施例中,所述的可扩展多精度数据流水线方法进一步包括在所述至少一个函数级中,沿着所述张量长度L在逐个元素的基础上处理所述输入张量数据集。
在其中一个实施例中,所述的可扩展多精度数据流水线方法进一步包括在所述至少一个函数级中处理所述输入张量数据集。
在其中一个实施例中,所述的可扩展多精度数据流水线方法进一步包括通过所述至少一个函数级动态地调整量化。
在其中一个实施例中,所述的可扩展多精度数据流水线方法进一步包括保留中间步骤值的定点表示法,并定义局部优化的数据表示,以实现动态范围。
在其中一个实施例中,所述中间步骤值包括输入值、结果值和输出值中的至少一个。
在其中一个实施例中,所述的可扩展多精度数据流水线方法进一步包括将所述输入张量数据集标准化为较小的范围。
在其中一个实施例中,所述的可扩展多精度数据流水线方法进一步包括将经标准化的输入张量数据集映射到索引存储器存储,所述索引存储器存储输出所述经标准化的输入张量数据集与用于确定存储器存储中的查找位置的参考值之间的差。
附图说明
在附图中:
图1是根据本公开的一个实施例的第一示例系统图;
图2是根据本公开的一个实施例的第二示例系统图;
图3是根据本公开的一个实施例的示例架构概览;
图4是根据本公开的一个实施例的示例可扩展多精度数据处理流水线片层(slice)。
图5是根据本公开的一个实施例的基于示例查找表的非线性函数实现架构;以及
图6是根据本公开的一个实施例的示例方法。
具体实施方式
下面列出的实施例仅是为了说明这种装置和方法的应用而写的,而不是为了限制范围。对这种装置和方法的等同修改形式应被归为落在权利要求的范围内。
贯穿以下描述和权利要求书,使用某些术语来指代特定的系统部件。如本领域的技术人员将领会的,不同的公司可能用不同的名称来指代某一部件和/或方法。本文献并无意在名称不同但功能相同的部件和/或方法之间进行区分。
在以下讨论和权利要求书中,术语“包括”和“包含”以开放式方式使用,因此可解释为意指“包括但不限于……”。同样,术语“耦接”或“耦合”旨在意指间接连接或直接连接。因此,如果第一设备耦接到第二设备,则该连接可以是通过直接连接,或者通过经由其他设备和连接的间接连接。
图1描绘了示例混合计算系统100,其可用于实现与过程600的一个或多个部分或步骤的操作相关联的神经网络。在该示例中,与混合动力系统相关联的处理器包括可配置且可编程专用硬件122、图形处理器单元(GPU)120和中央处理单元(CPU)118。
CPU 118、GPU 120以及可配置且可编程专用硬件122具有提供神经网络的能力。CPU 是可以执行许多不同的功能的通用处理器,其通用性导致执行多个不同任务的能力,但是,它对多个数据流的处理受限,并且其与神经网络有关的功能也受限。GPU是图形处理器,其具有许多小型处理核心,这些小型处理核心能够按顺序处理各并行的任务。可配置且可编程设备具有被重新配置,并以硬接线方式执行可被编程到CPU或GPU中的任何功能的能力。由于可配置且可编程专用硬件的编程采用电路形式,因此其速度比CPU快许多倍,并且比 GPU快得多。
图形处理器单元120、中央处理单元118和可配置且可编程专用硬件设备122相连,并连接至存储器接口和控制器112。可配置且可编程专用硬件设备通过可编程逻辑电路到存储器互连130连接至存储器接口。由于可配置且可编程专用硬件设备以非常大的带宽工作的事实,并且为了使可配置且可编程专用硬件设备用于执行存储器任务所利用的电路系统最小化,因此使用了该附加设备。另外,存储器接口和控制器112还连接到永久存储器盘110、系统存储器114和只读存储器(ROM)116。
图1的系统可被利用来对可配置且可编程专用硬件设备进行编程和训练。GPU能很好地处理非结构化数据,并且可被利用来进行训练,一旦已训练了数据,就可找到确定性推理模型,并且CPU可使用由GPU确定的模型数据对可配置且可编程专用硬件设备进行编程。
存储器接口和控制器连接到中央互连124,该中央互连还另外连接到GPU 120、CPU118 和可配置且可编程专用硬件设备122。中央互连124还另外连接到输入和输出接口128以及网络接口126。
图2描绘了第二示例混合计算系统200,其可用于实现与过程600的一个或多个部分或步骤的操作相关的神经网络。在该示例中,与该混合系统相关联的处理器包括可配置且可编程专用硬件设备210和中央处理单元(CPU)220。
可配置且可编程专用硬件设备电连接到可配置且可编程专用硬件设备控制器212,可配置且可编程专用硬件设备控制器212与直接存储器存取(DMA)218接口连接。DMA连接到输入缓存器214和输出缓存器216,输入缓存器214和输出缓存器216耦接到可配置且可编程专用硬件设备,以分别将数据缓冲进入可配置且可编程专用硬件设备或将数据从可配置且可编程专用硬件设备缓冲出来。DMA 218包括两个先入先出(FIFO)缓存器,一个先入先出缓存器用于主机CPU,另一个先入先出缓存器用于可配置且可编程专用硬件设备,DMA允许将数据写入适当的缓存器,以及从适当的缓存器读取数据。
在DMA的CPU侧设有主开关228,该主开关228将数据和命令往返送到(shuttle)DMA。 DMA还连接到SDRAM控制器224,该控制器224允许将数据从CPU 220往返传送FPGA,以及将数据从可配置且可编程专用硬件设备往返传送到CPU 220,SDRAM控制器还连接到外部SDRAM 226和CPU 220。开关228连接到外围设备接口230。闪存控制器222控制持久存储器,并连接到CPU 220。
如图3中所公开的,可扩展多精度数据流水线(EMDP)包括本地缓存器(101),该本地缓存器(101)可将数据存储到主存储器/从主存储器加载数据。两个输入张量整形器(102) 将数据从其在本地缓存器中的存储格式转换为二维N乘以L张量格式,其中两个维度为向量宽度(N)和张量长度(L)。级联流水线(103)包括多个计算级。输出张量整形器(104)将得到的张量转换为在本地缓存器中的存储格式,并将结果写回到本地缓存器中。计算级取至多2个N乘以L张量作为输入,从而将特定的计算任务(图3中的函数CU或函数RC) 施加于输入张量,相应地,计算函数以及计算输出至多2个张量。输出张量可在输入到下一级之前,在量化级(107)中被量化,这允许这些计算级的处理精度是独立的。从一个输入张量到一个输出张量,存在绕过计算和量化级的可选的直接路径(108)。当不需要分配的计算能力时,可以使用旁路路径来降低处理延迟,并降低功耗。
存在两个基本类型的计算级,即逐元素计算级(element-wise computationstage)(105) 和逐张量计算级(tensor-wise computation stage)(106)。逐元素计算级(105)取一个或两个二维张量作为输入,沿着张量长度方向以逐个元素的方式处理张量。如图3中的105所公开的,一个逐元素计算级包括N个数据处理片层。片层是被独立处理的。因此,输出是维度与输入张量相同的一个张量或两个张量。逐张量计算级(106)处理张量,并生成维度小于输入张量的输出。逐张量计算级适于实现归约运算符(ReductionOperator),例如归约加法(ADD)、归约减法(SUBSTRACTION)、归约最小值、归约最大值等。逐张量计算级一次处理一个张量,并且在其处理了输入张量的最后一个元素之后生成有效输出。
计算级的数量、计算级所携带的特定函数以及不同函数级在流水线化级联中的次序是根据具体应用来设计的。
图4描绘了EMDP数据路径,该路径被专门设计来满足来自机器学习人工神经网络的计算需求。数据路径的第一级(201)执行非线性函数(NLF)。人工神经网络的非线性函数的示例为S形(sigmoid)函数、双曲正切(tanh)函数、指数(逆指数)函数、ln函数、平方根(反平方根)函数和倒数函数。所公开的实施架构支持非线性函数(诸如前面列出的非线性函数并且可以被扩展为支持其他非线性函数)。如图4所示,由于非线性运算是一元运算,因此实施非线性函数的计算级具有至多两个独立的数据处理通道。通道能够独立地对其输入张量施加非线性运算。第二级(202)是缩放(SCALE)/乘法级。这一级中存在两个乘法器 (204、205)。乘法器接收输入张量之一作为其主要输入。另一输入在运行时可配置,其可以是另一输入张量或者是可加载的常数值(C0或C1)。可配置架构允许同一级执行不同的计算,也就是,要么是两个独立的张量缩放运算,即将常数与张量的元素相乘,要么是两个输入张量的逐元素乘法运算,可选地,同时对输入张量之一进行一次缩放运算。第三级(203) (其为基于加法的级)利用加法器作为基本算术单元。它支持基于加法的一元运算,例如加法、减法、比较、最小值和最大值。在加上存储元素之后,这一级还沿着张量深度方向执行累加。利用数据路径中的级联计算级,所公开的架构可以将多个算术运算封装成融合运算,输入数据一次进入EMDP,并且EMDP生成一系列算术运算的结果。逐张量计算级(106)在第三级(203)(即基于加法的级)后面。所公开的示例的示例融合运算可表示为更通用的格式:
O=R(C0×f(A)*C1×g(B))
其中,
A、B和O是从输入和输出张量中提取的向量
f和g是指数函数、对数函数、平方根函数、双曲正切函数、S形函数、单位函数
C0和C1是缩放常数
“*”是向量“加法”、向量“减法”、向量“乘法”、向量“比较”、向量“最小值”、向量“最大值”函数
R是向张量施加的张量归约函数。
考虑到人工神经网络通常会进行海量数据处理,放松对中间结果的存储分配以节省存储器占用(footprint),诸如图3中的本地缓存器(101)。通过降低存储器访问量,融合运算提供更快的计算和更少的能耗。
在计算级内部,所公开的EMDP架构利用整数算术单元来执行计算,从而使硬件成本最小化。混合精度由输入张量整形器和输出张量整形器以两种方式支持。
输入张量整形器(102)和输出张量整形器(104)被设计为具有数据类型转换逻辑。因此,EMDP采用输入数据格式,例如浮点32、浮点16、32位定点、16位定点、8位定点等,并将数据转换为其对应的定点表示。数据类型转换可导致较小的动态范围或导致计算精度损失。在人工神经网络中,特定层的动态区域被有意约束在较小的范围内。较小的动态范围对结果产生微不足道的影响。整数算术单元的位宽被设计为宽到足以提供目标精度。
人工神经网络的另一特征在于,对于作为推理模式(inference mode)(其为基于硬件的平台的最具针对性的模式),系统预先了解计算任务的动态范围。通过利用该知识来调整量化级(107)设置,计算级使用局部优化的数据表示来进行计算。在用整数算术单元执行计算时,计算级保持在中间步骤的值(即输入值、计算结果值和输出值)的定点表示法。将诸如定点之类的局部优化的数据表示定义为分配少到整数位,以满足动态范围,从而避免溢出。因此,该计算以最高的可允许精度来完成,最大可用位表示值的小数部分。
所公开的混合精度机制减少了用于实施纯浮点或定点算法的硬件资源,这种纯浮点或定点算法用于大动态范围,而大多数人工神经网络应用都不需要这种纯浮点或定点算法。与使用隐式算术点表示法的纯整数表示(即INT32、INT16和INT8)相比,所公开的系统和方法为精度优化提供了更多的灵活性。因此,当与使用类似硬件资源的纯整数实施方式相比时,所公开的混合精度机制能够实现更高的计算精度。
作为所公开的EMDP架构的部件之一,本文中还公开了通用非线性函数,该通用非线性函数可以执行人工神经网络常用的非线性函数,在增加/去除非线性函数的类型而没有架构变化方面是可扩展的,在调整计算精度方面是可扩展的,而且在硬件成本随着所支持的非线性函数的数目以及更高的计算精度而线性增加方面是可扩展的。
分段线性逼近可能是满足该精度的最具成本效益的算法。如图5中所公开的,非线性函数架构具有四个逻辑级,即标准化(301),其将相对较大的输入范围标准化为较小的范围。例如,归一化器(normalizer)将输入值Xin=2^k*nXin拆分成3D数据集(sign,k,nXin),其中sign(符号)和k是在缩放校正级(304)中使用的缩放因子,nXin是以定点格式存储的归一值。图5中的nQ为该定点值的Q因子。张量nQ是2D张量nQ=(m,n),其中m是该值的整数位的数目,n是小数位的数目。非线性函数利用预先定义的nQ。对于不同的非线性函数,nQ可能不是相同的。
第二级是查找表级,其具有两个构建块IDX_GEN(302)和LUT(303)。LUT是一片 (apiece of)存储器,在该片存储器内,固定数目的条目被分配给一个特定的非线性函数。例如,N个条目被分配给非线性函数f(x),x<=x最小值并且x>=x最大值。基本的LUT表构建方法是线性采样,其中xi=x最小值+(x最大值-x最小值)/N*i,其中0<=I<N。LUT的第i个条目存储实际的非线性结果f(xi)。此处,xi被称为一个输入样本,并且f(xi)是一个输出样本。对于梯度在标准化输入范围内突然变化的某些函数(即S形和双曲正切),将标准化输入范围拆分成若干分段,使得在各输入分段中的梯度变化减小,从而使得分段线性算法可产生更好的精度。
IDX_Gen(302)将经标准化的输入值xi<=nXin<xi+1映射到指向存储器位置存储f(xi)的索引。通过精心设计的存储,可以通过对输入值进行简单的按位运算来进行索引生成,从而减少了硬件资源。IDX_Gen输出输入值和用于查找的参考值之间的差nX_delta=nXin–xi。
LUT条目在存储器中具有相关联的信息,该信息是特定函数在采样范围内的梯度。例如,在给定第i个元素存储值f(xi)的情况下,第(i+1)个元素存储值f(xi+1)。采样范围(xi,xi+1)的梯度为Grad=(f(xi+1)-f(xi))/(xi+1–xi)。LUT使用相同的索引来对值和对应的Grad进行寻址。值和Grad以定点格式存储。在图5中,tQ表示值的Q因子,gQ表示梯度的Q因子。
为了减少硬件,梯度或nX_delta可具有减小的位宽。例如,对于列出的8个非线性函数,要实现12位精度的峰值信噪比(PSNR)>72dB的实践LUT实现(practice LUTimplementation) 需要15位值,而8位梯度和8位nX_delta足以实现该目标峰值信噪比。
查找级生成3个输出,即Ylut、Grad和nX_delta。Ylut是用于运行输入值xi<=nXin<xi+1的查找值。Ylut=f(xi)。Grad是函数f(x)在采样范围(xi,xi+1)处的梯度。nX_delta是实际输入值和相关联的采样输入之间的差。
第三级(305)是分段插值级,其实现了分段插值算法,其中输出nY=Ylut+Grad*nX_delta。
非线性函数的最后一级是缩放校正级(304),其将经归一化的查找结果校正回基于实际输入值的结果。缩放器逻辑是基于特定的非线性函数导出的。例如,对于倒数函数f(x)=1/x,当x=2k*nXin时,f(x)=2-k*nY,这可以通过简单的硬件移位器来实现。对数函数f(x)= ln(x)=ln(2k*nXin)=ln(2k)+ln(nXin)=ln(2k)+nY。由于k是整数并且具有有界的范围,因此缩放校正部分ln(2k)是查找表中预先计算好的常数。
所公开的非线性函数架构可以实现任意精度。为了增加精度,设计者可以增加为特定非线性函数分配的LUT条目的数目和/或增加数据单元的位宽。为了降低硬件成本,设计者可以以更小的计算精度为代价来减少LUT条目的数目并减小位宽。
应用示例
所公开的EMDP架构能够执行人工神经网络所使用的各种运算。对于简单的运算,流程十分简明易懂(straight forward)。基本上,在目标算术级激活的情况下,输入张量遍历EMDP 数据路径一次,在最后一个元素到达输出张量整形器(104)级之后,结果张量可用。那些运算包括一元运算、二元运算和归约运算。一元运算包括张量绝对值、否定、区间限定、缩放、比较、张量双曲正切、S形、指数、对数、倒数、平方根等。二元运算包括逐元素的加法/减法、逐元素的乘法/除法、逐元素的最小/最大值等。归约运算包括归约加法、最大/最小元素选择等。
较复杂的运算可包括多次迭代,其中迭代被定义为输入张量通过EMDP数据路径一次。在本公开中,单ANN运算的实施流程在本文中作为应用示例来公开:
softmax运算假定输入张量是一维向量,它计算:
Figure RE-GDA0003225692740000081
基于示例的EMDP实现(EMDP implementation)(图4),可通过以下迭代来实现softmax 函数:
迭代1:使用归约最大值(reduction MAX)来计算输入向量的最大值;
迭代2:使用向量减法(vectored SUB)从向量中的元素中减去最大值;
迭代3:经由向量指数(vectored EXP)来计算值的指数,并执行归约加法(reduction ADD) 来计算指数之和;
迭代4:计算和的标量倒数,然后将(缩放)指数值乘以该倒数。
由于CPU/GPU上的软件实现的性能/成本比低,人工神经网络倾向于支持(favor)利用可配置且可编程专用硬件设备或ASIC的硬件解决方案。当前的硬件解决方案致力于使诸如矩阵乘法和卷积之类的计算密集型函数增速。与基于矩阵的运算相比,完整的神经网络具有更多的计算类型。这样的运算是非线性函数、逐元素算法、逐向量算法,甚至是矩阵向量乘法。一些现有的硬件解决方案依赖于CPU/GPU来执行那些功能,这使得解决方案不独立。一些解决方案添加硬件逻辑来支持某些函数(例如,双曲正切或S形)作为激活函数。由于缺乏通用性,这样的解决方案限于某些神经网络结构。
所公开的可扩展多精度数据流水线(EMDP)提供了一种通用的ASIC/可配置且可编程专用硬件设备实施架构来处理基于硬件的人工神经网络解决方案的大多数计算任务。
运行时可配置的逐元素数据路径能够进行由人工神经网络执行的最常见的计算。所公开的系统和方法是完全流水线化、可旁路的,逐元素数据路径提供了可持续的吞吐量,同时使每个计算任务的延迟最小化。向量处理器架构通过复制逐元素数据路径来可扩展,以满足更高的性能目标。所公开的系统和方法通过融合常规运算序列来允许对存储器带宽的高效使用 (诸如降低了通用CPU/GPU或数字信号处理器(DSP)中的运算的加载/存储开销),跨多个运算共享加载/存储带宽,允许连续的3D感知张量数据加载/存储流水线以及通过计算进行的加载/存储操作,而没有开销周期的成本。相邻微级之间的可配置量化单元允许局部的按照算术函数的优化精度、基于全局按任务的精度优化、混合精度神经网络层之间的无缝对接 (seamless interfacing),并且当与通用计算单元(诸如,CPU/GPU)相比时,具有较高的性能/成本比。
一种示例可扩展多精度数据流水线系统,包括:本地缓存器101,其以本地存储格式存储输入本地数据集;耦接到本地缓存器的输入张量整形器102,其读取该输入本地数据集,并将该输入本地数据集转换为输入张量数据集,该输入张量数据集具有向量宽度N乘以张量长度 L的张量格式。该系统还包括:耦接到输入张量整形器的级联流水线103,其使输入张量数据集路由通过至少一个函数级(诸如,逐元素计算级105),从而得到输出张量数据集;耦接到级联流水线的输出张量整形器104,其将输出张量数据集转换为具有本地存储格式的输出本地数据集,并且其中输出张量整形器104将输出本地数据集写入本地缓存器。
该系统还可包括:耦接到级联流水线的封装器(encapsulator),其用于将多个函数级融合成融合运算;至少一个函数级内的逐元素级(element-wise stage),其沿着张量长度L在逐个元素的基础上处理输入张量数据集;至少一个函数级内的逐张量级(tensor-wise stage),其处理输入张量数据集;以及,至少一个函数级内的量化调整器,其通过至少一个函数级动态地调整量化。至少一个函数级可以保留中间步骤值的定点表示法,并定义局部优化的数据表示,以实现动态范围,并且中间步骤值包括输入值、结果值和输出值中的至少一个。该系统还可包括:至少一个函数级内的归一化器,其将输入张量数据集标准化为较小的范围;以及,至少一个函数级内的查找级,其将经标准化的输入张量数据集映射到索引存储器存储,该索引存储器存储输出经标准化的输入张量数据集与用于确定存储器存储中的查找位置的参考值之间的差。
一种可扩展多精度数据流水线方法,包括:读取610以本地存储格式存储的输入本地数据集;将输入本地数据集转换612为输入张量数据集,所述输入张量数据集具有向量宽度N 乘以张量长度L的张量格式;使输入张量数据集路由614通过至少一个函数级,从而得到输出张量数据集。该方法还包括:将输出张量数据集转换616为具有本地存储格式的输出本地数据集,并将输出本地数据集写入618本地缓存器。
该方法还可包括:将多个函数级封装成融合运算;在至少一个函数级中,沿着张量长度 L在逐个元素的基础上处理输入张量数据集;以及,在至少一个函数级中处理输入张量数据集。该方法还可通过至少一个函数级动态地调整量化,以及保留中间步骤值的定点表示法,并定义局部优化的数据表示,以实现动态范围。中间步骤值可包括输入值、结果值和输出值中的至少一个。该方法还可包括将输入张量数据集标准化为较小的范围,以及将经标准化的输入张量数据集映射到索引存储器存储,该索引存储器存储输出经标准化的输入张量数据集与用于确定存储器存储中的查找位置的参考值之间的差。
本领域技术人员将理解,本文描述的各个说明性框、模块、元件、部件、方法和算法可以实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,已在上文大体上根据各个说明性框、模块、元件、部件、方法和算法的功能对其进行了描述。将这样的功能实现为硬件还是软件取决于特定的应用和整个系统上施加的设计约束。技术人员可以用不同的方式为每一特定应用实现所描述的功能。在不背离本主题技术的范围的情况下,各个部件和框可完全不同地布置(例如,以不同的次序布置,或者以不同的方式分割)。
应理解,所公开的过程中的步骤的特定次序或层级是对示例方法的说明。应理解,可以基于设计偏好,重新布置这些过程中的步骤的特定次序或分层结构。一些步骤可以同时执行。随附的方法权利要求以样本次序呈现了各个步骤的要素,而不意味着限于所呈现的特定次序或分层结构。
提供先前的描述以使得本领域的任何技术人员都能够实施本文描述的各个方面。先前的描述提供了本主题技术的各种示例,并且本主题技术不限于这些示例。对这些方面的各种修改对于本领域技术人员而言将是显而易见的,并且本文中定义的一般原理可适用于其他方面。因此,不旨在将权利要求书受限于本文示出的各方面,而是意在使全部范围与权利要求的语言表述相一致,其中除非明确指出,否则以单数形式提及某元件并不旨在表示“一个且仅一个”,而表示“一个或多个”。除非另有明确说明,否则术语“一些”指代一个或多个。男性代词(例如,他的)包括女性和中性性别(例如,她的以及它的),并且反之亦然。标题和副标题(如果有的话)仅是为了方便而使用,而并不限制本发明。谓语单词“被配置以”、“可操作以”以及“被编程以”并不暗示对主题的任何特定的有形修改或无形修改,而是旨在被互换地使用。例如,处理器被配置以监视和控制操作或部件也可意指该处理器被编程以监视和控制该操作,或者该处理器可操作以监视和控制该操作。同样,处理器被配置以执行代码可被解释为处理器被编程以执行代码,或可操作以执行代码。
诸如“方面”之类的短语并不暗示该方面对于本主题技术是必不可少的,也不暗示该方面适用于本主题技术的所有配置。涉及某方面的公开可适用于所有配置或者一个或多个配置。某方面可以提供一个或多个示例。诸如方面之类的短语可以指一个或多个方面,并且反之亦然。诸如“实施例”之类的短语并不暗示该实施例对于本主题技术是必不可少的,也不暗示该实施例适用于本主题技术的所有配置。涉及某实施例的公开可适用于所有实施例或者一个或多个实施例。某实施例可以提供一个或多个示例。诸如“实施例”之类的短语可以指代一个或多个实施例,并且反之亦然。诸如“配置”之类的短语并不暗示该配置对于本主题技术是必不可少的,也不暗示该配置适用于本主题技术的所有配置。涉及某配置的公开可适用于所有配置或者一个或多个配置。某配置可以提供一个或多个示例。诸如“配置”之类的短语可以指代一个或多个配置,并且反之亦然。
单词“示例”在本文中用于表示“用作示例或说明”。在本文中被描述为“示例”的任何方面或设计不必被解释为比其他方面或设计更优选或有利。
与贯穿本公开描述的各个方面(这些方面是本领域的普通技术人员已知或以后将知道的) 的元件等同的所有结构和功能均通过引用明确纳入本文,并且旨在由权利要求书涵盖。此外,无论在权利要求书中是否明确叙述了这样的公开内容,都不意在将其捐献于公众。任何权利要求的要素均不得根据35U.S.C.§112第六段的规定来进行解释,除非该要素是使用短语“用于……的装置”来明确记载的,或者在方法权利要求的情况下,该要素是使用短语“用于……的步骤”来记载的。此外,在说明书或权利要求书中,在某种程度上使用了术语“包含”或“具有”等,这样的术语旨在被包括在术语“包含”的方式内,类似于当“包括”在权利要求中被用作连接词时,对“包括”的解释那样。
对“一个实施例”、“一实施例”、“一些实施例”、“各实施例”等的引用指示在本发明的至少一个实施例中包括特定要素或特征。虽然这些短语可以出现在各个地方,但是这些短语不一定指的是同一实施例。结合本公开,本领域的技术人员将能够设计和结合适于实现以上描述的功能的各种机构中的任何一种机构。
应理解,本公开仅教导了说明性实施例的一个示例,并且本领域的技术人员在阅读了本公开之后可以容易地设计出本发明的许多变型,并且本发明的范围将由以下权利要求确定。

Claims (17)

1.一种可扩展多精度数据流水线系统,包括:
本地缓存器,其以本地存储格式存储输入本地数据集,其中所述本地存储格式为32位定点、16位定点或8位定点;
耦接到所述本地缓存器的输入张量整形器,其读取所述输入本地数据集,并将所述输入本地数据集转换为输入张量数据集,所述输入张量数据集具有向量宽度N乘以张量长度L的二维张量格式,其中N和L是整数;
耦接到所述输入张量整形器的级联流水线,其使所述输入张量数据集路由通过至少一个函数级,从而得到输出张量数据集;以及
所述至少一个函数级内的逐元素级,其沿着所述张量长度L在逐个元素的基础上处理所述输入张量数据集;
耦接到所述级联流水线的输出张量整形器,其将所述输出张量数据集转换为具有所述本地存储格式的输出本地数据集;并且
其中,所述输出张量整形器将所述输出本地数据集写入所述本地缓存器。
2.根据权利要求1所述的可扩展多精度数据流水线系统,进一步包括耦接到所述级联流水线的封装器,其用于将多个函数级融合成融合运算。
3.根据权利要求1所述的可扩展多精度数据流水线系统,其中,所述级联流水线允许以内联方式计算多个运算,并节省存储器带宽。
4.根据权利要求1所述的可扩展多精度数据流水线系统,进一步包括所述至少一个函数级内的逐张量级,其处理所述输入张量数据。
5.根据权利要求1所述的可扩展多精度数据流水线系统,进一步包括所述至少一个函数级内的量化调整器,其通过所述至少一个函数级动态地调整量化。
6.根据权利要求1所述的可扩展多精度数据流水线系统,其中,所述至少一个函数级保留中间步骤值的定点表示法,并定义局部优化的数据表示,以实现动态范围。
7.根据权利要求6所述的可扩展多精度数据流水线系统,其中,所述中间步骤值包括输入值、结果值和输出值中的至少一个。
8.根据权利要求1所述的可扩展多精度数据流水线系统,进一步包括所述至少一个函数级内的归一化器,所述归一化器将相对较大范围的所述输入张量数据集标准化为较小的范围。
9.根据权利要求7所述的可扩展多精度数据流水线系统,进一步包括所述至少一个函数级内的查找级,其将经标准化的输入张量数据集映射到索引存储器存储,所述索引存储器存储输出所述经标准化的输入张量数据集与用于确定存储器存储中的查找位置的参考值之间的差。
10.一种可扩展多精度数据流水线方法,包括:
读取以本地存储格式存储的输入本地数据集,其中所述本地存储格式为32位定点、16位定点或8位定点;
将所述输入本地数据集转换为输入张量数据集,所述输入张量数据集具有向量宽度N乘以张量长度L的二维张量格式,其中N和L是整数;
使所述输入张量数据集路由通过至少一个函数级,从而得到输出张量数据集;
在所述至少一个函数级中,沿着所述张量长度L在逐个元素的基础上处理所述输入张量数据集;将所述输出张量数据集转换为具有所述本地存储格式的输出本地数据集;以及
将所述输出本地数据集写入本地缓存器。
11.根据权利要求10所述的可扩展多精度数据流水线方法,进一步包括将多个函数级封装成融合运算。
12.根据权利要求10所述的可扩展多精度数据流水线方法,进一步包括在所述至少一个函数级中处理所述输入张量数据集。
13.根据权利要求10所述的可扩展多精度数据流水线方法,进一步包括通过所述至少一个函数级动态地调整量化。
14.根据权利要求10所述的可扩展多精度数据流水线方法,进一步包括保留中间步骤值的定点表示法,并定义局部优化的数据表示,以实现动态范围。
15.根据权利要求14所述的可扩展多精度数据流水线方法,其中,所述中间步骤值包括输入值、结果值和输出值中的至少一个。
16.根据权利要求10所述的可扩展多精度数据流水线方法,进一步包括将相对较大范围的所述输入张量数据集标准化为较小的范围。
17.根据权利要求16所述的可扩展多精度数据流水线方法,进一步包括将经标准化的输入张量数据集映射到索引存储器存储,所述索引存储器存储输出所述经标准化的输入张量数据集与用于确定存储器存储中的查找位置的参考值之间的差。
CN202110485500.9A 2020-05-08 2021-04-30 可扩展多精度数据流水线系统和方法 Active CN113419779B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/869,814 2020-05-08
US16/869,814 US11687336B2 (en) 2020-05-08 2020-05-08 Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks

Publications (2)

Publication Number Publication Date
CN113419779A CN113419779A (zh) 2021-09-21
CN113419779B true CN113419779B (zh) 2023-07-07

Family

ID=77712018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110485500.9A Active CN113419779B (zh) 2020-05-08 2021-04-30 可扩展多精度数据流水线系统和方法

Country Status (2)

Country Link
US (1) US11687336B2 (zh)
CN (1) CN113419779B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038018A (zh) * 2016-02-03 2017-08-11 谷歌公司 访问多维张量中的数据
US10261846B1 (en) * 2018-02-09 2019-04-16 Banjo, Inc. Storing and verifying the integrity of event related data
CN109712064A (zh) * 2017-04-24 2019-05-03 英特尔公司 使用低精度和高精度的混合推理
CN110197111A (zh) * 2018-02-27 2019-09-03 意法半导体国际有限公司 用于深度学习引擎的加速单元
CN110866859A (zh) * 2018-08-28 2020-03-06 英特尔公司 用于计算环境中的视频分析的推理引擎加速

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102420747A (zh) * 2011-11-17 2012-04-18 清华大学 基于数据包到达间隔滤波的业务源整形方法
US20140181171A1 (en) * 2012-12-24 2014-06-26 Pavel Dourbal Method and system for fast tensor-vector multiplication
US20160013773A1 (en) * 2012-11-06 2016-01-14 Pavel Dourbal Method and apparatus for fast digital filtering and signal processing
US10802992B2 (en) * 2016-08-12 2020-10-13 Xilinx Technology Beijing Limited Combining CPU and special accelerator for implementing an artificial neural network
US20180046903A1 (en) * 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
JP6860694B2 (ja) * 2017-04-17 2021-04-21 セレブラス システムズ インク. 加速化ディープラーニングのタスクアクティベーション
CN107204025B (zh) * 2017-04-18 2019-10-18 华北电力大学 基于视觉感知的自适应服装动画建模方法
JP7029321B2 (ja) * 2017-04-20 2022-03-03 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 情報処理方法、情報処理装置およびプログラム
US11556772B2 (en) * 2017-04-28 2023-01-17 Intel Corporation Incremental precision networks using residual inference and fine-grain quantization
US11501139B2 (en) * 2017-05-03 2022-11-15 Intel Corporation Scaling half-precision floating point tensors for training deep neural networks
DE102018110687A1 (de) * 2017-05-05 2018-11-08 Intel Corporation Dynamisches Genauigkeitsmanagement für Deep-Learning-Ganzzahlprimitive
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit
CN108875956B (zh) * 2017-05-11 2019-09-10 广州异构智能科技有限公司 原生张量处理器
US10338925B2 (en) * 2017-05-24 2019-07-02 Microsoft Technology Licensing, Llc Tensor register files
US20190130268A1 (en) * 2017-10-27 2019-05-02 Wave Computing, Inc. Tensor radix point calculation in a neural network
US11645493B2 (en) * 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
US20190340499A1 (en) * 2018-05-04 2019-11-07 Microsoft Technology Licensing, Llc Quantization for dnn accelerators
US10761757B2 (en) * 2018-06-30 2020-09-01 Intel Corporation Apparatus and method for coherent, accelerated conversion between data representations
CN109543708B (zh) * 2018-10-11 2021-05-25 上海交通大学 融合拓扑特征的面向图数据的模式识别方法
BR112019008055B1 (pt) * 2018-10-24 2022-02-01 Advanced New Technologies Co., Ltd Método implementado por computador, meio não transitório, legível por computador e sistema implementado por computador
CN109544613A (zh) * 2018-11-23 2019-03-29 南昌航空大学 一种基于稠密网络深度学习的双目立体匹配方法及系统
US20200183837A1 (en) * 2018-12-07 2020-06-11 Samsung Electronics Co., Ltd. Dataflow accelerator architecture for general matrix-matrix multiplication and tensor computation in deep learning
US11586883B2 (en) * 2018-12-14 2023-02-21 Microsoft Technology Licensing, Llc Residual quantization for neural networks
US11676003B2 (en) * 2018-12-18 2023-06-13 Microsoft Technology Licensing, Llc Training neural network accelerators using mixed precision data formats
US20200210840A1 (en) * 2018-12-31 2020-07-02 Microsoft Technology Licensing, Llc Adjusting precision and topology parameters for neural network training based on a performance metric
US20200210839A1 (en) * 2018-12-31 2020-07-02 Microsoft Technology Licensing, Llc Neural network activation compression with outlier block floating-point
US20200264876A1 (en) * 2019-02-14 2020-08-20 Microsoft Technology Licensing, Llc Adjusting activation compression for neural network training
US20200311569A1 (en) * 2019-03-26 2020-10-01 Vathys, Inc. Low latency and high throughput inference
US20200311613A1 (en) * 2019-03-29 2020-10-01 Microsoft Technology Licensing, Llc Connecting machine learning methods through trainable tensor transformers
CN110826689A (zh) * 2019-09-30 2020-02-21 中国地质大学(武汉) 一种基于深度学习的预测县级单位时序gdp的方法
US11481604B2 (en) * 2019-10-24 2022-10-25 Alibaba Group Holding Limited Apparatus and method for neural network processing
CN110796242A (zh) * 2019-11-01 2020-02-14 广东三维家信息科技有限公司 神经网络模型推理方法、装置、电子设备及可读介质
US11710244B2 (en) * 2019-11-04 2023-07-25 Shanghai United Imaging Intelligence Co., Ltd. Systems and methods for machine learning based physiological motion measurement
US11537864B2 (en) * 2019-11-26 2022-12-27 Apple Inc. Reduction mode of planar engine in neural processor
US20200226454A1 (en) * 2020-03-27 2020-07-16 Intel Corporation Methods and apparatus for low precision training of a machine learning model
GB2596510A (en) * 2020-05-07 2022-01-05 Nokia Technologies Oy Model modification and deployment
CN112001481A (zh) * 2020-08-14 2020-11-27 厦门纳龙科技有限公司 一种基于对抗学习的p波识别方法、终端设备及存储介质
CN112183468A (zh) * 2020-10-27 2021-01-05 南京信息工程大学 一种基于多注意力联合多级特征的行人再识别方法
US11972348B2 (en) * 2020-10-30 2024-04-30 Apple Inc. Texture unit circuit in neural network processor
US20220156575A1 (en) * 2020-11-19 2022-05-19 Apple Inc. Multi-dimensional tensor support extension in neural network processor
US11269632B1 (en) * 2021-06-17 2022-03-08 International Business Machines Corporation Data conversion to/from selected data type with implied rounding mode
US20230037227A1 (en) * 2021-07-20 2023-02-02 Microsoft Technology Licensing, Llc Dual exponent bounding box floating-point processor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107038018A (zh) * 2016-02-03 2017-08-11 谷歌公司 访问多维张量中的数据
CN109712064A (zh) * 2017-04-24 2019-05-03 英特尔公司 使用低精度和高精度的混合推理
US10261846B1 (en) * 2018-02-09 2019-04-16 Banjo, Inc. Storing and verifying the integrity of event related data
CN110197111A (zh) * 2018-02-27 2019-09-03 意法半导体国际有限公司 用于深度学习引擎的加速单元
CN110866859A (zh) * 2018-08-28 2020-03-06 英特尔公司 用于计算环境中的视频分析的推理引擎加速

Also Published As

Publication number Publication date
US11687336B2 (en) 2023-06-27
US20210349718A1 (en) 2021-11-11
CN113419779A (zh) 2021-09-21

Similar Documents

Publication Publication Date Title
CN111758106B (zh) 用于大规模并行神经推理计算元件的方法和系统
JP7476175B2 (ja) 乗算累積回路
US20240020518A1 (en) Deep neural network architecture using piecewise linear approximation
CN110688158A (zh) 计算装置以及神经网络的处理系统
CN110852416A (zh) 基于低精度浮点数数据表现形式的cnn加速计算方法及系统
WO2020176250A1 (en) Neural network layer processing with normalization and transformation of data
US11074041B2 (en) Method and system for elastic precision enhancement using dynamic shifting in neural networks
EP3931763A1 (en) Deriving a concordant software neural network layer from a quantized firmware neural network layer
CN110852434A (zh) 基于低精度浮点数的cnn量化方法、前向计算方法及装置
CN1172539A (zh) 利用截尾泰勒级数的对数/反对数转换器及其使用方法
JP7190799B2 (ja) 補償命令により可能にされる低精度ディープニューラルネットワーク
KR20090071823A (ko) 다기능 연산장치 및 방법
WO2021041139A1 (en) Signed multiword multiplier
CN112085154A (zh) 用于神经网络的压缩和推断加速的非对称量化
CN107783935B (zh) 基于动态精度可配运算的近似计算可重构阵列
CN113419779B (zh) 可扩展多精度数据流水线系统和方法
US20220156567A1 (en) Neural network processing unit for hybrid and mixed precision computing
EP4136587A1 (en) Dual-momentum gradient optimization with reduced memory requirements
Hsiao et al. Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system
JP7247418B2 (ja) 乗算のための計算ユニット、方法及びコンピュータプログラム
CN117785113B (zh) 计算装置及方法、电子设备和存储介质
CN112596912B (zh) 二值或三值神经网络卷积计算的加速运算方法及装置
Hsiao et al. Multi-Precision Table-Addition Designs for Computing Nonlinear Functions in Deep Neural Networks
Lakshmi et al. Low latency VLSI architecture for the radix-4 CORDIC algorithm
Alsuhli et al. Conventional Number Systems for DNN Architectures

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
GR01 Patent grant
GR01 Patent grant