本说明书涉及机器学习模型的操作执行,尤其涉及利用一个或多个原生生成较低精度输出的计算节点以提升机器学习模型的输出精度。
背景技术:
1、神经网络是通过采用一个或多个非线性单元层来针对所接收的输入预测对应的输出的机器学习模型。一些神经网络除输出层外,还包含一个或多个隐藏层。每个隐藏层的输出均被用作网络中下一层的输入,下一层例如是下一隐藏层或输出层。网络的每一层均依据其各自参数集的当前值从所接收的输入生成输出。
技术实现思路
1、本说明书描述了利用一个或多个原生生成(或输出)较低精度输出的计算节点,从机器学习模型生成模型输出的技术。所描述的技术能够在不修改或重新设计硬件架构的情况下,通过利用这些计算节点在输出之前的中间结果来提取具有更高精度的输出。这些中间结果通常具有更高的精度。例如,一个或多个计算节点中的至少一个生成以x位存储的输出,其中x至少为1,尽管在这些计算节点内部执行的对应中间计算(例如,乘法和加法)是以更高的精度进行的,例如2x。
2、所描述的技术允许生成比一个或多个计算节点原生能够实现的精度更高的输出(以相同或更多的位数存储)。例如,一个或多个计算节点可以包括中央处理器(centralprocessing unit,cpu)、图形处理器(graph processing unit,gpu)或其他合适的计算单元的节点。一个或多个计算节点可以包括累加器或乘法累加器(multiplier-accumulator,mac)单元。机器学习模型可以包括具有多个神经网络层的神经网络,每个网络层具有多个节点和对应的节点权重。与机器学习模型或神经网络相关的计算可以包括卷积运算、矩阵乘法或其他合适的运算。
3、本说明书所描述的主题的一个方面可以体现为一种包括执行神经网络操作的操作方法。更为具体地,方法包括使用一个或多个计算节点处理神经网络的网络层的层输入和所述网络层的一个或多个节点权重。这些计算节点原生只能生成具有通常具有有限精度的第一数据尺寸的输出。
4、对层输入和节点权重的处理首先包括对层输入的至少多个高位进行处理,以生成中间输出。中间输出可被外部硬件或存储单元访问。中间输出包含第一部分和第二部分,其中第一部分包含由层输入的多个高位生成的第一组高位结果,第二部分包含层输入或第二组高位结果。第一组高位结果和第二组高位结果均可采用计算节点原生支持的第一数据尺寸。
5、所述处理进一步包括使用紧接所述网络层的新增网络层处理所述中间输出,以生成层输出。所述新增网络层原本未被包含在神经网络中。所述新增网络层包括与所述网络层相同的节点权重以及一个或多个附加节点权重。所述一个或多个附加节点权重可以构成单位张量。值得注意的是,尽管所述层输出的存储精度通常高于一个或多个计算节点原生支持的精度,并且因此采用大于第一数据尺寸的第二数据尺寸进行存储。然而,当实施下文描述的技术时,即使所述层输出以第一数据尺寸格式存储和输出,所述层输出仍然可以具有高于通过所述网络层的一个或多个节点直接处理所述层输入所产生的输出精度的精度。
6、本方面其他实施例包括对应的计算机系统、装置、计算机程序产品,以及记录在一个或多个计算机存储设备上的计算机程序,每个实施例均被配置为执行所述方法的动作。由一个或多个计算机组成的系统可被配置为执行特定操作或动作,凭借在系统上安装的软件、固件、硬件或其组合,所述组合在运行时导致系统执行所述动作。一个或多个计算机程序可被配置为凭借包含的执行特定操作或动作,当所述指令被数据处理装置执行时,所述指令促使装置执行所述动作。
7、本说明书所述主题的特定实施例可实现以下一项或多项优势。所述技术使原生输出精度较低的计算节点能够生成更高精度的机器学习模型输出(使用相同或更多位数)。计算节点原生生成的模型输出尺寸为x位,仅允许外部硬件组件(例如存储器、处理单元、其他计算节点)访问以x位存储的输出,尽管计算节点内部执行的计算使用了更高精度(例如2x位)。由于计算节点的硬件限制,此类下游操作的精度损失可能最终影响模型准确性。所述技术涉及被一个或多个计算节点执行的特殊操作,以生成具有更高精度和/或更多位数的模型输出。这些操作包括修改机器学习模型的参数,并通过传递模型输入或中间输出来保留内部计算中获得的低位数据。对于神经网络,此类特殊操作通常涉及修改目标网络层的节点权重,且所述技术通过传递层输入和/或由修改后的网络层生成的中间输出来保留低位信息。
8、此外,所述技术可通过使用修改后的机器学习模型替代特定操作(例如联合、复制、高位和低位的组合等),从而提高执行由机器学习模型表示的操作的效率并减少内存占用。以联合操作为例,若内存占用及对应开销(例如两组数据传输的空闲时间)可接受,所述技术仍可通过传统联合技术组合两组数据来为输入生成中间输出。也就是说,只要内存占用及对应开销(例如两组数据间传输的空闲时间)可接受,所述技术仍可通过传统联合技术组合两组数据来生成中间输出。尽管如此,所述技术可通过直接从修改后的机器学习模型生成中间输出,而无需在计算节点与对应存储单元(例如动态随机存取存储器(dynamicrandom access memory,dram))间传输数据,从而减少甚至消除空闲时间。在神经网络场景中,所述技术可修改目标网络层的一个或多个节点权重,且中间输出可包括计算节点生成的原始输出、层输入的一部分和/或由网络层生成的其他输出。
9、所述技术可适配于使用前述计算节点执行由机器学习模型表示的计算操作的各类精度要求。具体而言,它们包括可设置为不同值的全局变量,以启用或禁用计算节点和机器学习模型的精度增强功能。这允许用户通过对应调整全局变量来轻松开启或关闭精度增强功能。由此,所述技术可减少硬件升级的时间和成本,缩短后续研发周期。
10、本说明书主题的一个或多个实施例的细节在附图和下文描述中阐明。所述主题的其他特征、方面和优势将从描述、附图和权利要求中显现。
1.一种用于执行神经网络操作的方法,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述网络层是神经网络的最后一个卷积层,所述新增网络层并非原生地包含于神经网络,且所述一个或多个附加节点权重构成单位张量。
3.根据权利要求1所述的方法,其特征在于,包括:
4.根据权利要求1所述的方法,其特征在于,使用所述一个或多个计算节点通过所述网络层处理所述层输入的至少所述多个高位包括:
5.根据权利要求1所述的方法,其特征在于,使用所述一个或多个计算节点通过所述网络层处理所述层输入的至少所述多个高位包括:
6.根据权利要求1所述的方法,其特征在于,所述第二组高位结果由所述层输入的一组低位生成,且其中所述中间输出通过将所述第一组高位结果与所述层输入或具有所述第一数据尺寸的所述第二组高位结果联合而成。
7.根据权利要求1所述的方法,其特征在于,所述中间输出通过以下操作生成:
8.根据权利要求1所述的方法,其特征在于,包括:
9.根据权利要求8所述的方法,其特征在于,处理所述中间输出以生成增强的中间输出包括:复制所述中间输出的一部分,并将所述复制的部分联合至所述中间输出。
10.根据权利要求8所述的方法,其特征在于,处理所述中间输出以生成增强的中间输出包括使用复制卷积层处理所述中间输出,其中,所述复制卷积层包括构成单位张量的节点权重。
11.根据权利要求8所述的方法,其特征在于,包括:
12.根据权利要求1所述的方法,其特征在于,所述第一数据尺寸包括x位,所述层输入包括x位,且其中所述层输出具有包括2x位的第二数据尺寸,x大于或等于1。
13.根据权利要求1所述的方法,其特征在于,所述第一数据尺寸包括x位,所述层输入包括2x位,且其中所述层输出具有包括2x位的第二数据尺寸,x大于或等于1。
14.根据权利要求1所述的方法,其特征在于,所述第一数据尺寸包括x位,所述层输入包括2x位,且其中所述层输出具有包括x位的所述第二数据尺寸,x大于或等于1。
15.根据权利要求1所述的方法,其特征在于,所述一个或多个计算节点包括乘法累加器(mac)单元阵列。
16.根据权利要求1所述的方法,其特征在于,所述一个或多个计算节点包括中央处理单元。
17.根据权利要求1所述的方法,其特征在于,包括将全局参数设置为第一值,以使一台或多台计算机执行所述方法的操作。
18.根据权利要求1所述的方法,其特征在于,包括将全局参数设置为第二值,以使一台或多台计算机停止执行所述方法的操作。
19.一种系统,包括一台或多台计算机以及一个或多个存储设备,所述存储设备存储有指令,当所述指令被一台或多台计算机执行时,使所述一台或多台计算机执行相应操作,其特征在于,所述操作包括:
20.一种或多种存储有指令的计算机可读存储介质,当所述指令被一台或多台计算机执行时,使所述一台或多台计算机执行相应操作,其特征在于,所述相应操作包括: