CN114637489A - 算术处理装置、算术处理方法和存储介质 - Google Patents
算术处理装置、算术处理方法和存储介质 Download PDFInfo
- Publication number
- CN114637489A CN114637489A CN202111448493.1A CN202111448493A CN114637489A CN 114637489 A CN114637489 A CN 114637489A CN 202111448493 A CN202111448493 A CN 202111448493A CN 114637489 A CN114637489 A CN 114637489A
- Authority
- CN
- China
- Prior art keywords
- data
- fixed
- compression
- compression method
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/74—Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
Abstract
本申请公开了算术处理装置、算术处理方法和存储介质。算术处理装置包括:执行定点数数据的运算的算术单元;获取统计信息的统计获取单元,该统计信息指示通过运算获得的多个定点数数据的最高有效位的位置分布;更新单元,其基于统计信息更新对要用于运算的多个定点数数据的位宽度的限制的范围;压缩方法确定单元,其基于统计信息估计在通过多个压缩方法对多个定点数数据进行压缩之后的相应数据量,以及确定多个压缩方法中的在多个定点数数据的压缩之后的数据量最小的压缩方法;以及存储器接口,其将通过压缩方法进行压缩的多个定点数数据传输至存储器。
Description
技术领域
本文中讨论的实施方式涉及算术处理装置、算术处理方法和存储介质。
背景技术
为了提高深度神经网络(在下文中也被称为DNN)的识别性能,用于学习DNN的学习数据趋于增加。随着学习数据的增加,连接执行学习的计算机和存储用于学习的数据的存储器的存储器总线的带宽趋于增加。因此,已经提出了通过压缩用于学习的数据来减小存储器总线的带宽的方法。对于数据压缩,为每字节的未压缩数据设置指示“0”或“非0”的标记,并且通过截断“非0”数据的预定位使得“非0”数据落在压缩数据大小中来进行数据压缩。
此外,已经提出了提高学习精度同时通过基于通过使用用于DNN学习等的定点数数据进行的运算所获得的定点数数据的位位置的分布来更新小数点位置来减少数据量的方法。此外,已经提出了在计算定点数数据的位位置的分布的情况下通过按顺序从一组运算符获取运算结果来减少获取单元的数目和信号布线的数目以减少电路规模的方法。
作为相关技术,公开了国际专利申请第2020-517014号的日本国家公布、日本公开特许公报第2018-124681号和国际公布小册子第WO2020/084723号。
发明内容
技术问题
在DNN学习中,执行大量数据的运算,并且用于学习的数据,例如通过运算获得的数据的特性(分布、值等)每次都改变。即使当基于通过运算获得的定点数数据的位位置的分布更新小数点位置时,用于学习的数据的特性每次也都改变。因此,在通过特定压缩方法对用于学习的数据进行压缩的情况下,压缩效率可以根据数据的特性而变化。在压缩效率下降的情况下,到存储器的数据传输时间增加并且学习时间增加。
问题的解决方案
在一方面,本实施方式旨在通过提高要传输至存储器的用于学习深度神经网络的数据的压缩效率来减少学习时间。
根据实施方式的一方面,一种算术处理装置包括:执行定点数数据的运算的算术单元;获取统计信息的统计获取单元,该统计信息指示通过运算获得的多个定点数数据的最高有效位的位置分布;更新单元,其基于统计信息更新要用于运算的多个定点数数据的位宽度的限制的范围;压缩方法确定单元,其基于统计信息估计在通过多个压缩方法对多个定点数数据进行压缩之后的相应数据量,以及确定多个压缩方法之中的在多个定点数数据的压缩之后的数据量最小的压缩方法;以及存储器接口,其将通过压缩方法压缩的多个定点数数据传输至存储器。
发明的有益效果
通过提高要传输至存储器的用于学习深度神经网络的数据的压缩效率,可以减少学习时间。
附图说明
图1是示出了根据实施方式的算术处理装置的示例的框图;
图2是示出了其上安装有图1的算术处理装置的服务器的示例的框图;
图3是示出了由图2的服务器进行的DNN学习的概要的说明图;
图4是示出了在图2的服务器学习期间更新定点数数据的小数点位置的示例的说明图;
图5是示出了在由图1的算术处理装置进行的DNN学习中很多运算结果为“0”的层中的数据分布的示例的说明图;
图6是示出了要由图1的压缩/解压缩单元进行压缩的数据的压缩方法的示例的说明图;
图7是示出了要由图1的压缩/解压缩单元进行压缩的数据的压缩方法的另一示例的说明图;
图8是示出了要由图1的压缩/解压缩单元进行压缩的数据的压缩方法的又一示例的说明图;
图9是示出了由图2的服务器进行的DNN学习的示例的流程图;
图10是示出了图9的步骤S400中执行的小批量学习的示例的流程图;
图11是示出了图9的步骤S600中执行的压缩方法的确定方法的示例的流程图;
图12是示出了图11的步骤S620中执行的预测压缩数据量的方法的示例的流程图;
图13是示出了在预测图12的每个区域中的压缩数据量的情况下为每个数位计算压缩数据量的示例的说明图;以及
图14是示出了根据另一实施方式的算术处理装置的示例的框图。
具体实施方式
在下文中,将参照附图描述实施方式。在下文中,发送信息诸如信号的信号线被赋予与信号的名称相同的附图标记。此外,由附图中的单个线示出的信号线可以是多个位。
图1示出了根据实施方式的算术处理装置的示例。图1中所示的算术处理装置100包括:指令控制单元10、寄存器单元20、矢量单元30、标量单元40、统计信息聚合单元50以及存储器接口60和70。算术处理装置100是诸如中央处理单元(CPU)的处理器。指令控制单元10经由存储器接口60连接至指令存储器216。矢量单元30和标量单元40经由存储器接口70连接至数据存储器218。例如,存储器接口60和70是存储器存取控制器。注意,存储器接口70包括压缩/解压缩单元72。
指令控制单元10包括程序计数器PC、指令解码器DEC等。指令控制单元10基于由程序计数器PC指示的地址从指令存储器216取出指令,并将取出的指令提供至指令解码器DEC。指令解码器DEC对取出的指令进行解码,并向寄存器单元20、矢量单元30和标量单元40发出解码结果。寄存器单元20、矢量单元30和标量单元40用作算术单元,该算术单元执行由指令解码器DEC解码的指令。注意,指令控制单元10可以具有用于预先取出指令的指令缓冲器或指令高速缓存。
寄存器单元20包括:矢量寄存器文件VRF,其包括由矢量单元30使用的多个矢量寄存器;以及与预定数目的矢量寄存器相对应的多个矢量累加器VACC。此外,寄存器单元20包括:标量寄存器文件SRF,其包括由标量单元40使用的多个标量寄存器;以及标量累加器ACC。在下文中,寄存器单元20中的各种寄存器也被简称为寄存器。
此外,寄存器单元20包括统计信息存储单元22。统计信息存储单元22存储由统计信息聚合单元50获取的统计信息。例如,统计信息是示出矢量单元30或标量单元40中的运算结果数据(定点数数据)中的每一个的最高有效位的位置分布的频率分布数据,以及指示用于获得频率分布数据的最高有效位的位置的信息。
矢量单元30包括例如8元算术单元。矢量单元30具有使用矢量累积寄存器执行整数运算、乘积和运算的功能等。此外,矢量单元30执行矢量累积寄存器的清除、乘积和运算(乘法累积(MAC))、累积相加、向矢量寄存器传输数据等。此外,矢量单元30加载来自数据存储器218的数据并将数据存储在数据存储器218中。
矢量单元30的每个算术单元包括整数运算符(OP)32、数据转换单元34和统计获取单元36。为每个整数运算符32设置数据转换单元34和统计获取单元36。整数运算符32是算术单元的示例,并且数据转换单元34是更新单元的示例。注意,数据转换单元34的功能可以包括在整数运算符32中。
例如,矢量单元30输入矢量寄存器中存储的数据并在8元算术单元的整数运算符32中并行执行运算。然后,矢量单元30将作为运算结果的输出数据存储在矢量寄存器中。此外,矢量单元30在8元整数运算符32中的每一个中执行乘积和运算,并将乘积和运算结果的累积相加值中的每一个存储在矢量累加器VACC中。
例如,整数运算符32是8位运算符。整数运算符32不仅可以执行8位数据运算,而且可以执行两个4位数据并行运算和四个2位数据并行运算。由于每个数据包含符号位,所以表示在运算中使用的数据值的位数比数据的位数少一位。注意,整数运算符32可以是16位运算符。在这种情况下,整数运算符32可以使16位运算符用作两个8位运算符。
标量单元40包括整数运算符(OP)42、数据转换单元44和统计获取单元46。整数运算符42是算术单元的示例,并且数据转换单元44是更新单元的示例。注意,数据转换单元44的功能可以包括在整数运算符42中。标量单元40具有执行四则运算、移位运算、分支指令、加载指令、存储指令等的功能。标量单元40使用标量寄存器和标量累加器ACC执行运算。
例如,整数运算符42计算存储在任何标量寄存器中的输入数据,并将作为运算结果的输出数据存储在标量寄存器中。在执行乘积和运算的情况下,整数运算符42将乘积和运算结果存储在标量累加器ACC中。标量单元40的运算结果存储在标量寄存器、标量累加器ACC或数据存储器218之一中。例如,与整数运算符32相同,整数运算符42可以是8位算术单元或16位算术单元。注意,整数运算符32和42的位数不限于8位或16位。
每个数据转换单元34接收基于运算指令从整数运算符32输出的定点数数据(运算结果数据)。每个数据转换单元34基于位宽度信息从接收到的定点数数据中提取具有预定位数(位宽度)的数据。此时,每个数据转换单元34对上溢的上侧位执行饱和处理以及对下溢的下侧位执行舍入处理。
例如,每个数据转换单元34将作为整数运算符32的输出数据的位宽度的24位定点数数据转换成作为整数运算符32的输入数据的位宽度的8位定点数数据。然后,每个数据转换单元34将具有改变的位位置的定点数数据存储在寄存器单元20中。
数据转换单元44的功能类似于数据转换单元34的功能。也就是说,数据转换单元44通过基于位宽度信息从基于运算指令由整数运算符42输出的定点数数据(运算结果数据)选择预定位数(位宽度)的数据来改变位位置(位范围)。此时,数据转换单元44执行饱和处理和舍入处理。
例如,数据转换单元44将作为整数运算符42的输出数据的位宽度的24位定点数数据转换成作为整数运算符42的输入数据的位宽度的8位定点数数据。然后,数据转换单元44将具有改变的位位置的定点数数据存储在寄存器单元20中。
每个统计获取单元36接收基于运算指令从整数运算符32输出的定点数数据(运算结果数据)。例如,每个统计获取单元36获取接收到的定点数数据的最高有效位的位置,并将指示获取的最高有效位的位置的位置信息输出至统计信息聚合单元50。
统计获取单元46接收基于运算指令从整数运算符42输出的定点数数据(运算结果数据)。统计获取单元46获取接收到的定点数数据的最高有效位的位置,并将指示获取的最高有效位的位置的位置信息输出至统计信息聚合单元50。
注意,统计获取单元36和46中的每一个可以获取指示运算结果数据的最高有效位的位置的位置信息,并仅在指令解码器DEC的指令的解码结果包括获取统计信息的指令的情况下才将获取的位置信息输出至统计信息聚合单元50。此外,一个数据转换单元34和一个统计获取单元36可以共同被提供给多个整数运算符32。在这种情况下,统计获取单元36获取从多个整数运算符32中的每一个输出的定点数数据的最高有效位的位置。
在此,由统计获取单元36和46中的每一个获取的最高有效位的位置是在符号位为“0”(数据是正值)的情况下首先出现“1”的上侧位位置。此外,最高有效位的位置是在符号位为“1”(数据是负值)的情况下首次出现“0”的上侧位位置。
统计信息聚合单元50将从统计获取单元36和46接收的指示最高有效位的位置的位置信息聚合以生成统计信息,并将所生成的统计信息存储在统计信息存储单元22中。然后,如上所述,统计信息存储单元22存储指示运算结果数据(定点数数据)中的每一个的最高有效位的位置分布的频率分布数据。参照图4和图5描述由统计信息聚合单元50聚合并存储在统计信息存储单元22中的统计信息的示例。
在该实施方式中,例如,存储器接口70的压缩/解压缩单元72基于从控制算术处理装置100的更高级计算机等通知的压缩方法对从寄存器单元20输出的定点数数据进行压缩。然后,压缩/解压缩单元72将压缩的定点数数据存储在数据存储器218(外部存储器)中。在此,从寄存器单元20输出的定点数数据是从数据转换单元34和44输出并存储在寄存器单元20中的具有改变的位位置的定点数数据,并且是例如训练深度神经网络的中间层数据。
此外,压缩/解压缩单元72对从数据存储器218读取的压缩的定点数数据进行解压缩,并将解压缩的定点数数据存储在寄存器单元20等中以用于DNN学习。通过对DNN训练的中间层数据进行压缩并将压缩的数据存储在数据存储器218中,并且将从数据存储器218读取的数据解压缩为原始数据,与到数据存储器218的数据传输量不压缩的情况相比,可以减少数据传输量。
因此,可以缩短寄存器单元20与数据存储器218之间的数据传输所需的时间。因此,即使在DNN学习中存储器存取速度小于运算速度以及在运算符中存在等待时间的情况下,也可以减少等待时间,提高运算效率,并且可以缩短学习时间。例如,作为在DNN学习中存储器存取速度显著低于运算速度的示例,存在对数据阵列的每个元素等执行运算的层。
此外,通过在位于数据存储器218附近的存储器接口70中设置压缩/解压缩单元72,可以对从矢量单元30输出的运算结果数据和从标量单元40输出的运算结果数据两者进行压缩。此外,压缩/解压缩单元72可以安装在算术处理装置100中而不将该单元分成压缩单元和解压缩单元。因此,可以使布线区域诸如与数据压缩和解压缩有关的数据线最小化,并且可以使算术处理装置100的电路规模最小化。
更高级计算机(计算机)等或算术处理装置100可以包括压缩方法确定单元,其基于存储在统计信息存储单元22中的统计信息估计在通过多个压缩方法对运算结果数据进行压缩之后的数据量,并确定具有最小数据量的压缩方法。在这种情况下,压缩/解压缩单元72通过由压缩方法确定单元指示的压缩方法对运算结果数据进行压缩和对压缩的运算结果数据进行解压缩。
图2示出了其上安装有图1的算术处理装置100的服务器200的示例。其上安装有算术处理装置100的服务器200是用作执行DNN学习的信息处理装置或算术处理装置的计算机。
服务器200包括其上安装有算术处理装置100和主存储器214的加速器板210、主机220和存储装置230。算术处理装置100和主机220通过诸如外围组件快速互连(PCIe)总线的通信总线彼此连接。因此,算术处理装置100包括PCIe接口(I/F)电路212,并且主机220包括PCIe接口(I/F)电路222。
算术处理装置100包括以矩阵方式布置的多个处理单元PE(处理元件)。例如,每个处理单元PE是包括图1中的整数运算符32、数据转换单元34、统计获取单元36和各种寄存器的算术单元。替选地,每个处理单元PE是包括图1中的整数运算符42、数据转换单元44、统计获取单元46和各种寄存器的算术单元。注意,安装在处理单元PE上的电路元件不限于上述。
虽然省略了图示,但是图2中所示的算术处理装置100包括图1中的指令控制单元10、寄存器单元20、统计信息聚合单元50以及存储器接口60和70。主存储器214包括例如动态随机存取存储器(DRAM),并且对应于图1的指令存储器216和数据存储器218。
主机220包括主机CPU 224和诸如DRAM的存储器226。主机CPU224经由PCIe接口电路222连接至算术处理装置100,并控制算术处理装置100以使算术处理装置100执行DNN学习。
例如,主机CPU 224使算术处理装置100通过执行在存储器226中扩展的算术处理程序来执行DNN学习。此外,主机CPU 224通过执行算术处理程序估计使运算结果数据的数据量最小化的压缩方法。
主机CPU 224连接至分层设置的存储器226和存储装置230。例如,存储装置230至少包括硬盘驱动器(HDD)或固态驱动器(SSD)。然后,主机CPU 224在DNN学习中使用存储在存储装置230中的学习数据232执行学习。
图3是示出了由图2的服务器200进行的DNN学习的概要的说明图。图3中所示的DNN包括第一卷积层(Conv_1)和第一池化层(Pool_1)、第二卷积层(Conv_2)和第二池化层(Pool_2)、完全连接层1(fc1)和完全连接层2(fc2)。
例如,针对作为处理单位的每个小批量执行DNN深度学习。小批量是批量的示例。在图3中,使用通过将要学习的一组输入数据划分成k块而获得的划分数据中的每一个执行小批量。
首先,图2中的主机CPU 224在执行小批量之前尝试用浮点数数据进行学习(例如,一次小批量等),并确定用于学习的每个变量例如权重的初始小数点位置。可以由用户指定初始小数点位置。主机CPU 224向数据转换单元34和44通知初始小数点位置。
然后,主机CPU 224使用每个小批量中的划分的输入数据执行从Conv_1层到fc2层的正向处理。此外,主机CPU 224使用正向处理结果和每个小批量中的正确答案数据执行从fc2层到Conv_1层的反向处理。然后,主机CPU 224使用例如梯度下降法更新诸如权重的变量。
在每个小批量中,图1的统计信息聚合单元50聚合由统计获取单元36获取的每一层中使用的每个变量的最高有效位的位置信息,并将位置信息存储在统计信息存储单元22中。每一层中使用的数据(包括变量)从图1的数据存储器218读取,并且通过对每一层的运算获得的数据被存储在数据存储器218中。在小批量学习期间发生数据上溢的情况下,执行饱和处理并且继续学习。
注意,在第一k次小批量中,图1的压缩/解压缩单元72将数据存储在数据存储器218中而不对数据进行压缩。在第二轮和之后的k次小批量中,压缩/解压缩单元72通过指定的压缩方法对来自主机CPU 224的数据进行压缩,将数据存储在数据存储器218中,并对从数据存储器218读取的数据进行解压缩。
在k次小批量结束之后,主机CPU 224使用存储在统计信息存储单元22中的统计信息(指示最高有效位的位置分布的频率分布数据)确定下一k次小批量中使用的定点数数据的小数点位置。此外,在k次小批量结束之后,主机CPU 224使用存储在统计信息存储单元22中的统计信息确定要在下一k次小批量中使用的压缩方法。主机CPU 224向数据转换单元34和44通知所确定的小数点位置,并向压缩/解压缩单元72通知所确定的压缩方法。数据转换单元34和44利用通知的小数点位置更新小数点位置。压缩/解压缩单元72利用通知的压缩方法更新压缩方法。
然后,在第三轮或之后,使用在前一k次小批量中更新的小数点位置和压缩方法重复执行下一k次小批量的学习处理。重复学习处理,直到与正确答案数据的差异变为等于或小于预设值。
通过针对每一k次小批量使用存储在统计信息存储单元22中的统计信息确定要存储在数据存储器218中的数据的压缩方法,可以减少在DNN学习时要从/向数据存储器218读取/写入的数据的传输时间。换句话说,可以使用存储在统计信息存储单元22中的统计信息来预测在下一k次小批量中使要从/向数据存储器218读取/写入的数据的传输时间最小化的压缩方法。
图4示出了在图2的服务器200学习期间更新定点数数据的小数点位置的示例。也就是说,在该实施方式中,使用动态定点数数据执行DNN学习。图4示出了由统计信息聚合单元50聚合并由存储在统计信息存储单元22中的统计信息指示的数据的最高有效位的分布的示例。
图4的左侧示出了分布不符合可表达区域的情况,并且右侧示出了分布符合可表达区域的情况。分布的水平轴上的数值指示最高有效位的位位置(二进制数位位置)。“15”指示“215”并且“-3”指示“2-3”。注意,在图4中,可表达区域由16位示出,但是可表达区域可以由8位示出。可表达区域是用于整数运算符32和42的运算的定点数数据的位范围的示例。在下文中,可表达区域也被称为位范围。
在图4的左侧,针对具有在可表达区域的上限的上侧(上溢)的位值的最高有效位的定点数数据执行饱和处理。同时,针对具有在可表达区域的下限的下侧(下溢)的位值的最高有效位的定点数数据执行舍入处理。主机CPU 224确定由当前位精度(Q5.10)表示的定点数数据的分布朝向上侧偏置,并基于由统计信息聚合单元50获取的分布将下一学习处理中的位精度确定为(Q3.12)。
然后,主机CPU 224向数据转换单元34和44通知位精度(Q3.12)。例如,主机CPU224确定定点数数据的小数点位置,使得由位精度指示的16位位于分布的中心处。在此,位精度(Q5.10)和(Q3.12)以Q格式指示定点数数据的符号。
主机CPU 224可以更新小数点位置,使得(上溢数据的数目)/(数据总数)变为小于预定值。替选地,主机CPU 224可以根据(下溢数据的数目)/(数据总数)更新小数点位置,或者可以基于上溢数据的数目和下溢数据的数目或其比率更新小数点位置。
同时,在图4的右侧,在分布符合可表达区域的情况下,主机CPU 224确定小数点位置,使得分布的中心位于例如由位精度指示的16位的中心处。在图4中所示的示例中,主机CPU 224确定由当前位精度(Q3.12)表示的定点数数据的分布朝向上侧偏置,并基于由统计信息聚合单元50获取的分布将下一学习处理中的位精度确定为(Q1.14)。
图5示出了在由图1的算术处理装置100进行的DNN学习中很多运算结果为“0”的层中的数据分布的示例。图5中所示的示例示出了将通过乘积和运算获得的多个24位数据acci转换成完全连接层中的8位定点数的示例。转换为8位定点数由图1中的数据转换单元34(或数据转换单元44)执行。
例如,预先向数据转换单元34通知来自主机CPU 224的8位定点数的位位置(Q-2.9)。图5的左下示出了由统计信息聚合单元50聚合的乘积和运算结果的最高有效位的分布的示例。低于可表达区域(Q-2.9)的位是下溢位,并经历数据转换单元34的舍入处理。
注意,图5中的频率分布示出了数据acci的绝对值的分布。因此,例如,位位置“-9”处的频率指示2-8≤acci<2-7的数据的数目和-2-7≤acci<-2-8的数据的数目的总和。图6和后续附图中所示的频率分布也是绝对值的分布。
图5的右侧示出了在通过数据转换单元34舍入每一个乘积和运算结果数据的下溢位并且将数据转换成8位定点数之后最高有效位的分布的示例。通过概率舍入处理的下舍入很多下溢数据变为“0”,并且通过概率舍入处理的上舍入一些下溢数据变为“2-9”。因此,如图5中的右侧框的上侧中所示,在转换之后在(Q-2.9)中的很多数据值(8位值)为“0”,并且“1”和“-1”也被分散。
图6示出了要由图1的压缩/解压缩单元72进行压缩的数据的压缩方法的示例。在由图6中所示的压缩方法进行压缩之后的数据包括标志字符串和数据字符串。标志字符串包括指示每个数据(8位)是“0”还是“非0”的标志。标志的数目与在压缩之前原始数据字符串中的数据的数目相同。当相应数据为“非0”时,每个标志是1位并且被设置为“1”,而当相应数据为“0”时,每个标志是1位并且被设置为“0”。
数据字符串仅包括具有符号位的8位“非0”运算结果数据。在下文中,图6中所示的压缩方法被称为0跳过压缩方法。0跳过压缩方法是第一压缩方法的示例。注意,原始数据字符串的大小是8位和数据数目的乘积。在附图中,符号“*”表示乘法。
图2中的主机CPU 224基于由统计信息聚合单元50聚合的统计信息(由图6中的频率分布所示的信息)估计0跳过压缩方法中的压缩数据的数据量。也就是说,主机CPU 224可以基于运算结果数据的最高有效位的位置分布来估计压缩数据的数据量。
主机CPU 224对于位范围(可表达区域)的上位侧的上侧范围、位范围和位范围的下位侧的下侧范围中的每一个估计每个区域的压缩的数据量,压缩的数据量是压缩之后的数据量。然后,主机CPU 224将每个区域的三个压缩的数据量的总和设置为压缩数据量。
主机CPU 224通过将上侧范围内的每个位位置处的频率和数据大小(8位)的乘积相加来计算上侧范围内的每个区域的压缩的数据量。类似地,主机CPU 224通过将位位置中的每一个处的频率的总和与数据大小(8位)的乘积相加来计算位范围内的每个区域的压缩的数据量。
主机CPU 224根据每个位位置(数位位置)通过舍入处理具有“1”或“-1”的概率和每个位位置处的频率的乘积的总和计算下侧范围内的每个区域的压缩的数据量。在此,通过舍入处理具有“1”或“-1”指示舍入处理上舍入到位范围。
例如,主机CPU 224在2-10的位位置处具有“1”或“-1”的概率为50%至100%(不包括100%),使得主机CPU 224估计具有“1”或“-1”的概率为100%。由于其以100%的概率上舍入,因此主机CPU 224通过频率和数据大小(8位)的乘积计算位位置2-10处的压缩数据量。
主机CPU 224在2-11的位位置处具有“1”或“-1”的概率为25%至50%(不包括50%),使得主机CPU 224估计具有“1”或“-1”的概率为50%。因此,主机CPU 224通过频率、数据大小(8位)和“0.5”的乘积计算位位置2-11处的压缩数据量。
主机CPU 224在2-12的位位置处具有“1”或“-1”的概率为12.5%至25%(不包括25%),使得主机CPU 224估计具有“1”或“-1”的概率为25%。因此,主机CPU 224通过频率、数据大小(8位)和“0.25”的乘积计算位位置2-12处的压缩数据量。
主机CPU 224计算在2-13及以下的位位置处的数据量,并将下侧范围内的运算结果数据的所有位位置处的数据量的总和设置为下侧范围内的每个区域的压缩的数据量。然后,主机CPU 224通过将标志字符串的大小(数据的总数和1位的乘积)加到上侧范围、位范围和下侧范围内的每个区域的压缩的数据量的总和来计算0跳过压缩方法中的压缩数据量。在0跳过压缩方法中,运算结果数据中的“0”的比率越高,压缩效率越高。
图7是示出了要由图1的压缩/解压缩单元72进行压缩的数据的压缩方法的另一示例的说明图。省略了与图6中的那些要素类似的要素的详细描述。通过图7中所示的压缩方法进行压缩之后的数据包括标志字符串和数据字符串。标志字符串是指示每个数据(8位)是“0”、“1”或“-1”中之一还是不是“0”、“1”和“-1”的标志。标志的数目与在压缩之前的原始数据字符串中的数据的数目相同。当相应数据为“0”时,每个标志是2位并被设置为“00”,而当相应数据为“1”时,每个标志是2位并被设置为“01”。此外,当相应数据为“-1”时,每个标志被设置为“11”,而当相应数据不为“0”、“1”和“-1”时,每个标志被设置为“10”。
数据字符串包括具有符号位的8位运算结果数据,该符号位不为“0”、“1”和“-1”。在下文中,图7中所示的压缩方法被称为01压缩方法。01压缩方法是第二压缩方法的示例。
主机CPU 224基于由统计信息聚合单元50聚合的统计信息(由图7中的频率分布所示的信息)估计01压缩方法中的压缩数据的数据量。也就是说,主机CPU 224可以基于运算结果数据的最高有效位的位置分布来估计压缩数据的数据量。
主机CPU 224对于上侧范围、位范围和下侧范围中的每一个估计每个区域的压缩的数据量,压缩的数据量是压缩之后的数据量。然后,主机CPU 224将每个区域的三个压缩的数据量的总和设置为压缩数据量。
类似于图6,主机CPU 224通过将在每个位位置处的频率和数据大小(8位)的乘积相加来计算上侧范围内的每个区域的压缩的数据量。类似地,主机CPU 224通过将在每个位位置处的频率和数据大小(8位)的乘积相加来计算位范围内的每个区域的压缩的数据量。
在图7中,舍入到“0”、“1”和“-1”中的任意一个的下侧范围内的数据由标志字符串中的标志表示。因此,主机CPU 224将下侧范围内的每个区域的压缩的数据量设置为“0”。然后,主机CPU 224通过将标志字符串的大小(数据总数和2位的乘积)加到上侧范围和位范围内的每个区域的压缩的数据量的总和来计算01压缩方法中的压缩数据量。在01压缩方法中,运算结果数据中的“0”、“1”和“-1”的比率越高,压缩效率越高。
图8是示出了要由图1的压缩/解压缩单元72进行压缩的数据的压缩方法的又一示例的说明图。省略了与图6中的那些要素类似的要素的详细描述。通过图8中所示的压缩方法进行压缩之后的数据包括标志字符串和数据字符串。标志字符串包括设置了表示每一个运算结果数据的位数(除了符号位以外的位范围中的7位)的标志。换句话说,每个标志指示到每一个运算结果数据的位范围内的最高有效位的位数。
标志的数目与在压缩之前的原始数据字符串中的数据的数目相同。每个标志是3位,这是因为每个标志都指示可以在位范围(7位)内表达的从“0”到“127(绝对值)”的数据的位宽度。
数据字符串包括由标志指示的位宽度的数据和每个数据的符号位的一对。例如,数据“93”由“0”的符号位S和7位“93”表示。数据“0”仅由“0”的符号位S表示。数据“-1”由“1”的符号位S和1位“1”表示。数据“1”由“0”的符号位S和1位“1”表示。数据“42”由“0”的符号位S和6位“42”表示。在下文中,图8中所示的压缩方法被称为可变长度压缩方法。可变长度压缩方法是第三压缩方法的示例。
主机CPU 224基于由统计信息聚合单元50聚合的统计信息(由图8中的频率分布所示的信息)估计可变长度压缩方法中的压缩数据的数据量。也就是说,主机CPU 224可以基于运算结果数据的最高有效位的位置分布来估计压缩数据的数据量。
主机CPU 224对于上侧范围、位范围和下侧范围中的每一个估计压缩之后的数据量。然后,主机CPU 224将每个区域的三个压缩的数据量的总和设置为压缩数据量。
类似于图6,主机CPU 224通过将每个位位置处的频率和数据大小(8位)的乘积相加来计算上侧范围内的每个区域的压缩的数据量。此外,主机CPU 224通过将每个位位置处的频率和数据的数位的数目与作为符号位的位数的符号位数(=“1”)的和的乘积相加来计算位范围内的每个区域的压缩的数据量。
在图8中所示的频率分布中,在2-3的位位置处数据的数位的数目为“7”,在2-5的位位置处数据的数位的数目为“5”,在2-7的位位置处数据的数位的数目为“3”,而在2-9的位位置处数据的数位的数目为“1”。
主机CPU 224基于在每个位位置处通过舍入处理(上舍入)具有“-1”或“1”的概率和通过舍入处理(下舍入)具有“0”的概率来计算下侧范围内的每个区域的压缩的数据量。例如,主机CPU 224对于每个位位置计算两倍的具有“1”或“-1”的概率和一倍的具有“0”的概率的和。然后,主机CPU 224通过将针对每个位位置计算的和与每个位位置处的频率的乘积相加来计算下侧范围内的每个区域的压缩的数据量。
在此,在压缩之后的数据字符串中,“1”或“-1”由包括符号位S的2位表达,因此使具有“1”或“-1”的概率加倍。在压缩之后的数据字符串中,“0”仅由1位的符号位S表达,因此具有“0”的概率乘以1。在可变长度压缩方法中,在运算结果数据中不是“0”、“1”和“-1”的值的比率越高,压缩效率越高。
注意,图6至图9中所示的压缩方法是示例。本实施方式中使用的压缩方法不限于上述三种方法。此外,压缩方法的类型可以是两个或更多个。
图9示出了由图2的服务器200进行的DNN学习的示例。例如,图9中所示的处理流程由执行算术处理程序的服务器200的主机CPU 224来实现。也就是说,图9示出了由服务器200执行的算术处理方法的示例和算术处理程序的示例。
注意,图9中所示的处理流程可以由诸如现场可编程门阵列(FPGA)的硬件来实现,或者可以由硬件和软件协作实现。
首先,在步骤S100中,主机CPU 224确定初始小数点位置,该初始小数点位置是小数点位置的初始值。主机CPU 224可以通过过去的实验值、实际值或用户规范来确定每个变量的初始小数点位置。
接下来,在步骤S200中,主机CPU 224将小批量的重复次数k初始化为“0”。此外,主机CPU 224对算术处理程序中的存储统计信息的变量进行初始化。
接下来,在步骤S300中,主机CPU 224确定是否满足终止学习的条件。例如,当图3中所示的完全连接层(fc2)中的误差变为等于或小于预设参考值时,或者当学习次数达到预定次数时,主机CPU 224终止学习。在不满足终止学习的条件的情况下,主机CPU 224执行步骤S400以执行下一小批量。
在步骤S400中,主机CPU 224使算术处理装置100执行小批量学习,并且在统计信息存储单元22中累积每一层的每个变量的统计信息。然后,主机CPU 224基于小批量学习的完成将重复次数k增加“1”,并执行步骤S500。
在步骤S500中,主机CPU 224确定重复次数k是否已经达到了定点数数据的小数点位置与压缩方法之间的更新间隔。在重复次数k尚未达到更新间隔的情况下,主机CPU 224返回到步骤S300的处理,而在次数k达到更新间隔的情况下,主机CPU 224执行步骤S600。
在步骤S600中,主机CPU 224通过执行小批量读取统计信息存储单元22中累积的统计信息。然后,主机CPU 224基于读取的统计信息来更新每一层的每个变量的小数点位置,如参照图4描述的。此外,主机CPU224每当在执行k次小批量时确定要在下一k次小批量中采用的压缩方法(图6至图8中描述的压缩方法或非压缩中之一)。主机CPU 224将重复次数k初始化为“0”,并重置存储统计信息的统计信息存储单元22的存储区域等。然后,主机CPU 224返回到步骤S300的处理。
图10示出了在图9的步骤S400中执行的小批量学习的示例。图10中所示的处理由算术处理装置100基于主机CPU 224的控制来执行。算术处理装置100基于来自主机CPU 224的指令在DNN的所有输入通道和所有输出通道的组合中执行步骤S410和S420的处理。
在步骤S410中,存储器接口70从数据存储器218读取数据(压缩的运算结果数据)。压缩/解压缩单元72对从数据存储器218读取的数据进行解压缩并将数据传输至寄存器单元20。例如,存储器接口70从数据存储器218读取指示压缩方法的方法信息连同压缩数据。然后,压缩/解压缩单元72对与由从数据存储器218读取的方法信息所指示的压缩方法相对应的数据进行解压缩。接下来,在步骤S420中,整数运算符32(或42)使用存储在寄存器单元20中的数据执行乘积和运算。
接下来,在步骤S430中,数据转换单元34(或44)改变作为由乘积和运算获得的数据的有效位范围的位精度,并对可表达有效范围之外的位值执行饱和处理和舍入处理。例如,数据转换单元34(或44)通过使用存储在寄存器等中的运算结果数据来改变位精度。
此外,统计信息聚合单元50获取在乘积和运算中获得并由统计获取单元36(或46)获取的数据的统计信息(指示最高有效位的位置的位置信息)。要由数据转换单元34(或44)和统计获取单元36(或46)处理的数据是所有输入通道的输出通道中的每一个的乘积和运算的结果数据。
接下来,在步骤S440中,存储器接口70使用压缩/解压缩单元72对具有由数据转换单元34(或44)改变的有效位范围的数据进行压缩。例如,压缩/解压缩单元72使用由主机CPU 224指示的压缩方法对数据进行压缩。主机CPU 224向压缩/解压缩单元72通知由前一k次小批量预先确定的压缩方法。例如,存储器接口70将压缩数据与指示压缩方法的方法信息一起写入到数据存储器218。然后,重复执行步骤S410和S420中的每一个输入通道的乘积和运算处理、步骤S430和S440中的每一个输出通道的数据转换处理、统计信息获取处理和数据压缩处理。
图11示出了在图9的步骤S600中执行的压缩方法的确定方法的示例。执行图11中所示的处理的主机CPU 224是压缩方法确定单元的示例。
首先,在步骤S610中,主机CPU 224将k次小批量学习中的运算结果数据(未压缩)的数据量设置为初始数据量,并选择非压缩作为初始压缩方法的候选。然后,主机CPU 224通过执行步骤S620、S630和S640的处理依次地预测所有压缩方法的压缩数据量,并确定具有最小压缩数据量的压缩方法作为要用于下一k次小批量学习的压缩方法。例如,压缩方法a是图6至图8中所示的0跳过压缩方法、01压缩方法或可变长度压缩方法中之一。
在步骤S620中,主机CPU 224预测在使用压缩方法中之一的情况下的压缩数据量。接下来,在步骤S630中,主机CPU 224确定在步骤S620中预测的压缩数据量是否小于数据量。在此,要进行比较的数据量是在第一处理循环中的步骤S610中设置的非压缩的数据量,并且是在第二或后续处理循环中的步骤S640中确定的数据量。在压缩数据量小于数据量的情况下,主机CPU 224执行步骤S640的处理,并且在压缩数据量等于或大于数据量的情况下,主机CPU 224返回到步骤S620并在下一压缩方法中预测压缩数据量。
在步骤S640中,主机CPU 224将在步骤S620中预测的压缩数据量设置为要在后续处理循环中比较的数据量。此外,主机CPU 224将在步骤S620中预测的压缩方法设置为压缩方法的候选。然后,主机CPU 224在通过所有压缩方法完成预测压缩数据量之后将剩余作为压缩方法的候选的压缩方法确定为要在下一k次小批量中使用的方法,并且终止图11中的处理。
通过针对每个压缩方法重复执行步骤S620至S640,选择所有压缩方法中的具有最小压缩数据量的压缩方法。注意,在每个压缩方法中的压缩数据量等于或大于非压缩的数据量的情况下,决不执行步骤S640,并且选择非压缩作为压缩方法的候选。在通过固定压缩方法对运算结果数据进行压缩的情况下,运算结果数据始终被压缩而不管是高或低压缩效率。在该实施方式中,由于可以根据压缩数据量选择多个压缩方法或非压缩中之一,因此可以选择具有小数据量的方法,包括非压缩。也就是说,可以避免选择具有比非压缩更低的压缩效率的压缩方法。
图12示出了在图11的步骤S620中执行的预测压缩数据量的方法的示例。图13示出了在预测图12的每个区域中的压缩数据量的情况下为每一个数位计算的压缩数据量的示例。图12中所示的处理由主机CPU 224针对每个压缩方法执行。在图12和图13中,数位d表示最高有效位的位位置,例如“-9”(2-9)或“-11”(2-11),并且“x”是“-9”(位范围内的最低有效位的位置)。
首先,在步骤S622中,主机CPU 224计算k次小批量学习中的运算结果数据的数据的数目和标志位的数目的乘积,并将该乘积设置为后续数据量要加到的初始数据量。标志位的数目在图6的0跳过压缩方法中是1位,在图7的01压缩方法中是2位,而在图8的可变长度压缩方法中是3位。
在步骤S624中,主机CPU 224通过计算和累积从最高有效数位到x+7数位(=-2)的每一个数位的数据量来估计上侧范围内的每个区域的压缩的数据量。步骤S624中的处理对于0跳过压缩方法、01压缩方法和可变长度压缩方法是共同的。主机CPU 224依次地将作为数位d的频率(数据的数目)的统计信息(d)和8位的乘积相加,同时将数位d更新为数据量。
在步骤S626中,主机CPU 224计算从x+6数位(=-3)到x数位(=-9)的每一个数位的数据量,并将该数据量加到步骤S624中累积的数据量。在步骤S626中,估计上侧范围内的每个区域的压缩的数据量和位范围内的每个区域的压缩的数据量的和。
主机CPU 224依次地将作为数位d的频率的统计信息(d)和在0跳过压缩方法、01压缩方法和可变长度压缩方法中的每一个中的f(d,x)的乘积相加,同时更新数位d。f(d,x)对于0跳过压缩方法和01压缩方法是共同的,而相对于0跳过压缩方法和01压缩方法在可变长度压缩方法中不同。
在0跳过压缩方法和01压缩方法中,f(d,x)被设置为“8”。在可变长度压缩方法中,f(d,x)被设置为“d-x+1+1”。在“d-x+1+1”中,“d-x+1”指示数据的数位的数目,并且最后的“1”指示符号位。因此,在可变长度压缩方法中,例如,f(d,x)在数位d=-3处被设置为“8”,在数位d=-5处被设置为“6”,而在数位d=-9处被设置为“2”。
在步骤S628中,主机CPU 224计算从x-1数位(=-10)到最低有效数位的每一个数位的数据量,并将该数据量加到步骤S626中累积的数据量。在步骤S628中,主机CPU 224依次地将作为数位d的频率的统计信息(d)和在0跳过压缩方法、01压缩方法和可变长度压缩方法中的每一个中的g(d,x)的乘积相加,同时更新数位d。注意,g(d,x)在0跳过压缩方法、01压缩方法和可变长度压缩方法中不同。
在0跳过压缩方法中,g(d,x)被设置为“8*2^(d-x+1)”。标志“^”表示幂。g(d,x)中的“8”指示每个数据是8位,并且“2^(d-x+1)”指示具有“1”或“-1”的数据的概率。概率在数位d=-10处被设置为“2^0=1(=100%)”,在数位d=-11处被设置为“2^-1=0.5(=50%)”,并且在数位d=-12处被设置为“2^-2=0.25(=25%)”,如图6中所示。
在01压缩方法中,如图7中所示,由于在压缩之后下侧范围内的数据不作为数据字符串存在,因此g(d,x)被设置为“0”。
在可变长度压缩方法中,g(d,x)被设置为“2*2^(d-x+1)+1*(1-2^(d-x+1)”。前面的“2”指示2位,并且“2^(d-x+1)”指示具有“1”或“-1”的数据的概率。“1*(1-2^(d-x+1)”的前面的“1”指示1位,并且“(1-2^(d-x+1)”指示具有“0”的概率。
注意,处理步骤S624、S626和S628的顺序是任意的。此外,在步骤S624中只能累积上侧范围内的每个区域的压缩的数据量,在步骤S626中只能累积位范围内的每个区域的压缩的数据量,并且在步骤S628中只能累积下侧范围内的每个区域的压缩的数据量。然后,在步骤S628之后,在步骤S622中计算的标志字符串中的数据量和在步骤S624、S626和S628中的每一个中累积的每个区域的压缩的数据量可以彼此相加。
通过对DNN训练的中间层数据进行压缩并将压缩的数据存储在数据存储器218中,并且将从数据存储器218读取的数据解压缩为原始数据,可以减少到数据存储器218的数据传输量。因此,在DNN学习中,可以在运算符中减少等待时间,提高了运算效率,并且可以缩短学习时间。也就是说,通过提高要传输至存储器的用于学习深度神经网络的数据的压缩效率,可以减少学习时间。
通过在位于数据存储器218附近的存储器接口70中设置压缩/解压缩单元72,可以对从矢量单元30输出的运算结果数据和从标量单元40输出的运算结果数据两者进行压缩。此外,压缩/解压缩单元72可以安装在算术处理装置100中而不将该单元分成压缩单元和解压缩单元。因此,可以使布线区域诸如与数据压缩和解压缩有关的数据线最小化,并且可以使算术处理装置100的电路规模最小化。
通过针对每预定量的学习使用存储在统计信息存储单元22中的统计信息来确定用于要存储在数据存储器218中的数据的压缩方法,可以预测在下一预定量的学习中使数据到数据存储器218的传输时间最小化的压缩方法。由于可以根据压缩数据量选择多个压缩方法或非压缩中之一,因此可以选择具有小数据量的方法,包括非压缩。也就是说,可以避免选择具有比非压缩更低的压缩效率的压缩方法。
由于可以从多个压缩方法中选择预期使压缩数据量最小化的压缩方法,因此可以根据对于每k次小批量改变的压缩数据的特性在下一k次小批量中采用被估计使压缩数据量最小化的最佳压缩方法。
例如,在0跳过压缩方法中,运算结果数据中的“0”的比率越高,压缩效率越高。在01压缩方法中,运算结果数据中的“0”、“1”和“-1”的比率越高,压缩效率越高。在可变长度压缩方法中,运算结果数据中的不是“0”、“1”和“-1”的值的比率越高,压缩效率越高。
通过将压缩/解压缩单元72安装在存储器接口70上,即使在设置多个整数运算符32和42的情况下,公共压缩/解压缩单元72也可以有效地对运算结果数据进行压缩和解压缩。
图14示出了根据另一实施方式的算术处理装置的示例。与图1中的那些要素类似的要素被赋予相同的附图标记,并且省略了详细描述。图14中所示的算术处理装置100A包括指令控制单元10A、矢量单元30A、标量单元40A和存储器接口70A代替图1中所示的指令控制单元10、矢量单元30、标量单元40和存储器接口70。
指令控制单元10A具有与图1的指令控制单元10类似的配置和功能,除了指令控制单元10A还包括压缩方法确定单元12A以外。矢量单元30A具有与图1的矢量单元30类似的配置和功能,除了矢量单元30A还具有数据转换和压缩单元34A而不是图1的数据转换单元34,并且此外,新增有解压缩单元38A以外。
标量单元40A具有与图1的标量单元40类似的配置和功能,除了标量单元40A还具有数据转换和压缩单元44A而不是图1的数据转换单元44并且新增有解压缩单元48A以外。存储器接口70A具有与图1的存储器接口70类似的配置和功能,除了存储器接口70A不具有压缩/解压缩单元72之外。
压缩方法确定单元12A代替图2中所示的服务器200执行图11至图13中所示的确定压缩方法的处理。因此,在图9中所示的由主机CPU 224执行的处理之中,由压缩方法确定单元12A执行在步骤S600中确定压缩方法的处理。
其上安装有算术处理装置100A的服务器具有与图2中所示的服务器200类似的配置和功能,除了服务器未执行确定压缩方法的处理以外。也就是说,在该实施方式中,图2中所示的服务器200包括算术处理装置100A而不是算术处理装置100。类似于图2,算术处理装置100A包括以矩阵方式布置的多个处理单元PE并且连接至主存储器214。
注意,压缩方法确定单元12A可以设置在算术处理装置100A中的另一位置处,只要可以参考存储在统计信息存储单元22中的统计信息即可。此外,在图14中,可以设置图1中所示的存储器接口70代替存储器接口70A。在这种情况下,解压缩单元38A和48A被删除,并且设置图1中所示的数据转换单元34和44代替数据转换和压缩单元34A和44A。此外,在图14中,可以删除压缩方法确定单元12A,并且确定压缩方法的处理可以由图2中的服务器200的主机CPU 224执行。
如上所述,在该实施方式中,可以获得与上述实施方式的效果类似的效果。例如,通过对DNN训练的中间层数据进行压缩并从/向数据存储器218读取/写入数据,可以减少到数据存储器218的数据传输量,并且可以缩短DNN的学习时间。也就是说,通过提高要传输至存储器的用于学习深度神经网络的数据的压缩效率,可以减少学习时间。
此外,在该实施方式中,通过在算术处理装置100A中设置压缩方法确定单元12A,可以在算术处理装置100A中确定压缩方法。因此,与上述实施方式相比,可以减少用于确定压缩方法的算术处理装置100A与主机220(图2)之间的通信量和通信时间,并且还可以缩短DNN的学习时间。
Claims (11)
1.一种算术处理装置,包括:
算术单元,其执行定点数数据的运算;
统计获取单元,其获取统计信息,所述统计信息指示通过所述运算获得的多个定点数数据的最高有效位的位置分布;
更新单元,其基于所述统计信息更新对要用于所述运算的所述多个定点数数据的位宽度的限制的范围;
压缩方法确定单元,其执行以下操作:
基于所述统计信息估计在通过多个压缩方法对所述多个定点数数据进行压缩之后的相应数据量,以及
确定多个压缩方法中的在所述多个定点数数据的压缩之后的数据量最小的压缩方法;以及
存储器接口,其将通过所述压缩方法进行压缩的所述多个定点数数据传输至存储器。
2.根据权利要求1所述的算术处理装置,其中,
所述统计获取单元还获取在深度神经网络学习中每次执行特定数目的批量的统计信息,以及
所述压缩方法确定单元还基于所述统计信息确定压缩方法,所述压缩方法用于对紧接在所述特定数目的批量之后的特定数目的批量的多个定点数数据的运算结果数据进行压缩。
3.根据权利要求1所述的算术处理装置,其中,所述存储器接口还将指示用于对所述多个定点数数据进行压缩的压缩方法的信息和压缩的所述多个定点数数据传输至所述存储器。
4.根据权利要求1所述的算术处理装置,其中,当在通过多个压缩方法对所述多个定点数数据进行压缩之后的所述相应数据量等于或大于压缩之前的运算结果数据的数据量时,所述压缩方法确定单元还确定非压缩作为所述压缩方法。
5.根据权利要求1所述的算术处理装置,其中,算术处理装置还包括压缩/解压缩单元,其执行以下操作:
通过所述压缩方法对所述多个定点数数据进行压缩,以及
对压缩的所述多个定点数数据进行解压缩。
6.根据权利要求1所述的算术处理装置,其中,
所述多个压缩方法包括第一压缩方法,所述第一压缩方法生成标志字符串和数据字符串,所述标志字符串包括指示在位范围内所述多个定点数数据中的每一个是0还是非0的标志,所述数据字符串仅包括非0的多个定点数数据,其中,
考虑在通过所述第一压缩方法对所述多个定点数数据进行压缩之后的数据量,所述压缩方法确定单元还执行以下操作:
针对所述位范围、偏向所述位范围的上位侧的上侧范围和偏向所述位范围的下位侧的下侧范围中的每一个,估计在所述多个定点数数据的压缩之后的每个区域的压缩的数据量,
将每个区域的压缩的数据量的总和设置为在所述多个定点数数据的压缩之后的数据量,以及
基于所述下侧范围内的每个位位置处的频率和通过舍入处理上舍入的概率的乘积来估计所述下侧范围内的每个区域的压缩的数据量。
7.根据权利要求1所述的算术处理装置,其中,
所述多个压缩方法包括第二压缩方法,所述第二压缩方法生成标志字符串和数据字符串,所述标志字符串包括指示所述多个定点数数据中的每一个是0、1或-1中之一还是不是0、1和-1的标志,所述数据字符串仅包括不是0、1和-1的多个定点数数据,其中,
考虑在通过所述第二压缩方法对所述运算结果数据进行压缩之后的数据量,所述压缩方法确定单元还执行以下操作:
针对位范围、偏向所述位范围的上位侧的上侧范围和偏向所述位范围的下位侧的下侧范围中的每一个,估计在所述多个定点数数据的压缩之后的每个区域的压缩的数据量,
将每个区域的压缩的数据量的总和设置为在所述多个定点数数据的压缩之后的数据量,以及
将所述下侧范围内的每个区域的压缩的数据量估计为0。
8.根据权利要求1所述的算术处理装置,其中,
所述多个压缩方法包括第三压缩方法,所述第三压缩方法生成标志字符串和数据字符串,所述标志字符串包括指示到所述多个定点数数据中的每一个的位范围内的最高有效位的位数的标志,所述数据字符串包括由所述标志指示的位数和符号位的运算结果数据,其中,
考虑在通过所述第三压缩方法对所述运算结果数据进行压缩之后的数据量,所述压缩方法确定单元还执行以下操作:
针对所述位范围、偏向所述位范围的上位侧的上侧范围和偏向所述位范围的下位侧的下侧范围中的每一个,估计在所述运算结果数据的压缩之后的每个区域的压缩的数据量,
将每个区域的压缩的数据量的总和设置为在所述运算结果数据的压缩之后的数据量,
基于所述位范围内的每个位位置处的频率与所述位数和符号位数的和的乘积来估计所述位范围内的每个区域的压缩的数据量,以及
基于所述下侧范围内的每个位位置处的频率与两倍的通过舍入处理上舍入的概率和通过舍入处理下舍入的概率的和的乘积来估计所述下侧范围内的每个区域的压缩的数据量。
9.根据权利要求1所述的算术处理装置,其中,所述更新单元还执行以下操作:
基于所述统计信息确定所述多个定点数数据中的其最高有效位将在所述范围之外的定点数数据的第一数量,以及
改变所述范围,使得所述第一数量与所述多个定点数数据的第二数量的比率小于特定值。
10.一种算术处理方法,其用于使计算机执行以下处理,所述处理包括:
执行定点数数据的运算;
获取统计信息,所述统计信息指示通过所述运算获得的多个定点数数据的最高有效位的位置分布;
基于所述统计信息更新对要用于所述运算的所述多个定点数数据的位宽度的限制的范围;
基于所述统计信息估计在通过多个压缩方法对所述多个定点数数据进行压缩之后的相应数据量;
确定多个压缩方法中的在所述多个定点数数据的压缩之后的数据量最小的压缩方法;
将通过所述压缩方法进行压缩的所述多个定点数数据传输至存储器;以及
通过使用通过所述压缩方法进行压缩的所述多个定点数数据来执行深度神经网络学习。
11.一种非暂态计算机可读记录介质,其存储使至少一个计算机执行以下处理的算术处理程序,所述处理包括:
执行定点数数据的运算;
获取统计信息,所述统计信息指示通过所述运算获得的多个定点数数据的最高有效位的位置分布;
基于所述统计信息更新对要用于所述运算的所述多个定点数数据的位宽度的限制的范围;
基于所述统计信息估计在通过多个压缩方法对所述多个定点数数据进行压缩之后的相应数据量;
确定多个压缩方法中的在所述多个定点数数据的压缩之后的数据量最小的压缩方法;
将通过所述压缩方法进行压缩的所述多个定点数数据传输至存储器;以及
通过使用通过所述压缩方法进行压缩的所述多个定点数数据来执行深度神经网络学习。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-207436 | 2020-12-15 | ||
JP2020207436A JP2022094508A (ja) | 2020-12-15 | 2020-12-15 | 演算処理装置、演算処理方法および演算処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114637489A true CN114637489A (zh) | 2022-06-17 |
Family
ID=78598877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111448493.1A Pending CN114637489A (zh) | 2020-12-15 | 2021-11-30 | 算术处理装置、算术处理方法和存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220188077A1 (zh) |
EP (1) | EP4016281A1 (zh) |
JP (1) | JP2022094508A (zh) |
CN (1) | CN114637489A (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6540725B2 (ja) | 2017-01-30 | 2019-07-10 | 富士通株式会社 | 演算処理装置、方法、およびプログラム |
US10795836B2 (en) | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
JP7056225B2 (ja) * | 2018-02-26 | 2022-04-19 | 富士通株式会社 | 演算処理装置、情報処理装置、情報処理方法、およびプログラム |
JP7036224B2 (ja) | 2018-10-24 | 2022-03-15 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP2020135549A (ja) * | 2019-02-21 | 2020-08-31 | 富士通株式会社 | 演算処理装置、情報処理装置および演算処理方法 |
-
2020
- 2020-12-15 JP JP2020207436A patent/JP2022094508A/ja not_active Withdrawn
-
2021
- 2021-11-10 EP EP21207651.7A patent/EP4016281A1/en not_active Withdrawn
- 2021-11-15 US US17/526,010 patent/US20220188077A1/en active Pending
- 2021-11-30 CN CN202111448493.1A patent/CN114637489A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220188077A1 (en) | 2022-06-16 |
JP2022094508A (ja) | 2022-06-27 |
EP4016281A1 (en) | 2022-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
US20180218518A1 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
US20130007076A1 (en) | Computationally efficient compression of floating-point data | |
CN106549673B (zh) | 一种数据压缩方法及装置 | |
JP7372347B2 (ja) | データ圧縮方法およびコンピューティングデバイス | |
JPH0117295B2 (zh) | ||
CN111160550A (zh) | 训练方法、信息处理设备和非暂态计算机可读存储介质 | |
CN114723033B (zh) | 数据处理方法、装置、ai芯片、电子设备及存储介质 | |
EP4008057B1 (en) | Lossless exponent and lossy mantissa weight compression for training deep neural networks | |
CN112329910A (zh) | 一种面向结构剪枝结合量化的深度卷积神经网络压缩方法 | |
CN113222159B (zh) | 一种量子态的确定方法及装置 | |
JP2020135549A (ja) | 演算処理装置、情報処理装置および演算処理方法 | |
CN110769263A (zh) | 一种图像压缩方法、装置及终端设备 | |
CN111801651A (zh) | 使用16比特浮点乘法器的矩阵-矩阵乘法的多精度整数乘法器 | |
CN114637489A (zh) | 算术处理装置、算术处理方法和存储介质 | |
CN116451769A (zh) | 语言模型的量化方法及电子设备 | |
CN112580776A (zh) | 信息处理设备、信息处理方法和计算机可读记录介质 | |
US8817875B2 (en) | Methods and systems to encode and decode sequences of images | |
CN114358295B (zh) | 基于机器学习框架的二分类方法及相关装置 | |
US20220392117A1 (en) | Data compression and decompression system and method thereof | |
CN115344826A (zh) | 计算装置、操作方法和机器可读存储介质 | |
CN111431540B (zh) | 一种基于神经网络模型的fpga配置文件算术压缩与解压方法 | |
CN113111998A (zh) | 信息处理设备、计算机可读存储介质和神经网络计算方法 | |
KR20220018199A (ko) | 희소성 데이터를 이용하는 연산 장치 및 그것의 동작 방법 |
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 |