CN116324807A - 神经架构和硬件加速器搜索 - Google Patents
神经架构和硬件加速器搜索 Download PDFInfo
- Publication number
- CN116324807A CN116324807A CN202180063841.5A CN202180063841A CN116324807A CN 116324807 A CN116324807 A CN 116324807A CN 202180063841 A CN202180063841 A CN 202180063841A CN 116324807 A CN116324807 A CN 116324807A
- Authority
- CN
- China
- Prior art keywords
- neural network
- architecture
- hardware
- accelerator
- network
- 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
- 230000001537 neural effect Effects 0.000 title description 14
- 238000013528 artificial neural network Methods 0.000 claims abstract description 345
- 238000012549 training Methods 0.000 claims abstract description 89
- 238000000034 method Methods 0.000 claims abstract description 87
- 238000003860 storage Methods 0.000 claims abstract description 12
- 238000010801 machine learning Methods 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 52
- 238000009826 distribution Methods 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 27
- 238000010200 validation analysis Methods 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 15
- 230000000306 recurrent effect Effects 0.000 claims description 11
- 230000002787 reinforcement Effects 0.000 claims description 11
- 238000012795 verification Methods 0.000 claims description 8
- 238000013527 convolutional neural network Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 4
- 239000003550 marker Substances 0.000 claims description 3
- 238000005457 optimization Methods 0.000 claims description 3
- 238000005070 sampling Methods 0.000 claims description 2
- 230000011218 segmentation Effects 0.000 claims description 2
- 230000001419 dependent effect Effects 0.000 claims 7
- 238000004590 computer program Methods 0.000 abstract description 17
- 230000009471 action Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 5
- 230000036541 health Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 239000008280 blood Substances 0.000 description 4
- 210000004369 blood Anatomy 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 3
- WQZGKKKJIJFFOK-GASJEMHNSA-N Glucose Natural products OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O WQZGKKKJIJFFOK-GASJEMHNSA-N 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 239000008103 glucose Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 108091028043 Nucleic acid sequence Proteins 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 241000009334 Singa Species 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000036772 blood pressure Effects 0.000 description 1
- 238000009530 blood pressure measurement Methods 0.000 description 1
- 230000000747 cardiac effect Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000010339 dilation Effects 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 208000019622 heart disease Diseases 0.000 description 1
- 230000003345 hyperglycaemic effect Effects 0.000 description 1
- 230000002218 hypoglycaemic effect Effects 0.000 description 1
- 238000003709 image segmentation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000011987 methylation Effects 0.000 description 1
- 238000007069 methylation reaction Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
- 238000013518 transcription Methods 0.000 description 1
- 230000035897 transcription Effects 0.000 description 1
Images
Classifications
-
- 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/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
-
- 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/044—Recurrent networks, e.g. Hopfield 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/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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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
-
- 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
- G06N3/092—Reinforcement learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Debugging And Monitoring (AREA)
Abstract
用于联合确定神经网络架构和硬件加速器架构的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。在一个方面中,一种方法包括:使用控制器策略,生成一批次的一个或多个输出序列,所述批次中的每个输出序列定义子神经网络的相应架构和硬件加速器的相应架构;针对所述批次中的每个输出序列:训练具有由该输出序列定义的所述架构的所述子神经网络的相应实例;评估所述子神经的所训练的实例的网络性能;以及评估具有由该输出序列定义的所述架构的所述硬件加速器的相应实例的加速器性能,以确定所述硬件加速器的所述实例的加速器性能指标;以及使用所述网络性能指标和所述加速器性能指标来调整所述控制器策略。
Description
相关申请的交叉引用
本申请要求于2020年10月2日提交的美国临时申请号63/087,143的优先权。在先申请的公开内容被认为是本申请的公开内容的一部分并且通过引用并入本申请的公开内容中。
背景技术
本说明书涉及确定神经网络架构和硬件加速器设计。
神经网络是采用一层或多层非线性单元来针对接收到的输入预测输出的机器学习模型。除了输出层之外,一些神经网络还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中的下一层(即,下一隐藏层或输出层)的输入。网络的每层根据相应参数的集合的当前值来根据接收到的输入生成输出。
硬件加速器是具有被配置为执行专用计算的专用硬件的计算设备,例如图形处理单元(“GPU”)、现场可编程门阵列(“FGPA”)和专用集成电路(“ASIC”),包括张量处理单元(“TPU”)。
发明内容
本说明书描述了一种在一个或多个位置中的一个或多个计算机上实施为计算机程序的系统,所述系统可以联合(例如同时)确定(i)用于被配置为执行特定机器学习任务的神经网络的最优网络架构和(ii)用于硬件加速器的最优硬件架构,所述硬件加速器作为神经网络要被实施在其上的目标计算设备(其一部分)。
取决于任务,神经网络可以被配置为(即,通过训练)接收任何种类的数字数据输入,并且基于输入生成任何种类的分数、分类或回归输出。
一旦训练,神经网络可以被实施在目标计算设备上,所述目标计算设备继而包括一个或多个硬件加速器。硬件加速器是包括用于执行某些类型的操作(例如矩阵乘法)的专用硬件的计算设备,比非专用或“通用”计算设备更高效。不同的硬件加速器可以具有不同的硬件特性,例如在计算单元的数量、并行量、计算存储器比、带宽等方面。
作为一个示例,包括一个或多个硬件加速器的目标计算设备可以是单个具体的边缘设备,例如移动电话、智能扬声器或另一嵌入式计算设备或其他边缘设备。作为特定示例,边缘设备可以是具有具体类型的硬件加速器或其他计算机芯片的移动电话或其他设备,神经网络将被部署在所述计算机芯片上。
作为另一示例,包括一个或多个硬件加速器的目标计算设备可以是多个硬件加速器设备的集合,例如ASIC、FPGA或真实世界智能体(例如车辆(例如自动驾驶汽车)或机器人)上的张量处理单元(TPU)。
作为再一示例,包括一个或多个硬件加速器设备的目标计算设备可以是数据中心中的硬件加速器集合。
通常,本说明书中描述的主题的一个创新方面可以被实施在一种方法中,所述方法包括:使用控制器策略,生成一批次的一个或多个输出序列,所述批次中的每个输出序列定义(i)被配置为执行特定神经网络任务的子神经网络的相应架构以及(ii)硬件加速器的相应架构,所述子神经网络的训练实例要在所述硬件加速器上实施;针对所述批次中的每个输出序列:训练具有由该输出序列定义的所述架构的所述子神经网络的相应实例,以执行所述特定神经网络任务;评估所述子神经网络的所述训练实例对于所述特定神经网络任务的网络性能,以确定所述子神经网络的所述训练实例对于所述特定神经网络任务的网络性能指标;以及评估具有由该输出序列定义的所述架构的所述硬件加速器的相应实例的加速器性能,以确定所述硬件加速器的所述实例对于支持所述子神经网络的所述训练实例的性能的加速器性能指标,所述子神经网络具有由该输出序列对于所述特定神经网络任务定义的所述架构;以及使用(i)所述子神经网络的所述训练实例的所述网络性能指标和(ii)所述硬件加速器的所述实例的所述加速器性能指标来调整所述控制器策略。
控制器策略可以使用具有多个控制器网络参数的控制器神经网络来实施;并且调整控制器策略可以包括调整多个控制器网络参数的当前值。
使用(i)子神经网络的训练实例的网络性能指标和(ii)硬件加速器的实例的加速器性能指标来调整控制器策略可以包括:使用增强学习技术,训练所述控制器神经网络以生成输出序列,所述输出序列导致子神经网络具有增加的网络性能指标并且硬件加速器具有增加的加速器性能指标。
增强学习技术可以是近端策略优化(PPO)技术。
每个输出序列可以包括第一多个时间步长中的每个时间步长处的子神经网络的相应超参数的值。
每个输出序列可以包括第二多个时间步长中的每个时间步长处的硬件加速器的相应硬件参数的值。
控制器神经网络可以是循环神经网络,所述循环神经网络包括:一个或多个循环神经网络层,所述一个或多个循环神经网络层被配置为针对给定输出序列在每个时间步长处:接收所述给定输出序列中的前一时间步长处的超参数或硬件参数的所述值作为输入,并且处理所述输入以更新所述循环神经网络的当前隐藏状态;以及每个时间步长的相应输出层,其中,每个输出层被配置为针对所述给定输出序列:接收包括该时间步长处的所更新的隐藏状态的输出层输入,并且生成该时间步长的输出,所述输出定义该时间步长处的所述超参数或所述硬件参数的可能值上的分数分布。
使用控制器策略生成一批次的一个或多个输出序列可以包括,针对所述批次中的每个输出序列针对所述多个时间步长中的每个时间步长:向所述控制器神经网络提供该输出序列中的前一时间步长处的所述超参数或所述硬件参数的所述值作为输入,以生成该时间步长的输出,所述输出定义该时间步长处的所述超参数或所述硬件参数的可能值上的分数分布;以及根据所述分数分布从所述可能值中采样,以确定该输出序列中的该时间步长处的所述超参数或所述硬件参数的所述值。
特定神经网络任务可以是对象分类和/或检测任务、对象姿势估计任务或者语义分割任务;所述子神经网络可以是包括一个或多个逐深度可分离卷积层的卷积神经网络;以及所述超参数可以包括所述子神经网络中的每个逐深度可分离卷积层的超参数。
子神经网络可以包括一个或多个反向残差层和一个或多个线性瓶颈层;以及所述超参数可以包括所述子神经网络中的每个反向残差层和线性瓶颈层的超参数。
硬件加速器的相应硬件特性可以包括以下中的一个或多个:所述硬件加速器的带宽、所述硬件加速器中包括的处理元件的数量、所述处理元件在所述硬件加速器上的布局、每个处理元件中的单指令多数据(SIMD)式乘法累加的数量、每个处理元件中的计算通道的数量、每个处理元件中的共享存储器的大小、或者每个处理元件中的寄存器文件的大小。
所述硬件加速器的所述实例对于支持所述子神经网络的所述训练实例的性能的所述加速器性能指标可以包括以下中的一个或多个:所述硬件加速器的估计面积、所述硬件加速器的估计功耗、或者所述神经网络在被部署在所述硬件加速器上时对于执行所述特定神经网络任务的估计时延。
评估具有由所述输出序列定义的架构的所述硬件加速器的相应实例的加速器性能,以确定所述硬件加速器的所述实例对于支持所述子神经网络的所述训练实例的性能的加速器性能指标,所述子神经网络具有由所述输出序列对于所述特定神经网络任务定义的所述架构,可以包括:基于使用周期准确性能模拟器来根据(i)所述子神经网络的所述相应架构和(ii)由所述一批次的输出序列定义的硬件加速器的所述相应架构确定所述神经网络在被部署在所述硬件加速器上时对于执行特定神经网络任务的所述估计时延。
评估具有由所述输出序列定义的架构的所述硬件加速器的相应实例的加速器性能,以确定所述硬件加速器的所述实例对于支持所述子神经网络的所述训练实例的性能的加速器性能指标,所述子神经网络具有由所述输出序列对于所述特定神经网络任务定义的所述架构,可以包括:基于使用分析面积估计器来根据由所述一批次的输出序列定义的硬件加速器的所述相应架构确定所述硬件加速器的所述估计面积。
使用(i)所述子神经网络的训练实例的所述网络性能指标和(ii)所述硬件加速器的实例的所述加速器性能指标来调整所述控制器神经网络的所述控制器网络参数的所述当前值可以包括:将不同权重指派给加速器性能指标中的所述一个或多个加速器性能指标;以及根据所述不同权重,调整所述控制器神经网络的所述控制器网络参数的所述当前值。
使用(i)所述子神经网络的训练实例的所述网络性能指标和(ii)所述硬件加速器的实例的所述加速器性能指标来调整所述控制器策略还可以包括:固定所述子神经网络的训练实例对于所述特定神经网络任务的所述网络性能指标并且仅使用所述硬件加速器的实例的所确定的加速器性能指标来调整所述控制器神经网络的控制器网络参数的所述当前值。
所述方法还可以包括:根据所述控制器网络参数的所调整的值,生成定义所述子神经网络的最终架构的最终输出序列。
所述方法还可以包括:通过使用具有所述最终架构的子神经网络处理接收的网络输入,对所述接收的网络输入执行所述特定神经网络任务。
本说明书中描述的主题的另一创新方面可以被实施在一种方法中,所述方法包括:接收指定硬件加速器的一个或多个目标硬件约束的数据,用于执行特定机器学习任务的神经网络要被部署在所述硬件加速器上;接收所述特定机器学习任务的训练数据和验证数据;以及使用所述训练数据和所述验证数据从候选网络架构空间中选择用于执行所述特定机器学习任务的所述神经网络的网络架构,从候选硬件架构空间中选择所述硬件加速器的硬件架构,执行所述特定机器学习任务的所述神经网络要被部署在所述硬件加速器上,其中,所述空间中的每个候选网络架构由对应的决策值的集合定义,所述对应的决策值的集合包括第一多个分类决策中的每个分类决策的相应决策值,其中,所述空间中的每个候选硬件架构由对应的决策值的集合定义,所述对应的决策值的集合包括第二多个分类决策中的每个分类决策的相应决策值,并且其中,所述选择包括:联合更新(i)控制器参数的集合,所述控制器参数针对所述第一多个分类决策和所述第二多个分类决策中的每个分类决策定义该分类决策的决策值上的相应概率分布,以及(ii)参数的共享集合,其中:更新所述控制器策略参数的集合包括:通过强化学习更新所述控制器参数的集合以最大化奖励函数,所述奖励函数测量(i)候选硬件架构的估计质量和(ii)由决策值的集合定义的候选网络架构的估计质量,所述决策值的集合从使用所述控制器策略参数生成的概率分布中采样,以及更新所述模型参数的共享集合包括:更新所述模型参数的共享集合以优化目标函数,所述目标函数测量由所述决策值的集合定义的所述候选网络架构的对于所述特定机器学习任务的性能,所述决策值的集合从使用所述控制器策略生成的所述概率分布中采样;在所述联合更新之后,选择候选网络架构作为所述神经网络的所述网络架构,所述候选网络架构由所述第一多个分类决策中的每个分类决策的相应的特定决策值定义;以及选择候选硬件架构作为所述硬件加速器的所述硬件架构,所述候选硬件架构由所述第二多个分类决策中的每个分类决策的相应的特定决策值定义。
所述方法还可以包括:接收数据,所述数据指定所述神经网络在被部署在所述硬件加速器上时执行所述特定机器学习任务的目标时延。
奖励函数可以包括测量所述(i)所述候选硬件架构的所述估计质量和(ii)所述候选网络架构的所述估计质量的质量项以及基于所述候选架构的估计时延与所述目标时延之间的比率的时延项。
联合更新包括重复执行操作,所述操作可以包括:使用所述验证数据,确定具有候选架构的神经网络对于所述特定机器学习任务的估计质量,所述候选架构具有由所述第一多个分类决策的所选择的决策值定义的所述模型参数的共享集合的子集,其中,所述质量根据由所述第一多个分类决策的所选择的决策值定义的模型参数的共享集合的所述子集的当前值来估计。
联合更新可以包括重复执行操作,所述操作包括:使用所述验证数据和时延模拟器,确定具有所述候选网络架构的所述神经网络在执行所述特定机器学习任务时的估计时延,所述候选网络架构具有由所述第一多个分类决策的所选择的决策值定义的模型参数的共享集合的所述子集,其中,所述神经网络被部署在具有硬件架构的所述硬件架构上,所述硬件架构具有由所述第二多个分类决策的所选择的决策值定义的模型参数的共享集合的所述子集。
联合更新可以包括重复执行操作,所述操作包括:使用面积模拟器确定所述候选硬件架构的估计质量,所述候选硬件架构具有由所述第二多个分类决策的所选择的决策值定义的模型参数的共享集合的所述子集。
所述时延模拟器和所述面积模拟器中的每一个可以是在使用加速器模拟器生成的标记训练数据上训练的相应神经网络。
本说明书中描述的主题的另一创新方面可以被实施在具有架构的机器学习任务特定的硬件加速器中,所述架构通过执行过程定义,所述过程包括前述权利要求中任一项所述的相应操作。
所述方面的其他实施例包括对应计算机系统、装置和记录在一个或多个计算机存储设备上的计算机程序,每个计算机系统、装置和计算机程序被配置为执行方法的动作。一个或多个计算机的系统可以被配置为借助于安装在系统上的软件、固件、硬件或其任何组合来执行特定操作或动作,所述软件、固件、硬件或其任何组合在操作中可以使系统执行动作。一个或多个计算机程序可以被配置为借助于包括指令来执行特定操作或动作,在由数据处理装置执行时,所述指令使装置执行动作。
本说明书中描述的主题可以被实施在特定实施例中,以便实现以下优点中的一个或多个。
硬件加速器是被配置为执行专用计算的专用硬件,并且通常比它们的通用对应物在计算上更高效,但通常也更昂贵,这是由于硬件的成本以及为加速器供电和维护的关联能量成本。使用部署在硬件加速器上的神经网络执行机器学习任务(例如视觉任务、自然语言处理任务或需要近实时响应被提供给用户的其他任务)需要(i)准确且计算上高效的神经网络架构,以生成具有某个目标时延的输入的推断,以及(ii)已被定制用于机器学习任务的硬件加速器架构。
所描述的技术可以被用于搜索可以执行任务的神经网络的神经网络架构,同时搜索可以供应足够计算资源(例如存储器、计算能力或两者)以支持任务的网络性能的硬件加速器架构,同时满足硬件约束(例如资源消耗约束、面积约束或两者),并且因此识别(i)可以被有效部署以计算具有目标延迟的推断的神经网络的单个架构或一系列架构以及(ii)具有所识别网络架构的神经网络被部署在其上的硬件加速器的单个架构或一系列架构范围,其可以有效地支持任务的网络性能,同时满足硬件架构约束。
而且,由于所描述的技术允许系统与硬件架构联合识别网络架构,因此搜索过程消耗的计算资源比在独立(或交替)基础上搜索神经网络或硬件加速器的架构的现有技术少得多。
本说明书的主题的一个或多个实施方式的细节在下面的附图和描述中陈述。主题的其他特征、方面和优点将通过描述、附图和权利要求而变得显而易见。
附图说明
图1示出了示例神经架构和硬件架构搜索系统。
图2是用于更新控制器策略的示例过程的流程图。
图3是用于通过联合更新控制器策略参数的集合和和参数的共享集合来选择神经网络的架构和硬件加速器的架构的示例过程的流程图。
图4是联合确定神经网络的神经架构和硬件加速器的硬件架构的图示。
在各个附图中,相同的附图标记和名称指示相同的元件。
具体实施方式
本说明书描述了一种在一个或多个位置中的一个或多个计算机上实施为计算机程序的系统,所述系统可以联合(例如同时)确定(i)用于被配置为执行特定机器学习任务的神经网络的最优网络架构和(ii)用于硬件加速器的最优硬件架构,所述硬件加速器作为神经网络要被实施在其上的目标计算设备(其一部分),即,在神经网络被训练之后神经网络将被部署在其上的硬件加速器的架构。
在一些情况下,神经网络是被配置为执行图像处理任务(即,接收输入图像并且处理输入图像以生成输入图像的网络输出)的神经网络。在本说明书中,处理输入图像是指使用神经网络处理图像像素的强度值。例如,任务可以是图像归类,并且由神经网络为给定图像生成的输出可以是对象分类集合中的每个对象分类的分数,每个分数表示图像包含属于该分类的对象图像的估计可能性。作为另一示例,任务可以是图像嵌入生成,并且由神经网络生成的输出可以是输入图像的数字嵌入。作为再一示例,任务可以是对象检测,并且由神经网络生成的输出可以标识输入图像中的位置,特定类型的对象在这些位置处被描绘。作为再一示例,任务可以是图像分割,并且由神经网络生成的输出可以将输入图像的每个像素指派给来自分类集合的分类。
作为另一示例,如果神经网络的输入是互联网资源(例如网页)、文档或文档部分或者从互联网资源、文档或文档部分中提取的特征,则任务可以是对资源或文档进行分类,即,由神经网络为给定的互联网资源、文档或文档部分生成的输出可以是主题集合中的每个主题的分数,每个分数表示互联网资源、文档或文档部分是关于该主题的估计可能性。
作为另一示例,如果神经网络的输入是特定广告的印象上下文的特征,则由神经网络生成的输出可以是表示特定广告将被点击的估计可能性的分数。
作为另一示例,如果神经网络的输入是针对用户的个性化推荐的特征,例如表征推荐上下文的特征,例如表征用户先前采取的动作的特征,则由神经网络生成的输出可能是内容项集合中的每个内容项的分数,每个分数表示用户将对被推荐该内容项做出积极响应的估计可能性。
作为另一示例,如果神经网络的输入是一种语言的文本序列,则由神经网络生成的输出可以是另一语言的文本段集合中的每个文本段的分数,每个分数表示另一语言的该文本段是输入文本正确翻译为另一语言的估计可能性。
作为另一示例,该任务可以是音频处理任务。例如,如果神经网络的输入是表示口头话语的序列,则由神经网络生成的输出可以是文本段集合中的每个文本段的分数,每个分数表示该文本段是话语的正确转录的估计可能性。
作为另一示例,该任务可以是关键字检出任务,其中,如果神经网络的输入是表示口头话语的序列,则由神经网络生成的输出可以指示特定词语或短语(“热词”)是否是话语中所说的。作为另一示例,如果神经网络的输入是表示口语话语的序列,则由神经网络生成的输出可以识别说出该话语的自然语言。
作为另一示例,任务可以是自然语言处理或理解任务,例如蕴涵任务、释义任务、文本相似性任务、情感任务、句子完成任务、语法任务等,它对一些自然语言的文本序列进行操作。
作为另一示例,该任务可以是文本到语音的任务,其中输入是自然语言中的文本或自然语言中的文本特征,并且网络输出是谱图或用于定义自然语言中正在说出的文本的音频的其他数据。
作为另一示例,该任务可以是健康预测任务,其中输入是患者的电子健康记录数据,并且输出是与患者的未来健康相关的预测,例如应该对患者采用的预测治疗、患者将发生不良健康事件的可能性或患者的预测诊断。生理数据(诸如心率、血压、血糖水平、血液化学等)可以被用作输入,输出是一个或多个健康事件发生的概率和/或一个或多个诊断的概率。例如,在输入包括血糖测量(例如血糖读数序列)的情况下,输出可以包括发生低血糖或高血糖事件的概率。在输入包括血压测量和/或心率的情况下,输出可以包括发生心脏事件和/或存在心脏病的概率。
作为另一示例,该任务可以是智能体控制任务,其中输入是表征环境状态的观测,并且输出定义智能体响应于观测要执行的动作。例如,智能体可以是真实世界或模拟机器人、工业设施的控制系统或控制不同种类的智能体的控制系统。
作为另一示例,该任务可以是基因组学任务,其中输入是表示DNA序列或其他分子序列的片段的序列,并且输出是例如通过对DNA序列片段的数据集合使用无监督学习技术的用于下游任务的片段的嵌入或下游任务的输出。下游任务的示例包括启动子位点预测、甲基化分析、预测非编码变体的功能效应等。
在一些情况下,机器学习任务是多个单独的机器学习任务的组合,即,神经网络被配置为执行多个不同的单独的机器学习任务,例如上面提及的机器学习任务中的两个或多个。例如,神经网络可以被配置为执行多个单独的自然语言理解任务。可选地,网络输入可以包括要对网络输入执行的单独的自然语言理解任务的标识符。作为另一示例,神经网络可以被配置为执行多个单独的图像处理或计算机视觉任务,即,通过处理单个输入图像来并行生成多个不同的单独图像处理任务的输出。
图1示出了示例神经架构和硬件架构搜索系统100。神经架构和硬件架构搜索系统100是一个或多个位置中的一个或多个计算机上实施为计算机程序的系统的示例,其中下面描述的系统、组件和技术可以被实施。
神经架构和硬件架构搜索系统100是获得特定机器学习任务的训练数据102和验证数据104并且选择神经网络的网络架构150和神经网络要被部署在其上以使用训练数据102和验证数据104执行任务的硬件加速器的硬件架构160的系统。
通常,训练数据102和验证数据104都包括神经网络输入集合(也称为训练或验证示例),并且针对每个网络输入,包括应该由神经网络生成以执行特定任务的相应目标输出。训练数据102和验证数据104可以包括不同的神经网络输入集合,即,使得验证数据104可以被用于有效地测量已经在训练数据102上训练的神经网络在新输入上的表现如何。
系统100可以以多种方式中的任何一种接收训练数据102和验证数据104。例如,系统100可以通过数据通信网络例如使用由系统100提供的应用编程接口(API)从系统的远程用户接收训练数据作为上传。然后系统100可以将接收到的训练数据随机划分为训练数据102和验证数据104。作为另一示例,系统100可以接收来自用户的输入,该输入指定系统100已经维护的哪些数据应该被用于训练神经网络。
系统100还例如从用户接收指定一个或多个搜索目标106的数据,该搜索目标106通常定义神经网络、硬件加速器或两者的期望性能要求或约束。几个示例搜索目标接下来被描述。
例如,搜索目标可以包括用于执行机器学习任务的目标准确性。例如,目标准确性可以通过在验证数据集合上计算训练的神经网络的损失或在验证数据集合上计算时模型准确性的一些其他度量的结果来评估。
作为另一示例,搜索目标可以包括用于在训练之后和推断——即,用于在架构已被确定之后处理特定任务的新输入——期间执行机器学习任务的目标时延。通常,目标时延是当部署在目标计算设备上时神经网络的目标时延。当神经网络被部署在目标计算设备上时,目标时延测量对一批次一个或多个示例执行推断——即,使用神经网络处理批次中的每个示例——所需的时间,例如以毫秒为单位。
作为再一示例,搜索目标可以包括对支持神经网络操作的底层硬件加速器的配置或设计的约束。示例硬件配置或设计约束可以包括硬件加速器的面积、硬件加速器的功率(或能量)消耗等。
在一些实施方式中,这种搜索目标可以被象征性地表示为:
Latency(α,h)≤Tlatency,Area(h)≤Tarea
其中指示任务的目标函数,并且wα表示架构α的权重。硬件参数被表示为h,并且训练集合和评估集合被分别表示为/>和/>Tlatency是训练后的神经网络在执行任务时的目标运行时间时延,并且Tarea是目标硬件加速器面积,这两者都可以在搜索目标数据中指定。
因此,使用下面描述的技术,系统100可以有效地确定(i)被配置为执行机器学习任务的神经网络的架构和(ii)神经网络将被部署在其上的硬件加速器的硬件架构,同时满足一个或多个搜索目标。
作为具体示例,系统100可以确定神经网络的特定架构,当被部署在具有由系统确定的架构并且具有不大于最大允许硬件面积的面积的特定硬件加速器上时,该神经网络可以被配置为以可接受的准确性(例如以近似等于目标准确性的准确性)执行特定机器学习任务,同时具有不大于最大允许时延的运行时间时延。在该示例中,最大允许硬件面积、目标准确性和最大允许时延都可以在搜索目标数据106中指定。
然后,系统100使用训练集合102、验证数据104和搜索目标数据106,通过搜索由候选神经网络架构的空间和候选硬件加速器架构的空间组成的联合搜索空间来确定神经网络架构和硬件加速器架构。
通常,神经网络的架构定义了神经网络中的层数、由层中的每层执行的操作以及神经网络中的层之间的连接性,即,哪些层从神经网络中的哪些其他层接收输入。
具体地,候选神经网络架构的搜索空间可以由超参数的集合的可能值来定义,即,可以包括超参数的集合,每个超参数可以具有预定的可能值的集合。超参数的所选值可以在神经网络的训练开始之前设置,并且可以影响由神经网络执行的操作。总体而言,超参数的所选值可以定义神经网络的架构。
神经架构搜索空间和定义这些搜索空间的对应超参数的集合的一些示例接下来被描述。
例如,搜索空间可以专门为移动边缘处理器构建,并且基于包括反向瓶颈层堆叠的基础架构MobilenetV2。该示例中的神经架构搜索空间可以包括高效的神经网络组件(诸如移动反向瓶颈卷积(MBConv)层),每个所述高效的神经网络组件继而包括一个或多个反向残差层、一个或多个线性瓶颈层和一个或多个卷积层(例如一个或多个逐深度可分离卷积层)。然后,可搜索的超参数可以包括与逐深度可分离卷积层、反向残差层或线性瓶颈层相关联的相应超参数。具体地,可搜索的超参数可以包括每个反向瓶颈卷积层的内核大小和扩展比。例如,内核大小的值可以从可能的整数值的集合{3,5,7}中选择,并且扩展比可以从可能的整数值的集合{1,3,6}中选择。MobilenetV2搜索空间在Sandler,M.,et al.“MobileNetV2:Inverted Residuals and Linear Bottlenecks.”arXiv preprint arXiv:1801.04381(2019)(Sandler,M.等人于2019年在arVix预印本arXiv:1801.04381上发表的“MobileNetV2:反向残差和线性瓶颈”)中更详细地描述,其全部内容通过引用全部并入本文。
作为另一示例,搜索空间可以基于标准的EfficientNet-B0基础架构来构建,该EfficientNet-B0基础架构包括反向残差块的堆叠。EfficientNet搜索空间可以用比MobilenetV2搜索空间更大的基数来构建,以便更好地利用通常具有更大数量的计算单元和存储器容量的现代边缘加速器。类似地,EfficientNet-B0搜索空间中的可搜索超参数可以包括每个残差块的内核大小和扩展比。EfficientNet搜索空间在Tan,M.,et al.“EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks.”arXiv preprint arXiv:1905.11946(2019)(Tan,M.等人于2019年在arVix预印本arXiv:1905.11946上发表的“EfficientNet:卷积神经网络的重新思考模型缩放”)中更详细地描述,其全部内容通过引用全部并入本文。
候选硬件加速器架构的搜索空间可以由可搜索硬件参数的集合的可能值来定义。示例硬件参数可以包括与给定硬件加速器(例如工业标准的高度参数化边缘加速器)相关联的计算单元的数量、并行量、计算与存储器比、带宽等,它共同指定包括硬件加速器的对应计算特性的硬件架构。每个硬件参数通常与一个或多个值相关联,例如整数或浮点值,这些值可以从硬件参数的可能值的集合中选择。
硬件搜索空间以及定义这些搜索空间的对应硬件参数的集合的示例在下面的表1中描述。
下面的表1示出了示例候选架构设计空间,其中“PE”是指能够在单指令多数据(SIMD)范式中执行矩阵乘法的处理元件,例如“PEs_in_x_dimension”是指沿着硬件加速器的水平维度的处理元件的数量。通常,每个维度中PE的数量可以定义硬件加速器的纵横比。在每个PE中,可以有共享本地存储器的多个计算通道,并且每个通道可以具有一个寄存器文件和一系列SIMD式乘法累加(MAC)计算单元。
参数 | 类型 | 搜索空间 | 参数 | 类型 | 搜索空间 |
PEs_in_x_dimension | int | 1、2、4、6、8 | local_memory_MB | int | 0.5、1、2、3、4 |
PEs_in_y_dimension | int | 1、2、4、6、8 | compute_lanes | int | 1、2、4、8 |
SIMD_units | int | 16、32、64、128 | io_bandwidth_gbps | float | 5、10、15、20、25 |
register_file_KB | int | 8、16、32、64、128 |
表1
具体地,在该示例中,可搜索的硬件参数可以包括以下一项或多项:硬件加速器的带宽、硬件加速器中所包括的处理元件的数量、处理元件在硬件加速器上的布局、每个处理元件中的单指令多数据(SIMD)式乘法累加(MAC)的数量、每个处理元件中的计算通道的数量、每个处理元件中的共享存储器的大小或每个处理元件中的寄存器文件的大小。
虽然总共三个示例搜索空间(两个用于神经网络架构并且一个用于硬件加速器架构)现在已被描述,但是应该理解,所描述的技术可以被用于搜索由超参数或参数或其他可调谐变量的集合的可能值定义的任何搜索空间。例如,不同的神经网络架构搜索空间可以具有由不同种类的操作组成的层,例如不同种类的残差块或不同种类的卷积操作,例如扩张卷积、空间卷积等。类似地,不同的硬件加速器架构搜索空间可以具有执行不同操作或供应不同资源的硬件组件,例如不同种类的存储器,例如PE存储器、核心存储器、参数存储器等。
在一些实施方式中,联合搜索空间中的每个候选神经网络架构具有参数的共享集合的不同子集,并且在搜索过程期间,参数的共享集合的相应值由系统联合更新。这可以提高搜索效率,从而节省确定最终神经网络架构和最终硬件加速器架构所需的计算资源(例如在处理周期方面)。
具体地,在这些实施方式中,每个候选神经网络架构都执行操作的集合,这些操作使用模型参数的共享集合的不同子集。每个候选神经网络架构具有的子集由对应的决策值的集合定义,该决策值的集合包括多个第一分类决策中的每个分类决策的相应决策值。换言之,第一分类决策的决策值指定哪些操作由候选神经网络架构执行,并相应地指定来自共享集合的哪些模型参数由神经网络架构使用。
例如,第一分类决策的可能值定义了神经网络的架构的一个或多个方面,未由第一分类决策定义的任何方面都是固定的,即,针对候选神经网络架构空间中的所有架构都相同。第一分类决策可以包括多种不同类型的分类决策,每个分类决策对应于神经网络中的相应点。
作为一个示例,第一分类决策可以包括确定神经网络中的对应层(或其他操作)是被跳过还是被包括在神经网络架构中的二元决策。作为另一示例,第一分类决策可以包括指定在神经网络中的给定点处执行来自对应操作集合的哪个或哪些操作的决策。例如,第一分类决策可以指定架构中的给定层是否是卷积层、反向瓶颈层等。作为另一示例,第一分类决策可以指定不同卷积集合中的哪个卷积被执行,例如通过指定卷积神经网络中的卷积层的滤波器的空间大小。
在一些实施方式中,每个候选硬件加速器架构具有由硬件参数的集合定义的硬件特性的集合。每个候选硬件加速器架构具有的硬件参数的集合由对应的决策值的集合定义,该决策值的集合包括第二多个分类决策中的每个分类决策的相应决策值。换言之,硬件加速器分类决策的决策值指定候选硬件加速器架构应该具有哪些硬件特性。
例如,第二分类决策的可能值定义了硬件加速器的硬件特性的一个或多个方面。
神经架构和硬件架构搜索系统100通过使用控制器策略110、训练引擎120和控制器策略调整引擎130自动搜索联合搜索空间来确定神经网络架构150和硬件加速器架构160。
控制器策略110通常被实施为软件,该软件可配置为生成策略输出,该策略输出包括超参数的集合的值和硬件参数的集合的值,所述超参数的集合的值共同定义神经网络的可能架构,所述硬件参数的集合的值共同定义硬件加速器的可能架构。例如,软件具有可调整的设置,用于为不同的超参数或硬件参数生成不同的值。
在一些实施方式中,控制器策略110可以被实施为神经网络,下面称为“控制器神经网络”。控制器神经网络是具有参数(在本说明书中被称为“控制器网络参数”)的神经网络,并且被配置为根据控制器网络参数生成输出序列112。由控制器神经网络生成的每个输出序列112定义了候选神经网络(下面称为“子神经网络”)的相应的可能架构和候选硬件加速器的相应的可能架构。
在这些实施方式中的一些实施方式中,每个输出序列112包括在多个时间步长中的每个时间步长处的相应输出,并且输出序列中的每个时间步长对应于子神经网络架构的不同超参数或硬件加速器架构的不同硬件参数。因此,每个输出序列112在每个时间步长处包括对应的超参数的相应值或对应的硬件参数的相应值。总体而言,给定输出序列中的超参数的值定义了子神经网络的架构,而给定输出序列中的硬件参数的值定义了硬件加速器的架构。
备选地,在一些其他实施方式中,控制器策略可以包括控制器策略参数的集合,这些控制器策略参数为神经网络架构的每个超参数(或硬件加速器架构的硬件参数)定义超参数(或者硬件参数)的可能值上的相应概率分布。然后,系统100可以使用控制器策略参数来选择候选神经网络架构和候选硬件加速器架构。在这些实施方式中的一些实施方式中,每个输出序列112可以包括由系统100根据概率分布从可能值采样的超参数和硬件参数的相应值。
在又其他实施方式中,控制器策略110可以包括控制器策略参数的集合,这些控制器策略参数定义第一多个分类决策和第二多个分类决策中的每个分类决策的相应概率分布,并且系统100可以使用控制器策略参数来选择候选神经网络架构和候选硬件加速器架构。即,在这些实施方式中,候选神经网络架构和候选硬件加速器架构由从使用控制器策略参数生成的概率分布采样的决策值的集合来定义。在这些实施方式中的一些实施方式中,每个输出序列112替代地包括用于第一多个分类决策和第二多个分类决策中的每个分类决策的决策值的集合。
在搜索过程期间,系统100通过使用控制器策略调整引擎130重复调整控制器策略110来确定子神经网络的架构和硬件加速器的架构,使得控制器策略110可以提出满足一个或多个搜索目标106的神经网络架构和硬件加速器架构。
在控制器策略110被实施为控制器神经网络的一些实施方式中,系统可以通过调整控制器网络参数的值来实现这一点。具体地,在训练程序的迭代期间,系统100根据控制器网络参数的当前值使用控制器神经网络生成序列112的批次。针对批次中的每个输出序列112,训练引擎120在训练数据102上训练具有由输出序列定义的架构的子神经网络的实例,并且在验证集合104上评估训练实例的性能。针对批次中的每个输出序列112,系统100还例如通过使用适当的计算机架构模拟工具或技术来评估在支持子神经网络的操作上硬件加速器的性能。控制器策略调整引擎130然后使用评估结果(即,神经网络性能指标122和加速器性能指标124),以使批次中的输出序列112更新控制器网络参数的当前值,以提高由控制器神经网络生成的输出序列定义的神经网络架构和硬件加速器架构对任务的预期性能。
备选地,在控制器策略110包括控制器策略参数的集合的一些其他实施方式中,该控制器策略参数的集合定义候选神经网络的每个超参数和候选硬件加速器的每个硬件参数的可能值上的相应分布(或为第一多个分类决策和第二多个分类决策中的每个分类决策定义相应的概率分布),控制器策略调整引擎130可以通过强化学习来更新控制器策略110以最大化奖励函数,该奖励函数取决于候选神经网络架构和候选硬件加速器架构的神经网络性能指标122和加速器性能指标124,它们分别由从使用控制器策略参数生成的概率分布中采样的超参数和硬件参数(或决策值的集合)的相应值定义。在这些实施方式中的一些实施方式中,训练引擎120联合更新模型参数的共享集合,以优化目标函数,该目标函数测量候选神经网络架构的特定机器学习任务的性能。
通过重复更新控制器策略110,系统100可以鼓励控制器策略110生成输出序列,该输出序列导致在被部署在具有提高的硬件加速器性能的硬件加速器上时,子神经网络具有对特定任务的提高的神经网络性能,例如以最大化具有由控制器策略110提出的神经网络架构的神经网络的验证集合104上的预期准确性,同时最小化神经网络的运行时间时延并且最小化具有由控制器策略110提出的神经网络架构的硬件加速器的面积。
图4是联合确定神经网络的神经架构和硬件加速器的硬件架构的图示。具体地,图4图示了确定神经网络的特定架构的示例,当被部署在具有由系统确定的架构的特定硬件加速器上时,该神经网络可以被配置为以可接受的准确性和可接受的运行时间时延来执行特定的机器学习任务。
如所图示的,在每次迭代时,控制器策略410生成策略输出,该策略输出包括共同定义神经网络412的可能架构的超参数的集合的值和共同定义硬件加速器414的可能架构的硬件参数的集合的值。训练引擎420在训练数据上训练具有由策略输出定义的架构412的子神经网络的实例,并且在验证集合上评估的训练实例的性能。加速器性能估计器430模拟硬件加速器的实例,以模拟在硬件加速器上部署子神经网络以确定估计时延的效果。然后,控制器策略调整引擎440使用评估的结果(即,准确性和时延)来更新控制器策略410,以提高由控制器策略410在下一迭代中生成的策略输出所定义的新神经网络架构和新硬件加速器架构的性能。
在控制器策略110已被更新之后,例如一旦控制器神经网络已被训练,系统100就可以分别选择最满足搜索目标106的神经网络架构和硬件加速器架构作为子神经网络的最终架构和硬件加速器的最终架构。替代地或另外,系统100可以通过例如根据控制器网络参数的训练值使用更新的控制器策略110来生成新输出序列,并且分别使用由新输出序列定义的神经网络架构和硬件加速器架构作为子神经网络的最终架构和硬件加速器的最终架构。
然后,神经架构和硬件架构搜索系统100可以生成(i)指定子神经网络的架构的神经网络架构数据150,例如指定作为子神经网络的一部分的层、层之间的连接性以及由层执行的操作的数据,以及(ii)指定硬件加速器的架构的硬件加速器架构数据160,例如指定处理元件在硬件加速器上的布局、计算通道的数量和本地存储器的大小的数据来作为输出。
例如,神经网络和硬件架构搜索系统100可以向提供搜索目标106的用户输出神经网络架构数据150和硬件加速器架构数据160。作为另一示例,系统100可以例如通过有线或无线网络将硬件加速器架构数据输出到容纳半导体制造设备的半导体制造设施,该半导体制造设备可以被用于制造具有最终硬件架构的硬件加速器。在一些情况下,输出数据还包括来自具有该架构的子神经网络的训练实例的训练的子神经网络的参数的训练值。
在一些实施方式中,代替或除了输出神经网络架构数据150和硬件加速器架构数据160之外,系统100训练具有所确定架构的神经网络的实例,例如从头开始或者微调作为训练具有该架构的子神经网络的实例的结果而生成的参数值,然后使用训练后的神经网络来处理由用户接收(例如通过系统提供的API)的请求。即,系统100可以接收待处理的输入,使用训练后的子神经网络来处理输入,并且响应于接收到的输入提供由训练后的神经网络生成的输出或从生成的输出得出的数据。
在一些实施方式中,系统100可以被包括为用于设计和/或分析集成电路的软件工具(例如电子设计自动化(EDA)工具)的一部分,然后硬件加速器架构数据可以被提供给该工具的另一组件,以在硬件加速器被制造之前进行进一步细化或评估。
在控制器策略被实施为控制器神经网络的实施方式中,系统100可以以分布式方式训练控制器神经网络。即,系统100包括控制器神经网络的多个副本。在训练被分布的这些实施方式中的一些实施方式中,每个副本具有为副本输出的输出序列的批次生成性能指标的专用训练引擎以及使用性能指标确定对控制器网络参数的更新的专用控制器策略调整引擎。一旦控制器策略调整引擎已确定了更新,控制器策略调整引擎就可以将更新传输给所有控制器策略调整引擎都可访问的中央策略调整服务器。中央策略调整服务器可以更新由服务器维护的控制器网络参数的值,并且将更新值发送给控制器策略调整引擎。在一些情况下,多个副本中的每个副本及其对应的训练引擎和策略调整引擎都可以与每个其他训练引擎和策略调整引擎集异步操作。
图2是用于更新控制器策略的示例过程200的流程图。为了方便起见,过程200将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,适当编程的系统(例如图1的神经架构和硬件架构搜索系统100)可以执行过程200。
系统可以重复执行过程200以迭代地确定控制器策略的更新。
系统使用控制器策略生成一批次的一个或多个输出序列(步骤202)。批次中的每个输出序列定义(i)被配置为执行特定机器学习任务的子神经网络的相应架构和(ii)子神经网络的训练实例要被实施在其上的硬件加速器的相应架构。
取决于控制器策略的详情,系统可以以各种方式中的任何一种生成每个输出序列。例如,当生成输出序列时,系统可以首先生成子神经网络的相应超参数值,然后生成硬件加速器的相应硬件参数值。即,输出序列可以包括在第一多个时间步长中的每个时间步长处的子神经网络的相应超参数的值以及在第二多个时间步长的每个时间步长处的硬件加速器的相应硬件参数的值,该第二多个时间步长在第一多个时间步长中的最后一个时间步长之后。作为另一示例,系统可以首先生成硬件加速器的相应硬件参数值,然后生成子神经网络的相应超参数值。作为再一示例,该系统可以以交织方式生成子神经网络的相应超参数值和硬件加速器的相应硬件参数值。
在一些实施方式中,控制器策略可以被实施为控制器神经网络。在一些这种实施方式中,神经网络可以是包括一个或多个循环神经网络层的循环神经网络,这些循环神经网络层被配置为针对每个时间步长接收对应于给定输出序列中的前一时间步长的超参数(或硬件参数)的值作为输入,并且处理该输入以更新循环神经网络的当前隐藏状态。例如,控制器神经网络中的循环层可以是长短期记忆(LSTM)层或门控循环单元(GRU)层。
因此,为了生成输出序列中的给定时间步长的超参数(或硬件参数)值,系统向控制器神经网络提供在输出序列中的前一时间步长处的超参数(或硬件参数)的值作为输入,并且控制器神经网络生成该时间步长的输出,该输出定义时间步长处的超参数(或硬件参数)的可能值上的分数分布。该系统可以通过使用控制器神经网络的输出层来生成分数分布,该输出层可以被配置为softmax层。针对输出序列中的第一时间步长,因为没有前一时间步长,所以系统可以替代地提供预定的占位符输入。然后系统根据分数分布从可能值采样,以确定输出序列中的时间步长处的超参数(或硬件参数)的值。给定超参数(或硬件参数)可以采用的可能值在训练之前是固定的,并且针对不同的超参数(或者硬件参数),可能值的数量可以是不同的。
在批次包括多于一个输出序列(例如八个、十六个、三十二个或六十四个序列)的情况下,因为系统在生成输出序列中的每个超参数(或硬件参数)值时从分数分布采样,批次中的序列将通常是不同的,即使它们每一个是根据相同的控制器参数值生成的。
在一些其他实施方式中,代替被配置为神经网络,控制器策略可以包括控制器策略参数的集合,这些控制器策略参数为神经网络架构的每个超参数(或硬件加速器架构的硬件参数)定义超参数(或者硬件参数)的可能值上的相应概率分布。为了生成一批次的每个定义(i)子神经网络的相应架构和(ii)硬件加速器的相应架构的一个或多个输出序列,系统然后根据概率分布从可能值重复采样,以确定要被包括在输出序列中的超参数(或硬件参数)的相应值。
针对批次中的每个输出序列,系统训练具有由输出序列定义的架构的子神经网络的相应实例,以执行特定的机器学习任务(步骤204)。即,针对批次中的每个输出序列,系统实例化具有由输出序列定义的架构的神经网络,并且在接收到的训练数据上训练实例,以使用适合于该任务的常规机器学习训练技术(例如具有反向传播的随机梯度下降或通过时间的反向传播)来执行特定机器学习任务。在一些实施方式中,系统并行化子神经网络的训练,以减少控制器神经网络的总训练时间。该系统可以在指定的时间量或指定的训练迭代次数内训练每个子神经网络。
针对批次中的每个输出序列,系统评估子神经网络的训练实例对特定机器学习任务的网络性能,以确定子神经网络的训练实例对特定机器学任务的网络性能指标(步骤206)。例如,性能指标可以是通过适当的准确性度量测量的验证集合上的训练实例的准确性。例如,当输出是序列时,准确性可以是困惑度度量,或者当任务是归类任务时,准确性可以是交叉熵误差率。作为另一示例,性能指标可以是实例训练的最后两个、五个或十个轮中的每个轮的实例准确性的平均值或最大值。
另外,针对批次中的每个输出序列,系统评估具有由输出序列定义的架构的硬件加速器的相应实例的加速器性能,以确定硬件加速器的实例的加速器性能指标(步骤208)。性能指标测量在支持具有由输出序列对特定机器学习任务定义的架构的子神经网络的训练实例的操作上硬件加速器的实例的性能。
在一些实施方式中,为了评估硬件加速器性能,适合于评估硬件设计替代方案的各种工具可以被使用。这种工具的一个示例是周期准确性能模拟器。该系统可以使用周期准确性能模拟器以及例如模拟数据来确定当被部署在硬件加速器的(模拟)实例上时在执行特定机器学习任务上的神经网络的估计时延(例如以毫秒为单位),该模拟数据指定(i)子神经网络的相应架构和(ii)由输出序列定义的硬件加速器的相应架构。
这种工具的另一示例是分析面积估计器。系统可以使用分析面积估计器以及例如模拟数据来确定硬件加速器的实例的估计面积(例如以平方毫米为单位),该模拟数据指定由一批次输出序列定义的硬件加速器的相应架构。
在一些其他实施方式中,各种基于机器学习的技术可以被替代地用于确定加速器性能指标。与通常需要长达一小时或更长的时间来评估具有所提出的硬件架构的单个硬件加速器的性能的昂贵的模拟器不同,基于机器学习的技术(诸如神经网络)在用于确定性能指标时通常要快得多,并且资源效率更高。
例如,系统可以使用神经网络(例如前馈神经网络),该神经网络被配置为接收指定硬件加速器的相应架构的数据以及在一些情况下的指定子神经网络的相应架构的数据作为输入,并且根据神经网络的参数的当前值来处理输入,以生成硬件加速器的面积预测作为输出。作为另一示例,系统可以使用另一神经网络来生成神经网络的模型准确性的预测,或者生成部署在硬件加速器上的神经网络的时延的预测。为了确保神经网络可以有效地预测性能指标,神经网络可以通过对使用上述模拟器生成的标记训练数据使用监督训练技术来训练。
系统使用(i)子神经网络的训练实例的网络性能指标和(ii)硬件加速器的实例的加速器性能指标来调整控制器策略(步骤210)。
通常,系统以可以鼓励控制器策略生成输出序列的方式调整控制器策略,该输出序列导致子神经网络和硬件加速器架构都具有增加的性能指标。然而,在一些情况下,取决于考虑到搜索目标的联合搜索的实际进度,系统可以调整联合搜索的即时焦点,例如通过在特定神经网络任务上固定子神经网络的训练实例的网络性能指标,并且仅使用所确定的硬件加速器的实例的加速器性能指标来调整控制器策略。
在控制器策略被实施为被配置为循环神经网络的控制器神经网络的一些实施方式中,系统通过使用强化学习技术训练控制器神经网络来调整当前控制器参数值。更具体地,该系统训练控制器神经网络以生成输出序列,该输出序列最大化基于训练后的神经网络实例的网络性能指标和硬件加速器的加速器性能指标确定的接收的奖励。
具体地,给定输出序列的奖励是网络性能指标和加速器性能指标的函数。例如,奖励可以通过分别取决于神经网络准确性、运行时间时延和硬件加速器面积的不同奖励项的组合(例如乘积)来计算。即,该系统训练控制器神经网络以生成输出序列,该输出序列最大化:
其中w0、w1是权重因子:
并且其中,α是定义神经网络架构的超参数,并且h是定义硬件加速器架构的硬件参数,并且Tlatency是训练后的子神经网络在执行任务时的目标运行时间时延,并且Tarea是目标硬件加速器面积,这两者都可以在搜索目标数据中指定。
在该示例中,在搜索期间,系统可以对时延、面积或两者施加软约束,例如通过将p和q设置为都具有非零值,例如-0.071。相反,为了施加硬约束,例如为了对时延施加硬约束,系统可以设置p=0和q=-1,其中,只要估计的时延满足(例如不大于)目标时延,系统主要使用准确性作为搜索目标,并且仅在时延约束被违反的情况下才显著降低奖励。
在这些实施方式中的一些实施方式中,系统训练控制器神经网络,即,从控制器网络参数的初始值确定控制器网络参数的训练值,以使用策略梯度技术最大化预期奖励。例如,策略梯度技术可以是增强技术或近端策略优化(PPO)技术。
在控制器策略包括控制器策略参数的集合的一些其他实施方式中,该控制器策略参数为神经网络架构的每个超参数(或硬件加速器架构的硬件参数)定义超参数(或者硬件参数)的可能值上的相应概率分布,系统可以通过使用策略梯度技术类似地调整控制器策略参数的集合的当前值。
图3是用于通过联合更新控制器策略参数的集合和共享参数的集合来选择神经网络的架构和硬件加速器的架构的示例过程300的流程图。为了方便起见,过程300将被描述为由位于一个或多个位置中的一个或多个计算机的系统执行。例如,适当编程的系统(例如图1的神经架构和硬件架构搜索系统100)可以执行过程300。
系统接收数据,该数据指定用于执行特定机器学习任务的神经网络要被部署在其上的硬件加速器的一个或多个目标硬件约束(步骤302)。例如,接收到的数据可以指定硬件加速器的目标面积或功耗。作为另一示例,接收到的数据可以指定当被部署在硬件加速器上时由神经网络执行特定机器学习任务的目标时延。例如,目标时延可以是当部署在硬件加速器上时通过训练后的神经网络处理单个输入或一批多个输入所需的时间的度量。
系统接收用于特定机器学习任务的训练数据和验证数据(步骤304)。
系统然后执行以下步骤306至310,以使用训练数据和验证数据从候选网络架构空间中选择用于执行特定机器学习任务的神经网络的网络架构。另外,系统执行以下步骤306至310,以从候选硬件架构空间中选择执行特定机器学习任务的神经网络要被部署在其上的硬件加速器的硬件架构。
如上所述,候选网络架构空间和候选硬件架构空间都可以是更大的联合搜索空间的一部分。空间中的每个候选神经网络架构由对应的决策值的集合定义,该决策值的集合包括第一多个分类决策中的每个分类决策的相应决策值。类似地,空间中的每个候选硬件加速器架构由对应的决策值的集合定义,该决策值的集合包括第二多个分类决策中的每个分类决策的相应决策值。
在图3的示例中,系统使用控制器策略,该控制器策略继而包括多个控制器策略参数,以根据控制器策略参数的当前值为第一多个分类决策和第二多个分类决策中的每个分类决策生成相应的概率分布。具体地,针对每个分类决策,控制器策略参数可以包括该决策的每个可能决策值的相应参数。该系统可以通过将softmax函数应用于给定决策的可能决策值中的每个可能决策值的相应参数的当前值来生成给定分类决策的概率分布。例如,为了为第一多个分类决策和第二多个分类决策中的每个分类决策选择相应的决策值,系统可以针对每个分类决策从分类决策的概率分布中采样决策值。
为了选择架构,系统联合更新(i)控制器策略参数的集合,所述控制器策略参数针对第一多个分类决策和第二多个分类决策中的每个分类决策定义分类决策的决策值上的相应概率分布,以及(ii)参数的共享集合(步骤306)。换言之,系统在联合更新的每次迭代中重复执行以下步骤308和310。步骤306至310的每次迭代可以从在前一迭代中确定的模型参数的共享集合的值开始。
通常,在联合更新期间,系统可以通过强化学习来更新控制器策略参数的集合,以最大化候选神经网络架构和硬件加速器架构的奖励函数,该候选神经网络架构和硬件加速器架构由从使用控制器策略参数生成的概率分布采样的决策值的集合定义(步骤308)。
例如,奖励函数可以包括测量(i)候选硬件加速器架构的估计质量和(ii)候选神经网络架构的估计质量的质量项以及基于候选网络架构的估计时延(或者估计功耗)与目标时延(或目标功耗)之间的比率的时延(或功耗)项。
系统可以使用验证数据来确定具有候选架构的神经网络的特定机器学习任务的估计质量,该候选架构具有由第一多个分类决策的所选决策值定义的模型参数的共享集合的子集。具体地,系统根据模型参数集的共享集合的当前值来确定估计质量。
作为特定示例,系统可以将估计质量确定为在来自验证数据的一批次多个验证示例上具有候选架构的神经网络的质量。即,系统可以使用具有候选架构的神经网络并且根据模型参数的共享集合的对应子集的当前值来处理批次中的每个验证输入,以生成预测输出,然后使用验证输入的目标输出计算预测输出的机器学习任务的准确性或其他适当的性能度量。
系统可以使用适当的计算机架构模拟工具或技术(诸如面积模拟器)确定候选硬件架构的估计质量,该候选硬件架构具有由第二多个分类决策的所选决策值定义的模型参数的共享集合的子集。
系统可以使用验证数据确定在执行具有候选架构的神经网络的特定机器学习任务时的估计时延(或功耗),该候选架构具有由分类决策的所选决策值定义的模型参数的共享集合的子集。
例如,当具有候选神经网络架构的神经网络被部署在具有候选硬件加速器架构的硬件加速器的实例上时,系统确定一批次验证示例中的每个示例的时延。即,系统可以使用部署在硬件加速器的实例上的具有候选架构的神经网络来处理批次中的每个验证输入,以生成预测输出,然后测量处理批次的时延。
作为另一示例,该系统可以使用计算机架构模拟器,该计算机架构模拟器模拟具有候选硬件加速器架构的硬件加速器的实例,以模拟在硬件加速器上部署神经网络的效果,以确定估计时延或估计功耗。
作为再一示例,该系统可以使用时延模拟神经网络和面积模拟神经网络来分别确定时延和面积的预测。神经网络可以在使用计算机架构模拟器生成的标记训练数据上进行训练。
然后,系统通过强化学习确定对控制器策略参数的更新,该更新基于候选硬件加速器架构的估计质量、候选神经网络架构的估计质量和估计时延来改进奖励函数。具体地,系统可以对计算的奖励(即,奖励函数的输出)执行策略梯度强化学习算法(例如增强算法)的更新步骤,以获得估计质量和估计时延以确定对控制器策略参数的更新。
在联合更新期间,系统还更新模型参数的共享集合以优化目标函数,该目标函数测量由决策值的集合定义的候选神经网络架构的特定机器学习任务的性能,该决策值的集合从使用第一多个分类决策的控制器策略参数生成的概率分布采样(步骤310)。
例如,系统可以从训练数据中采样一批次训练示例,并且使用适当的深度学习算法(例如随机梯度下降)对采样的批次执行训练步骤,以计算梯度更新,即,相对于模型参数子集计算目标函数的梯度,然后对子集的当前值应用梯度更新。
在联合更新之后,系统选择候选神经网络架构作为用于执行特定机器学习任务的神经网络的神经网络架构,该候选神经网络架构由第一多个分类决策中的每个分类决策的相应的特定决策值定义(步骤312)。
系统选择候选硬件加速器架构作为神经网络要被部署在其上的硬件加速器的硬件加速器架构,该候选硬件加速器架构由第二多个分类决策中的每个分类决策的相应的特定决策值定义(步骤314)。
例如,通过针对第一多个分类决策或第二多个分类决策中的每个分类决策,选择在分类决策的概率分布中具有最高概率的决策值(或等效地,具有最高的对应参数值的决策值)作为特定决策值,系统可以选择候选神经网络或硬件加速器架构。
本说明书与系统和计算机程序组件相结合使用术语“配置”。一个或多个计算机的系统被配置为执行特定操作或动作意味着该系统已经在其上安装了软件、固件、硬件或其组合,它在操作中使该系统执行操作或动作。一个或多个计算机程序被配置为执行特定操作或动作意味着一个或多个程序包括在由数据处理装置执行时使该装置执行操作或动作的指令。
本说明书中描述的主题和功能操作的实施例可以被实施在数字电子电路系统、有形实施的计算机软件或固件、计算机硬件(包括在本说明书中公开的结构及其结构等效物)或者它们中的一个或多个的组合中。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即,在有形的非瞬态存储介质上编码以由数据处理装置执行或者控制该数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行存取存储器设备或者它们中的一个或多个的组合。备选地或者另外,程序指令可以被编码在人工生成的传播信号(例如机器生成的电信号、光学信号或电磁信号)上,这些信号被生成以对用于传输至合适的接收器装置供数据处理装置执行的信息进行编码。
术语“数据处理装置”是指数据处理硬件,并且涵盖了用于处理数据的所有种类的装置、设备和机器,通过示例包括可编程处理器、计算机或者多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路系统,例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
计算机程序(这也可以被称为或者描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言或者陈述性语言或程序语言)来编写;并且它可以按照任何形式(包括作为独立式程序或者作为模块、组件、子例程或适合用于计算环境的其他单元)来部署。程序可以但不必与文件系统中的文件相对应。程序可以被存储在保持其他程序或数据(例如存储在标记语言文档中的一个或多个脚本)的文件的一部分中,或者存储在专用于探讨中的程序的单个文件中,或者存储在多个协作文件(例如存储一个或多个模块、子程序或者部分代码的文件)中。计算机程序可以被部署为在一个计算机上执行或者在位于一个站点处或分布在多个站点上并且通过数据通信网络互连的多个计算机上执行。
在本说明书中,术语“数据库”被广泛地用于指代任何数据集合:数据不需要以任何特定方式构造或者根本不需要构造,并且它可以被存储在一个或多个位置中的存储设备上。因此,例如索引数据库可以包括多个数据集合,每个数据集合可以以不同的方式组织和访问。
类似地,在本说明书中,术语“引擎”被广泛地用于指代被编程为执行一个或多个具体功能的基于软件的系统、子系统或过程。通常,引擎将被实施为安装在一个或多个位置中的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,多个引擎可以在相同的一个或多个计算机上安装和运行。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,该一个或多个可编程计算机执行一个或多个计算机程序以通过操作输入数据并且生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路系统(例如FPGA或ASIC)或者专用逻辑电路系统和一个或多个编程计算机的组合执行。
适合执行计算机程序的计算机可以基于通用或专用的微处理器或者两者或者任何其他种类的中央处理单元。通常,中央处理单元将接收来自只读存储器或者随机存取存储器或者两者的指令和数据。计算机的必要元件是用于执行或实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路系统补充或者被并入到该专用逻辑电路系统中。通常,计算机还将包括用于存储数据的一个或多个海量存储设备(例如磁盘、磁光盘或者光盘),或者计算机被可操作地耦合以接收来自该海量存储设备的数据或者将数据传送给该海量存储设备或者进行两者。然而,计算机不需要具有这种设备。而且,计算机可以被嵌入到另一设备中,例如仅举数例,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或者便携式存储设备(例如通用串行总线(USB)闪存驱动器)。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,通过示例包括半导体存储器设备(例如EPROM、EEPROM和闪存设备);磁盘(例如内部硬盘或者可移除盘);磁光盘;以及CD ROM盘和DVD-ROM盘。
为了提供与用户的交互,本说明书中描述的主题的实施例可以被实施在计算机上,该计算机具有:用于向用户显示信息的显示设备,例如CRT(阴极射线管)或者LCD(液晶显示器)监测器;以及键盘和指向设备,例如鼠标或者轨迹球,用户可以通过该键盘和该指向设备来将输入提供给计算机。其他种类的设备也可以被用于提供与用户的交互;例如提供给用户的反馈可以是任何形式的传感反馈,例如视觉反馈、听觉反馈或者触觉反馈;并且来自用户的输入可以以任何形式(包括声学输入、语音输入或者触觉输入)来接收。另外,计算机可以通过将文档发送给用户所使用的设备并且接收来自该设备的文档;例如通过响应于从web浏览器接收的请求来将网页发送给用户的设备上的web浏览器来与用户交互。而且,计算机可以通过将文本消息或其他形式的消息发送给运行消息收发应用的个人设备(例如智能手机)并且接收来自用户的响应消息作为回应来与用户交互。
用于实施机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产(即,推断、工作负载)的常见的计算密集型部分。
机器学习模型可以使用机器学习框架来实施和部署,例如TensorFlow框架、微软认知工具包框架、Apache Singa框架或Apache MXNet框架。
本说明书中描述的主题的实施例可以被实施在包括后端组件的计算系统(例如作为数据服务器)、或者包括中间件组件的计算系统(例如应用服务器)、或者包括前端组件的计算系统(例如具有图形用户界面、web浏览器或应用的客户端计算机,用户可以通过该图形用户界面、该web浏览器或该应用来与本说明书中描述的主题的实施方式交互)、或者包括一个或多个这种后端组件、中间件组件或前端组件的任何组合的计算系统中。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常远离彼此,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生。在一些实施例中,服务器将数据(例如HTML页面)传输给用户设备,例如以向与设备交互的用户显示数据并且接收来自该用户的用户输入,该设备充当客户端。在用户设备处生成的数据(例如用户交互的结果)可以在服务器处从该设备接收。
虽然本说明书包含了许多具体实施细节,但是这些细节不应该被解释为对任何发明的范围或者可能被要求保护的内容的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征还可以组合地被实施在单个实施例中。相反,在单个实施例的上下文中描述的各种特征也可以单独地或者按照任何合适的子组合被实施在多个实施例中。而且,虽然特征在上面可以被描述为以某些组合的方式起作用,甚至描述为最初要求这样,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中切除,并且所要求保护的组合可以涉及子组合或者子组合的变化。
类似地,虽然操作按照特定顺序在附图中描绘并且在权利要求中叙述,但是这不应该被理解为需要这种操作按照所示的特定顺序或者按照相继顺序来执行,或者所有图示的操作被执行以实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。而且,在上述实施例中的各种系统模块和组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以被一起集成在单个软件产品中或者封装到多个软件产品中。
本主题的特定实施例已被描述。其他实施例在以下权利要求的范围内。例如,在权利要求中叙述的动作可以按照不同的顺序来执行,并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在一些情况下,多任务处理和并行处理可能是有利的。
Claims (28)
1.一种方法,包括:
使用控制器策略,生成一批次的一个或多个输出序列,所述批次中的每个输出序列定义(i)被配置为执行特定神经网络任务的子神经网络的相应架构以及(ii)硬件加速器的相应架构,所述子神经网络的训练实例要在所述硬件加速器上实施;
针对所述批次中的每个输出序列:
训练具有由该输出序列定义的所述架构的所述子神经网络的相应实例,以执行所述特定神经网络任务;
评估所述子神经网络的所述训练实例对于所述特定神经网络任务的网络性能,以确定所述子神经网络的所述训练实例对于所述特定神经网络任务的网络性能指标;以及
评估具有由该输出序列定义的所述架构的所述硬件加速器的相应实例的加速器性能,以确定所述硬件加速器的所述实例对于支持具有由该输出序列对于所述特定神经网络任务定义的所述架构的所述子神经网络的所述训练实例的性能的加速器性能指标;以及
使用(i)所述子神经网络的所述训练实例的所述网络性能指标和(ii)所述硬件加速器的所述实例的所述加速器性能指标来调整所述控制器策略。
2.根据权利要求1所述的方法,其中:
所述控制器策略使用具有多个控制器网络参数的控制器神经网络来实施;并且
调整所述控制器策略包括调整所述多个控制器网络参数的当前值。
3.根据也从属于权利要求2时的前述权利要求中任一项所述的方法,其中,使用(i)所述子神经网络的训练实例的所述网络性能指标和(ii)所述硬件加速器的实例的所述加速器性能指标来调整所述控制器策略包括:
使用增强学习技术,训练所述控制器神经网络以生成输出序列,所述输出序列导致子神经网络具有增加的网络性能指标并且硬件加速器具有增加的加速器性能指标。
4.根据权利要求3中任一项所述的方法,其中:
所述增强学习技术是近端策略优化(PPO)技术。
5.根据权利要求1至4中任一项所述的方法,其中,每个输出序列包括在第一多个时间步长中的每个时间步长处的所述子神经网络的相应超参数的值。
6.根据权利要求1至5中任一项所述的方法,其中,每个输出序列包括在第二多个时间步长中的每个时间步长处的所述硬件加速器的相应硬件参数的值。
7.根据也从属于权利要求2时的前述权利要求中任一项所述的方法,其中,所述控制器神经网络是循环神经网络,所述循环神经网络包括:
一个或多个循环神经网络层,所述一个或多个循环神经网络层被配置为针对给定输出序列在每个时间步长处:
接收所述给定输出序列中的前一时间步长处的超参数或硬件参数的值作为输入,并且处理所述输入以更新所述循环神经网络的当前隐藏状态;以及
每个时间步长的相应输出层,其中,每个输出层被配置为针对所述给定输出序列:
接收包括该时间步长处的所更新的隐藏状态的输出层输入,并且生成该时间步长的输出,所述输出定义该时间步长处的所述超参数或所述硬件参数的可能值上的分数分布。
8.根据也从属于权利要求2时的前述权利要求中任一项所述的方法,其中,使用所述控制器策略生成一批次的一个或多个输出序列包括,针对所述批次中的每个输出序列并且针对所述多个时间步长中的每个时间步长:
向所述控制器神经网络提供该输出序列中的前一时间步长处的所述超参数或硬件参数的值作为输入,以生成该时间步长的输出,所述输出定义该时间步长处的所述超参数或硬件参数的可能值上的分数分布;以及
根据所述分数分布从所述可能值中采样,以确定该输出序列中的该时间步长处的所述超参数或硬件参数的值。
9.根据权利要求1至8中任一项所述的方法,其中:
所述特定神经网络任务是对象分类和/或检测任务、对象姿势估计任务或者语义分割任务;
所述子神经网络是包括一个或多个逐深度可分离卷积层的卷积神经网络;以及
所述超参数包括所述子神经网络中的每个逐深度可分离卷积层的超参数。
10.根据权利要求1至9中任一项所述的方法,其中:
所述子神经网络包括一个或多个反向残差层和一个或多个线性瓶颈层;以及
所述超参数包括所述子神经网络中的每个反向残差层和线性瓶颈层的超参数。
11.根据权利要求1至10中任一项所述的方法,其中,所述硬件加速器的相应硬件特性包括以下中的一个或多个:
所述硬件加速器的带宽、
所述硬件加速器中包括的处理元件的数量、
所述处理元件在所述硬件加速器上的布局、
每个处理元件中的单指令多数据(SIMD)式乘法累加(MAC)的数量、
每个处理元件中的计算通道的数量、
每个处理元件中的共享存储器的大小、或者
每个处理元件中的寄存器文件的大小。
12.根据权利要求1至11中任一项所述的方法,其中,所述硬件加速器的所述实例对于支持所述子神经网络的所述训练实例的性能的所述加速器性能指标包括以下中的一个或多个:
所述硬件加速器的估计面积、
所述硬件加速器的估计功耗、或者
所述神经网络在被部署在所述硬件加速器上时对于执行所述特定神经网络任务的估计时延。
13.根据也从属于权利要求12时的前述权利要求中任一项所述的方法,其中,评估具有由所述输出序列定义的架构的所述硬件加速器的相应实例的加速器性能,以确定所述硬件加速器的所述实例对于支持具有由所述输出序列对于所述特定神经网络任务定义的所述架构的所述子神经网络的所述训练实例的性能的加速器性能指标,包括:
基于使用周期准确性能模拟器来根据(i)所述子神经网络的所述相应架构和(ii)由所述一批次的输出序列定义的所述硬件加速器的相应架构确定所述神经网络在被部署在所述硬件加速器上时对于执行特定神经网络任务的所述估计时延。
14.根据也从属于权利要求12时的前述权利要求中任一项所述的方法,其中,评估具有由所述输出序列定义的架构的所述硬件加速器的相应实例的加速器性能,以确定所述硬件加速器的所述实例对于支持具有由所述输出序列对于所述特定神经网络任务定义的所述架构的所述子神经网络的所述训练实例的性能的加速器性能指标,包括:
基于使用分析面积估计器来根据由所述一批次的输出序列定义的所述硬件加速器的相应架构确定所述硬件加速器的所述估计面积。
15.根据也从属于权利要求12时的前述权利要求中任一项所述的方法,其中,使用(i)所述子神经网络的训练实例的所述网络性能指标和(ii)所述硬件加速器的实例的所述加速器性能指标来调整所述控制器神经网络的所述控制器网络参数的当前值包括:
将不同权重指派给所述一个或多个加速器性能指标;以及
根据所述不同权重,调整所述控制器神经网络的所述控制器网络参数的当前值。
16.根据也从属于权利要求2时的前述权利要求中任一项所述的方法,其中,使用(i)所述子神经网络的训练实例的所述网络性能指标和(ii)所述硬件加速器的实例的所述加速器性能指标来调整所述控制器策略还包括:
固定所述子神经网络的训练实例对于所述特定神经网络任务的所述网络性能指标并且仅使用所述硬件加速器的实例的所确定的加速器性能指标来调整所述控制器神经网络的控制器网络参数的所述当前值。
17.根据权利要求1至16中任一项所述的方法,还包括:
根据所述控制器网络参数的所调整的值,生成定义所述子神经网络的最终架构的最终输出序列。
18.根据权利要求17所述的方法,还包括:通过使用具有所述最终架构的子神经网络处理接收的网络输入,对所述接收的网络输入执行所述特定神经网络任务。
19.一种方法,包括:
接收指定硬件加速器的一个或多个目标硬件约束的数据,其中用于执行特定机器学习任务的神经网络要被部署在所述硬件加速器上;
接收所述特定机器学习任务的训练数据和验证数据;以及
使用所述训练数据和所述验证数据从候选网络架构空间中选择用于执行所述特定机器学习任务的所述神经网络的网络架构,
从候选硬件架构空间中选择所述硬件加速器的硬件架构,其中执行所述特定机器学习任务的所述神经网络要被部署在所述硬件加速器上,
其中,所述空间中的每个候选网络架构由包括第一多个分类决策中的每个分类决策的相应决策值的对应的决策值的集合定义,
其中,所述空间中的每个候选硬件架构由第二多个分类决策中的每个分类决策的相应决策值的对应的决策值的集合定义,并且
其中,所述选择包括:
联合更新(i)控制器参数的集合,所述控制器参数针对所述第一多个分类决策和所述第二多个分类决策中的每个分类决策定义该分类决策的决策值上的相应概率分布,以及(ii)参数的共享集合,其中:
更新所述控制器策略参数的集合包括:通过强化学习更新所述控制器参数的集合以最大化奖励函数,所述奖励函数测量(i)候选硬件架构的估计质量和(ii)由决策值的集合定义的候选网络架构的估计质量,所述决策值的集合从使用所述控制器策略参数生成的概率分布中采样,以及
更新所述模型参数的共享集合包括:更新所述模型参数的共享集合以优化目标函数,所述目标函数测量由所述决策值的集合定义的所述候选网络架构的对于所述特定机器学习任务的性能,所述决策值的集合从使用所述控制器策略生成的所述概率分布中采样;
在所述联合更新之后,选择候选网络架构作为所述神经网络的所述网络架构,所述候选网络架构由所述第一多个分类决策中的每个分类决策的相应的特定决策值定义;以及
选择由所述第二多个分类决策中的每个分类决策的相应的特定决策值定义的候选硬件架构作为所述硬件加速器的所述硬件架构。
20.根据权利要求19所述的方法,还包括:接收数据,所述数据指定所述神经网络在被部署在所述硬件加速器上时执行所述特定机器学习任务的目标时延。
21.根据权利要求19至20中任一项所述的方法,其中,所述奖励函数包括测量(i)所述候选硬件架构的所述估计质量和(ii)所述候选网络架构的所述估计质量的质量项、以及基于所述候选架构的估计时延与所述目标时延之间的比率的时延项。
22.根据权利要求19至21中任一项所述的方法,其中,所述联合更新包括重复执行操作,所述操作包括:
使用所述验证数据,确定具有候选架构的神经网络对于所述特定机器学习任务的估计质量,所述候选架构具有由所述第一多个分类决策的所选择的决策值定义的所述模型参数的共享集合的子集,其中,所述质量根据由所述第一多个分类决策的所选择的决策值定义的所述模型参数的共享集合的所述子集的当前值来估计。
23.根据权利要求19至21中任一项所述的方法,其中,所述联合更新包括重复执行操作,所述操作包括:
使用所述验证数据和时延模拟器,确定具有所述候选网络架构的所述神经网络在执行所述特定机器学习任务时的估计时延,所述候选网络架构具有由所述第一多个分类决策的所选择的决策值定义的所述模型参数的共享集合的所述子集,其中,所述神经网络被部署在具有如下硬件架构的所述硬件架构上:该硬件架构具有由所述第二多个分类决策的所选择的决策值定义的模型参数的共享集合的所述子集。
24.根据权利要求19至21中任一项所述的方法,其中,所述联合更新包括重复执行操作,所述操作包括:
使用面积模拟器确定所述候选硬件架构的估计质量,所述候选硬件架构具有由所述第二多个分类决策的所选择的决策值定义的所述模型参数的共享集合的所述子集。
25.根据权利要求23至24中任一项所述的方法,其中,所述时延模拟器和所述面积模拟器中的每一个是在使用加速器模拟器生成的标记训练数据上训练的相应神经网络。
26.一种机器学习任务特定的硬件加速器,具有通过执行过程来定义的架构,所述过程包括根据前述权利要求中任一项所述的相应操作。
27.一种包括一个或多个计算机以及存储指令的一个或多个存储设备的系统,所述指令在由所述一个或多个计算机执行时,能操作以使所述一个或多个计算机执行根据任何前述权利要求所述的相应方法的操作。
28.一种编码有指令的计算机存储介质,所述指令在由一个或多个计算机执行时,使所述一个或多个计算机执行根据任何前述权利要求所述的相应方法的操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063087143P | 2020-10-02 | 2020-10-02 | |
US63/087,143 | 2020-10-02 | ||
PCT/US2021/053247 WO2022072890A1 (en) | 2020-10-02 | 2021-10-01 | Neural architecture and hardware accelerator search |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116324807A true CN116324807A (zh) | 2023-06-23 |
Family
ID=78617487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180063841.5A Pending CN116324807A (zh) | 2020-10-02 | 2021-10-01 | 神经架构和硬件加速器搜索 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240005129A1 (zh) |
EP (1) | EP4189606A1 (zh) |
CN (1) | CN116324807A (zh) |
WO (1) | WO2022072890A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11836595B1 (en) * | 2022-07-29 | 2023-12-05 | Lemon Inc. | Neural architecture search system using training based on a weight-related metric |
-
2021
- 2021-10-01 WO PCT/US2021/053247 patent/WO2022072890A1/en active Application Filing
- 2021-10-01 EP EP21806867.4A patent/EP4189606A1/en active Pending
- 2021-10-01 US US18/029,849 patent/US20240005129A1/en active Pending
- 2021-10-01 CN CN202180063841.5A patent/CN116324807A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4189606A1 (en) | 2023-06-07 |
WO2022072890A1 (en) | 2022-04-07 |
US20240005129A1 (en) | 2024-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230252327A1 (en) | Neural architecture search for convolutional neural networks | |
JP6790286B2 (ja) | 強化学習を用いたデバイス配置最適化 | |
CN111602148B (zh) | 正则化神经网络架构搜索 | |
US20190130249A1 (en) | Sequence-to-sequence prediction using a neural network model | |
US10984319B2 (en) | Neural architecture search | |
US11347995B2 (en) | Neural architecture search with weight sharing | |
US20210271970A1 (en) | Neural network optimizer search | |
WO2020140073A1 (en) | Neural architecture search through a graph search space | |
US20220383119A1 (en) | Granular neural network architecture search over low-level primitives | |
CN116324807A (zh) | 神经架构和硬件加速器搜索 | |
WO2023059811A1 (en) | Constrained device placement using neural networks | |
US20230063686A1 (en) | Fine-grained stochastic neural architecture search | |
CN115516466A (zh) | 超参数神经网络集成 | |
US20230376664A1 (en) | Efficient hardware accelerator architecture exploration | |
US20240112027A1 (en) | Neural network architecture search over complex block architectures | |
CN117396890A (zh) | 高效硬件加速器配置探索 | |
US20240220768A1 (en) | Optimizing off-chip memory accesses on a neural network hardware accelerator | |
WO2022167660A1 (en) | Generating differentiable order statistics using sorting networks | |
CN116888603A (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 |