CN111612123A - 信息处理装置及其控制方法和计算机可读介质 - Google Patents

信息处理装置及其控制方法和计算机可读介质 Download PDF

Info

Publication number
CN111612123A
CN111612123A CN202010093084.3A CN202010093084A CN111612123A CN 111612123 A CN111612123 A CN 111612123A CN 202010093084 A CN202010093084 A CN 202010093084A CN 111612123 A CN111612123 A CN 111612123A
Authority
CN
China
Prior art keywords
arithmetic operation
arithmetic
data type
ratio
unit
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
CN202010093084.3A
Other languages
English (en)
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN111612123A publication Critical patent/CN111612123A/zh
Pending legal-status Critical Current

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/3001Arithmetic instructions
    • 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
    • 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
    • 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
    • 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/491Computations with decimal numbers radix 12 or 20.
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本文涉及信息处理装置、用于信息处理装置的控制方法以及记录用于信息处理装置的控制程序的计算机可读记录介质。信息处理装置包括:算术运算单元,其被配置成使用算术运算目标执行算术运算,并且通过使用计算出的算术运算结果来重复该算术运算;比率计算单元,其被配置成获得包括在预定位定点数的可表达范围内的元素的数量与算术运算结果中包括的元素的数量的比率;以及算术运算控制单元,其被配置成使算术运算单元通过基于由比率计算单元计算出的比率使用预定位定点数来执行算术运算。

Description

信息处理装置及其控制方法和计算机可读介质
技术领域
本文讨论的实施方式涉及信息处理装置、信息处理装置的控制方法以及信息处理装置的控制程序。
背景技术
近年来,随着深度学习和机器学习引起关注,可以执行在学习中高速进行的算术运算的处理器引起关注。在下文中,存在将深度学习和机器学习统称为学习的情况。在用于学习的处理器中,可以并行执行张量运算并加速算术运算的图形处理单元(GPU)特别地引起了关注。但是,GPU是为执行3维(D)图形处理而开发的处理器,并且并未针对学习进行优化。因此,当执行学习时,GPU不管处理的阶段怎样都使用32位浮点数执行算术运算。由此,考虑到电力性能的指标,可以说GPU在学习方面具有优化的空间。
在这种情况下,各种公司已经开发了针对学习而优化的处理器。学习的算术运算主要是张量运算,该张量运算与在3D图形处理中执行的张量运算没有区别。然而,深度学习和机器学习具有用于张量运算的算术运算元素的值的变化随着学习的进行而减小特征。着眼于此类学习中执行的算术运算的特殊性质,公司推出了以8位整数执行推理操作的处理器和以16位浮点数执行学习操作的处理器用于机器学习。这些处理器的目的是通过降低算术运算精度并执行该算术运算来改善电力性能。
此外,存在在作为学习算术运算循环的前半阶段的先前学习中以32位浮点数执行算术运算,并且在先前的学习已完成的时候将算术运算切换为具有8位整数的学习算术运算的硬件。该硬件使用8位整数作为定点数,并在先前的迭代中进行学习算术运算时,根据输出结果确定小数点位置。迭代意指用于确定重复执行的学习中的参数的学习算术运算的单个循环。利用该操作,不需要执行两次算术运算,即确定小数点位置的算术运算和确定小数点位置之后的算术运算,并且减少了算术运算的次数。此外,存在获取图像数据作为浓度数据或二进制数据、执行学习和识别并且加速图像识别的典型技术。
日本公开特许公报第06-96048号和日本公开特许公报第08-36644号作为相关技术被公开。
但是,已经开发用于深度学习和机器学习的处理器的算术运算精度是根据硬件预先确定的,并且难以处理学习特征,使得随着学习的进行,用于算术运算的算术运算元素的值的变化减小。因此,已经针对深度学习和机器学习开发的处理器难以提高学习效率。
此外,在先前的学习完成时,将具有32位浮点数的算术运算切换为具有8位整数的学习算术运算的硬件在学习期间不切换算术运算。因此,在学习期间的算术运算中,硬件难以应对算术运算元件的值的变化。因此,即使使用这种硬件,也难以提高学习效率。此外,即使使用获取图像数据作为浓度数据或二进制数据并执行学习和识别的典型技术,也难以应对学习期间的算术运算中的算术运算元件的值的变化,并且学习效率可能会降低。
此外,在其中小数点位置变化大的先前学习的预定阶段之后使用8位定点数的情况下,由于小数点位置的大的变化,有可能无法进行学习。因此,为了避免学习的停滞,考虑了由用户通过反复试验来确定学习算术运算循环的数量,作为切换到使用8位定点数的算术运算的定时的方法。
然而,用户难以指定学习算术运算循环的数量来设置适当的切换定时,并且存在机器学习的学习效率降低的可能性。
考虑到上述情况做出了所公开的技术,并且所公开技术的目的是提供一种提高深度学习和机器学习的学习效率的信息处理装置、信息处理装置的控制方法以及信息处理装置的控制程序。
发明内容
根据实施方式的方面,信息处理装置包括:算术运算单元,其被配置成使用算术运算目标执行算术运算并且通过使用计算出的算术运算结果来重复该算术运算;比率计算单元,其被配置成获得包括在预定位定点数的可表达范围内的元素的数量与算术运算结果中包括的元素的数量的比率;以及算术运算控制单元,其被配置成使算术运算单元通过基于由比率计算单元计算出的比率使用预定位定点数来执行算术运算。
附图说明
图1是信息处理装置的硬件配置图;
图2是用于说明学习过程的图;
图3是根据第一实施方式的信息处理装置的框图;
图4是根据第一实施方式的算术数据类型数据库中的注册信息的示例的图;
图5是根据第一实施方式的可表达比率数据库中的注册信息的示例的图;
图6是用于说明根据第一实施方式的算术数据类型确定处理的图;
图7是由根据第一实施方式的信息处理装置进行的算术数据类型确定处理的序列图;
图8A和图8B是根据第一实施方式的算术数据类型确定处理的流程图;
图9是示出通过使用两个信息处理装置进行学习的图;
图10是根据第二实施方式的可表达比率数据库中的注册信息的示例的图;
图11是根据第二实施方式的算术数据类型数据库中的注册信息的示例的图;
图12是用于说明根据第二实施方式的算术数据类型确定处理的图;
图13A和图13B是根据第二实施方式的算术数据类型确定处理的流程图;
图14是根据第三实施方式的信息处理装置的框图;
图15是用于说明算术数据类型转换的图;
图16是由根据第三实施方式的信息处理装置进行的算术数据类型确定处理的序列图;以及
图17A和图17B是根据第三实施方式的算术数据类型确定处理的流程图。
具体实施方式
下面将参照附图详细描述本申请中公开的信息处理装置、用于信息处理装置的控制方法以及用于信息处理装置的控制程序的实施方式。注意,在本申请中公开的信息处理装置、用于信息处理装置的控制方法和用于信息处理装置的控制程序不限于以下实施方式。
[第一实施方式]
图1是信息处理装置的硬件配置图。信息处理装置1执行深度学习。下面将描述执行深度学习的信息处理装置1。但是,执行机器学习的信息处理装置具有类似的功能。存在将信息处理装置1称为节点的情况。如图1所示,信息处理装置1包括中央处理单元(CPU)11、深度学习处理器12、存储器13、存储装置14和网络接口15。
CPU 11执行没有由深度学习处理器12执行的算术运算。例如,CPU 11执行系统程序处理等。
深度学习处理器12是专门针对深度学习的算术运算的处理器。深度学习处理器12可以以比CPU 11高的速度执行深度学习算术运算。
存储器13是易失性存储器。存储器13临时保存从存储装置14读取的学习数据,直到该数据被读取至用于深度学习的处理器并且被传送。
存储装置14是非易失性存储器(例如,硬盘驱动器(HDD)或固态驱动器(SSD))。存储装置14存储在由信息处理装置1执行深度学习的情况下使用的数据。
网络接口15是经由以太网(注册商标)或无限带宽技术(注册商标)连接至另一个信息处理装置1的接口。网络接口15在CPU 11与安装在其他信息处理装置1中的CPU 11之间中继数据的发送和接收。
信息处理装置1通过使用如图2所示的多层神经网络执行深度学习。图2是用于说明学习的处理的图。信息处理装置1通过在每一层中重复算术运算来提高识别精度。例如,如图2所示,在各个层中执行算术运算#1至算术运算#N的情况下,信息处理装置1通过使用学习数据重复算术运算#1至算术运算#N。此处,如图2所示,将重复执行一次算术运算#1至算术运算#N的学习时段2称为迭代。例如,信息处理装置1通过多次重复迭代完成深度学习。
接下来,将参照图3描述根据本实施方式的信息处理装置1的深度学习的功能。图3是根据第一实施方式的信息处理装置的框图。
如图3所示,信息处理装置1包括深度学习框架100和学习数据存储单元200。例如,学习数据存储单元200由图1所示的存储装置14实现。学习数据存储单元200预先存储在深度学习中使用的多条学习数据。
深度学习框架100是被开发以轻松创建深度学习应用的软件库组。深度学习框架100由图1所示的CPU 11、深度学习处理器12和存储器13实现。
深度学习框架100包括用户应用101、执行控制单元102、算术运算单元103、算术数据类型确定单元104、学习数据读取单元105、算术数据类型数据库106和可表达比率数据库107。例如,通过CPU 11实现用户应用101、执行控制单元102、算术数据类型确定单元104和学习数据读取单元105的功能。通过深度学习处理器12实现算术运算单元103的功能。此外,算术数据类型数据库106和可表达比率数据库107被布置在存储器13中。
用户应用101是由操作员创建的深度学习应用程序。用户应用程序101指示执行控制单元102执行深度学习。
算术数据类型数据库106是其中注册了在每层中包括的每个算术运算中使用的32位浮点数或8位定点数的算术数据类型中的一个的数据库。图4是根据第一实施方式的算术数据类型数据库的注册信息的示例的图。如图4所示,算术数据类型数据库106将在每个算术运算中使用的算术数据类型与算术识别(ID)相关联地保存。算术ID是针对在一次迭代期间执行的每个算术运算唯一设置的识别信息。例如,在图4的状态下,在算术运算#1中使用32位浮点数。此外,在算术运算#2至#4中使用8位定点数。
可表达比率数据库107是如下数据库:其中注册了可以通过使用预定小数点位置由8位定点数表达的张量元素的数量与包括在每次迭代的算术运算结果中的张量元素的数量的比率。此处,张量元素的数量是用于在每次迭代中的每层中执行的张量运算的算术运算目标中包括的每个元素的值。算术运算目标是诸如用于算术运算的数值或矩阵的操作数。例如,在k×k矩阵为张量算术运算中的算术运算目标的情况下,包括在k×k矩阵中的k×k个矩阵元素中的每一个都是张量元素的数量。
图5是根据第一实施方式的可表达比率数据库中的注册信息的示例的图。如图5所示,在可表达比率数据库107中,算术ID和比率被与迭代ID相关联地注册。迭代ID是在深度学习的学习阶段针对每一次迭代唯一设置的标识符。例如,在图5所示的可表达比率数据库107中,在使用迭代ID为it1的迭代中算术运算#1的算术运算结果中包括的8位定点数的情况下,可以根据小数点位置表示的张量元素的数量的比率为20.6%。在下文中,可以使用8位定点数根据小数点位置表示的张量元素的数量的比率称为“可表达比率”。
执行控制单元102整体控制深度学习的处理。执行控制单元102包括:算术运算指示单元121、算术数据类型请求单元122、数据库更新指示单元123和数据读取控制单元124。
在从用户应用101接收到用于执行深度学习的指令的输入后,数据库更新指示单元123指示算术数据类型确定单元104的算术数据类型判定单元141初始化算术数据类型数据库106。此外,数据库更新指示单元123指示算术数据类型确定单元104的算术数据类型判定单元141初始化可表达比率数据库107。
接下来,数据库更新指示单元123向数据读取控制单元124输出数据库初始化完成的通知。之后,每当每次迭代中的每个算术运算被终止时,数据库更新指示单元123就从算术运算单元103获取算术运算结果。然后,数据库更新指示单元123将获取的算术运算结果输出至数据库更新单元142,并指示更新可表达比率数据库107。
数据读取控制单元124从数据库更新指示单元123接收数据库初始化完成的通知的输入。此外,数据读取控制单元124从算术运算指示单元121接收获取用于学习的学习数据的请求。然后,数据读取控制单元124指示学习数据读取单元105读取用于学习的学习数据。此后,数据读取控制单元124从学习数据读取单元105获取用于学习的学习数据。然后,数据读取控制单元124将获取的学习数据输出至算术运算指示单元121。
此后,每当迭代终止时,数据读取控制单元124从算术运算指示单元121接收用于获取学习数据的请求。然后,数据读取控制单元124指示学习数据读取单元105读取学习数据并获取用于每次迭代的学习数据,并且将所获取的学习数据输出至算术运算指示单元121。
算术运算指示单元121从用户应用101获取执行深度学习输入的指令。然后,算术运算指示单元121在每次迭代开始时执行以下处理。
算术运算指示单元121将获取用于学习的学习数据的请求输出至数据读取控制单元124。然后,作为对获取请求的响应,算术运算指示单元121从数据读取控制单元124接收学习数据的输入。
接下来,算术运算指示单元121将算术数据类型传输请求输出至算术数据类型请求单元122。此后,作为对传输请求的响应,算术运算指示单元121从算术数据类型请求单元122获取在下一次迭代中的每个算术运算中使用的算术数据类型的输入。例如,在第一次迭代中的所有算术运算中都使用32位浮点数。此后,算术运算指示单元121将在每个算术运算中使用的学习数据和算术数据类型输出至算术运算单元103,并进一步指示执行算术运算。
此后,算术运算指示单元121从算术运算单元103接收迭代完成通知的输入。然后,算术运算指示单元121重复用于获取学习数据和算术数据类型的处理并让算术运算单元103执行算术运算。
算术运算指示单元121使算术运算单元103重复每次迭代的每层中的算术运算,直到深度学习完成为止。此处,在满足预定条件的情况下,例如,在预定次数的迭代终止的情况下,或者在识别精度超过90%的情况下,算术运算指示单元121确定深度学习完成。每当完成预定次数的迭代时,通过使用测试数据执行识别处理来获取识别精度。
算术数据类型请求单元122从算术运算指示单元121接收算术数据类型发送请求的输入。然后,算术数据类型请求单元122请求算术数据类型判定单元141获取算术数据类型。此后,算术数据类型请求单元122从算术数据类型判定单元141接收要在下次迭代的每个算术运算中使用的算术数据类型的输入。然后,算术数据类型请求单元122将所获取的要在下次迭代的每个算术运算中使用的算术数据类型输出至算术运算指示单元121。
算术运算单元103在每次迭代的开始处从算术运算指示单元121接收学习数据的输入。此外,算术运算单元103从算术运算指示单元121接收将在下次迭代中的每个算术运算中使用的算术数据类型的输入。在第一次迭代中,算术运算单元103从算术运算指示单元121接收使用32位浮点数作为要在每个算术运算中使用的算术数据类型的指令。然后,算术运算单元103通过在使用学习数据作为输入的每个算术运算中使用32位浮点数来执行每个算术运算,并且终止第一次迭代。此后,算术运算单元103将每个算术运算的算术运算结果输出至数据库更新指示单元123。此外,当包括在迭代中的所有算术运算完成时,算术运算单元103将迭代完成通知输出至算术运算指示单元121。算术运算单元103重复算术运算处理,直到来自算术运算指示单元121的执行算术运算的指令停止为止。
算术数据类型确定单元104包括算术数据类型判定单元141和数据库更新单元142。
数据库更新单元142从数据库更新指示单元123接收初始化可表达比率数据库107的指令。然后,数据库更新单元142删除可表达比率数据库107中的所有注册信息,并且初始化可表达比率数据库107。
此后,每次当迭代完成时,数据库更新单元142从数据库更新指示单元123接收每个算术运算的算术运算结果的输入。然后,数据库更新单元142确定适当的小数点位置以表示包括在每个算术运算的算术运算结果中的每个张量元素的数量。此后,数据库更新单元142确定是否可以按所确定的小数点位置通过使用8位定点数来表示包括在每个算术运算的算术运算结果中的每个张量元素的数量。这8位定点数是“预定位定点数”的示例。
接下来,数据库更新单元142计算张量元素的数量的比率,该张量元素的数量可以根据每个算术运算的算术运算结果中的确定的小数点位置通过使用8位定点数来表示。此后,数据库更新单元142将可表达比率注册到可表达比率数据库107,该可表达比率是根据每次迭代的每个算术运算中的确定的小数点位置通过使用8位定点数表达的张量元素的数量的比率。
此处,将详细描述由数据库更新单元142计算可表达比率。在小数点位置为Q8的情况下,Q8由下式(1)确定。
[数学式1]
Q8=8-ceil(log2max(|x min|,x max))-1…(1)
标记xmin指示张量元素的数量的最小值。此外,标记xmax指示张量元素的数量的最大值。然后,ceil(X)是用于获取超过X的最小整数的函数。例如,在张量元素的数量的最小值的绝对值或张量元素的数量的最大值的绝对值中的较大的一个由二进制数和一位符号位表示的情况下,由通过从八位中减去整数部分中的位数获得的值来计算小数点位置Q8。在这种情况下,可以由小数点位置Q8表示的值的范围R为-128×2-Q至127×2-Q
因此,通过式中张量元素的数量为N的下式(2)来计算可表达的张量元素的数量的比率P。
[数学式2]
Figure BDA0002384372260000091
例如,数据库更新单元142在通过式(1)获得小数点位置Q8的情况下,通过使用范围R根据式(2)计算在每个算术运算中的可表达比率。
算术数据类型判定单元141从数据库更新指示单元123接收初始化算术数据类型数据库106的指令。然后,算术数据类型判定单元141将每个算术运算中要使用的算术数据类型作为32位浮点数注册到算术数据类型数据库106并初始化算术数据类型数据库106。
此后,算术数据类型判定单元141从算术数据类型请求单元122接收用于发送每个算术运算的算术数据类型的请求。接下来,算术数据类型判定单元141确认算术数据类型数据库106并获取每个算术运算的当前算术数据类型。然后,算术数据类型判定单元141指定已经将8位定点数设置为算术数据类型的算术运算。算术数据类型判定单元141通知算术数据类型请求单元122将其中已经将8位定点数设置为算术数据类型的指定的算术运算的8位定点数作为算术数据类型。
另一方面,关于其中将32位浮点数设置为算术数据类型的算术运算,算术数据类型判定单元141从可表达比率数据库107中获取来自最新迭代的确定范围内的迭代的可表达比率。
例如,参照图6,将描述此时已经终止1504次迭代的情况。图6是用于说明根据第一实施方式的算术数据类型确定处理的图。图6中的表170是其中可表达比率数据库107被重新布置以容易理解的表。
例如,在确定范围是四次迭代的情况下,算术数据类型判定单元141获取图6中用于每个算术运算的使用范围701至704中的可表达比率。此处,在算术运算#1至算术运算#4时的算术数据类型是32位浮点数。接下来,算术数据类型判定单元141确定用于每个算术运算的最新迭代中的可表达比率是否超过比率阈值。例如,在将比率阈值设置为Tf1的情况下,算术数据类型判定单元141确定是否满足下式(3)。
[数学式3]
Pfi>Tf1…(3)
此处,例如,可以将作为最新迭代中的可表达比率的比率阈值的Tf1设置为80%至90%。
在比率不超过阈值的情况下,认为在当时的状态下通过使用8位定点数的表达难以维持适当的算术运算精度。因此,算术数据类型判定单元141将算术运算的算术数据类型确定为32位浮点数,并向算术数据类型请求单元122通知该确定。例如,在将比率阈值设置为80%的情况下,图6中的迭代ID为it1504的迭代中的算术运算#1的可表达比率被设置为为46.5%并且等于或小于比率阈值。因此,算术数据类型判定单元141将算术运算#1的算术数据类型确定为32位浮点数。
另一方面,关于可表达比率超过阈值的算术运算,算术数据类型判定单元141确定在确定范围内可表达比率的变化是否为小。例如,算术数据类型判定单元141通过使用下式(4)来计算作为算术运算f中的迭代之间的波动的Δf。算术运算f中的迭代之间的波动Δf是“比率变化”的示例。
[数学式4]
Figure BDA0002384372260000101
此处,标记i指示当时已完成的迭代次数。此外,标记I指示确定范围。然后,标记f指示从i-I至i的任何整数。此外,标记Δfi指示在第i次迭代中算术运算f的迭代之间的波动。然后,标记Poj指示在确定范围内的第j次迭代中的可表达比率。此外,标记Poi指示第i次迭代中的可表达比率。例如,算术数据类型判定单元141通过使用式(4)来计算当时的可表达比率与在确定范围内的迭代中的可表达比率之间的差的最大值作为波动Δfi。
接下来,算术数据类型判定单元141确定计算出的波动是否小于预定波动阈值。例如,在将波动阈值设置为Tf2的情况下,算术数据类型判定单元141确定是否满足下式(5)。
[数学式5]
Δfi<Tf2…(5)
在波动小于预定波动阈值的情况下,可以说算术运算的小数点位置可能会收敛。因此,在计算出的波动小于波动阈值的情况下,算术数据类型判定单元141确定算术运算的算术数据类型为8位定点数,并向算术数据类型请求单元122通知所确定的算术数据类型。另一方面,在计算出的波动等于或大于波动阈值的情况下,算术数据类型判定单元141确定算术运算的算术数据类型为32位浮点数,并向算术数据类型请求单元122通知所确定的算术数据类型。
此处,例如,可以将作为波动阈值的Tf2设置为10%至20%。在波动阈值为10%的情况下,图6中的算术运算#3的使用范围703中的波动等于或大于波动阈值。另一方面,算术运算#2和#4中的波动小于波动阈值。因此,算术数据类型判定单元141确定算术运算#3的算术数据类型为32位浮点数,并且确定算术运算#2和#4的算术数据类型为8位定点数。
通知8位定点数作为算术数据类型并且通过使用8位定点数经由执行控制单元102使算术运算单元103执行算术运算的处理对应于“使算术运算单元通过使用预定位定点数执行算术运算”的处理。
此外,算术数据类型判定单元141将用于每个算术运算的确定的算术数据类型注册到算术数据类型数据库106。结果,算术数据类型判定单元141可以通过使用算术数据类型数据库106确认在下次迭代中的每个算术运算中使用哪种算术数据类型。
学习数据读取单元105从数据读取控制单元124接收读取用于学习的学习数据的指令。然后,学习数据读取单元105从学习数据存储单元200读取指定的学习数据。然后,学习数据读取单元105将读取的学习数据发送至数据读取控制单元124。
接下来,将参照图7描述由根据第一实施方式的信息处理装置1进行的算术数据类型确定处理的整个流程的概要。图7是由根据第一实施方式的信息处理装置进行的算术数据类型确定处理的序列图;
用户应用101将执行深度学习的指令输出至执行控制单元102(步骤S101)。
当从用户应用101接收到执行深度学习的指令时,执行控制单元102指示算术数据类型确定单元104初始化算术数据类型数据库106(步骤S102)。
算术数据类型确定单元104接收初始化算术数据类型数据库106的指令,并将算术数据类型数据库106的每个算术运算的算术数据类型更新为32位浮点数,并且初始化算术数据类型数据库106(步骤S103)。
此后,算术数据类型确定单元104向执行控制单元102通知算术数据类型数据库106的初始化完成(步骤S104)。
当接收到指示算术数据类型数据库106的初始化完成的响应时,执行控制单元102指示算术数据类型确定单元104初始化可表达比率数据库107(步骤S105)。
响应于初始化可表达比率数据库107的指令,算术数据类型确定单元104删除注册到可表达比率数据库107的数据并且初始化可表达比率数据库107(步骤S106)。
此后,算术数据类型确定单元104向执行控制单元102通知可表达比率数据库107的初始化完成(步骤S107)。
当接收到指示可表达比率数据库107的初始化完成的响应时,执行控制单元102指示学习数据读取单元105读取要用于学习的学习数据(步骤S108)。
响应于读取学习数据的指令,学习数据读取单元105从学习数据存储单元200读取指定的学习数据(步骤S109)。
此后,学习数据读取单元105将读取的学习数据发送至执行控制单元102(步骤S110)。
执行控制单元102从学习数据读取单元105获取学习数据。接下来,执行控制单元102将用于获取要在下次迭代中的每个算术运算中使用的算术数据类型的请求输出至算术数据类型确定单元104(步骤S111)。
当接收到获取算术数据类型的请求时,算术数据类型确定单元104通过使用算术数据类型数据库106和可表达比率数据库107来确定要在每个算术运算中使用的算术数据类型(步骤S112)。
然后,算术数据类型确定单元104将指示所确定的在每个算术运算中使用的算术数据类型的通知输出至执行控制单元102(步骤S113)。
执行控制单元102获取要在每个算术运算中使用的算术数据类型。然后,执行控制单元102将所获取的学习数据输出至算术运算单元103,并向算术运算单元103通知要在每个算术运算中使用的算术数据类型,并使算术运算单元103执行算术运算(步骤S114)。
此后,执行控制单元102从算术运算单元103接收算术运算结果的输入(步骤S115)。
接下来,执行控制单元102将所获取的算术运算结果输出至算术数据类型确定单元104,并指示更新可表达比率数据库107(步骤S116)。
算术数据类型确定单元104通过使用算术运算结果中包括的张量元素的数量来计算可表达比率,注册计算出的可表达比率,并更新可表达比率数据库107(步骤S117)。
此后,算术数据类型确定单元104将指示可表达比率数据库107更新完成的通知输出至执行控制单元102(步骤S118)。
接下来,执行控制单元102指示算术数据类型确定单元104更新算术数据类型数据库106(步骤S119)。
算术数据类型确定单元104对在最新迭代中的每个算术运算中使用的算术数据类型进行注册,并且更新算术数据类型数据库106(步骤S120)。
此后,算术数据类型确定单元104将指示算术数据类型数据库106更新完成的通知输出至执行控制单元102(步骤S121)。
执行控制单元102从算术数据类型确定单元104接收指示算术数据类型数据库106的更新完成的通知的输入。执行控制单元102、算术运算单元103、算术数据类型确定单元104和学习数据读取单元105重复步骤S111至步骤S121,直到完成包括在一次迭代中的所有算术运算为止。此外,执行控制单元102、算术运算单元103、算术数据类型确定单元104和学习数据读取单元105重复步骤S108至步骤S121,直到深度学习完成为止。之后,执行控制单元102向用户应用101通知深度学习完成(步骤S122)。
接下来,将参照图8A和图8B描述根据第一实施方式的算术数据类型确定处理的详细流程。图8A和图8B是根据第一实施方式的算术数据类型确定处理的流程图。
当从用户应用101接收到执行深度学习的指令时,数据库更新指示单元123将初始化算术数据类型数据库106的指令输出至算术数据类型判定单元141。此外,数据库更新指示单元123将初始化可表达比率数据库107的指令输出至数据库更新单元142。算术数据类型判定单元141将注册到算术数据类型数据库106的每个算术运算的算术数据类型改变为32位浮点数,并且初始化算术数据类型数据库106。此外,数据库更新单元142删除注册到可表达比率数据库107的可表达比率,并且初始化可表达比率数据库107。利用该操作,算术数据类型确定单元104初始化数据库(步骤S201)。
数据读取控制单元124从数据库更新指示单元123接收指示数据库的初始化完成的通知。此外,数据读取控制单元124从算术运算指示单元121接收获取学习数据的请求。然后,数据读取控制单元124将用于读取学习数据的请求输出至学习数据读取单元105。响应于用于读取学习数据的请求,学习数据读取单元105从学习数据存储单元200读取指定的学习数据(步骤S202)。然后,学习数据读取单元105将读取的学习数据输出至数据读取控制单元124。数据读取控制单元124将获取的学习数据输出至算术运算指示单元121。
算术运算指示单元121根据执行从用户应用101输入的深度学习输入的指令选择迭代中的下一个算术运算(步骤S203)。
然后,算术运算指示单元121将用于获取在所选择的算术运算中使用的算术数据类型的请求输出至算术数据类型判定单元141。在接收到该获取请求时,算术数据类型判定单元141从可表达比率数据库107中获取在所选择的算术运算的使用范围内的迭代中的可表达比率(步骤S204)。然而,在不进行迭代并且未获得使用范围内的迭代的情况下,算术数据类型判定单元141确定在可表达比率的获取中出现错误。
接下来,算术数据类型判定单元141通过使用在式(4)中获取的可表达比率来计算可表达比率中的波动(步骤S205)。然而,在可表达比率的获取中出现发生错误的情况下,算术数据类型判定单元141不计算可表达比率的波动,并且保持未计算的波动。
接下来,算术数据类型判定单元141确定是否已经使用8位定点数执行了所选择的算术运算(步骤S206)。在已经使用8位定点数执行算术运算的情况下(步骤S206:是),算术数据类型判定单元141将在所选择的算术运算中使用的算术数据类型保持为8位定点数,并且过程行进至步骤S210。
另一方面,在还没有通过使用8位定点数来执行算术运算的情况下(步骤S206:否),算术数据类型判定单元141确定可表达比率中的波动是否小于波动阈值(步骤S207)。
在可表达比率的波动小于波动阈值的情况下(步骤S207:是),算术数据类型判定单元141确定最新可表达比率是否大于比率阈值(步骤S208)。
在最新可表达比率大于比率阈值的情况下(步骤S208:是),算术数据类型判定单元141确定算术数据类型为8位定点数。此后,算术数据类型判定单元141向算术运算指示单元121通知8位定点数被用作所选择的算术运算的算术数据类型,并且将算术数据类型变为8位定点数。
(步骤S209)。
算术运算指示单元121使算术运算单元103通过使用8位定点数来执行所选择的算术运算(步骤S210)。
另一方面,在波动不小于波动阈值的情况下(步骤S207:否)或者在最新可表达比率等于或小于比率阈值的情况下(步骤S208:否),算术数据类型判定单元141将所选择的算术运算的算术数据类型保持为32位浮点数。此处,在未计算出可表达比率的波动的情况下,算术数据类型判定单元141确定该波动不低于波动阈值。在这种情况下,在本实施方式中,算术数据类型判定单元141不通知改变算术运算指示单元121的算术数据类型的指示。但是,算术数据类型判定单元141可以通知算术运算指示单元121将32位浮点数用作所选择的算术运算的算术数据类型。算术运算指示单元121使算术运算单元103通过使用32位浮点数来执行所选择的算术运算(步骤S211)。
此后,算术数据类型请求单元122从算术运算单元103获取所选择的算术运算的算术运算结果。然后,算术数据类型请求单元122将所获取的算术运算结果输出至数据库更新单元142,并指示更新可表达比率数据库107。数据库更新单元142通过使用输入算术运算结果中包括的张量元素的数量来计算可表达比率(步骤S212)。
接下来,数据库更新单元142将计算出的可表达比率存储在可表达比率数据库107中(步骤S213)。
算术运算指示单元121根据从算术运算单元103是否获取到迭代完成通知来确定一次迭代中的所有算术运算处理是否已完成(步骤S214)。在存在尚未执行的算术运算处理的情况下(步骤S214:否),算术运算指示单元121返回至步骤S203。
另一方面,在一次迭代中的所有算术运算处理已经完成的情况下(步骤S214:是),算术运算指示单元121确定深度学习是否完成(步骤S215)。在深度学习未完成的情况下(步骤S215:否),算术运算指示单元121返回至步骤S202。
另一方面,在深度学习完成的情况下(步骤S215:是),算术运算指示单元121向用户应用101通知深度学习完成。然后,算术运算指示单元121终止深度学习,包括算术数据类型的切换。
如上所述,根据本实施方式的信息处理装置获得包括在具有8位定点数的算术运算结果中的元素的数量的可表达比率,并且如果获得的可表达比率等于或大于阈值并且波动小于阈值时,信息处理装置将算术数据类型切换至8位定点数。以这种方式,由于在能够充分进行8位定点数表达的时自动切换算术数据类型,因此操作者不必通过反复试验来指定算术数据类型的定时,并且可以轻松提高深度学习和机器学习的学习效率。此外,由于基于可表达元素的数量来切换算术数据类型,因此可以减少由于先前学习不足造成的算术运算精度不足而导致的学习停滞。
此外,由于在学习算术运算期间自动改变算术数据类型,例如,在通过使用由其他系统构造的深度学习模型执行附加学习或迁移学习的情况下,不需要操作员给由模型定义的每个算术运算指定算术数据类型。例如,即使在这样的情况下,也可以提高可操作性。
此外,在本实施方式中,算术数据类型自动从32位浮点数切换至8位定点数。然而,在机器学习和深度学习领域中,认为存在一定数量的重视学习后的识别精度而不是算术运算性能的操作者。因此,为重视学习后的识别精度的操作者考虑也很重要。
因此,根据本实施方式的信息处理装置可以被配置成能够选择自动切换至8位定点数或者使用32位浮点数执行所有算术运算。在选择自动切换至8位定点数的情况下,信息处理装置执行与上述处理类似的处理。另一方面,在选择使用32位浮点数执行所有算术运算的情况下,信息处理装置使用32位浮点数执行所有算术运算,而不将算术数据类型切换至8位定点数,直到深度学习完成。
(变型)
在第一实施方式中,作为示例已经描述了单个信息处理装置1执行学习的情况。然而,可以将类似的功能应用于使用多个信息处理装置来学习的情况,并且可以获得类似的效果。
例如,图9是示出通过使用两个信息处理装置进行学习的图。此处,信息处理装置1A和信息处理装置1B二者都使用存储在学习数据存储装置81中的学习数据。
信息处理装置1A获取存储在学习数据存储装置81中的学习数据并进行学习。在这种情况下,数据库156A对应于图3中的算术数据类型数据库106和可表达比率数据库107。信息处理装置1A根据算术运算结果的张量元素的数量来计算每次迭代的可表达比率,并且将可表达比率存储在数据库156A中。然后,信息处理装置1A根据存储在数据库156A中的可表达比率确定算术数据类型,并将在算术运算#1至#n中使用的算术数据类型自动切换至8位定点数。
类似地,信息处理装置1B从学习数据存储装置81获取学习数据并进行学习。在这种情况下,数据库156B对应于图3中的算术数据类型数据库106和可表达比率数据库107。信息处理装置1B根据算术运算结果的张量元素的数量来计算每次迭代的可表达比率,并且将可表达比率存储在数据库156B中。然后,信息处理装置1B根据存储在数据库156B中的可表达比率确定算术数据类型,并将在算术运算#1至#n中使用的算术数据类型自动切换至8位定点数。
此后,收集信息处理装置1A和1B的学习结果,并且完成学习。这样,即使在使用多个信息处理装置来学习的情况下,每个信息处理装置也可以容易地提高机器学习的学习效率。
[第二实施方式]
接下来,将描述第二实施方式。根据本实施方式的信息处理装置1与根据第一实施方式的信息处理装置1的不同之处在于,通过使用16位定点数执行算术运算的难以由8位定点数表达但可以由16位定点数表达的部分。图3中示出了根据本实施方式的信息处理装置1的框图。在下面的描述中,将主要描述算术数据类型确定处理。将省略对与第一实施方式类似的每个单元的功能的描述。
根据本实施方式的可表达比率数据库107具有图10中示出的格式。图10是根据第二实施方式的可表达比率数据库中的注册信息的示例的图。如图10所示,在根据本实施方式的可表达比率数据库107中,注册了算术运算结果中包括的张量元素的数量的8位定点数的可表达比率和16位定点数的可表达比率,用于每次迭代的每个算术运算。
此外,根据本实施方式的算术数据类型数据库106具有图11所示的格式。图11是根据第二实施方式的算术数据类型数据库中的注册信息的示例的图。如图11所示,在根据本实施方式的算术数据类型数据库106中,将32位浮点数、16位定点数或8位定点数中的任一个作为每个算术运算中使用的算术数据类型与每个算术ID相关联地进行注册。
数据库更新单元142从数据库更新指示单元123接收在最新迭代中执行的算术运算的算术运算结果的输入。接下来,数据库更新单元142根据算术运算结果获取张量元素的数量。接下来,数据库更新单元142通过使用获取的张量元素的数量和式(1)确定在算术运算结果由8位定点数表示的情况下的算术运算中的适当小数点位置Q8。然后,通过使用公式(2)计算在小数点位置Q8的情况下的张量元素的数量的8位定点数的可表达比率P8。然后,数据库更新单元142将最新迭代中的每个算术运算中的8位定点数可表达比率注册至可表达比率数据库107。
接下来,数据库更新单元142通过使用获取的张量元素的数量和下式(6)确定在算术运算结果由16位定点数表示的情况下的算术运算中的适当小数点位置Q16
[数学式6]
Q16=16-ceil(log2max(|x min|,x max))-1…(6)
接下来,数据库更新单元142通过使用下式(7)来计算在小数点位置Q16的情况下的张量元素的数量的16位定点数的可表达比率P16。然后,数据库更新单元142将最新迭代中的每个算术运算中的16位定点数的可表达比率注册至可表达比率数据库107。
[数学式7]
Figure BDA0002384372260000181
结果,数据库更新单元142将图10中示出的数据注册到可表达比率数据库107。例如,在可表达比率数据库107中,注册使用8位定点数的情况下的可表达比率和使用16位定点数的情况下的可表达比率。
此处,8位定点数对应于“第一预定位定点数”的示例,而16位定点数对应于“第二预定位定点数”的示例。在下面的描述中,将在使用8位定点数的情况下的可表达比率称为“8位可表达比率”,并且将在使用16位定点数的情况下的可表达比率称为“16位可表达比率”。
算术数据类型判定单元141从算术数据类型请求单元122接收用于获取在每个算术运算中使用的算术数据类型的请求的输入。接下来,算术数据类型判定单元141确认算术数据类型数据库106并获取每个算术运算的当前算术数据类型。然后,算术数据类型判定单元141指定已经将8位定点数设置为算术数据类型的算术运算。算术数据类型判定单元141向算术数据类型请求单元122通知指定的其中已经将8位定点数设置为算术数据类型的算术运算的8位定点数作为算术数据类型。
另一方面,关于其中将除8位定点数以外的算术数据类型设置为算术数据类型的算术运算,算术数据类型判定单元141从可表达比率数据库107中获取根据最新迭代的确定范围内的迭代的可表达比率。
例如,参照图12,将描述此时已经终止1504次迭代的情况。图12是用于说明根据第二实施方式的算术数据类型确定处理的图。图12中的表171是其中可表达比率数据库107被重新布置以容易理解的表。
例如,在确定范围是四次迭代的情况下,算术数据类型判定单元141获取图12中的使用范围711、713和715中的8位的可表达比率用于每个算术运算。此处,在算术运算#1至算术运算#3时的算术数据类型是32位浮点数。接下来,算术数据类型判定单元141确定用于每个算术运算的最新迭代中的8位可表达比率是否超过比率阈值。例如,在将比率阈值设置为Tf1的情况下,算术数据类型判定单元141确定是否满足式(3)。
关于可表达比率超过阈值的算术运算,算术数据类型判定单元141确定在确定范围内8位可表达比率的变化是否小。例如,算术数据类型判定单元141通过使用式(4)来计算算术运算f的迭代之间的波动Δf。
接下来,算术数据类型判定单元141确定所计算的8位可表达比率中的波动是否小于波动阈值。例如,在将波动阈值设置为Tf2的情况下,算术数据类型判定单元141确定是否满足式(5)。
对于其中8位可表达比率的波动小于波动阈值的算术运算,将该算术运算的算术数据类型确定为8位定点数,并且向算术数据类型请求单元122通知该算术数据类型。
关于其中8位可表达比率等于或小于比率阈值并且8位可表达比率的波动等于或大于预定波动阈值的算术运算,算术数据类型判定单元141指定将已经将算术数据类型设置为16位定点数的算术运算。算术数据类型判定单元141向算术数据类型请求单元122通知将指定的已经将16位定点数设置为算术数据类型的算术运算的16位定点数作为算术数据类型。
另一方面,关于其中将除16位定点数之外的算术数据类型设置为算术数据类型的算术运算,算术数据类型判定单元141从可表达比率数据库107中获取根据最新迭代的确定范围内的迭代的16位可表达比率。在这种情况下,使用除16位定点数以外的算术数据类型作为算术数据类型的算术运算是使用32位浮点数作为算术数据类型的算术运算。
例如,,算术数据类型判定单元141获取图12中的使用范围712、714和716中的16位可表达比率用于每个算术运算。接下来,算术数据类型判定单元141确定用于每个算术运算的最新迭代中的16位可表达比率是否超过比率阈值。例如,在将比率阈值设置为Tf1的情况下,算术数据类型判定单元141确定是否满足式(3)。
关于可表达比率超过阈值的算术运算,算术数据类型判定单元141确定在确定范围内16位可表达比率的变化是否小。例如,算术数据类型判定单元141通过使用式(4)来计算算术运算f的迭代之间的波动Δf。
接下来,算术数据类型判定单元141确定所计算的16位可表达比率中波动是否小于波动阈值。例如,在将波动阈值设置为Tf2的情况下,算术数据类型判定单元141确定是否满足式(5)。对于其中16位可表达比率的波动小于波动阈值的算术运算,确定该算术运算的算术数据类型为16位定点数,并且向算术数据类型请求单元122通知该算术数据类型。
另一方面,关于其中16位可表达比率等于或小于比率阈值的算术运算和其中16位可表达比率中的波动等于或大于预定波动阈值的算术运算,算术数据类型判定单元141确定算术运算的算术数据类型为32位浮点数。然后,算术数据类型判定单元141向算术数据类型请求单元122通知将32位浮点数用作算术运算的算术数据类型。
此处,在本实施方式中,算术数据类型判定单元141确认关于算术运算的8位可表达比率和16位可表达比率的变化,在该算术运算中将8位定点数和16位定点数设置为算术数据类型。由于以下原因,该处理是可型的。在算术运算时,即使在通过使用8位定点数和16位定点数执行算术运算的情况下,算术运算单元103也通过使用在算术运算中具有更大算术运算数精度的中间数据来执行算术运算,并使输出具有8位定点数或16位定点数的精度。然后,数据库更新单元142通过使用精度改变为8位定点数和16位定点数的精度之前的算术运算结果的中间数据来计算8位可表达比率和16位可表达比率。因此,算术数据类型判定单元141可以确定关于使用8位定点数和16位定点数的算术运算的算术运算结果的8位可表达比率和16位可表达比率的变化。
例如,对在将图12中的比率阈值设置为80%并且将波动阈值设置为10%的情况下,由算术数据类型判定单元141进行的算术数据类型确定处理进行描述。算术数据类型判定单元141确定在迭代ID为it1504的迭代中的算术运算#1的8位可表达比率是46.5%且等于或小于比率阈值并且16位可表达比率为99.2%且大于比率阈值。因此,算术数据类型判定单元141确定不使用8位定点数作为算术运算#1的算术数据类型。此外,算术数据类型判定单元141获得使用范围712中的16位可表达比率的波动,并且确定所获得的值小于波动阈值。因此,算术数据类型判定单元141确定算术运算#1的算术数据类型为16位定点数。
此外,算术数据类型判定单元141确定在迭代ID为it1504的迭代中的算术运算#2的8位可表达比率为97.2%并且大于比率阈值。接下来,算术数据类型判定单元141获得使用范围713中的8位可表达比率中的波动,并且确定所获得的值小于波动阈值。利用该确定,算术数据类型判定单元141确定算术运算#2的算术数据类型为8位定点数。
此外,算术数据类型判定单元141确定在迭代ID为it1504的迭代中的算术运算#3的8位可表达比率为96.9%且大于比率阈值并且16位可表达比率为99.2%且大于比率阈值。因此,算术数据类型判定单元141获得使用范围715的8位可表达比率的波动,并且确定所获得的值等于或大于波动阈值。接下来,算术数据类型判定单元141获得使用范围716中的16位可表达比率的波动,并且确定该波动等于或大于波动阈值。在这种情况下,算术数据类型判定单元141确定不使用8位定点数和16位定点数作为算术运算#3的算术数据类型。因此,算术数据类型判定单元141确定算术运算#3的算术数据类型为32位浮点数。
接下来,将参照图13A和图13B描述根据第二实施方式的算术数据类型确定处理的详细流程。图13A和图13B是根据第二实施方式的算术数据类型确定处理的流程图。
算术数据类型确定单元104初始化算术数据类型数据库106和可表达比率数据库107(步骤S301)。
数据读取控制单元124从数据库更新指示单元123接收指示数据库的初始化完成的通知。此外,数据读取控制单元124从算术运算指示单元121接收获取学习数据的请求。然后,数据读取控制单元124将用于读取学习数据的请求输出至学习数据读取单元105。响应于读取学习数据的请求,学习数据读取单元105从学习数据存储单元200读取指定的学习数据(步骤S302)。然后,学习数据读取单元105将读取的学习数据输出至数据读取控制单元124。数据读取控制单元124将获取的学习数据输出至算术运算指示单元121。
算术运算指示单元121根据执行来自用户应用101的深度学习输入的指令选择迭代中的下一个算术运算,以(步骤S303)。
然后,算术运算指示单元121将用于获取在所选择的算术运算中使用的算术数据类型的请求输出至算术数据类型判定单元141。在接收到该获取请求时,算术数据类型判定单元141从可表达比率数据库107中获取在所选择的算术运算的使用范围内的迭代中的8位可表达比率和16位可表达比率(步骤S304)。然而,在不进行迭代并且为获得使用范围内的迭代的情况下,算术数据类型判定单元141确定在可表达比率的获取中出现错误。
接下来,算术数据类型判定单元141通过使用在式(4)中获取的8位可表达比率和16位可表达比率来计算8位可表达比率和16位可表达比率的波动(步骤S305)。然而,在可表达比率的获取中出现错误的情况下,算术数据类型判定单元141不计算可表达比率的波动,并且保持未计算的波动。
接下来,算术数据类型判定单元141确定是否已经使用8位定点数执行了所选择的算术运算(步骤S306)。在已经使用8位定点数执行了算术运算的情况下(步骤S306:是),算术数据类型判定单元141将在所选择的算术运算中使用的算术数据类型保持为8位定点数,并且过程行进至步骤S310。
另一方面,在还没有通过使用8位定点数来执行算术运算的情况下(步骤S306:否),算术数据类型判定单元141确定可表达比率中的波动是否小于波动阈值(步骤S307)。
在8位可表达比率的波动小于波动阈值的情况下(步骤S307:是),算术数据类型判定单元141确定最新8位可表达比率是否大于比率阈值(步骤S308)。
在最新8位可表达比率大于比率阈值的情况下(步骤S308:是),算术数据类型判定单元141确定算术数据类型为8位定点数。此后,算术数据类型判定单元141向算术运算指示单元121通知将8位定点数用作所选择的算术运算的算术数据类型,并且将算术数据类型改变为8位定点数(步骤S309)。
算术运算指示单元121使算术运算单元103通过使用8位定点数来执行所选择的算术运算(步骤S310)。
另一方面,在8位可表达比率的波动不小于波动阈值的情况下(步骤S307:否),或者在最新的8位可表达比率等于或小于比率阈值的情况下(步骤S308:否),算术数据类型判定单元141执行以下处理。此处,在未计算出8位可表达比率的波动的情况下,算术数据类型判定单元141确定该波动不低于变动阈值。算术数据类型判定单元141确定是否已经使用16位定点数执行了所选择的算术运算(步骤S311)。在已经使用16位定点数执行了算术运算的情况下(步骤S311:是),算术数据类型判定单元141将在所选择的算术运算中使用的算术数据类型保持为16位定点数,并且过程行进至步骤S315。
另一方面,在还未通过使用16位定点数来执行算术运算的情况下(步骤S311:否),算术数据类型判定单元141确定16位可表达比率中的波动是否小于波动阈值(步骤S312)。
在16位可表达比率的波动小于波动阈值的情况下(步骤S312:是),算术数据类型判定单元141确定最新16位可表达比率是否大于比率阈值(步骤S313)。
在最新16位可表达比率大于比率阈值的情况下(步骤S313:是),算术数据类型判定单元141确定算术数据类型为16位定点数。此后,算术数据类型判定单元141向算术运算指示单元121通知将16位定点数用作所选择的算术运算的算术数据类型,并且将算术数据类型改变为16位定点数(步骤S314)。
算术运算指示单元121使算术运算单元103通过使用16位定点数来执行所选择的算术运算(步骤S315)。
另一方面,在16位可表达比率的波动不小于波动阈值的情况下(步骤S312:否),或者在最新的16位可表达比率等于或小于比率阈值的情况下(步骤S313:否),算术数据类型判定单元141执行以下处理。此处,在未计算出16位可表达比率的波动的情况下,算术数据类型判定单元141确定该波动不低于变动阈值。算术数据类型判定单元141确定将所选择的算术运算的算术数据类型保持为32位浮点数。在这种情况下,在本实施方式中,算术数据类型判定单元141不通知改变算术运算指示单元121的算术数据类型的指示。但是,算术数据类型判定单元141可以通知算术运算指示单元121将32位浮点数用作所选择的算术运算的算术数据类型。算术运算指示单元121使算术运算单元103通过使用32位浮点数来执行所选择的算术运算(步骤S316)。
此后,算术数据类型请求单元122从算术运算单元103获取所选择的算术运算的算术运算结果。然后,算术数据类型请求单元122将所获取的算术运算结果输出至数据库更新单元142,并指示更新可表达比率数据库107。数据库更新单元142通过使用输入算术运算结果中包括的张量元素的数量来计算8位可表达比率和16位可表达比率(步骤S317)。
接下来,数据库更新单元142将计算出的8位可表达比率和16位可表达比率存储在可表达比率数据库107中(步骤S318)。
算术运算指示单元121根据是否从算术运算单元103获取了迭代完成通知来确定一次迭代中的所有算术运算处理是否已完成(步骤S319)。在存在未执行的算术运算处理的情况下(步骤S319:否),算术运算指示单元121返回至步骤S303。
另一方面,在一次迭代中的所有算术运算处理都已经完成的情况下(步骤S319:是),算术运算指示单元121确定深度学习是否完成(步骤S320)。在深度学习未完成的情况下(步骤S320:否),算术运算指示单元121返回至步骤S302。
另一方面,在深度学习完成的情况下(步骤S320:是),算术运算指示单元121向用户应用101通知深度学习完成。然后,算术运算指示单元121终止深度学习,包括算术数据类型的切换。
如上所述,根据本实施方式的信息处理装置获得具有算术运算结果中包括的元素的数量的8位可表达比率和16位可表达比率的可表达比率,并且根据获得的8位可表达比率和16位可表达比率切换算术数据类型。以这种方式,由于在能够充分进行8位定点数或16位定点数的表达时自动切换算术数据类型,因此操作员不必通过反复试验来指定算术数据类型的定时。因此,根据本实施方式的信息处理装置可以容易地提高深度学习和机器学习的学习效率。此外,由于基于可表达元素的数量来切换算术数据类型,因此可以减少由于先前学习不足造成的算术运算精度不足而导致的学习停滞。
注意,根据本实施方式的信息处理装置可以被配置成能够选择自动切换至8位定点数和16位定点数或者以32位浮点数执行所有算术运算。在选择自动切换至8位定点数和16位定点数的情况下,信息处理装置执行与上述处理类似的处理。另一方面,在选择以32位浮点数执行所有算术运算的情况下,信息处理装置以32位浮点数执行所有算术运算,而不将算术数据类型切换至8位定点数,直到深度学习完成。
[第三实施方式]
图14是根据第三实施方式的信息处理装置的框图。根据本实施方式的信息处理装置1与第一实施方式和第二实施方式的信息处理装置1的不同之处在于,该信息处理装置1不包括算术数据类型数据库106。
根据本实施方式的信息处理装置1与第一实施方式和第二实施方式中的信息处理装置1的不同之处在于,针对每次迭代确定算术数据类型,而不参考先前的算术数据类型。例如,在根据本实施方式的信息处理装置1中,存在将使用8位定点数作为算术数据类型的算术运算返回至使用16位定点数和32位浮点数作为算术数据类型的状态的情况。此外,存在将使用16位定点数作为算术数据类型的算术运算返回至使用32位浮点数作为算术数据类型的状态的情况。
在下面的描述中,将描述与第二实施方式中一样使用8位定点数和16位定点数的示例。然而,根据第三实施方式的信息处理装置1可以在与第一实施方式中的8位定点数类似的8位定点数被用作定点数的情况下操作。在下面的描述中,将主要描述算术数据类型确定处理。将省略与第二实施方式类似的每个单元的功能的描述。
根据本实施方式的可表达比率数据库107具有与图10所示的格式类似的格式。例如,在根据本实施方式的可表达比率数据库107中,注册了算术运算结果中包括的张量元素的数量的8位定点数的可表达比率和16位定点数的可表达比率,用于每次迭代的每个算术运算。
当从用户应用101接收到执行深度学习的指令时,执行控制单元102指示算术数据类型确定单元104初始化可表达比率数据库107。在这种情况下,由于算术数据类型数据库106不存在,因此不对算术数据类型数据库106进行初始化。
响应于初始化可表达比率数据库107的指令,算术数据类型确定单元104删除注册到可表达比率数据库107的数据并且初始化可表达比率数据库107。
算术数据类型判定单元141从算术数据类型请求单元122接收用于获取在每个算术运算中使用的算术数据类型的请求的输入。接下来,算术数据类型判定单元141确认算术数据类型数据库106并获取每个算术运算的当前算术数据类型。然后,算术数据类型判定单元141从可表达比率数据库107获取确定范围内的迭代中的8位可表达比率。
接下来,算术数据类型判定单元141确定用于每个算术运算的最新迭代中的8位可表达比率是否超过比率阈值。例如,在将比率阈值设置为Tf1的情况下,算术数据类型判定单元141确定是否满足式(3)。
关于可表达比率超过阈值的算术运算,算术数据类型判定单元141确定在确定范围内8位可表达比率的变化是否小。例如,算术数据类型判定单元141通过使用式(4)来计算算术运算f的迭代之间的波动Δf。
接下来,算术数据类型判定单元141确定所计算的8位可表达比率中的波动是否小于波动阈值。例如,在将波动阈值设置为Tf2的情况下,算术数据类型判定单元141确定是否满足式(5)。
对于8位可表达比率中的波动小于波动阈值的算术运算,算术数据类型判定单元141确定算术运算的算术数据类型为8位定点数并且向算术数据类型请求单元122通知确定的算术数据类型。
另一方面,关于其中8位可表达比率等于或小于比率阈值的算术运算以及其中8位可表达比率中的波动等于或大于预定波动阈值的算术运算,算术数据类型判定单元141获取确定范围内的迭代中的16位可表达比率。
接下来,算术数据类型判定单元141确定用于每个算术运算的最新迭代中的16位可表达比率是否超过比率阈值。例如,在将比率阈值设置为Tf1的情况下,算术数据类型判定单元141确定是否满足式(3)。
关于可表达比率超过阈值的算术运算,算术数据类型判定单元141确定在确定范围内16位可表达比率的变化是否小。例如,算术数据类型判定单元141通过使用式(4)来计算算术运算f的迭代之间的波动Δf。
接下来,算术数据类型判定单元141确定所计算的16位可表达比率中的波动是否小于波动阈值。例如,在将波动阈值设置为Tf2的情况下,算术数据类型判定单元141确定是否满足式(5)。对于16位可表达比率中的波动小于波动阈值的算术运算,算术数据类型判定单元141确定算术运算的算术数据类型为16位定点数并且向算术数据类型请求单元122通知确定的算术数据类型。
另一方面,关于其中16位可表达比率等于或小于比率阈值的算术运算以及和其中16位可表达比率中的波动等于或大于预定波动阈值的算术运算,算术数据类型判定单元141确定算术运算的算术数据类型为32位浮点数。然后,算术数据类型判定单元141向算术数据类型请求单元122通知将32位浮点数用作算术运算的算术数据类型。
此处,将参照图15描述根据本实施方式的算术数据类型转换。图15是用于说明算术数据类型转换的图。图15中的表172是其中可表达比率数据库107被重新布置以容易理解的表。此处,将描述在将比率阈值设置为80%并且将波动阈值设置为10%的情况下,由算术数据类型判定单元141进行的算术数据类型确定处理。
首先,将描述算术运算#1中的算术数据类型转换。由于算术运算#1的8位可表达比率等于或小于在迭代的迭代ID为it1505的时候的比率阈值,因此算术数据类型判定单元141不使用8位定点数作为算术运算#1的算术数据类型。另一方面,使用范围721中迭代ID为it1505的迭代中的16位可表达比率超过比率阈值,并且16位可表达比率中的波动小于波动阈值。因此,算术数据类型判定单元141确定将16位定点数设置为算术运算#1的算术数据类型。因此,在迭代ID为it1506的迭代中,将16位定点数用作算术运算#1的算术数据类型,并且通过使用16位定点数来计算比率722。
此后,在迭代的迭代ID为it1507的时候,8位可表达比率和16位可表达比率二者均等于或小于比率阈值。此外,在使用范围723中的16位可表达比率的波动等于或大于波动阈值。因此,算术数据类型判定单元141将32位浮点数设置为算术运算#1的算术数据类型。利用该操作,在迭代ID为it1508的迭代之后,如果算术数据类型不变,则将32位浮点数用作算术运算#1的算术数据类型。
接下来,将描述算术运算#2中的算术数据类型转换。如在使用范围724中,在迭代的迭代ID为it1504时,8位可表达比率和16位可表达比率二者均超过比率阈值,并且每个波动均小于波动阈值。因此,算术数据类型判定单元141确定将8位定点数设置为算术运算#2的算术数据类型。利用该操作,在迭代ID为1505的迭代之后的范围725内的迭代中,如果算术数据类型不变,则将8位定点数用作算术运算#2的算术数据类型。
接下来,将描述算术运算#3中的算术数据类型转换。如在迭代的迭代ID为it1504时,在使用范围726内,8位可表达比率和16位可表达比率二者都超过比率阈值,并且每个波动小于波动阈值。因此,算术数据类型判定单元141确定将8位定点数设置为算术运算#3的算术数据类型。结果,通过使用8位定点数来计算迭代ID为it1505的迭代的比率727。
然而,在迭代的迭代ID为it1506时,在使用范围728中,迭代ID为it1506的迭代的8位可表达比率等于或小于比率阈值,并且8位可表达比率的波动等于或小于波动阈值。因此,算术数据类型判定单元141不使用8位定点数作为算术运算#3的算术数据类型。另一方面,在使用范围729中,在迭代ID为it1506的迭代中的16位可表达比率大于比率阈值,并且16位可表达比率的波动小于波动阈值。因此,算术数据类型判定单元141确定将16位定点数设置为算术运算#3的算术数据类型。通过该操作,在迭代ID为it1507的迭代之后的范围730内的迭代中,如果算术数据类型不变,则将16位定点数用作算术运算#3的算术数据类型。
接下来,将参照图16描述由根据第三实施方式的信息处理装置1进行的算术数据类型确定处理的整个流程的概要。图16是由根据第三实施方式的信息处理装置进行的算术数据类型确定处理的序列图。
用户应用101将执行深度学习的指令输出至执行控制单元102(步骤S401)。
当从用户应用101接收到执行深度学习的指令时,执行控制单元102指示算术数据类型确定单元104初始化可表达比率数据库107(步骤S402)。
响应于初始化可表达比率数据库107的指令,算术数据类型确定单元104删除注册到可表达比率数据库107的数据并且初始化可表达比率数据库107(步骤S403)。
此后,算术数据类型确定单元104向执行控制单元102通知可表达比率数据库107的初始化完成(步骤S404)。
当接收到指示可表达比率数据库107的初始化完成的响应时,执行控制单元102指示学习数据读取单元105读取用于学习的学习数据(步骤S405)。
响应于读取学习数据的指令,学习数据读取单元105从学习数据存储单元200读取指定的学习数据(步骤S406)。
此后,学习数据读取单元105将读取的学习数据发送至执行控制单元102(步骤S407)。
执行控制单元102从学习数据读取单元105获取学习数据。接下来,执行控制单元102将用于获取在下次迭代中的每个算术运算中使用的算术数据类型的请求输出至算术数据类型确定单元104(步骤S408)。
当接收到获取算术数据类型的请求时,算术数据类型确定单元104通过使用可表达比率数据库107来确定在每个算术运算中使用的算术数据类型(步骤S409)。
然后,算术数据类型确定单元104将指示所确定的在每个算术运算中使用的算术数据类型的通知输出至执行控制单元102(步骤S410)。
执行控制单元102获取要在每个算术运算中使用的算术数据类型。然后,执行控制单元102将所获取的学习数据输出至算术运算单元103,并还向算术运算单元103通知要在每个算术运算中使用的算术数据类型,并使算术运算单元103执行算术运算(步骤S411)。
此后,执行控制单元102从算术运算单元103接收算术运算结果的输入(步骤S412)。
接下来,执行控制单元102将所获取的算术运算结果输出至算术数据类型确定单元104,并指示更新可表达比率数据库107(步骤S413)。
算术数据类型确定单元104通过使用算术运算结果中包括的张量元素的数量来计算可表达比率,注册计算出的可表达比率并更新可表达比率数据库107(步骤S414)。
此后,算术数据类型确定单元104将指示可表达比率数据库107更新完成的通知输出至执行控制单元102(步骤S415)。
执行控制单元102从执行控制单元102接收指示可表达比率数据库107的更新完成的通知的输入。执行控制单元102、算术运算单元103、算术数据类型确定单元104和学习数据读取单元105重复步骤S111至步骤S121,直到完成包括在一次迭代中的所有算术运算为止。此外,执行控制单元102、算术运算单元103、算术数据类型确定单元104和学习数据读取单元105重复步骤S108至步骤S121,直到深度学习完成为止。之后,执行控制单元102通知用户应用101的深度学习完成(步骤S416)。
接下来,将参照图17A和图17B描述根据第三实施方式的算术数据类型确定处理的详细流程。图17A和图17B是根据第三实施方式的算术数据类型确定处理的流程图。
算术数据类型确定单元104初始化可表达比率数据库107(步骤S501)。
数据读取控制单元124从数据库更新指示单元123接收指示数据库的初始化完成的通知。此外,数据读取控制单元124从算术运算指示单元121接收获取学习数据的请求。然后,数据读取控制单元124将用于读取学习数据的请求输出至学习数据读取单元105。响应于读取学习数据的请求,学习数据读取单元105从学习数据存储单元200读取指定的学习数据(步骤S502)。然后,学习数据读取单元105将读取的学习数据输出至数据读取控制单元124。数据读取控制单元124将获取的学习数据输出至算术运算指示单元121。
算术运算指示单元121根据执行来自用户应用101的深度学习输入的指令选择迭代中的下一个算术运算(步骤S503)。
然后,算术运算指示单元121将用于获取在所选择的算术运算中使用的算术数据类型的请求输出至算术数据类型判定单元141。在接收到该获取请求时,算术数据类型判定单元141从可表达比率数据库107中获取在所选择的算术运算的使用范围内的迭代中的8位可表达比率和16位可表达比率(步骤S504)。然而,在不进行迭代并且未获得使用范围内的迭代的情况下,算术数据类型判定单元141确定在可表达比率的获取中出现错误。
接下来,算术数据类型判定单元141通过使用在式(4)中获取的8位可表达比率和16位可表达比率来计算8位可表达比率和16位可表达比率的波动(步骤S505)。然而,在可表达比率的获取中出现错误的情况下,算术数据类型判定单元141不计算可表达比率的波动,并且保持还未计算的波动。
接下来,算术数据类型判定单元141确定8位可表达比率中的波动是否小于波动阈值(步骤S506)。
在8位可表达比率的波动小于波动阈值的情况下(步骤S506:是),算术数据类型判定单元141确定最新8位可表达比率是否大于比率阈值(步骤S507)。
在最新8位可表达比率大于比率阈值的情况下(步骤S507:是),算术数据类型判定单元141确定算术数据类型为8位定点数(步骤S508)。
此后,算术数据类型判定单元141通知算术运算指示单元121将8位定点数用作所选择的算术运算的算术数据类型。算术运算指示单元121使算术运算单元103通过使用8位定点数来执行所选择的算术运算(步骤S509)。
另一方面,在8位可表达比率的波动不小于波动阈值的情况下(步骤S506:否),或者在最新的8位可表达比率等于或小于比率阈值的情况下(步骤S507:否),算术数据类型判定单元141执行以下处理。此处,在未计算出8位可表达比率的波动的情况下,算术数据类型判定单元141确定该波动不低于变动阈值。算术数据类型判定单元141确定16位可表达比率中的波动是否小于波动阈值(步骤S510)。
在16位可表达比率的波动小于波动阈值的情况下(步骤S510:是),算术数据类型判定单元141确定最新16位可表达比率是否大于比率阈值(步骤S511)。
在最新16位可表达比率大于比率阈值的情况下(步骤S511:是),算术数据类型判定单元141确定算术数据类型为16位定点数(步骤S512)。
此后,算术数据类型判定单元141通知算术运算指示单元121将16位定点数用作所选择的算术运算的算术数据类型。算术运算指示单元121使算术运算单元103通过使用16位定点数来执行所选择的算术运算(步骤S513)。
另一方面,在16位可表达比率的波动不小于波动阈值的情况下(步骤S510:否),或者在最新的16位可表达比率等于或小于比率阈值的情况下(步骤S511:否),算术数据类型判定单元141执行以下处理。算术数据类型判定单元141确定所选择的算术运算的算术数据类型为32位浮点数(步骤S514)。此处,在未计算出16位可表达比率的波动的情况下,算术数据类型判定单元141确定该波动不低于波动阈值。
然后,算术数据类型判定单元141通知算术运算指示单元121将32位浮点数用作所选择的算术运算的算术数据类型。算术运算指示单元121使算术运算单元103通过使用32位浮点数来执行所选择的算术运算(步骤S515)。
此后,算术数据类型请求单元122从算术运算单元103获取所选择的算术运算的算术运算结果。然后,算术数据类型请求单元122将所获取的算术运算结果输出至数据库更新单元142,并指示更新可表达比率数据库107。数据库更新单元142通过使用输入算术运算结果中包括的张量元素的数量来计算8位可表达比率和16位可表达比率(步骤S516)。
接下来,数据库更新单元142将计算出的8位可表达比率和16位可表达比率存储在可表达比率数据库107中(步骤S517)。
算术运算指示单元121根据是否从算术运算单元103获取了迭代完成通知来确定一次迭代中的所有算术运算处理是否已完成(步骤S518)。在存在未执行的算术运算处理的情况下(步骤S518:否),算术运算指示单元121返回至步骤S503。
另一方面,在一次迭代中的所有算术运算处理都已经完成的情况下(步骤S518:是),算术运算指示单元121确定深度学习是否完成(步骤S519)。在深度学习未完成的情况下(步骤S519:否),算术运算指示单元121返回至步骤S502。
另一方面,在学习完成的情况下(步骤S519:是),算术运算指示单元121向用户应用101通知深度学习完成。然后,算术运算指示单元121终止深度学习,包括算术数据类型的切换。
如上所述,根据本实施方式的信息处理装置在不参考先前的算术数据类型的情况下确定用于每次迭代的算术数据类型。结果,可以减少由于将算术数据类型切换到8位定点数或16位定点数之后算术运算精度不足而导致的学习不进行的状态的出现,并且可以提高学习精度。
注意,根据本实施方式的信息处理装置还可以被配置成能够选择自动切换至8位定点数和16位定点数或者以32位浮点数执行所有算术运算。在选择自动切换至8位定点数和16位定点数的情况下,信息处理装置执行与上述处理类似的处理。另一方面,在选择以32位浮点数执行所有算术运算的情况下,信息处理装置以32位浮点数执行所有算术运算而不将算术数据类型切换至8位定点数,直到深度学习完成。

Claims (8)

1.一种信息处理装置,包括:
算术运算单元,其被配置成使用算术运算目标执行算术运算并且通过使用计算出的算术运算结果来重复所述算术运算;
比率计算单元,其被配置成获得包括在预定位定点数的可表达范围内的元素的数量与包括在所述算术运算结果中的元素的数量的比率;以及
算术运算控制单元,其被配置成使所述算术运算单元通过基于由所述比率计算单元计算出的比率使用所述预定位定点数来执行所述算术运算。
2.根据权利要求1所述的信息处理装置,其中
所述比率计算单元基于所述算术运算结果中包括的元素的数量来确定小数点位置,并且使用所述小数点位置获得包括在所述预定位定点数的可表达范围内的元素的数量的比率。
3.根据权利要求1或2所述的信息处理装置,其中
所述算术运算控制单元在所述比率大于预定比率阈值的情况下使所述算术运算单元通过使用所述预定位定点数来执行所述算术运算。
4.根据权利要求1至3中任一项所述的信息处理装置,其中
每当所述算术运算单元计算所述算术运算结果时,所述比率计算单元获得所述比率,并且
所述算术运算控制单元使所述算术运算单元通过基于由所述比率计算单元获得的最新比率与预定次数前的比率之间的比率变化使用所述预定位定点数来执行所述算术运算。
5.根据权利要求1至4中任一项所述的信息处理装置,其中
所述算术运算控制单元使所述算术运算单元通过基于由所述比率计算单元计算的比率使用第一预定位定点数或第二预定位定点数来执行所述算术运算。
6.根据权利要求1至5中任一项所述的信息处理装置,其中
所述算术运算控制单元使所述算术运算单元通过基于由所述比率计算单元计算出的比率使用浮点数来执行所述算术运算。
7.一种用于信息处理装置的控制方法,所述信息处理装置使用算术运算目标执行算术运算,并且通过使用计算出的算术运算结果来重复所述算术运算,所述方法包括:
获得包括在预定位定点数的可表达范围内的元素的数量与所述算术运算结果中包括的元素的数量的比率;以及
使所述信息处理装置通过基于计算出的比率使用所述预定位定点数来执行所述算术运算。
8.一种计算机可读记录介质,其中存储有用于信息处理装置的控制程序,所述信息处理装置使用算术运算目标执行算术运算,并通过使用计算出的算术运算结果来重复所述算术运算,所述控制程序用于使计算机执行处理,所述处理包括:
获得包括在预定位定点数的可表达范围内的元素的数量与所述算术运算结果中包括的元素的数量的比率;以及
使所述信息处理装置通过基于计算出的比率使用所述预定位定点数来执行所述算术运算。
CN202010093084.3A 2019-02-26 2020-02-14 信息处理装置及其控制方法和计算机可读介质 Pending CN111612123A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019032730A JP7255234B2 (ja) 2019-02-26 2019-02-26 情報処理装置、情報処理装置の制御方法及び情報処理装置の制御プログラム
JP2019-032730 2019-02-26

Publications (1)

Publication Number Publication Date
CN111612123A true CN111612123A (zh) 2020-09-01

Family

ID=69172667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010093084.3A Pending CN111612123A (zh) 2019-02-26 2020-02-14 信息处理装置及其控制方法和计算机可读介质

Country Status (4)

Country Link
US (1) US11182156B2 (zh)
EP (1) EP3702906B1 (zh)
JP (1) JP7255234B2 (zh)
CN (1) CN111612123A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155796A1 (en) * 2005-01-07 2006-07-13 Sas Institute Inc. System and methods for large-radix computer processing
US20170061279A1 (en) * 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
WO2018139266A1 (ja) * 2017-01-30 2018-08-02 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0696048A (ja) 1992-09-17 1994-04-08 Sanyo Electric Co Ltd ニューラルネットを用いた認識装置
JPH0836644A (ja) 1994-07-26 1996-02-06 Matsushita Electric Works Ltd ニューラルネットによる画像認識方法
US11150899B2 (en) * 2018-04-09 2021-10-19 Advanced Micro Devices, Inc. Selecting a precision level for executing a workload in an electronic device
US11645493B2 (en) * 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
JP6528893B1 (ja) * 2018-11-07 2019-06-12 富士通株式会社 学習プログラム、学習方法、情報処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155796A1 (en) * 2005-01-07 2006-07-13 Sas Institute Inc. System and methods for large-radix computer processing
US20170061279A1 (en) * 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
WO2018139266A1 (ja) * 2017-01-30 2018-08-02 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Also Published As

Publication number Publication date
US11182156B2 (en) 2021-11-23
EP3702906B1 (en) 2023-03-15
US20200272461A1 (en) 2020-08-27
EP3702906A1 (en) 2020-09-02
JP7255234B2 (ja) 2023-04-11
JP2020135814A (ja) 2020-08-31

Similar Documents

Publication Publication Date Title
CN105573715B (zh) 响应指令执行舍入运算
US9659255B2 (en) Systems, methods, and apparatuses for solving stochastic problems using probability distribution samples
CN116842964A (zh) 一种基于语义分析的业务流程生成方法和系统
CN109558471A (zh) 栅格地图的更新方法、装置、存储介质和系统
CN110637306A (zh) 基于先前的简化图执行的条件性图执行
CN111612123A (zh) 信息处理装置及其控制方法和计算机可读介质
Ma et al. NURD: an implementation of a new method to estimate isoform expression from non-uniform RNA-seq data
JP6433877B2 (ja) 目的地予測装置、目的地予測方法、及び目的地予測プログラム
JP2007102435A (ja) 生産スケジューリング装置及び生産スケジューリング方法、並びにプログラム
TW200523798A (en) A data processing apparatus and method for performing data processing operations on floating point data elements
CN115630595A (zh) 逻辑电路的自动生成方法、装置、电子设备及存储介质
CN109754115B (zh) 数据预测的方法、装置、存储介质及电子设备
KR100463840B1 (ko) 단백질 상호작용 네트워크 구축을 위한 템플릿 자동 생성방법
JP2018097864A (ja) リーディングゼロ予想
Chung et al. Using geometric structures to improve the error correction algorithm of high-throughput sequencing data on MapReduce framework
CN113435599A (zh) 信息处理设备、指定方法和非暂态计算机可读存储介质
JP6714853B2 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
EP3792837A1 (en) Learning program and learning method
CN109766255B (zh) 设备状态分析方法、装置、存储介质及电子设备
JP6986309B1 (ja) データ処理装置、データ処理方法、及びプログラム
CN112463215B (zh) 数据处理方法、装置、计算机可读存储介质和计算机设备
KR102340453B1 (ko) 정보 처리 장치, 정보 처리 방법 및 기록 매체에 저장된 정보 처리 프로그램
JP5771087B2 (ja) 情報処理装置、情報処理方法およびプログラム
JPH04507023A (ja) Ieee 754―1985標準に準拠した2進浮動小数点演算丸め
CN108573001B (zh) 用于确定最短路径距离的方法和装置

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