基于硬件性能的神经架构搜索方法和设备与流程

专利查询1月前  17


基于硬件性能的神经架构搜索方法和设备
1.本技术要求于2020年9月8日在韩国知识产权局提交的第10-2020-0114703号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
2.下面的描述涉及基于硬件性能的神经架构搜索方法和设备。


背景技术:

3.神经架构搜索(nas)可以是用于自动搜索神经网络的结构(即,架构)的技术。nas可优化在各种领域(诸如,图像分类和语音识别)中具有高识别率的神经网络,以具有适合于硬件的结构。nas可通过学习来设计最优架构。nas技术可包括:基于强化学习来预测确定神经网络的架构的元素的值的训练rnn控制器的方法、使用知识蒸馏方案(knowledge distillation scheme)搜索新的神经网络结构的方法、以及搜索用于替换不必要的操作的结构的方法。这样的方法可能需要用于搜索和学习新架构的操作。nas可能需要大量的计算资源和时间来进行计算。


技术实现要素:

4.提供本发明内容以简化的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求权利的主题的关键特征或必要特征,也不意在用于帮助确定要求权利的主题的范围。
5.在一个总体方面,一种处理器实现的基于硬件性能的神经架构搜索方法包括:获取包括在预训练的神经网络中的神经网络块所对应的硬件性能;从神经网络块选择用于硬件性能改善的至少一个目标块;基于任意输入数据和目标块的基于输入数据生成的输出数据,训练与目标块对应的候选块的权重和架构参数;和通过基于训练的架构参数使用候选块之一替换预训练的神经网络中的目标块,更新预训练的神经网络。
6.在另一总体方面,一种基于硬件性能的神经架构搜索设备包括:一个或多个处理器,被配置为:获取包括在预训练的神经网络中的神经网络块所对应的硬件性能;从神经网络块选择用于硬件性能改善的至少一个目标块;基于任意输入数据和目标块的基于输入数据生成的输出数据,训练与目标块对应的候选块的权重和架构参数;和通过基于训练的架构参数使用候选块之一替换预训练的神经网络中的目标块,更新预训练的神经网络。
7.在另一总体方面,一种处理器实现的神经架构搜索方法包括:获取包括在预训练的神经网络中的神经网络块的性能;从神经网络块选择用于性能改善的至少一个目标块;基于任意输入数据和目标块的基于输入数据生成的输出数据,训练与目标块对应的候选块的权重和架构参数;和通过基于训练的架构参数使用候选块之一替换预训练的神经网络中的目标块,更新预训练的神经网络。
8.针对相应候选块中的每个,训练的步骤可包括:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度以及相应候选块的性能来生成损失函数,其中,相应候选
块的输出数据和目标块的输出数据基于同一输入数据被生成;和基于损失函数训练相应候选块的权重和架构参数。
9.针对相应候选块中的每个,训练的步骤可包括:基于相应候选块的架构参数来确定相应候选块是否是待训练的目标;和响应于相应候选块被确定为待训练的目标,训练相应候选块。
10.确定的步骤可包括:响应于相应候选块的架构参数大于或等于预定阈值,确定相应候选块是待训练的目标。
11.获取神经网络块的性能的步骤可包括:基于神经网络块的操作的实际硬件的性能的测量值来确定神经网络块的性能。
12.获取神经网络块的性能的步骤可包括:基于学习了神经网络块的操作的硬件的性能的预测模型来估计神经网络块的性能。
13.获取神经网络块的性能的步骤可包括:基于神经网络块的操作的硬件的性能的模拟来估计神经网络块的性能。
14.选择目标块的步骤可包括以下中的任意一者或两者:按照神经网络块的性能的升序选择神经网络块中的至少一个作为目标块;和将神经网络块的性能与阈值进行比较,并且选择神经网络块中的具有低于阈值的性能的至少一个作为目标块。
15.训练的步骤可包括:生成输入数据并通过将输入数据输入到目标块来生成输出数据,作为训练数据;基于训练数据来训练候选块中的至少一个;和响应于基于训练数据执行的训练的完成而移除训练数据。
16.训练的步骤可包括:获取具有与目标块的输入维度和输出维度相同的输入维度和输出维度的候选块,作为候选块。
17.替换目标块的步骤可包括:从候选块选择候选块中的具有最大架构参数的候选块;和使用选择的候选块替换目标块。
18.选择目标块的步骤还可包括:基于硬件限制条件从神经网络块选择目标块。
19.针对相应候选块中的每个,训练的步骤可包括:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度、相应候选块的性能以及硬件限制条件来生成损失函数,其中,相应候选块的输出数据与目标块的输出数据基于同一输入数据被生成;和基于损失函数训练相应候选块的权重和架构参数。
20.硬件限制条件可对应于由被配置为执行神经网络的硬件支持的神经网络操作类型和神经网络大小。
21.基于硬件限制条件选择目标块的步骤可包括:响应于目标块不满足硬件限制条件来选择目标块。
22.神经网络块中的每个可包括预训练的神经网络的至少一个层。
23.候选块中的每个可包括执行训练的神经网络的预定操作的至少一个层,并且候选块具有与目标块的输入维度和输出维度相同的输入维度和输出维度。
24.性能可基于以下中的任何一个或任何组合被确定:神经网络块在硬件中的执行速度、由神经网络块执行的计算的数量和神经网络的大小。
25.一种非暂时性计算机可读存储介质可存储指令,所述指令在由一个或多个处理器执行时,配置所述一个或多个处理器执行所述方法。
26.在另一总体方面,一种神经架构搜索设备包括:一个或多个处理器,被配置为:获取包括在预训练的神经网络中的神经网络块的性能;从神经网络块选择用于性能改善的至少一个目标块;基于任意输入数据和目标块的基于输入数据生成的输出数据,训练与目标块对应的候选块的权重和架构参数;和通过基于训练的架构参数使用候选块之一替换预训练的神经网络中的目标块,更新预训练的神经网络。
27.为了所述训练,针对候选块中的每个,所述一个或多个处理器可被配置为:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度以及相应候选块的性能来生成损失函数,其中,相应候选块的输出数据和目标块的输出数据基于同一输入数据被生成;和基于损失函数来训练相应候选块的权重和架构参数。
28.为了所述训练,针对相应候选块中的每个,所述一个或多个处理器可被配置为:基于相应候选块的架构参数来确定相应候选块是否是待训练的目标;和响应于相应候选块被确定为待训练的目标,训练相应候选块。
29.为了所述训练,所述一个或多个处理器可被配置为:生成输入数据和目标块的输出数据,作为训练数据;基于训练数据来训练候选块中的至少一个;和响应于基于训练数据执行的训练的完成而移除训练数据。
30.为了获取神经网络块的性能,所述一个或多个处理器可被配置为执行以下中的任何一个或任何组合:基于神经网络块的操作的实际硬件的性能的测量值来确定神经网络块的性能;基于学习了神经网络块的操作的硬件的性能的预测模型来估计神经网络块的性能;和基于神经网络块的操作的硬件的性能的模拟来估计神经网络块的性能。
31.为了所述训练,所述一个或多个处理器可被配置为:获取具有与目标块的输入维度和输出维度相同的输入维度和输出维度的候选块,作为候选块。
32.为了选择目标块,所述一个或多个处理器可被配置为:基于硬件限制条件从神经网络块选择目标块。
33.为了所述训练,针对相应候选块中的每个,所述一个或多个处理器可被配置为:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度、相应候选块的性能以及硬件限制条件来生成损失函数,其中,相应候选块的输出数据和目标块的输出数据基于同一输入数据被生成;和基于损失函数来训练相应候选块的权重和架构参数。
34.在另一总体方面,一种处理器实现的神经架构搜索方法包括:基于神经网络块的性能,从包括在预训练的神经网络中的神经网络块选择目标块;基于候选块的架构参数选择候选块;基于任意输入数据和通过将输入数据输入到目标块而生成的输出数据来训练选择的候选块的架构参数;和通过使用基于训练的架构参数选择的候选块之一来替换预训练的神经网络中的目标块,来更新预训练的神经网络。
35.用于训练预训练的神经网络的数据可不包括任意输入数据和目标块的输出数据。
36.从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
37.图1示出神经架构搜索方法的示例。
38.图2示出使用性能预测模块获取块的性能的方法的示例。
39.图3示出神经架构搜索方法的示例。
40.图4示出训练与目标块对应的候选块的方法的示例。
41.图5示出还基于除了操作所对应的硬件性能之外的条件来搜索神经架构的方法的示例。
42.图6示出设备的配置的示例。
43.贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对尺寸、比例和描绘可被夸大。
具体实施方式
44.提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本技术的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此阐述的顺序,而是除了必须以特定次序发生的操作之外,可如在理解本技术的公开之后将是清楚的那样被改变。此外,为了更加清楚和简洁,在理解本技术的公开之后本领域已知的特征的描述可被省略。
45.在下文中,将参照附图详细描述示例实施例。然而,应当理解,并不意在将本公开限制于公开的特定示例实施例。相反,示例实施例将覆盖落入示例实施例的范围内的所有修改、等同物和替代物。
46.在此使用的术语仅用于描述示例性实施例,而不意在限制本公开。如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。如在此使用的,术语“和/或”包括相关所列项的任何一个和任何两个或更多个的任何组合。如在此使用的,术语“包括”、“包含”和“具有”表明存在陈述的特征、整体、步骤、操作、元件、组件、数量和/或它们的组合,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件、数量和/或它们的组合。在此针对示例或实施例使用术语“可”(例如,关于示例或实施例可包括或实现什么)表明存在包括或实现这样的特征的至少一个示例或实施例,而所有的示例不限于此。
47.除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义和理解本公开之后通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)将被解释为具有与它们在相关领域的上下文和本公开中的含义一致的含义,并且将不以理想化或过于形式化的含义进行解释。
48.关于附图中分配给元件的参考标号,应当注意相同的元件将应尽可能由相同的参考标号表示,即使它们在不同的附图中被示出。此外,在实施例的描述中,当认为公知的相关结构或功能的详细描述将导致对本公开的模糊解释时,将省略这样的描述。
49.尽管在此使用术语“第一”或“第二”来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不应受这些术语限制。相反,这些术语仅用于将一个构件件、组件、区域、层或部分与另一部件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
50.贯穿说明书,当元件(诸如,层、区域或基底)被描述为“在”另一元件“上”、“连接
到”或“结合到”另一元件时,它可直接“在”另一元件“上”、直接“连接到”或“结合到”所述另一元件,或者可存在介于它们之间的一个或多个其他元件。相反,当元件被描述为“直接在”另一元件“上”、“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其他元件。同样地,例如“在
……
之间”与“紧接在
……
之间”和“临近”与“紧邻”的表述也可如前所述那样被解释。
51.具有与包括在一个示例实施例中的组件共同的功能的组件在另一示例实施例中使用相同的名称来描述。除非另外描述,否则在一个示例实施例中作出的描述可适用于另一示例实施例,并且省略重复范围内的详细描述。
52.图1示出神经架构搜索方法的示例。
53.一个或多个实施例的用于搜索最优神经网络的神经架构搜索(nas)技术可在确保高准确度的同时降低用于计算的资源的量。参照图1,神经架构搜索方法可包括:获取(例如,确定)包括在预训练的神经网络110中的神经网络块(块n)所对应的的硬件性能(ppm(块n,n=1、2、3、4))的操作、从多个神经网络块之中选择用于硬件性能改善的至少一个目标块111、112的操作、基于任意输入数据和目标块的响应于输入数据而生成的输出数据(例如,通过将输入数据输入到目标块而生成的输出数据)来训练与选择的至少一个目标块对应的候选块120的权重和架构参数的操作、和基于训练的架构参数使用候选块之一来替换目标块的操作。神经架构搜索方法可在服务器或设备中执行,并且可由包括在服务器或设备中的处理器(例如,一个或多个处理器)执行。
54.预训练的神经网络110可包括各种神经网络(诸如,循环神经网络(rnn)和/或卷积神经网络(cnn)以及神经网络的组合)。预训练的神经网络110可以是已经被训练的神经网络,并且可包括其中参数被确定的至少一个层。在下文中,神经网络可被简称为“网络”。
55.块是神经网络结构的部分或单元,并且可包括预训练的神经网络110中的至少一个层。例如,块可对应于包括一个或多个层的神经网络结构的部分或单元,一个或多个层执行在神经网络中使用的一个或多个操作(诸如,卷积、修正线性单元(relu)等)。换句话说,神经网络可被划分为多个块。例如,神经网络结构可根据由包括在神经网络中的层执行的功能而被划分为包括一个或多个层的多个块。
56.可基于块在硬件中执行的速度、执行块所需的计算的数量、所需的存储器的量、块的存储器空间的大小和/或块对整个网络的准确度的贡献来确定块的性能(例如,块所对应的硬件性能)。块的性能可根据神经网络的目的被评估。例如,当将要提高神经网络的执行速度时,可基于包括在神经网络中的块的执行速度来评估块的性能。块的性能可以是用于选择用于性能改善的块或将被优化的目标块的标准。选择的目标块可使用执行另一操作的块来替换。可以以与另一块的性能进行比较的形式来获取块的性能。例如,参照图1,块所对应的硬件性能(ppm)可被获取为将与其他块进行比较的数值。
57.可基于执行在块中执行的操作的实际硬件的性能的测量值来测量块所对应的硬件性能。换句话说,获取块所对应的硬件性能的操作可包括:基于执行包括在预训练的神经网络中的块中执行的操作的实际硬件的性能的测量值来测量块的性能的操作。执行在块中执行的(一个或多个)操作的实际硬件的性能的测量值可从数据库获取,数据库中记录了当操作在硬件中被实际执行时测量的每个操作所对应的硬件性能。
58.可基于已经学习了执行在块中执行的操作的硬件的性能的预测模型来估计块所
对应的硬件性能。换句话说,获取块所对应的硬件性能的操作可包括基于预测模型来估计块的性能的操作,该预测模型已经学习了执行包括在预训练的神经网络中的块中执行的操作的硬件的性能。例如,预测模型可对应于通过深度学习来学习执行在神经网络中执行的操作的硬件的性能的模型。获取包括在预训练的神经网络中的块所对应的硬件性能的处理器可将每个块输入到预测模型,并且获取执行在每个块中执行的操作的硬件的估计的性能的值。
59.可基于执行在块中执行的操作的硬件的性能的模拟来估计块所对应的硬件性能。换句话说,获取块所对应的硬件性能的操作可包括基于执行包括在预训练的神经网络中的块中执行的操作的硬件的性能的模拟来估计块的性能的操作。例如,在块中执行的操作的数量或与所需的存储器量相关的性能可使用简单的等式来计算。此外,在硬件中执行的每个操作所对应的硬件性能之和可被估计为网络所对应的硬件性能。
60.基于获取的块所对应的硬件性能,可从包括在神经网络中的块选择用于硬件性能改善的至少一个块作为目标块。选择目标块的操作可包括以下中的至少一个:以块所对应的硬件性能的升序选择至少一个块作为目标块的操作、和将块所对应的硬件性能与阈值进行比较并选择对应于低于阈值的硬件性能的至少一个块作为目标块的操作。例如,参照图1,与具有最低硬件性能的两个块对应或与预定的低百分比对应的块111和112可被选择为目标块。此外,多个块之中的对应于小于或等于(或低于)阈值“20”的硬件性能的块111和112可被选择为目标块。
61.获取包括在预训练的神经网络中的块所对应的硬件性能的操作和从多个块选择需要进行硬件性能改善的至少一个目标块的操作可在性能预测模块中执行。
62.图2示出使用性能预测模块获取块所对应的硬件性能的方法的示例。参照图2,性能预测模块210可通过估计或测量执行在块中执行的操作的硬件的性能来获取每个块所对应的硬件性能。例如,为了获取硬件性能,性能预测模块210可包括:记录了执行在神经网络中执行的操作的硬件的性能的测量值的查找表、通过深度学习来学习执行操作的硬件的性能的预测模型和/或模拟执行操作的硬件的性能的模拟器。
63.性能预测模块210可基于获取的硬件性能来选择用于硬件性能改善的一个或多个块作为目标块。例如,可选择硬件性能小于或等于阈值的块和/或硬件性能属于预定低百分比的块作为目标块。
64.返回参照图1,为了使用执行另一操作的块替换目标块111、112,神经架构搜索方法还可包括获取与每个目标块对应的候选块120的操作。与目标块对应的候选块可被包括在神经网络结构中,并且可被训练以替换目标块。
65.执行预定操作的至少一个层可被包括在每个候选块中。至少一个层可具有与目标块的输入维度和输出维度相同的输入维度和输出维度。换句话说,与目标块对应的候选块可包括具有与目标块的输入维度和输出维度相同的输入维度和输出维度的一个或多个操作的操作集。与目标块对应的候选块中的每个可包括不同的层的配置。此外,各种操作可在每个候选块中被执行。
66.候选块可包括由用户设置为与目标块对应的多个块,并且包括被自动确定为与目标块对应的多个块。候选块可包括通过以下操作而配置的神经网络块:改变目标块中的层的连接结构、改变层的组合、减少在目标块中执行的操作的量、和/或调整目标块的大小。例
如,当目标块是cnn块时,具有不同滤波器大小的多个cnn块可对应于与目标块对应的候选块。
67.神经架构搜索方法可包括训练与目标块对应的候选块以用候选块120之一来替换目标块111、112的操作。训练候选块的操作可针对每个目标块被执行。与一个目标块对应的候选块的训练可针对每个候选块被执行。当存在多个目标块时,训练与每个目标块对应的候选块的操作可由多个处理器并行执行或者由单个处理器顺序执行。此外,与一个目标块对应的候选块的训练可由多个处理器并行执行,并且也可由单个处理器顺序执行。
68.训练与目标块对应的候选块的处理器可通过用户的输入获取待训练的候选块,或者通过访问存储有与相应目标块对应的预设候选块的存储器来获取候选块。可对获取的对应于目标块的候选块的全部或部分执行训练。获取的候选块中的一些可以根据设置的标准从待训练的目标排除,从而可不被训练。例如,当在训练处理中更新的候选块的架构参数不满足预定标准时,候选块可从待训练的目标排除。此外,当候选块的网络大小(例如,候选块的存储器空间的大小)不满足预定标准时,候选块可从待训练的目标排除。换句话说,训练与目标块对应的候选块的处理器可确定是否训练与目标块对应的候选块中的每个候选块,并且可对被确定为待训练的目标的候选块执行训练。
69.训练候选块的操作可包括训练与目标块对应的候选参数的权重和架构参数的操作。可基于任意输入数据和目标块的响应于输入数据而生成的输出数据来训练候选块。此外,可基于或考虑条件(诸如,执行候选块的硬件的性能)来训练候选块。
70.候选块的架构参数可对应于在候选块的训练处理中根据损失函数更新的参数。如下所述,候选块的架构参数可作为用于确定候选块是否要被训练的标准以及用于选择用于替换目标块的训练的候选块的标准两者而被使用。
71.以下将参照图3和图4描述神经架构搜索方法中的训练候选块的操作。
72.当与目标块对应的候选块的训练完成时,目标块可被相应的候选块之一替换。可基于候选块的架构参数值来确定用于替换目标块的候选块。当候选块的训练完成时,可从候选块选择具有最大架构参数值的候选块作为用于替换目标块的块。换句话说,替换目标块的操作可包括:从候选块选择具有最大架构参数的块的操作以及使用选择的候选块替换目标块的操作。在一个示例中,块的架构参数可与块所对应的硬件性能(例如,执行块的硬件的性能)相关联。例如,最大架构参数可指示最优的硬件性能。在一个示例中,块的架构参数可与块的输出数据与目标块的输出数据之间的匹配程度相关联。例如,最大架构参数可指示块的输出数据与目标块的输出数据之间的最大匹配程度。
73.参照图1,可从候选块120选择包括具有最大架构参数(例如,具有作为各个操作集1至操作集4的架构参数“0.7”、“0.3”、“0.5”和“0.2”之中的最大架构参数的架构参数)的操作集1的候选块来替换预训练的神经网络110中的目标块。当预训练的神经网络进行操作时,目标块的输入可被输入到选择的候选块,使得选择的候选块的输出可被处理为目标块的输出。
74.与目标块相比,当确定在训练的候选块中执行的操作无法产生足够的准确度和/或硬件性能时,目标块可保留在预训练的神经网络110中而不被另一候选块替换。可基于候选块的架构参数来估计在候选块中执行的操作的性能。在一些情况下,架构参数也可包括在目标块中。在这种情况下,可通过将目标块的架构参数和候选块的架构参数进行比较来
确定是否要替换目标块。
75.图3示出神经架构搜索方法的示例。
76.参照图3,神经架构搜索方法可包括:响应于预训练的神经网络被输入而基于包括在网络中的块所对应的硬件性能来选择目标块的操作310、获取与目标块对应的候选块的操作320、生成目标块的输入数据和输出数据以作为训练数据的操作330、使用训练数据更新每个候选块的权重和架构参数的操作340、基于架构参数选择候选块的操作350、以及输出其中目标块被选择的候选块替换的搜索的网络的操作。
77.可通过重复包括操作330(生成目标块的输入数据和输出数据以作为训练数据)和操作340(使用训练数据更新每个候选块的权重和架构参数)的训练迭代来执行与目标块对应的候选块的训练。训练迭代可重复预定次数,和/或训练迭代可被重复,直到与每个候选块对应的损失收敛到预定值(例如,直到与每个候选块对应的损失小于或等于预定值)为止。
78.为了训练与目标块对应的候选块,使用任意输入数据和目标块的响应于任意输入数据而生成的输出数据(例如,通过将任意输入数据输入到目标块而生成的输出数据)进行学习的知识蒸馏方案可被使用。换句话说,与目标块对应的候选块的训练数据可包括任意输入数据和目标块的响应于输入数据而生成的输出数据。更具体地,可使用通过生成任意输入数据并将生成的任意输入数据输入到对应的目标块而获取的输出数据作为地面真值数据来生成用于训练与目标块对应的候选块的训练数据。任意输入数据可包括例如通过随机数生成而任意生成的0与1之间的实数。通过使用任意输入数据和目标块的响应于输入数据而生成的输出数据作为训练数据来执行训练,候选块可被训练以针对同一输入而输出与目标块相同(或基本类似)的结果。
79.执行与目标块对应的候选块的训练的处理器可生成用于每个训练迭代的训练数据,并且在基于训练数据的候选块的训练完成之后移除训练数据。训练数据可在训练迭代被执行时被生成并在训练完成之后被移除,从而减少训练所需的存储器的使用。
80.执行与目标块对应的候选块的训练的处理器可基于相应候选块的架构参数来确定是否训练每个候选块。例如,当第一候选块的架构参数低于预定标准(例如,阈值)时,可从待训练的目标排除第一候选块。执行候选块的训练的处理器可基于训练迭代来训练被确定为待训练的目标的具有权重和架构参数的候选块。可基于根据损失函数的架构参数来确定是否要训练候选块中的每个,从而减少训练候选块所需的操作量。此外,可通过有效地使用计算资源来执行用于优化神经网络结构的神经架构搜索。
81.图4示出训练与目标块对应的候选块的方法的示例。
82.训练与目标块对应的候选块的操作可包括:针对每个候选块,基于相应候选块的输出数据与目标块的响应于同一输入数据而生成的输出数据之间的匹配程度和相应候选块所对应的硬件性能来生成损失函数的操作、以及基于损失函数训练相应候选块的权重和架构参数的操作。
83.可基于候选块的输出数据与目标块的输出数据之间的匹配程度以及候选块所对应的硬件性能(例如,在候选块中执行的操作所对应的硬件性能)来确定用于训练与目标块对应的每个候选块的损失函数。
84.参照图4,可基于候选块410的输出数据与目标块420的(基于同一输入数据401而
生成的)输出数据之间的匹配程度以及候选块410所对应的硬件性能来确定用于训练与目标块420对应的候选块410的损失函数402。
85.候选块410的输出数据与目标块420的输出数据的之间匹配程度可以是候选块的输出数据与目标块的响应于同一输入数据401而生成的输出数据匹配的程度。匹配程度可包括在损失函数中,以训练候选块输出与目标块相同的结果。
86.可基于候选块在硬件中的执行速度、计算的数量和/或候选块的存储器空间的大小来确定候选块410所对应的硬件性能。可通过测量实际候选块的操作所对应的硬件性能(例如,执行实际候选块的操作的硬件的性能)或使用学习模型估计性能等来确定候选块410所对应的硬件性能。指示候选块所对应的硬件性能的值可被包括在损失函数中以训练候选块,使得基于目标块的输出数据与候选块的输出数据之间的匹配程度以及候选块所对应的硬件性能来更新被定义为根据损失函数的架构参数值。
87.可使用性能预测模型430来测量或估计候选块410所对应的硬件性能。为了获取候选块所对应的硬件性能,性能预测模型可包括查找表、预测模型和/或模拟器,查找表中记录了执行在候选块中执行的操作的实际硬件的性能的测量值,在预测模型中通过深度学习来学习操作的性能,模拟器模拟执行操作的硬件的性能。
88.例如,当目标块是预训练的神经网络的第i块并且待训练的候选块是第j候选块时,例如可如以下等式1所示来定义与候选块对应的损失函数l
ij

89.等式1:
[0090][0091]
在等式1中,a
ij
表示与目标块i对应的候选块j的结构,h
ij
表示在与目标块i对应的候选块j中执行的操作,xi表示任意输入数据,yi表示目标块i的输出数据,f表示成本函数,λ表示平衡常数,并且ppm对应于输出指示硬件性能的值的函数。
[0092]
平衡常数λ可用于在损失函数中调整候选块所对应的硬件性能以及从目标块和候选块输出的数据的匹配程度所占的比例。此外,取决于根据实施例的硬件性能的定义,可推断出,随着表示硬件性能的值减小,性能更好,或者随着表示硬件性能的值增大,性能更好。因此,该值可根据实施例被设置为正数或负数。
[0093]
如上所述,候选块的架构参数可以是根据损失函数更新的参数,并且可对应于候选块的输出数据与目标块的输出数据之间的匹配程度以及在候选块中执行的操作所对应的硬件性能被应用的值。执行神经架构搜索的处理器可针对每个候选块定义取决于损失的架构参数、在训练时基于架构参数从候选块选择待训练的候选块、在候选块的训练完成之后基于架构参数从候选块选择候选块、以及使用选择的候选块替换目标块。
[0094]
图5示出还基于除了操作所对应的硬件性能之外的条件来搜索神经架构的方法的示例。
[0095]
参照图5,在选择目标块的操作中,还可包括通过添加除了硬件性能条件之外的条件来从多个块选择至少一个目标块的操作。通过在目标块选择操作和候选块训练操作中反映除了硬件性能条件之外的条件,即使当可能无法估计在块中执行的操作所对应的硬件性能时,或者当神经网络架构根据除硬件性能之外的条件被优化时,也可应用神经架构搜索方法。
[0096]
这里,除了硬件性能之外的条件可包括硬件限制条件。除了硬件性能条件之外的条件可包括各种条件。下面的描述将给出除了硬件性能条件之外的条件是硬件限制条件的示例。
[0097]
硬件限制条件可基于执行神经网络的硬件被设置。硬件限制条件可包括例如在执行神经网络的硬件中支持的操作的类型、对整个网络的层数的限制、可接受的权重范围、存储器的量和/或是否优化操作。
[0098]
当在目标块选择操作中进一步添加硬件限制条件时,不满足硬件限制条件的块523可基于条件(例如,基于需要进行性能改善的块521和522以及硬件限制条件510)被选择为目标块。尽管图5示出了选择不满足硬件性能条件或不满足硬件限制条件的块作为目标块的情况,但是在一些情况下,可选择不匹配硬件性能条件且不匹配硬件条件的块作为目标块。
[0099]
硬件限制条件可被反映在训练与目标块对应的候选块的操作中。参照图4,用于训练与目标块对应的候选块410的损失函数402可基于候选块410的输出数据与目标块420的输出数据之间的匹配程度、根据性能预测模型430的候选块410所对应的硬件性能以及硬件限制条件440被确定。训练与目标块对应的候选块的操作可包括:针对每个候选块生成损失函数的操作以及基于损失函数训练相应候选块的权重和架构参数的操作,针对每个候选块生成损失函数的操作基于相应候选块的输出数据与目标块的响应于同一输入数据的而生成的输出数据之间的匹配程度、相应候选块所对应的硬件性能和硬件限制条件。
[0100]
例如,当目标块是预训练的神经网络的第i块并且待训练的候选块是第j候选块时,例如可如以下等式2所示来定义反映硬件限制条件的用于训练候选块的损失函数。
[0101]
等式2:
[0102][0103]
在等式2中,a
ij
表示与目标块i对应的候选块j的结构,h
ij
表示在与目标块i对应的候选块j中执行的操作,xi表示任意输入数据,yi表示目标块i的输出数据,f表示成本函数,λ表示平衡常数,ppm表示硬件性能,con对应于与硬件限制条件相关的函数。
[0104]
con可基于硬件限制条件输出各种值。例如,在硬件中支持的操作的类型由硬件限制条件指定的情况下,包括硬件中不支持的操作的块可输出“0”,并且包括硬件中支持的操作的块可输出“1”。
[0105]
神经架构搜索方法可用于基于执行神经网络的硬件来优化神经网络架构。执行神经网络的硬件可对应于包括可学习的处理器(诸如,中央处理器(cpu)、图形处理器(gpu)、神经处理单元/神经处理器(npu)等)的硬件。通过基于执行神经网络的硬件来设置硬件限制条件,神经网络架构可基于硬件被优化。例如,当使用神经架构搜索方法来优化npu中的神经网络架构时,npu中支持的操作和/或npu的存储器容量可被设置为硬件限制条件。
[0106]
在执行预定神经网络的硬件方面,从硬件设计到实际产品实现可能需要相当长的时间段。因此,在硬件被实现为实际产品之后,可能需要支持在设计硬件时尚未在神经网络中使用的形式的操作。在这种情况下,硬件中不支持的操作可被设置为硬件限制条件,使得用于替换目标块的神经架构搜索方法被应用。
[0107]
在一些情况下,当用户要基于特定硬件来优化预训练的神经网络时,可能不存在
训练数据,或者可能无法充分获得训练所需的硬件资源。在这种情况下,神经网络搜索方法可用于生成待优化的目标块的输入数据和输出数据作为训练数据,或者将硬件的存储器容量设置为硬件限制条件,从而训练与目标块对应的候选块。
[0108]
图6示出设备的配置的示例。
[0109]
参照图6,设备601可包括处理器602(例如,一个或多个处理器)和存储器603。
[0110]
设备601可以是用于执行上述神经架构搜索方法的设备。设备601可包括计算机、终端、sdk和包括可学习的处理器的其他装置。处理器602可执行参照图1至图5描述的方法中的至少一种方法。处理器602可以是可学习的处理器,并且可包括例如npu、gpu和cpu。存储器603可存储与神经架构搜索方法相关联的信息,或者存储实现神经架构搜索方法的程序。存储器603可以是易失性存储器或非易失性存储器。
[0111]
处理器602可执行程序并且控制设备601。由处理器602执行的程序的代码可存储在存储器603中。设备601可通过输入和输出装置(未示出)连接到外部装置(例如,个人计算机或网络)并且执行数据交换。
[0112]
在此针对图1至图6描述的性能预测模块、设备、处理器、存储器、性能预测模块210、设备601、处理器602、存储器603和其他设备、装置、单元、模块和组件由硬件组件实现或表示硬件组件。可用于执行在本技术中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器、以及被配置为执行在本技术中描述的操作的任何其他电子组件在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本技术中描述的操作的硬件组件中的一个或多个硬件组件。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器、或者被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或者连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本技术中描述的操作的指令或软件(诸如,操作系统(os)和在os上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简明,单数术语“处理器”或“计算机”可用于在本技术中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(sisd)多处理、单指令多数据(simd)多处理、多指令单数据(misd)多处理和多指令多数据(mimd)多处理。
[0113]
图1至图6中示出的执行在本技术中描述的操作的方法由计算硬件(例如,由一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述执行指令或软件以执行在本技术中描述的由该方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理
器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
[0114]
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。指令或软件可基于附图中示出的框图和流程图以及在此使用的相应的描述使用任何编程语言被编写,附图中示出的框图和流程图以及在此使用的相应的描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
[0115]
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(rom)、可编程随机存取只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd+r、cd-rw、cd+rw、dvd-rom、dvd-r、dvd+r、dvd-rw、dvd+rw、dvd-ram、bd-rom、bd-r、bd-r lth、bd-re、蓝光或光盘存储装置、硬盘驱动器(hdd)、固态驱动器(ssd)、闪存、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(sd)或极限数字(xd)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘和任何其他装置,任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构,并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件和数据结构以分布式方式由一个或多个处理器或计算机存储、访问和执行。
[0116]
虽然本公开包括特定示例,但是在理解本技术的公开之后将清楚,在不脱离权利要求和它们的等同物的精神和范围的情况下,可在这些示例中做出形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述应被认为可适用于其他示例中的相似的特征或方面。如果描述的技术以不同的次序被执行、和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合、和/或由其他组件或它们的等同物替代或补充,则可实现合适的结果。

技术特征:
1.一种处理器实现的基于硬件性能的神经架构搜索方法,包括:获取包括在预训练的神经网络中的神经网络块所对应的硬件性能;从神经网络块选择用于硬件性能改善的至少一个目标块;基于任意输入数据和目标块的基于输入数据生成的输出数据,训练与目标块对应的候选块的权重和架构参数;和通过基于训练的架构参数使用候选块之一替换预训练的神经网络中的目标块,更新预训练的神经网络。2.根据权利要求1所述的神经架构搜索方法,其中,针对相应候选块中的每个,训练的步骤包括:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度以及相应候选块所对应的硬件性能来生成损失函数,其中,相应候选块的输出数据和目标块的输出数据基于同一输入数据被生成;和基于损失函数训练相应候选块的权重和架构参数。3.根据权利要求1所述的神经架构搜索方法,其中,针对相应候选块中的每个,训练的步骤包括:基于相应候选块的架构参数来确定相应候选块是否是待训练的目标;和响应于相应候选块被确定为待训练的目标,训练相应候选块。4.根据权利要求3所述的神经架构搜索方法,其中,确定的步骤包括:响应于相应候选块的架构参数大于或等于预定阈值,确定相应候选块是待训练的目标。5.根据权利要求1所述的神经架构搜索方法,其中,获取神经网络块所对应的硬件性能的步骤包括:基于执行神经网络块的操作的实际硬件的性能的测量值来确定神经网络块所对应的硬件性能。6.根据权利要求1所述的神经架构搜索方法,其中,获取神经网络块所对应的硬件性能的步骤包括:基于学习了执行神经网络块的操作的硬件的性能的预测模型来估计神经网络块所对应的硬件性能。7.根据权利要求1所述的神经架构搜索方法,其中,获取神经网络块所对应的硬件性能的步骤包括:基于执行神经网络块的操作的硬件的性能的模拟来估计神经网络块所对应的硬件性能。8.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,选择目标块的步骤包括以下中的任意一者或两者:按照神经网络块所对应的硬件性能的升序选择神经网络块中的至少一个作为目标块;和将神经网络块所对应的硬件性能与阈值进行比较,并且选择神经网络块中的对应于低于阈值的硬件性能的至少一个作为目标块。9.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,训练的步骤包括:
生成输入数据并通过将输入数据输入到目标块来生成输出数据,作为训练数据;基于训练数据来训练候选块中的至少一个;和响应于基于训练数据执行的训练的完成而移除训练数据。10.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,训练的步骤包括:获取具有与目标块的输入维度和输出维度相同的输入维度和输出维度的块,作为候选块。11.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,替换目标块的步骤包括:从候选块选择候选块中的具有最大架构参数的候选块;和使用选择的候选块替换目标块。12.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,选择目标块的步骤还包括:基于硬件限制条件从神经网络块选择目标块。13.根据权利要求12所述的神经架构搜索方法,其中,针对相应候选块中的每个,训练的步骤包括:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度、相应候选块所对应的硬件性能以及硬件限制条件来生成损失函数,其中,相应候选块的输出数据与目标块的输出数据基于同一输入数据被生成;和基于损失函数训练相应候选块的权重和架构参数。14.根据权利要求12所述的神经架构搜索方法,其中,硬件限制条件对应于由被配置为执行神经网络的硬件支持的神经网络操作类型和/或所述硬件的存储器容量。15.根据权利要求12所述的神经架构搜索方法,其中,基于硬件限制条件选择目标块的步骤包括:选择神经网络块中的不满足硬件限制条件的至少一个作为目标块。16.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,神经网络块中的每个包括预训练的神经网络的至少一个层。17.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,候选块中的每个包括执行预训练的神经网络的预定操作的至少一个层,并且候选块具有与目标块的输入维度和输出维度相同的输入维度和输出维度。18.根据权利要求1至权利要求7中任意一项所述的神经架构搜索方法,其中,硬件性能基于以下中的任何一个或任何组合被确定:神经网络块在硬件中的执行速度、执行神经网络块所需的计算的数量和神经网络块的存储器空间的大小。19.一种存储指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时,配置所述一个或多个处理器执行权利要求1至权利要求18中任意一项所述的神经架构搜索方法。20.一种基于硬件性能的神经架构搜索设备,包括:一个或多个处理器,被配置为:获取包括在预训练的神经网络中的神经网络块所对应的硬件性能;从神经网络块选择用于硬件性能改善的至少一个目标块;
基于任意输入数据和目标块的基于输入数据生成的输出数据,训练与目标块对应的候选块的权重和架构参数;和通过基于训练的架构参数使用候选块之一替换预训练的神经网络中的目标块,更新预训练的神经网络。21.根据权利要求20所述的神经架构搜索设备,其中,为了所述训练,针对相应候选块中的每个,所述一个或多个处理器被配置为:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度以及相应候选块所对应的硬件性能来生成损失函数,其中,相应候选块的输出数据和目标块的输出数据基于同一输入数据被生成;和基于损失函数来训练相应候选块的权重和架构参数。22.根据权利要求20所述的神经架构搜索设备,其中,为了所述训练,针对相应候选块中的每个,所述一个或多个处理器被配置为:基于相应候选块的架构参数来确定相应候选块是否是待训练的目标;和响应于相应候选块被确定为待训练的目标,训练相应候选块。23.根据权利要求20所述的神经架构搜索设备,其中,为了所述训练,所述一个或多个处理器被配置为:生成输入数据和目标块的输出数据,作为训练数据;基于训练数据来训练候选块中的至少一个;和响应于基于训练数据执行的训练的完成而移除训练数据。24.根据权利要求20至权利要求23中任意一项所述的神经架构搜索设备,其中,为了获取神经网络块所对应的硬件性能,所述一个或多个处理器被配置为执行以下中的任何一个或任何组合:基于执行神经网络块的操作的实际硬件的性能的测量值来确定神经网络块所对应的硬件性能;基于学习了执行神经网络块的操作的硬件的性能的预测模型来估计神经网络块所对应的硬件性能;和基于执行神经网络块的操作的硬件的性能的模拟来估计神经网络块所对应的硬件性能。25.根据权利要求20至权利要求23中任意一项所述的神经架构搜索设备,其中,为了所述训练,所述一个或多个处理器被配置为:获取具有与目标块的输入维度和输出维度相同的输入维度和输出维度的块,作为候选块。26.根据权利要求20至权利要求23中任意一项所述的神经架构搜索设备,其中,为了选择目标块,所述一个或多个处理器被配置为:基于硬件限制条件从神经网络块选择目标块。27.根据权利要求26所述的神经架构搜索设备,其中,为了所述训练,针对相应候选块中的每个,所述一个或多个处理器被配置为:基于相应候选块的输出数据与目标块的输出数据之间的匹配程度、相应候选块所对应的硬件性能以及硬件限制条件来生成损失函数,其中,相应候选块的输出数据和目标块的输出数据基于同一输入数据被生成;和基于损失函数来训练相应候选块的权重和架构参数。

技术总结
提供了基于硬件性能的神经架构搜索方法和设备。所述方法包括:获取包括在预训练的神经网络中的神经网络块所对应的硬件性能;从神经网络块选择用于硬件性能改善的至少一个目标块;基于任意输入数据和目标块的基于输入数据生成的输出数据,训练与目标块对应的候选块的权重和架构参数;和通过基于训练的架构参数使用候选块之一替换预训练的神经网络中的目标块,来更新预训练的神经网络。来更新预训练的神经网络。来更新预训练的神经网络。


技术研发人员:崔赛纶
受保护的技术使用者:三星电子株式会社
技术研发日:2021.03.02
技术公布日:2022/3/8

最新回复(0)