CN116702850A - 用于映射工作负载的方法、系统、制品和装置 - Google Patents

用于映射工作负载的方法、系统、制品和装置 Download PDF

Info

Publication number
CN116702850A
CN116702850A CN202310704333.1A CN202310704333A CN116702850A CN 116702850 A CN116702850 A CN 116702850A CN 202310704333 A CN202310704333 A CN 202310704333A CN 116702850 A CN116702850 A CN 116702850A
Authority
CN
China
Prior art keywords
layer
neural network
resource
performance metric
configuration
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
CN202310704333.1A
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN116702850A publication Critical patent/CN116702850A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial 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]
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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/048Activation functions
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

公开了用于映射工作负载的方法、系统、制品和装置。示例装置包括:约束定义器,用于定义所述神经网络的性能特性目标;动作确定器,用于将第一资源配置应用于与所述神经网络相对应的候选资源;回报确定器,用于基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及层映射生成器,用于生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。

Description

用于映射工作负载的方法、系统、制品和装置
分案申请说明
本申请是申请日为2020年06月24日、申请号为202010585628.8、题为“用于映射工作负载的方法、系统、制品和装置”的中国发明专利申请的分案申请。
技术领域
本公开总体上涉及硬件分配,并且更具体地,涉及映射工作负载的方法、系统、制品和装置。
背景技术
近年来,诸如机器学习、深度学习等人工智能技术在解决问题和/或执行任务等方面变得越来越普遍,这些方面包括但不限于图像识别、图案识别(pattern recognition)、自动车辆导航、蛋白质折叠分析。这样的技术采用不同类型的硬件资源来完成各种任务。
发明内容
根据本公开的实施例,提供了一种用于为神经网络生成资源映射的装置,所述装置包括:约束定义器,所述约束定义器用于定义所述神经网络的性能特性目标;动作确定器,所述动作确定器用于将第一资源配置应用于与所述神经网络相对应的候选资源;回报确定器,所述回报确定器用于基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及层映射生成器,所述层映射生成器用于生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
根据本公开的实施例,提供了一种非暂态计算机可读存储介质,包括计算机可读指令,指令在被执行时,使一个或多个处理器至少执行以下操作:定义神经网络的性能特性目标;将第一资源配置应用于与所述神经网络相对应的候选资源;基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
根据本公开的实施例,提供了一种用于为神经网络生成资源映射的方法,所述方法包括:通过使用至少一个处理器执行指令,定义所述神经网络的性能特性目标;通过使用至少一个处理器执行指令,将第一资源配置应用于与所述神经网络相对应的候选资源;通过使用至少一个处理器执行指令,基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及通过使用至少一个处理器执行指令,生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
根据本公开的实施例,提供了一种用于为神经网络生成资源映射的系统,所述系统包括:性能特性定义装置,用于定义所述神经网络的目标;动作应用装置,用于将第一资源配置应用于与所述神经网络相对应的候选资源;结果计算装置,用于基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及映射生成装置,用于生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
附图说明
图1是以与本公开的教导一致的方式映射工作负载的示例映射过程的示意图。
图2是以与本公开的教导一致的方式映射工作负载的另一示例映射过程的示意图。
图3是以与本公开的教导一致的方式映射工作负载的示例系统的示意图。
图4示出了要通过图1和/或图2的示例映射过程和/或图3的示例系统来进行分析的示例神经网络输入模型。
图5A是图3的神经网络映射器的示例实现方式的示意图。
图5B是行动者-评价者强化学习框架的示例伪代码的一部分。
图6是由图3和图5A的示例神经网络映射器生成的示例状态报告。
图7是由图3和图5A的示例神经网络映射器生成的示例映射文件。
图8和图9是代表机器可读指令的流程图,所述机器可读指令可以被执行以实现图1和/或图2的示例映射过程,和/或实现图3的示例系统,和/或实现图3和图5A的示例神经网络映射器。
图10是被构造成执行图8和/或图9的指令的示例处理平台的框图,以实现图1和/或图2的示例映射过程,和/或实现图3的示例系统,和/或实现图3和图5A的示例神经网络映射器。
附图并未按比例绘制。一般来说,相同的附图标记将在所有(一个或多个)附图中并随附书面描述使用,以指代相同或类似的部分。
本文中在标识可被分开提及的多个元素或组件时,使用描述语“第一”、“第二”、“第三”等。除非另有指明或者基于其使用上下文另有理解,否则这种描述语并不打算灌输优先级、物理顺序或者列表中的布置或者时间上的排序的任何含义,而只是用作用于分开提及多个元素或组件的标签,以便容易理解公开的示例。在一些示例中,描述语“第一”在具体实施方式中可用于提及某一元素,而同一元素在权利要求中可用不同的描述语来提及,例如“第二”或“第三”。在这种情况中,应当理解这种描述语只是为了容易引用多个元素或组件而使用的。
具体实施方式
将深度学习工作负载映射到资源(例如硬件)的工作是一项具有挑战性且耗时的任务。通常,负责实现深度学习(DL)工作负载的人员必须分析神经网络算法,将神经网络分解为各个层,对每个层应用配置特性,并且观察应用特性的结果(例如,来自硬件资源的结果、来自硬件模拟器的结果等)以确定是否应使用特定的配置特性。此外,人员必须选择特定的资源来完成神经网络的每一层的计算任务。资源包括但不限于计算机处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、专用加速器(例如矩阵加速器、矩阵乘法加速器)、推理计算引擎(ICE)、片上系统(SOC)等。此外,资源还包括不同类型的存储设备,例如特定类型的存储器(例如,动态随机存取存储器(DRAM)、便笺存储器(scratchpad memory)、末级缓存(LLC)等)。
虽然一些已知的编译器提供了一定程度的自动化来为各个神经网络层选择资源,但是这样的编译器采用基于规则的方法和/或启发式方法来进行这些选择。然而,随着复杂度的增加,基于规则的方法无法扩展到深度学习神经网络。实际上,考虑到大量的层排列、大量的对应资源以及相应层的大量的对应存储器设备分配,仅仅应用启发式方法是短视的。这样的方法进一步受到了人对试验和误差结果进行评估和应用手动微调的要求的限制。此外,当人逐层对资源分配的决策进行判断时,也会引入任意性错误。即使当人开发了特定的技能集来进行这种层到资源的映射时,这样的技能集通常也不能转移给其他人员,使得应用可以以可预测的方式应用。
本文公开的示例采用强化学习(RL)来以如下方式编译神经网络:根据特定改进(例如优化)目标逐层改进(例如优化)资源映射。在本文公开的一些示例中,时延约束被识别为要改进(例如,最大化)的改进目标。响应于接收和/或以其他方式检索神经网络输入,为神经网络的每一层分配资源映射,以形成可应用于编译器的输出映射框架。因此,由本文公开的示例生成的输出映射框架推翻了编译器所采用的任何(一种或多种)默认映射策略(例如,基于规则的映射、启发法等),以在针对特定改进(例如,优化)目标进行测量时使得神经网络的性能得到改进(例如,优化)。然而,本文中公开的示例不限于单个改进(例如,优化)目标,而是结合任何数量的改进目标(例如,更低的时延、更快的吞吐量、更低的功耗等)逐层识别资源映射。
人工智能(AI)(包括机器学习(ML)、深度学习(DL)、神经网络(NN)、深度NN、卷积NN(CNN)和/或其他人工机器驱动逻辑)使机器(例如计算机、逻辑电路等)能够使用模型来处理输入数据,以基于先前经由训练过程由模型学习到的模式和/或关联性生成输出。例如,在处理输入数据时,可以使用数据来训练模型,以识别模式和/或关联性并遵循这样的模式和/或关联性,从而使(一个或多个)其他输入产生与所识别的模式和/或关联性一致的(一个或多个)输出。
存在许多不同类型的机器学习模型和/或机器学习架构。在本文公开的示例中,使用强化模型(强化学习)。使用强化模型可以使行为(例如任意行为)能够再现场景(play-out scenarios),从而使智能体(agent)能够识别出为了提高(例如,最大化)回报(或减少(例如,最小化)惩罚)该如何行动/执行。如本文所使用的,智能体是对作出改变的影响的表示(例如,可执行文件),例如网络指令,当智能体被执行时,引起特定的硬件性能活动和/或状态改变。一般而言,适合于在本文公开的示例方法中使用的机器学习模型/架构将是强化学习技术。然而,可以另外地使用或替代地使用其他类型的机器学习模型/技术。
一般来说,实现ML/AI/DL系统涉及两个阶段:学习/训练阶段和推理阶段。在学习/训练阶段中,使用训练算法来训练模型,以根据基于例如训练数据的模式和/或关联性进行操作。一般来说,模型包括指导如何将输入数据转换为输出数据的内部参数,例如通过模型内的一系列节点和连接将输入数据转换为输出数据。此外,在一些示例中,超参数被用作训练过程的一部分,以控制如何执行学习(例如,学习速率、机器学习模型中要使用的若干层、折扣因子(discount factor)等)。超参数被定义为例如在开始训练过程之前确定的训练参数。
可以基于ML/AI/DL模型/技术的类型和/或预期输出来执行不同类型的训练。例如,监督训练使用输入和对应的预期(例如,标记)的输出来为ML/AI/DL模型选择减少模型误差的参数(例如,通过在选择参数的组合上进行迭代)。一般来说,在基于标记数据来预测值时,监督学习/训练特别有用。如本文所使用的,标记是指机器学习模型的预期输出(例如分类、预期输出值等)。替代地,无监督的训练/学习(例如,机器学习的子集、深度学习中使用的等)涉及从输入推断模式以选择ML/AI/DL模型的参数(例如,而没有预期(例如标记)的输出的好处)。一般来说,当试图识别未标记数据中的关系时,无监督的学习特别有用。
在本文公开的示例中,使用强化学习训练ML/AI/NN/DL模型。然而,任何其他训练算法/技术可以附加地或替代地使用。在本文公开的示例中,执行训练直到收敛,这是通过使用神经网络来辅助的。训练是使用控制如何执行学习(例如,学习速率、机器学习模型中要使用的若干层等)的超参数执行的。在本文公开的示例中,控制折扣因子的超参数能够进行不同程度的学习实验并试图进行“尝试”。这样的超参数是通过例如经验观察、时间约束等来选择的。在一些示例中,可以执行重新训练。
对于一些ML/AI/NN/DL方法,使用训练数据执行训练。在本文公开的示例中,训练数据源于被认为特别有用且无错误的代码样本(例如,行业标准代码)的代码语料库。因为可以使用监督训练,所以会标记训练数据。然而,标记数据在强化学习中也可能有用,以提供特定代码函数的附加状态和/或对应动作。
在一些示例中,一旦训练完成,模型就被部署用作可执行结构,该可执行结构用于处理输入并基于模型中定义的节点和连接的网络提供输出。模型存储在本地存储设备(例如数据库)和/或网络可访问的存储设备(例如基于云的存储服务)中。
一旦被训练,部署的模型可以在推理阶段操作以处理数据。在推理阶段中,要分析的数据(例如,实时数据)被输入到模型,并且模型执行以创建输出。这个推理阶段可以被认为是AI(例如,ML模型)“思考”,以基于从训练中学到的知识生成输出(例如,通过执行模型来将学到的模式和/或关联性应用到实时数据)。在一些示例中,输入数据在用作机器学习模型的输入之前经历预处理。此外,在一些示例中,输出数据可以在由模型(例如,ML模型)生成之后经历后处理,以将输出转换为有用的结果(例如,数据的显示、由机器执行的指令等)。
在一些示例中,可以捕获部署模型的输出并将其作为反馈提供。通过分析反馈,可以确定部署模型的准确度。如果反馈指示部署模型的准确度不满足(例如,小于)阈值或无法满足某些其他标准,则可以使用反馈和更新的训练数据集、超参数等触发对更新的模型的训练,以生成更新的部署模型。
图1示出了示例映射过程100的一部分。在图1所示的示例中,映射过程100包括神经网络102,神经网络102具有任意数量的层,其中感兴趣层103作为正在分析的当前层(层“t”)被示出。图1所示的示例还包括示例强化学习(RL)智能体104,其包括示例状态定义器106、示例回报确定器108和示例动作确定器110。图1所示的示例还包括示例资源112。图1的示例资源112包括电路板114,电路板114在其上具有任意数量和/或类型的资源,例如示例CPU、示例GPU、示例逻辑分析器、示例加速器等。在一些示例中,对平台和/或其他通信连接的资源进行扫描,以对可用于执行神经网络和/或其中的层的可用硬件和/或硬件模拟器进行审查。虽然图1所示的示例包括物理电路板114(例如,印刷电路板(PCB)),但本文公开的示例不限于此。
在图1所示的示例中,电路板114与被分析的神经网络的当前层(层“t”)相关联,其中示例RL智能体104已确定将第一资源116用于层“t”。然而,在示例RL智能体104的先前迭代中,分析了神经网络102的先前层(层“t-1”),其中示例RL智能体104已确定采用示例电路板114的第二资源118。另外,在示例RL智能体104的后续迭代中,可以分析神经网络102的后续层(层“t+1”),其中可以确定示例RL智能体104采用示例电路板114的第三资源120。虽然图1所示的示例包括以相邻层的时间序列出现的层t-1、t和t+1,但本文公开的示例不限于此。例如,可以以任何顺序和/或与(一个或多个)相邻层不连续的顺序来分析一个或多个层。一般而言,图1所示的示例示出了示例电路板114可以在其上具有任意数量的不同/唯一资源,并且本文公开的示例确定这些唯一资源中的哪一些最好地改进(例如,优化)神经网络102的各个层。最好地改进一层的资源集可能与改进另一层的资源集完全不同。
图2示出了示例映射过程200的另一部分。在图2所示的示例中,映射过程200包括神经网络202,神经网络202具有任意数量的层,其中感兴趣的层203作为正在分析的3×3卷积层(卷积运算器)204被示出。RL智能体(例如图1的示例RL智能体104)通过示例神经网络202逐层传播(例如评估、执行、模拟等),以映射每个感兴趣层的存储器、权重和计算资源。如下面进一步详细描述的,映射是基于先前层的映射、资源的剩余利用能力和成本/回报函数结果的。在图2所示的示例中,将包括张量(例如向量空间对象)维度的示例输入特征图(input feature map;IFM)206映射到ICE框208。在图2所示的示例中,示例ICE框208包括示例矩阵加速器212(例如硬件电路)和示例数字信号处理器(DSP)214(例如硬件电路)。更具体地,示例IFM 204被映射到示例IFM 206的便笺(SP)存储器210。图2的示例映射过程200还示出了被映射到示例ICE框208的示例矩阵加速器212的卷积运算器204(例如硬件电路),和包括张量维度的示例输出特征图(OFM)216,示例输出特征图(OFM)216被映射到示例末级高速缓存218。然而,示例性神经网络202的其他候选层可以利用对于示例卷积运算器204、示例IFM 206和/或示例OFM 216而言不同的硬件和/或存储器。
图3示出了用于映射工作负载(例如,由神经网络完成的任务)的示例系统300。在图3所示的示例中,系统300包括示例神经网络(NN)映射器302,该映射器302通信地连接到示例网络304以促进与以下各项的通信和/或对以下各项的控制:示例工作负载数据存储装置306、示例硬件308、示例硬件模拟器310和示例编译器312。在一些示例中,系统包括示例硬件308和示例硬件模拟器310,而在一些示例中,系统包括示例硬件308和示例硬件模拟器310中的一者。在一些示例中,硬件308由一个或多个硬件电路(例如,示例ICE 208、示例资源112、示例电路板114等)实现。在一些示例中,硬件模拟器310由一个或多个处理器实现。在一些例子中,编译器由一个或多个处理器实现。在一些示例中,神经网络映射器扫描示例网络304和/或与网络304通信地连接的平台,以识别可执行目标神经网络的候选资源(例如,示例硬件308和/或示例硬件模拟器310)。在一些示例中,NN映射器302直接连接到示例系统300的上述结构中的一个或多个,而不需要示例网络304。在一些示例中,网络304包括内联网、互联网、局域网(LAN)、广域网(WAN)等。如上所述,示例硬件308可以包括任何数量和/或类型的资源,例如物理硬件(例如CPU、GPU、加速器等)和/或虚拟机(VM)。在一些示例中,当物理硬件不可用时,示例硬件模拟器310逐层模拟硬件。响应于示例NN映射器302评估NN的层,示例NN映射器302生成和/或更新映射文件。如下面进一步详细描述的,映射文件包括逐层的特定资源分配,映射文件被提供给示例编译器312。虽然一些编译器利用一种或多种不同的技术来将资源分配给NN层,但本文中公开的示例生成改进的(例如,优化的)资源分配,并且促进编译器覆写指令绕过这样的常规资源分配和/或以其他方式阻止这样的常规资源分配被实现。相反,本文公开的示例采用示例映射文件来控制和/或以其他方式指导示例编译器312的资源分配活动。
在操作中,示例NN映射器302从示例工作负载数据存储装置306检索和/或以其他方式接收NN模型。示例NN模型可以是设备无关(device agnostic)的格式,例如用于表示深度学习模型的开放式神经网络交换(ONNX)格式。图4示出了具有与模型400的各个层相关联的信息的示例NN输入模型400。在图4所示的示例中,NN输入模型400包括对应于NN输入模型400的各个层402的行。图4的示例NN输入模型400还识别特定的运算器类型404(例如,校正线性单元(ReLU)、Reshape、Softmax等)、张量大小信息、层次信息等。
返回到图3所示的示例,NN映射器302逐层评估神经网络。为此,候选层由示例硬件308(或示例硬件模拟器310)以不同的硬件元件组合(例如,处理设备、存储器设备、电路等)逐层执行。对于每一层,硬件元件的一个组合将展现相对改进(例如,最佳)的性能度量,该性能度量被保存为被分析的特定层的最终资源指令。换言之,基于不同的资源配置的相对得分对这些资源配置进行比较,并且最佳得分被认为是“最优的”。当完成对当前层的分析时(例如,基于尝试的硬件配置的阈值数、基于收敛指示符(convergence indicator)的检测等),示例NN映射器302继续对神经网络的下一层进行分析,以此类推,直到每层都被分析,因为针对每层的“最优”的资源配置都被识别出来了。
图5A是图3的示例NN映射器302的示意图。在图5A所示的示例中,NN映射器302包括示例NN输入检测器502、示例层选择器504、示例映射配置存储器506和示例层映射生成器508。上述结构经由示例NN映射器总线510通信地连接。示例层映射生成器508包括示例迭代跟踪器512、示例约束定义器514、示例智能体生成器516、示例状态定义器106、示例动作确定器110和示例回报确定器108。示例层映射生成器508的上述结构经由示例层映射生成器总线524通信地连接。在一些示例中,图5A所示的示例中的所有结构经由示例NN映射器总线510和/或示例层映射生成器总线524通信地连接,而不受限制。这些结构可以通过电路实现。
在一些示例中,约束定义器514实现用于性能特性定义的装置。性能特性定义装置可以由执行指令(例如图8和/或9的指令)的处理器(例如图10的处理器1012)来实现。在一些示例中,动作确定器110实现用于动作应用的装置。动作应用装置可以由执行指令(例如图8和/或9的指令)的处理器(例如图10的处理器1012)来实现。在一些示例中,回报确定器108实现用于结果计算的装置。结果计算装置可以由执行指令(例如图8和/或9的指令)的处理器(例如图10的处理器1012)来实现。在一些示例中,层映射生成器508实现用于映射生成的装置。映射生成装置可以由执行指令(例如图8和/或9的指令)的处理器(例如图10的处理器1012)来实现。在一些示例中,神经网络映射器302实现用于神经网络映射的装置。神经网络映射装置可以由执行指令(例如图8和/或9的指令)的处理器(例如图10的处理器1012)来实现。在一些示例中,层选择器504实现用于层选择的装置。层选择装置可以由执行指令(例如图8和/或9的指令)的处理器(例如图10的处理器1012)来实现。在一些示例中,状态定义器实现了用于状态定义的装置。状态定义装置可以由执行指令(例如图8和/或9的指令)的处理器(例如图10的处理器1012)来实现。
在操作中,示例NN输入检测器502确定是否已接收到NN输入模型。如上所述,本文公开的示例评估NN模型,例如图4所示的示例中所示的设备无关的模型400。响应于NN分析请求,示例层选择器504选择与接收到和/或以其他方式检索的NN模型相关联的任意数量的层中的一个。如上所述,NN模型的每一层可以以最好地满足NN模型的期望操作特性的方式利用特定资源。例如,为第一层选择第一处理电路(例如,诸如CPU之类的元件)可以比第二处理电路(例如,矩阵加速器)表现出改进的性能特性。然而,为第二层选择相同的第一处理电路不一定表现出改进(例如,优化)的性能特性。因此,本文公开的示例根据要改进(例如,最大化)的期望性能特性的特定组合来评估每一层。
示例迭代跟踪器512确定所选择的感兴趣层是否已经在先前的情况下被评估,如果没有,示例约束定义器514定义要与所选择的感兴趣层相关联的资源约束。如本文所使用的,资源约束、性能特性和性能特性目标可互换地提及,并且是当特定资源(例如,处理资源、存储器资源)与神经网络中的一个特定层一起使用时可以改进的度量。要定义的资源约束包括但不限于:改进(例如,最大化)的吞吐量度量、改进(例如,最大化)的响应时间(例如,时延)度量、降低(例如,最小化)的功率度量和/或要应用于一个或多个回报/成本函数(有时在本文中称为价值函数)的各个约束的非连续权重值。本文中公开的示例采用行动者-评价者强化学习(RL)来收敛在一些示例中对于合理的人处理来说太大的动作空间的排列。如本文所使用的,动作空间包括NN中各个层的硬件选择和/或存储器选择的特定数量的组合。
例如,示例回报函数可以寻求改进(例如,最大化)与计算、存储器和时延约束相关的吞吐量度量。在一些示例中,回报函数考虑了特定动作与深层NN的先前分析层的映射之间的相互作用。如本文所使用的,行动者-评价者RL框架包括用于评估动作的优点(例如,要采用的动作有多好)的评价者(例如,回报确定器),并且更新要寻求的和/或由行动者(例如,动作确定器)以其他方式建议的动作值参数。如本文所使用的,行动者指示特定的动作,并更新由示例评价者建议的策略参数。例如,行动者可以将层映射到特定的存储器位置(例如SRAM、LLC、DDR等),将层映射到特定的处理器(例如矩阵加速器、DSP、CPU等)和/或识别多核系统的特定核。在一些示例中,评价者识别参数来指导一定程度的候选动作探索,而不是仅仅试图执行动作空间的所有可能的排列,这在计算和时间上都是昂贵的。
图5B示出了示例行动者-评价者RL框架550的伪代码。行动者-评价者RL框架的其他输入包括状态值,例如与IFM相关联的当前层参数、OFM、感兴趣层的内核大小、剩余(例如,可用)存储器量、存储器带宽能力信息和/或与深层NN的前几层相关联的映射信息。示例行动者-评价者RL框架550包括要学习的两个参数,第一个参数是来自行动者(θ)的参数,第二个参数是来自评价者(w)的参数。该框架采用Q值函数的近似和策略梯度(π)的近似。在图5B所示的示例中,第552行示出Q是线性近似的,其中W表示权重,(φ)表示与状态(s)和动作(a)相关联的输入特征。第554行示出了使用时间差分(TD)学习方法TD(0)更新评价者的权重。第556行表示Q行动者-评价者(QAC)的函数以执行近似。第558行表示根据以与前一行一致的方式初始化的(π)采样的动作(a)。
第560行表示for循环:考虑到先前的状态和相应的回报,根据状态转移概率(P)来确定新的状态(s')。然后,由teta参数化的策略对新动作(a')进行采样。第562行表示评价者和行动者的更新,其中TD误差被计算为(r+gamma*Q)=实际Q和期望Q值之间的差。第564行表示评价者参数的更新。虽然图5B的示例行动者-评价者RL框架550包括上述伪代码的示例行,但本文公开的示例不限于此,其中可以考虑RL框架的替代变体的示例。
在针对所选择的感兴趣层的行动者-评价者RL框架的第一次迭代期间,由于未尝试先前的映射排列,示例约束定义器514识别启发法和/或基于规则的映射配置。例如,约束定义器514可以利用贪心算法(greedy algorithm)进行资源映射选择,其采用最快的可用处理设备和具有最低相对时延的存储器设备。虽然贪心算法的一些应用可能会展现出所需的性能特性,但简单的应用贪心算法可能会引起特定的问题。例如,如果选择了具有最低时延的存储器,但该存储器也接近满容量,则这样的选择会导致未来的瓶颈和相对较差的结果。然而,应用启发法和/或基于规则的映射配置来用作行动者-评价者RL框架的一个有用的起点。具体而言,这样的起点允许生成具有性能数据的回报计算,这允许RL框架使用由性能特性指导的替代映射排列来进行迭代。换句话说,RL框架从糟糕的映射选择中获益,以指导未来要尝试的映射配置排列。
示例智能体生成器516生成增强学习智能体(例如,图1的示例RL智能体104)(例如,示例状态定义器106、示例回报确定器108和示例动作确定器110的容器)。示例状态定义器106基于所选择的启发法/规则和先前层状态信息(如果有的话)生成当前状态(St)表示,其中t反映所选择的感兴趣层。在一些示例中,以与示例等式1一致的方式表示当前状态。
St=(IFM,OFM,BW,MEM,UTIL,LATENCY)
等式1
在等式1所示的示例中,IFM是指输入特征图(具有张量维度),OFM是指输出特征图(具有张量维度),BW是指存储器带宽度量(例如,以千兆比特每秒(GB/s)为单位),MEM是指存储器容量度量(例如,以兆比特(MB)为单位),UTIL是指所选择的感兴趣层的硬件组件利用率的向量(例如,DSP的利用率为5%,加速器的利用率为50%,CPU的利用率为20%,等等),LATENCY是指感兴趣层的时延度量。
示例动作确定器110将映射配置(基于启发法/规则)应用于示例资源112,以便可以生成状态数据。由于生成的状态数据是应用于所选择的感兴趣层的每一资源排列的结果,因此在比较状态数据的各个实例时可以实现相对性能能力。在一些示例中,应用资源(实际物理资源308或模拟硬件310)的每次迭代的结果存储在示例映射配置存储器506中。
响应于应用特定资源组合的示例层映射生成器508的至少一次迭代,示例状态定义器106更新映射工作的状态度量。图6示出了由示例状态定义器106生成的示例状态报告600。在图6所示的示例中,状态报告600包括与层相关联的嵌入状态信息602、最近采取的动作604和对应的结果606(例如,从回报函数计算的度量)。例如,示例第一行608示出了指示不同状态细节(1、3、224、224等)的整数值数组。第一整数可以指示第一批(1),第二整数可以指示输入通道的数量(3),第三整数和第四整数可以指示图像大小(224×224)等。示例回报确定器108评估与一个或多个回报函数相关的度量。在一些示例中,回报确定器108基于所测量的性能度量和对应的性能特性目标来计算结果度量。这样的结果度量数据是在相对比较的基础上使用的,以确定与其他资源分配相比,哪些特定资源分配表现出相对最佳(例如,优化)的性能。回报确定器108基于结果度量生成迭代决策。如果示例回报确定器108确定应发生额外的资源映射迭代(例如,迭代决策指示要尝试的至少一个或多个硬件配置排列),示例动作确定器110更新资源映射指令,并将这些指令应用于要测试的后续映射配置。在一些示例中,回报确定器108识别对收敛的指示以信号通知行动者-评价者RL框架的迭代何时应停止,而在一些示例中,回报确定器108执行阈值次数的迭代。
响应于动作确定器110确定不需要进一步迭代(例如,由示例动作确定器110检测到阈值程度的收敛),示例层映射生成器508将所选择的层的映射配置存储在示例映射配置存储器506中。示例层选择器504确定另外的层是否仍然需要分析,如果需要,则示例层选择器504选择示例NN中的下一层。
另一方面,如果示例层选择器504确定已经分析了NN的所有层,则示例层映射生成器508生成针对NN的映射文件。图7示出了示例映射文件700,有时在本文中称为资源映射。在图7所示的示例中,映射文件700包括特定层和对应的硬件特征的第一映射702。示例映射文件700还包括同一层到特定推理计算引擎(ICE)处理器(例如ICE上的任意数量的设备之一(例如,特定加速器、特定DSP等))的映射704。示例映射文件700还包括将该同一层映射到特定存储器和/或存储器位置的映射706,层张量映射到所述特定存储器和/或存储器位置。虽然图7所示的示例包括五(5)层的NN,但本文公开的示例不限于此。在示例层映射生成器508完成构建和/或以其他方式生成示例映射文件700之后,示例NN映射器302覆写与资源选择相关联的示例编译器312的一个或多个指令。换句话说,因为示例映射文件700包括基于行动者-评价者RL框架的改进(例如,优化)的一个或多个回报函数而选择的针对每一层的特定资源,与示例编译器312的短视启发法和/或基于规则的选择相比,这种映射使得NN在这样的硬件资源上的性能得到改进。
虽然实现图3的神经网络映射器302的示例方式在图3和图5A中示出,但图3和/或图5A所示的一个或多个元件、过程和/或设备可以组合、划分、重新布置、省略、消除和/或以任何其他方式实现。此外,示例神经网络输入检测器502、示例层选择器504、示例层映射生成器508、示例迭代跟踪器512、示例约束定义器514、示例智能体生成器516、示例状态定义器106、示例动作确定器110、示例回报确定器108和/或更一般地图5A的示例神经网络映射器302、图1的示例映射过程100、图2的示例映射过程200和/或图3的示例系统300可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,示例神经网络输入检测器502、示例层选择器504、示例层映射生成器508、示例迭代跟踪器512、示例约束定义器514、示例智能体生成器516、示例状态定义器106、示例动作确定器110、示例回报确定器108和/或更一般地图5A的示例神经网络映射器302、图1的示例映射过程100、图2的示例映射过程200和/或图3的示例系统300中的任何一者可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(PLD)和/或(一个或多个)现场可编程逻辑器件(FPLD)来实现。当阅读本专利的装置或系统权利要求中任一项以涵盖纯软件和/或固件实现方式时,示例神经网络输入检测器502、示例层选择器504、示例层映射生成器508、示例迭代跟踪器512、示例约束定义器514、示例智能体生成器516、示例状态定义器106、示例动作确定器110、示例回报确定器108和/或更一般地图5A的示例神经网络映射器302、图1的示例映射过程100、图2的示例映射过程200和/或图3的示例系统300中的至少一者。在此被明确定义为包括诸如存储器、数字多功能盘(DVD)、光盘(CD)、蓝光光盘之类的非暂态计算机可读存储设备或存储盘(包括软件和/或固件)。此外,图3和图5A的示例神经网络映射器302可以包括除图1-3和图5A中所示的那些元件、过程和/或设备之外或作为其替代的一个或多个元件、过程和/或设备,和/或图3和图5A的示例神经网络映射器302可以包括任何一个或全部所示元件、过程和设备中的多于一个元件、过程和/或设备。如本文所使用的,短语“进行通信”(包括其变体)涵盖直接通信和/或通过一个或多个中间组件进行的间接通信,并且其不需要直接物理(例如,有线)通信和/或持续通信,而是附加地包括在周期性间隔、调度间隔、非周期性间隔、和/或一次性事件处的选择性通信。
在图8和图9中示出了表示用于实现图3和/或图5A的神经网络映射器302的示例硬件逻辑、机器可读指令、硬件实现的状态机、和/或其任何组合的流程图。机器可读指令可以是一个或多个可执行程序或可执行程序的(一个或多个)部分,以供诸如以下结合图10所讨论的示例处理器平台1000中所示的处理器1012之类的计算机处理器执行。(一个或多个)程序可以被体现在诸如CD-ROM、软盘、硬盘驱动器、DVD、蓝光盘、或与处理器1012相关联的存储器之类的非暂态计算机可读存储介质上存储的软件中,但整个程序和/或其部分可以替代地由除处理器1012之外的设备执行和/或体现在固件或专用硬件中。此外,虽然示例程序是参考图8和图9中所示的流程图来描述的,但是可以替代地使用实现该示例神经网络映射器302的许多其他方法。例如,可以改变框的执行顺序,和/或可以改变、消除、或组合所描述的框中的一部分。附加地或替代地,任一个或全部框可由一个或多个硬件电路(例如,离散和/或集成模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路等)来实现,这些硬件电路被结构化为在不执行软件或固件的情况下执行相应的操作。
可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、封装格式等中的一个或多个格式来存储本文中描述的机器可读指令。如本文中所述的机器可读指令可以被存储为数据(例如,指令的部分、代码、代码的表示等),其可以被用于创建、制造、和/或产生机器可执行指令。例如,机器可读指令可以被分段并存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可能需要以下操作中的一个或多个:安装、修改、自适应、更新、组合、补充、配置、解密、解压缩、解封装、分发、重新分配、编译等,以便使它们可由计算设备和/或其他机器直接读取、解释、和/或执行。例如,机器可读指令可以存储在多个部分中,这多个部分被单独地压缩、加密并且存储在单独的计算设备上,其中,这些部分在被解密、解压缩、以及组合时形成实现诸如本文中所描述的程序之类的可执行指令集。
在另一示例中,机器可读指令可以以它们可由计算机读取的状态存储,但是需要添加库(例如,动态链接库(DLL))、软件开发工具包(SDK)、应用编程接口(API)等,以便在特定计算设备或其他设备上执行指令。在另一示例中,在机器可读指令和/或相应的程序可以整体或部分地执行之前,可能需要配置机器可读指令(例如,存储的设置、输入的数据、记录的网络地址等)。因此,所公开的机器可读指令和/或(一个或多个)相应的程序旨在涵盖这样的机器可读指令和/或程序,而不管机器可读指令和/或程序在被存储或以其他方式处于静止或传输时的特定格式或状态。
本文中描述的机器可读指令可以由任何过去、现在、或将来的指令语言、脚本语言、编程语言等来表示。例如,机器可读指令可以使用以下语言中的任何一种来表示:C、C++、Java、C#、Perl、Python、JavaScript、超文本标记语言(HTML)、结构化查询语言(SQL)、Swift等。
如上所述,可以使用存储在非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图8至图9的示例过程,该非暂态计算机和/或机器可读介质为例如硬盘驱动器、闪存、只读存储器、光盘、数字多功能盘、缓存、随机存取存储器和/或任何其他存储设备或存储盘(其中信息被存储任何持续时间(例如,存储延长的时间段、永久地存储、在短暂的情况下存储、存储来用于暂时地缓冲、和/或缓存信息))。如本文中所使用的,术语非暂态计算机可读介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中用作开放式术语。因此,无论何时权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有等)作为前序或在任何种类的权利要求记载内,都应当理解,在不落在对应的权利要求或记载的范围之外的情况下,可以存在附加的元件、术语等。如本文中所用,当短语“至少”用作例如权利要求的前序部分中的过渡术语时,其为开放式的(以与术语“包括”和“包含”为开放式的相同方式)。术语“和/或”当例如以A、B、和/或C的形式使用时,是指A、B、C的任何组合或子集,例如(1)单独的A、(2)单独的B、(3)单独的C、(4)A与B、(5)A与C、(6)B与C、以及(7)A与B以及与C。如本文中所用,在描述结构、部件、物体、对象、和/或事物的上下文中,短语“A和B中的至少一个”旨在指代包括以下项中任何一个的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。类似地,如本文中所用,在描述结构、组件、物体、对象、和/或事物的上下文中,短语“A或B中的至少一个”旨在指代包括以下项中任何一个的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。如本文中所用,在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中,短语“A和B中的至少一个”旨在指代包括以下项中任何一个的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。类似地,如本文中所用,在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中,短语“A或B中的至少一个”旨在指代包括以下项中任何一个的实现方式:(1)至少一个A、(2)至少一个B、以及(3)至少一个A和至少一个B。
如本文中所使用的,单数引用(例如,“一”、“一个”、“第一”、“第二”等)不排除多个。如本文中所使用的,术语“一”或“一个”实体是指一个或多个该实体。术语“一”(或“一个”)、“一个或多个”、以及“至少一个”在本文中可互换使用。此外,尽管被单独列出,但是多个装置、元件或方法动作可以由例如单个单元或处理器来实现。另外,尽管各个特征可以被包括在不同的示例或权利要求中,但是这些特征可以被组合,并且包括在不同的示例或权利要求中并不意味着特征的组合是不可行的和/或不利的。
图8的程序800包括框802,其中示例神经网络输入检测器502确定是否已检索和/或以其他方式接收到神经网络输入。在一些示例中,神经网络输入检测器502检测处理神经网络的请求,然后检索与神经网络相关联的设备无关的模型(框804)。如上所述,可以以与图4的示例模型400一致的方式检索设备无关的模型。由于NN模型通常具有两个或更多个层,因此示例层选择器504对层进行选择,以便可以逐层进行模型分析(框806)。如下面结合图9进一步详细描述的,示例层映射生成器508生成对网络的所选择的层唯一的层资源映射(框808)。
图9示出了与生成图8的框808的层资源映射相关联的附加细节。在图9所示的示例中,示例迭代跟踪器512确定是否对所选择的层进行了增强学习的第一次迭代(框902)。如果是,则需要种子配置,以及为所选择的感兴趣层和/或模型的特定目标性能目标定义约束。例如,神经网络的各个层可能具有不同的处理需求和/或存储器存储需求,这些需求应该被容纳和/或以其他方式满足,以允许该层完成其对应的计算目标。因此,示例约束定义器514定义资源约束(框904)。如上所述,可以定义任何数量和/或类型的资源约束和/或目标,例如最大吞吐量目标、最小时延目标、最小功耗目标等。由于这是第一次迭代,示例约束定义器514还针对目标硬件识别启发法和/或基于规则的映射配置(框906)。
示例智能体生成器516生成增强学习(RL)智能体(框908)(例如,参见图1的示例RL智能体104)。此外,示例状态定义器106生成基于启发法/规则和先前层状态信息(如果有的话)的当前状态(St)表示(框910)。示例动作确定器110将映射配置应用于可用/候选资源112(框912),以便可以发生所选择的层的执行迭代。换句话说,由于这是使用硬件和/或存储器的启发法或基于规则的配置执行层的第一次迭代,因此层的性能不太可能满足和/或以其他方式满足所寻求的最佳度量。然而,虽然较差的资源配置设置不一定会导致所选择的层的性能度量得到改进(例如,优化),但是由于根据性能目标应用了强化学习,RL过程可以从错误的决策中学习。
在图9的示例程序808的后续迭代期间,示例迭代跟踪器512确定先前的迭代已经发生(框902)。如果是,则示例状态定义器106更新映射的状态度量(框914),示例回报确定器108评估映射的性能度量(框916)。换言之,示例回报确定器108根据目标性能特性来确定映射执行的好坏。基于评估结果和/或RL框架的收敛指示,示例回报确定器108确定是否以替换(附加)的映射配置继续(框918)。如果不是,例如当收敛的指示表明进一步的配置尝试不太可能实质上改进性能特性时,框808的示例程序返回到图8的框810。然而,如果要尝试使用RL框架进行额外的映射配置(框918),则示例动作确定器110将资源映射更新为硬件和/或存储器的替代组合(框920)。在一些示例中,由诸如图5B的示例回报函数之类的示例回报函数来引导尝试哪种硬件和哪种存储器组合的替代组合。示例动作确定器110将这种映射配置应用于示例资源112(或硬件308、或硬件模拟器310),并且执行配置以努力获取额外的性能数据点(框922)。控制然后返回到框902。
返回图8所示的示例,响应于完成对示例网络的一层的分析(框808),示例层映射生成器508存储具有相对最高得分的先前分析的层的映射配置。例如,如果期望改进(例如,优化)模型的多个性能度量,则展现相对最高聚合得分的相应映射配置被选择为要用于该层的硬件配置。示例层映射生成器508将改进的(例如,优化的)配置存储在示例工作负载数据存储装置306中(框810)。
示例层选择器504确定是否存在要分析的模型中的一个或多个附加层(框812)。如果是,则控制返回到框804以启动另一迭代。另一方面,当示例层选择器504确定已经分析了模型的所有层(并且已经确定每个相应层的对应改进(例如,优化)映射并将其存储在示例工作负载数据存储装置306中)(框812),则示例层映射生成器508针对模型生成映射文件(框814)。如上所述,映射文件可以以与图7的示例映射文件700一致的方式生成。示例神经网络映射器302使用所生成的映射文件来覆写编译器(例如图3的示例编译器312)的编译器指令(框816)。
图10是被构造为执行图8和图9的指令以实现图3和/或图5A的神经网络映射器302的示例处理器平台1000的框图。处理器平台1000可以为例如服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,手机、智能电话、诸如iPadTM之类的平板电脑)、个人数字助理(PDA)、因特网设备、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏控制台、个人视频记录器、机顶盒、耳机、或其他可穿戴设备、或者任何其他类型的计算设备。
所示示例的处理器平台1000包括处理器1012。所示示例的处理器1012是硬件。例如,处理器1012可以由一个或多个集成电路、逻辑电路、微处理器、GPU、DSP、或来自任何期望系列或制造商的控制器实现。硬件处理器可以是基于半导体(例如,基于硅)的设备。在此示例中,处理器实现示例神经网络输入检测器502、示例层选择器504、示例层映射生成器508、示例迭代跟踪器512、示例约束定义器514、示例智能体生成器516、示例状态定义器106、示例动作确定器110、示例性回报确定器108和/或更一般地示例神经网络映射器302。
所示示例中的处理器1012包括本地存储器1013(例如,缓存)。所示示例的处理器1012通过总线1018与包括易失性存储器1014和非易失性存储器1016的主存储器进行通信。易失性存储器1014可以通过同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、动态随机存取存储器/>和/或任何其他类型的随机存取存储器设备来实现。非易失性存储器1016可以由闪存和/或任何其他期望类型的存储器设备来实现。对主存储器1014、1016的访问由存储器控制器控制。
所示示例的处理器平台1000还包括接口电路1020。接口电路1020可以通过任何类型的接口标准来实现,例如,以太网接口、通用串行总线(USB)、接口、近场通信(NFC)接口、和/或PCI-express接口。
在所示的示例中,一个或多个输入设备1022连接到接口电路1020。(一个或多个)输入设备1022允许用户将数据和/或命令输入到处理器1012中。(一个或多个)输入设备可以通过例如音频传感器、麦克风、相机(静物相机或摄像机)、键盘、按钮、鼠标、触摸屏、轨迹板、轨迹球、等电位点(isopoint)和/或语音识别系统来实现。
一个或多个输出设备1024也连接到所示示例的接口电路1020。输出设备1024可以例如通过显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管显示器(CRT)、平面转换(in-place switching,IPS)显示器、触摸屏等)、触觉输出设备、打印机和/或扬声器来实现。因此,所示示例的接口电路1020通常包括图形驱动卡、图形驱动芯片和/或图形驱动处理器。
所示示例中的接口电路1020还包括诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口之类的通信设备,以促进通过网络1026与外部机器(例如,任何种类的计算设备)交换数据。通信可以通过例如以太网连接、数字用户线(DSL)连接、电话线连接、同轴电缆系统、卫星系统、现场线路无线系统、蜂窝电话系统等来进行。
所示示例的处理器平台1000还包括用于存储软件和/或数据的一个或多个大容量存储设备1028。这样的大容量存储设备1028的示例包括软盘驱动器、硬驱动盘、光盘驱动器、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统、以及数字多功能盘(DVD)驱动器。
图8和图9的机器可执行指令1032可以存储在大容量存储设备1028中、易失性存储器1014中、非易失性存储器1016中、和/或诸如CD或DVD之类的可移动非暂态计算机可读存储介质上。
根据上述内容,可以意识到,已经公开了改进神经网络的资源利用的示例方法、装置和制品。具体而言,本文中公开的示例克服了试图使用启发法或基于规则的方法将资源分配到神经网络的标准编译器的低效性。例如,仅仅应用由典型编译器实现的贪心算法,会导致大量的硬件利用效率低和网络性能差。这种性能差的部分原因是,在选择要在神经网络的逐层基础上应用的特定硬件时,没有考虑到需要改进(例如,优化)的多个性能特性。所公开的方法、装置和制品通过以避免操作员自由裁量(operator discretion)或低效和短视地应用贪心算法的方式促进资源选择,提高在计算设备上执行(一个或多个)AI/DL/NN机器学习操作的效率。本文公开的改进的资源映射技术有助于鉴于由一个或多个成本/回报函数测量的多个性能特性利用强化学习来进行资源选择,使得随后的资源组合排列尝试改进(例如,最大化)成本/回报函数。因此,所公开的方法、装置、系统和制品旨在对计算机的功能进行一个或多个改进。
本文公开了映射工作负载的示例方法、装置、系统和制品。进一步的示例和它们的组合包括:
示例1包括一种用于为神经网络生成资源映射的装置,所述装置包括:约束定义器,所述约束定义器用于定义所述神经网络的性能特性目标;动作确定器,所述动作确定器用于将第一资源配置应用于与所述神经网络相对应的候选资源;回报确定器,所述回报确定器用于基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及层映射生成器,所述层映射生成器用于生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
示例2包括示例1中定义的装置,还包括神经网络映射器,所述神经网络映射器用于扫描目标平台以识别用于执行所述神经网络的候选资源。
示例3包括示例1中定义的装置,其中,所述回报确定器用于基于所述结果度量来生成迭代决策。
示例4包括示例3中定义的装置,其中,所述回报确定器用于使所述动作确定器将第二资源配置应用于所述候选资源。
示例5包括示例4中定义的装置,其中,所述回报确定器用于:基于所述第一资源配置或所述第二资源配置的相对得分,将所述第一资源配置或所述第二资源配置中的一者存储为最终资源指令。
示例6包括示例3中定义的装置,其中,所述回报确定器的所述迭代决策是使所述动作确定器响应于收敛指示符而停止对所述神经网络的当前层进行评估。
示例7包括示例6中定义的装置,还包括层选择器,所述层选择器用于:响应于所述收敛指示符而选择所述神经网络的后续层进行分析。
示例8包括示例1中定义的装置,还包括状态定义器,所述状态定义器用于生成与使用所述第一资源配置对所述候选资源的执行相对应的所述资源性能度量。
示例9包括示例1中定义的装置,还包括神经网络映射器,所述神经网络映射器用于基于所述资源映射文件覆写编译器指令。
示例10包括示例1中定义的装置,还包括神经网络输入检测器,所述神经网络输入检测器用于检索与所述神经网络相对应的模型。
示例11包括一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质包括计算机可读指令,指令在被执行时,使一个或多个处理器至少执行以下操作:定义神经网络的性能特性目标;将第一资源配置应用于与所述神经网络相对应的候选资源;基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
示例12包括示例11中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:扫描目标平台以识别用于执行所述神经网络的候选资源。
示例13包括示例11中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:基于所述结果度量来生成迭代决策。
示例14包括示例13中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:将第二资源配置应用于所述候选资源。
示例15包括示例14中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:基于所述第一资源配置或所述第二资源配置的相对得分,将所述第一资源配置或所述第二资源配置中的一者存储为最终资源指令。
示例16包括示例13中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:响应于收敛指示符而停止对所述神经网络的当前层进行评估。
示例17包括示例16中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:响应于所述收敛指示符而选择所述神经网络的后续层进行分析。
示例18包括示例11中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:生成与使用所述第一资源配置对所述候选资源的执行相对应的所述资源性能度量。
示例19包括示例11中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:基于所述资源映射文件覆写编译器指令。
示例20包括示例11中定义的存储介质,其中,所述指令在被执行时,使所述一个或多个处理器:检索与所述神经网络相对应的模型。
示例21包括一种用于为神经网络生成资源映射的方法,所述方法包括:通过使用至少一个处理器执行指令,定义所述神经网络的性能特性目标;通过使用至少一个处理器执行指令,将第一资源配置应用于与所述神经网络相对应的候选资源;通过使用至少一个处理器执行指令,基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及通过使用至少一个处理器执行指令,生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
示例22包括示例21中定义的方法,还包括:扫描目标平台以识别用于执行所述神经网络的候选资源。
示例23包括示例21中定义的方法,还包括:基于所述结果度量来生成迭代决策。
示例24包括示例23中定义的方法,还包括:将第二资源配置应用于所述候选资源。
示例25包括示例24中定义的方法,还包括:基于所述第一资源配置或所述第二资源配置的相对得分,将所述第一资源配置或所述第二资源配置中的一者存储为最终资源指令。
示例26包括示例23中定义的方法,还包括:响应于收敛指示符而停止对所述神经网络的当前层进行评估。
示例27包括示例26中定义的方法,还包括:响应于所述收敛指示符而选择所述神经网络的后续层进行分析。
示例28包括示例21中定义的方法,还包括:生成与使用所述第一资源配置对所述候选资源的执行相对应的所述资源性能度量。
示例29包括示例21中定义的方法,还包括:基于所述资源映射文件覆写编译器指令。
示例30包括示例21中定义的方法,还包括:检索与所述神经网络相对应的模型。
示例31包括一种用于为神经网络生成资源映射的系统,所述系统包括:性能特性定义装置,该装置用于定义所述神经网络的目标;动作应用装置,该装置用于将第一资源配置应用于与所述神经网络相对应的候选资源;结果计算装置,该装置用于基于(a)资源性能度量和(b)所述性能特性目标来计算结果度量;以及映射生成装置,该装置用于生成资源映射文件,所述资源映射文件包括针对所述神经网络的对应层的相应资源分配,所述资源分配是基于所述结果度量来选择的。
示例32包括示例31中定义的系统,还包括神经网络映射装置,该装置用于扫描目标平台以识别用于执行所述神经网络的候选资源。
示例33包括示例31中定义的系统,其中,所述结果计算装置用于:基于所述结果度量来生成迭代决策。
示例34包括示例33中定义的系统,其中,所述结果计算装置用于:将第二资源配置应用于所述候选资源。
示例35包括示例34中定义的系统,其中,所述结果计算装置用于:基于所述第一资源配置或所述第二资源配置的相对得分,将所述第一资源配置或所述第二资源配置中的一者存储为最终资源指令。
示例36包括示例33中定义的系统,其中,所述结果计算模块用于:使动作确定器响应于收敛指示符而停止对所述神经网络的当前层进行评估。
示例37包括示例36中定义的系统,还包括用于响应于所述收敛指示符而选择所述神经网络的后续层进行分析的装置。
示例38包括示例31中定义的系统,还包括状态定义装置,该装置用于生成与使用所述第一资源配置对所述候选资源的执行相对应的所述资源性能度量。
示例39包括示例31中定义的系统,还包括神经网络映射装置,该装置用于基于所述资源映射文件覆写编译器指令。
示例40包括示例31中定义的系统,还包括检测神经网络输入装置,该装置检索与所述神经网络相对应的模型。
尽管本公开公开了某些示例方法、装置和制品,但本专利的覆盖范围并不限于此。相反,本专利涵盖了属于本专利权利要求范围的所有方法、装置和制品。
所附权利要求通过本参考被并入具体实施方式中,每个权利要求作为本公开的单独实施例独立存在。

Claims (13)

1.一种非暂态计算机可读存储介质,包括指令,所述指令使第一处理器电路至少执行以下操作:
基于利用硬件电路的第一配置的执行,来确定与神经网络(NN)模型的第一层相关联的第一层性能度量;
基于利用硬件电路的第二配置的执行,来确定与所述NN模型的所述第一层相关联的第二层性能度量;
比较所述第一层性能度量和所述第二层性能度量;以及
基于对所述第一层性能度量和所述第二层性能度量的比较,分配所述NN模型的所述第一层在硬件电路的所述第一配置或所述第二配置中的一者上执行。
2.如权利要求1所述的计算机可读存储介质,其中,所述指令使所述第一处理器电路:实例化模拟器以确定所述第一层性能度量和所述第二层性能度量。
3.如权利要求1所述的计算机可读存储介质,其中,所述指令使所述第一处理器电路:识别硬件电路的所述第一配置和所述第二配置以执行所述NN模型,所述NN模型包括多层。
4.如权利要求1所述的计算机可读存储介质,其中,所述指令使所述第一处理器电路:生成所述第一层性能度量和所述第二层性能度量之间的相对得分。
5.如权利要求4所述的计算机可读存储介质,其中,所述指令使所述第一处理器电路:基于所述相对得分来生成迭代决策。
6.如权利要求5所述的计算机可读存储介质,其中,所述指令使所述第一处理器电路:基于与所述迭代决策相对应的收敛指示符来停止评估所述第一层。
7.如权利要求6所述的计算机可读存储介质,其中,所述指令使所述第一处理器电路:响应于所述收敛指示符而评估所述NN模型的第二层。
8.如权利要求1所述的计算机可读存储介质,其中,所述指令使所述第一处理器电路:基于所述比较来覆写与所述第一层相对应的编译器指令。
9.一种用于优化资源利用的方法,包括:
通过利用处理器电路执行指令,基于利用硬件电路的第一配置的执行来确定与神经网络(NN)模型的第一层相关联的第一层性能度量;
通过利用处理器电路执行指令,基于利用硬件电路的第二配置的执行来确定与所述NN模型的所述第一层相关联的第二层性能度量;
通过利用处理器电路执行指令来比较所述第一层性能度量和所述第二层性能度量;
基于对所述第一层性能度量和所述第二层性能度量的比较,通过利用所述处理器电路执行指令来分配所述NN模型的所述第一层在硬件电路的所述第一配置或所述第二配置中的一者上执行。
10.如权利要求9所述的方法,还包括:实例化模拟器以确定所述第一层性能度量和所述第二层性能度量。
11.如权利要求9所述的方法,还包括:检测硬件电路的所述第一配置和所述第二配置以执行所述NN模型,所述神经网络模型包括多层。
12.如权利要求9所述的方法,还包括:生成所述第一层性能度量和所述第二层性能度量之间的相对得分。
13.一种用于提高资源利用的装置,包括:
存储器;
机器可读指令;以及
处理器电路,用于实例化和/或执行所述机器可读指令,以执行如权利要求9至12中任一项所述的方法。
CN202310704333.1A 2019-08-15 2020-06-24 用于映射工作负载的方法、系统、制品和装置 Pending CN116702850A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/541,878 2019-08-15
US16/541,878 US11526736B2 (en) 2019-08-15 2019-08-15 Methods, systems, articles of manufacture and apparatus to map workloads
CN202010585628.8A CN112396173A (zh) 2019-08-15 2020-06-24 用于映射工作负载的方法、系统、制品和装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202010585628.8A Division CN112396173A (zh) 2019-08-15 2020-06-24 用于映射工作负载的方法、系统、制品和装置

Publications (1)

Publication Number Publication Date
CN116702850A true CN116702850A (zh) 2023-09-05

Family

ID=68693954

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310704333.1A Pending CN116702850A (zh) 2019-08-15 2020-06-24 用于映射工作负载的方法、系统、制品和装置
CN202010585628.8A Pending CN112396173A (zh) 2019-08-15 2020-06-24 用于映射工作负载的方法、系统、制品和装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202010585628.8A Pending CN112396173A (zh) 2019-08-15 2020-06-24 用于映射工作负载的方法、系统、制品和装置

Country Status (3)

Country Link
US (3) US11526736B2 (zh)
EP (2) EP3779802A1 (zh)
CN (2) CN116702850A (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526736B2 (en) 2019-08-15 2022-12-13 Intel Corporation Methods, systems, articles of manufacture and apparatus to map workloads
US11556393B2 (en) * 2020-01-07 2023-01-17 Adobe Inc. Environment aware application-based resource management using reinforcement learning
CN111488970A (zh) * 2020-04-03 2020-08-04 北京思朗科技有限责任公司 神经网络的执行优化方法及装置
CN111582433B (zh) * 2020-04-30 2022-07-15 清华大学 一种硬件友好的神经网络结构自动搜索方法及装置
US11797340B2 (en) * 2020-05-14 2023-10-24 Hewlett Packard Enterprise Development Lp Systems and methods of resource configuration optimization for machine learning workloads
JP6834097B1 (ja) * 2020-05-15 2021-02-24 エッジコーティックス ピーティーイー. リミテッド 推論のニューラルネットワークアクセラレータのハードウェア固有分割
JP2021192159A (ja) * 2020-06-05 2021-12-16 富士通株式会社 資源調整装置、資源調整プログラム、及び資源調整方法
US20200327392A1 (en) * 2020-06-26 2020-10-15 Intel Corporation Methods, systems, articles of manufacture, and apparatus to optimize layers of a machine learning model for a target hardware platform
US20220180178A1 (en) * 2020-12-08 2022-06-09 Nvidia Corporation Neural network scheduler
US11709758B2 (en) * 2021-06-28 2023-07-25 Accenture Global Solutions Limited Enhanced application performance framework
US20230028934A1 (en) * 2021-07-13 2023-01-26 Vmware, Inc. Methods and decentralized systems that employ distributed machine learning to automatically instantiate and manage distributed applications
CN114416351B (zh) * 2021-12-29 2022-10-21 北京百度网讯科技有限公司 资源分配方法、装置、设备、介质及计算机程序产品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190080019A1 (en) * 2017-09-12 2019-03-14 Google Llc Predicting Non-Observable Parameters for Digital Components
US20190095796A1 (en) 2017-09-22 2019-03-28 Intel Corporation Methods and arrangements to determine physical resource assignments
US20190354850A1 (en) * 2018-05-17 2019-11-21 International Business Machines Corporation Identifying transfer models for machine learning tasks
US11301718B2 (en) * 2018-12-28 2022-04-12 Vizit Labs, Inc. Systems, methods, and storage media for training a machine learning model
US20200210840A1 (en) * 2018-12-31 2020-07-02 Microsoft Technology Licensing, Llc Adjusting precision and topology parameters for neural network training based on a performance metric
US11526736B2 (en) 2019-08-15 2022-12-13 Intel Corporation Methods, systems, articles of manufacture and apparatus to map workloads

Also Published As

Publication number Publication date
US11526736B2 (en) 2022-12-13
US20240119271A1 (en) 2024-04-11
US20190370643A1 (en) 2019-12-05
EP4235514A3 (en) 2023-09-27
EP3779802A1 (en) 2021-02-17
CN112396173A (zh) 2021-02-23
US20230111365A1 (en) 2023-04-13
EP4235514A2 (en) 2023-08-30
US11816561B2 (en) 2023-11-14

Similar Documents

Publication Publication Date Title
CN116702850A (zh) 用于映射工作负载的方法、系统、制品和装置
US11663125B2 (en) Cache configuration performance estimation
US20190317880A1 (en) Methods and apparatus to improve runtime performance of software executing on a heterogeneous system
EP3757761B1 (en) Methods and apparatus for intentional programming for heterogeneous systems
US10908884B2 (en) Methods and apparatus for runtime multi-scheduling of software executing on a heterogeneous system
US10853554B2 (en) Systems and methods for determining a configuration for a microarchitecture
US11861500B2 (en) Meta-learning system
EP4196926A2 (en) Low-cost linear orders for quantum-program simulation
WO2020169182A1 (en) Method and apparatus for allocating tasks
CN112148274A (zh) 用于改善代码特性的方法、系统、制品和装置
WO2020190745A1 (en) Budgeted neural network architecture search system and method
CN115827225A (zh) 异构运算的分配方法、模型训练方法、装置、芯片、设备及介质
CN116235184A (zh) 在神经网络中动态地规范化数据的方法和装置
EP3842927B1 (en) Methods, systems, articles of manufacture and apparatus to select data structures
JP2020191017A (ja) 情報処理装置、情報処理方法および情報処理プログラム
Bahnsen et al. Effect analysis of low-level hardware faults on neural networks using emulated inference
Wang et al. Optimizing Memory Mapping Using Deep Reinforcement Learning
US20230351146A1 (en) Device and computer-implemented method for a neural architecture search
CN118093415A (zh) 一种基于多代理强化学习的qemu测试方法
CN116266109A (zh) 为程序合成训练模型的方法和装置
CN116382884A (zh) 生成要被卸载到加速器电路的命令列表的方法和装置
CN116415620A (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