CN114356510A - 用于调度的方法和电子装置 - Google Patents
用于调度的方法和电子装置 Download PDFInfo
- Publication number
- CN114356510A CN114356510A CN202110506864.0A CN202110506864A CN114356510A CN 114356510 A CN114356510 A CN 114356510A CN 202110506864 A CN202110506864 A CN 202110506864A CN 114356510 A CN114356510 A CN 114356510A
- Authority
- CN
- China
- Prior art keywords
- layer
- accelerator
- models
- time
- scheduling
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000015654 memory Effects 0.000 claims description 234
- 238000012545 processing Methods 0.000 claims description 14
- 230000003111 delayed effect Effects 0.000 claims description 4
- 238000013528 artificial neural network Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 208000010378 Pulmonary Embolism Diseases 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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
-
- 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/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Debugging And Monitoring (AREA)
Abstract
公开了一种用于调度的方法和电子装置。操作被配置为确定将在加速器中执行的模型的调度器的方法包括:接收用于将在加速器中独立执行的多个模型的执行的一个或多个请求,以及基于当在加速器中执行候选层时发生的空闲时间来对所述多个模型执行逐层调度,候选层是所述多个模型中的每个模型中的调度的目标。
Description
本申请要求于2020年10月14日提交到韩国知识产权局的第10-2020-0132759号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及具有调度的电子装置和方法。
背景技术
随着人工智能(AI)技术发展,用于AI的硬件的使用正在增加。AI可通过运算执行推断和学习。因此,正在开发各种装置作为用于实现AI的硬件。
发明内容
提供本发明内容以便以简化的形式介绍将在下面的具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求权利的主题的关键特征或必要特征,也不意在用于帮助确定要求权利的主题的范围。
在一个总体方面,一种处理器实现的方法包括:接收用于将在加速器中独立执行的多个模型的执行的各个请求,以及基于针对与排队的各个请求对应的所述多个模型中的每个模型的各个候选层的估计的空闲时间,执行各个请求的排队和所述多个模型的逐层调度以由加速器执行。
执行逐层调度的步骤可包括:选择各个候选层中的具有针对加速器的状态的估计的空闲时间之中的最小的对应的空闲时间的一个候选层。
可基于考虑以下项中的至少一个来确定加速器的状态:加速器的存储器的使用信息;加速器的运算资源将被完成的时间点与加速器的存储器访问资源将能够用于开始被使用的时间点之间的差;或所述多个模型中的每个模型的进展的状态。
使用信息可以是加速器的片上存储器的整个容量、使用的容量和/或剩余容量的信息。
可实时地执行各个请求的排队的执行和所述多个模型的逐层调度。
针对各个候选层的估计的空闲时间中的每个可基于加速器的对应的运算资源的空闲时间和加速器的对应的存储器访问资源的空闲时间。
针对各个候选层中的每个候选层的对应的运算资源的空闲时间可基于以下项来确定:对应的运算资源完成先前调度的层的执行的时间点与针对先前调度的层的存储器访问资源完成执行的时间点之间的差;以及对应的存储器访问资源的执行时间。
当对应的存储器访问资源的执行时间分别大于被最新近调度的先前层的运算资源的执行时间时,针对各个候选层中的每个候选层的对应的运算资源的空闲时间可发生。
可针对各个候选层中的每个候选层的存储器访问资源的对应的空闲时间基于以下各项来确定:由于对加速器的片上存储器的大小的约束而暂停针对各个候选层中的每个候选层的存储器访问资源的执行的时间点;以及被最新近调度的先前层的运算资源的执行被完成的时间点。
基于估计的空闲时间来执行所述多个模型的逐层调度的步骤可包括:从具有相同的最小的估计的空闲时间的多个候选层之中选择具有对应的存储器访问资源的最低空闲时间的候选层用于执行。
基于估计的空闲时间执行所述多个模型的逐层调度的步骤可包括:确定各个候选层中的候选层是否已经具有延迟执行预设次数的其他层执行时间或更多,并且可以基于确定在各个候选层的剩余候选层之前选择接下来要执行的候选层的结果。
估计的空闲时间可基于当前在加速器中执行的多个层的考虑来估计。
可独立于被接收的请求的顺序来执行所述多个模型的逐层调度的执行。
当所述多个模型中的两个或更多个在加速器中被执行时,所述多个模型中的两个或更多个可彼此没有数据依赖性。
加速器的运算资源可基于加速器的一个或多个处理元件,并且加速器的存储器访问资源可基于加速器的片上存储器和/或片外存储器。
在一个总体方面,一种非暂时性计算机可读存储介质可存储指令,所述指令在被处理器执行时使处理器执行在此描述的一个或多个或所有操作和方法。
在一个总体方面,一种非暂时性计算机可读存储介质可存储指令,所述指令在被与加速器不同的处理器执行时,可使处理器执行在此描述的调度操作和方法中任何一个、组合、或所有,并且基于使用加速器的调度使所述多个候选层进行各自的执行。
在一个总体方面,一种电子装置包括:一个或多个处理器,被配置为实时地执行用于将在加速器中独立执行的多个模型的执行的各个请求的排队,以及基于与排队的各个请求对应的多个模型中的每个模型的各个候选层的估计的空闲时间的所述多个模型的逐层调度以由加速器执行。
所述装置还可包括片外存储器,并且加速器可包括片上存储器。
为了实时执行逐层调度,所述一个或多个处理器可被配置为:选择各个候选层中的在针对加速器的状态的估计的空闲时间之中的具有最小的对应的空闲时间的一个候选层。
针对各个候选层的估计的空闲时间中的每个可基于加速器的对应的运算资源的空闲时间和加速器的对应的存储器访问资源的空闲时间。
针对各个候选层中的每个候选层的对应的运算资源的空闲时间可基于以下项来确定:对应的运算资源完成先前调度的层的执行的时间点与针对先前调度的层的存储器访问资源完成执行的时间点之间的差;以及对应的存储器访问资源的执行时间。
针对各个候选层中的每个候选层的对应的存储器访问资源的空闲时间可基于以下项来确定:由于对加速器的片上存储器的大小的约束而暂停对应的存储器访问资源的执行的时间点;以及被最新近调度的先前层的运算资源的执行被完成的时间点。
在一个总体方面,一种电子装置包括:调度器,被配置为:对用于将独立执行的多个模型的执行的多个请求进行排队,并且基于所述多个模型中的每个模型的各个候选层的估计的空闲时间,对所述多个模型执行逐层调度以由加速器执行;以及加速器,被配置为:基于由调度器执行的逐层调度来执行所述多个模型的各个层。
在一个总体方面,一种处理器实现的方法包括:执行对在加速器中请求执行的多个模型的实时逐层调度,其中,实时逐层调度针对基于所述多个模型的多个独立候选层的估计的空闲时间,其中,在每次先前候选层已经在加速器中开始调度的执行并且候选层仍然针对多个模型被调度之后执行实时逐层调度,以及指示加速器执行所述多个独立候选层中的具有估计的空闲时间中的最低估计的空闲时间的一个或多个独立候选层。
所述方法还可包括对用于所述多个模型的执行的各个请求进行排队,以及基于排队的各个请求、加速器的状态以及所述多个模型的所述多个独立候选层的各个工作负载特性来执行逐层调度。
所述多个独立候选层的估计的空闲时间可各自基于考虑加速器的各个操作和存储器访问资源。
从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1a和图1b是示出根据一个或多个实施例的电子装置的示图。
图2是示出根据一个或多个实施例的加速器的示例硬件资源的示图。
图3是示出根据一个或多个实施例的逐层调度的示例的示图。
图4和图5是示出根据一个或多个实施例的空闲时间的示例的示图。
图6和图7是示出根据一个或多个实施例的逐层调度的示例的示图。
图8是示出根据一个或多个实施例的调度方法的流程图。
图9和图10是示出根据一个或多个实施例的示例电子装置的示图。
贯穿附图和具体实施方式,除非另有描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此所阐述的那些操作的顺序,而是除了必须以特定顺序发生的操作之外,可如在理解本申请的公开之后将清楚地那样被改变。为了更清楚和简明,也可省略在理解本公开之后已知的特征的描述。
在此描述的特征可以以不同的形式来实现,并且不应被解释为限于在此描述的示例。相反,已提供在此描述的示例仅是为了示出在理解本申请的公开后将是清楚的实现在此描述的方法、设备和/或系统的许多可行方式中的一些方式。
在此使用的术语仅用于描述各种示例而不用于限制公开。除非上下文另外清楚地指示,否则如还在此使用的,单数形式也意在包括复数形式。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还应理解,术语“包含”、“包括”和“具有”说明存在所陈述的特征、数量、操作、构件、元件和/或它们的组合,但是不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。在此关于示例或实施例的术语“可”的使用(例如,关于示例或实施例可包括或实现什么)表示存在包括或实现这样的特征的至少一个示例或实施例,然而全部示例不限于此。
尽管可在此使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语的限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
贯穿说明书,当组件被描述为“连接到”另一组件或“结合到”另一组件时,该组件可直接“连接到”另一组件或直接“结合到”另一组件,或者可存在介于两者之间的一个或多个其他组件。相比之下,当元件被描述为“直接连接到”另一元件或“直接结合到”另一元件时,可能不存在介于两者之间的其他元件。同样地,相似的表达(例如,“在……之间”、“紧接在……之间”、“与……邻近”与“与……紧邻”)也应以相同的方式解释。如在此使用的,术语“和/或”包括相关所列项中的任意一个和任意两个或更多个的任意组合。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解并基于对本申请的公开的理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)将被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且不应以理想化或过于形式化的含义进行解释。
此外,在示例实施例的描述中,当认为在理解本申请的公开之后由此已知的结构或功能的详细描述会导致对示例实施例的模糊解释时,将省略这样的描述。在下文中,将参照附图详细描述示例,并且在附图中,相同的参考标号始终表示相同的元件。
图1a和图1b是示出根据一个或多个实施例的电子装置的示图。
参照图1a,电子装置100包括主机处理器110、片外存储器120、存储器控制器130和加速器140。在各种示例中,主机处理器110、片外存储器120、存储器控制器130和加速器140可通过总线、片上网络(NoC)、外围组件快速互连(PCIe)等彼此通信。
主机处理器110可以是被配置为控制包括在电子装置100中的组件的各种操作的装置,并且可包括例如中央处理器(CPU)。主机处理器110可接收用于例如在加速器140中处理神经网络的一个或多个请求,并且可针对接收的请求而生成在加速器140中可执行的各个指令。在各种示例中,可对基于神经网络的数据推断做出在此描述的请求,并且可做出在此描述的请求以通过允许加速器140执行用于对象识别、模式识别、计算机视觉、语音识别、机器翻译、机器解释等的神经网络来获得数据推断的结果。主机处理器110可将神经网络的特定参数和目标推断数据传送到加速器140。
作为非限制性示例,片外存储器120可以是设置在加速器140外部的存储器,并且可以是用作电子装置100的主存储器的动态随机存取存储器(DRAM)。片外存储器120可存储目标推断数据和/或将在加速器140中执行的神经网络的参数,并且存储的数据可被传送到加速器140以用于执行后续推断。作为非限制性示例,当主机处理器110从电子装置100的I/O或捕获装置/组件(诸如,图10的示例中的麦克风或一个或多个相机)收集或接收信息时,片外存储器120还可存储神经网络的第一层的输入数据以及将在加速器140中执行的神经网络的对应的参数,和/或主机处理器110还可以存储这样的输入数据。在加速器140中的片上存储器不足以在加速器140中执行对应的神经网络的情况下,片外存储器120可用于存储目标推断数据和/或参数。
片外存储器120可具有比加速器140中的片上存储器大的存储器容量。然而,当执行示例神经网络时,加速器140访问片外存储器120的成本可大于访问片上存储器的成本。这样的存储器访问成本可指示用于访问存储器并且然后从存储器读取数据或将数据写入存储器中所使用的功率和/或时间的量。
加速器140可以是被配置为根据主机处理器110的指令执行神经网络或神经网络操作,并通过执行来推断结果数据的人工智能(AI)加速器,并且加速器140是与主机处理器110区分开的单独处理器。在各种示例中,加速器140可以是被改变用途的神经处理器(NPU)、图形处理器(GPU)、张量处理器(TPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。加速器140也表示一个或多个加速器140。
加速器140可基于神经网络的操作的特性来处理工作负载,该工作负载由单独的专用处理器(例如,加速器140)处理比由用于通用目的的主机处理器110处理更有效。这里,一个或多个处理元件(PE)被包括在加速器140中,并且片上存储器可被使用。片上存储器可以是包括包含在加速器140中并且与设置在加速器140外部的片外存储器120区分开的全局共享缓冲器和/或本地缓冲器的装置。片上存储器可包括例如可通过地址空间访问的暂存存储器、静态随机存取存储器(SRAM)等。
神经网络可包括多个层。在一个示例中,神经网络可包括输入层、多个隐藏层和输出层。虽然每个层可包括多个节点,多个节点中的每个节点被称为人工神经元,但是对一个或多个神经元或它们之间的连接的引用并不意在推断与生物形成的任何关系,而是仅是本领域的术语。每个节点可以是具有至少一个输入和输出的计算单元,并且在各种示例中,节点可以以各种方式彼此连接。权重可针对各个节点之间的连接被设置,并且例如,针对同一神经网络的不同层,或者针对被配置用于不同目的的不同神经网络,权重是可调整的或可改变的。此外,在训练期间,权重可表示临时权重,而最终训练的权重是训练的权重。例如,作为非限制性示例,在训练期间,各个权重可增大、减小或保持为相关数据值以确定数据值对最终结果的影响。在非限制性示例中,包括在输出层中的每个节点可具有来着包括在先前层中的节点的加权输入。加权数据从一个层输入到该层的后续层的处理可被称为前向传播。
在一个示例中,当主机处理器110接收到用于神经网络实现的多个请求时,加速器140可根据从主机处理器110传送的指令分别执行多个神经网络。在这个示例中,将在加速器140中执行的神经网络可具有不同的结构和/或不同的权重和连接,或者同一神经网络可被执行多次。在另外的示例中,同一神经网络的多个并行层可被请求以执行,或者同一神经网络的多个并行层可以与多个其他神经网络一起被执行。然而,在简单地基于由主机处理器110接收请求的顺序在加速器140中执行神经网络的情况下,由于每个神经网络的工作负载特性,因此可在加速器140的硬件资源在各个执行过程中不被使用的期间存在空闲时间。此外,可能发生大的尾部时延,其中,当先前的请求被处理时,晚接收的请求被显著延迟。
为了防止加速器140的利用的这种降低,可针对在特定时间在加速器140中执行的哪个神经网络期望地控制调度。
此外,在一个或多个示例中,可以以层为单位来执行对神经网络的调度,这可减少或最小化在执行期间发生的空闲时间。为了便于描述,在此神经网络也被称为模型。
图1b示出被配置为执行调度模型的加速器140的示例结构。加速器140可包括多个PE和可由PE中的至少一个访问的多级存储器。多级存储器可以是与加速器140的片上存储器对应的级(LV)0存储器(例如,LV0 SRAM)141-1、LV1存储器142-1和LV2存储器143-1的共同表达。
参照图1b,在一个示例中,PE中的PE 141包括LV0存储器141-1、LV0直接存储器访问(DMA)141-3、乘法器-累加器(MAC)141-5和LV0控制器141-7。
LV0存储器141-1可以是可由对应的PE 141访问的存储器。也就是说,每个相应的PE 141中的每个LV0存储器141-1可仅由该相应的PE 141访问。
对于每个PE 141,LV0 DMA 141-3可基于来自LV0控制器141-7的指令来控制LV0存储器141-1的输入数据和/或输出数据。LV0 DMA 141-3可基于与包括在来自LV0控制器141-7的指令中的源、目的地和数据大小相关联的信息,从LV0存储器141-1读取数据或将数据写入LV0存储器141-1中。
这里,输入到LV0存储器141-1的数据或从LV0存储器141-1输出的数据可被监视和/或剖析(profile)。这样的监视和/或剖析可在LV0 DMA 141-3或单独的硬件元件中执行。通过监视和/或剖析,可验证LV0存储器141-1的访问成本、LV0存储器141-1的使用信息以及存储在LV0存储器141-1中的数据的类型。例如,每个LV0 DMA 141-3可验证多少百分比被指示为对应的LV0存储器141-1的使用信息,以及哪个工作负载涉及存储在对应的LV0存储器141-1中的数据。
MAC 141-5可执行与分配给PE 141的工作负载有关的运算或计算。例如,MAC 141-5可对给定数据执行乘法-累加运算。此外,MAC 141-5可将激活函数应用于给定数据。作为非限制性示例,激活函数可以是S型函数(sigmoid)、双曲正切(tanh)或线性整流函数(又称为,修正线性单元ReLU)。
每个LV0控制器141-7还可以是被配置为控制包括在对应的PE 141中的组件的装置。例如,LV0控制器141-7可控制LV0存储器141-1、LV0 DMA 141-3和MAC 141-5。
图1b的所示的PE 141的前述描述适用于包括在加速器140中的每个PE。也就是说,加速器140可包括各自独立地执行操作或计算的PE。
在一个示例中,所有PE中的每n个PE可聚集在一起。在这个示例中,n是大于1且小于包括在加速器140中的PE的总数的自然数。也就是说,包括在加速器140中的PE的各个部分可分别聚集在一起以形成多个集群(例如,PE集群142)。PE集群大小可以是相同的或可在加速器140中变化。
包括在每个集群(例如,集群142)中的PE可共享一个LV1存储器142-1。也就是说,LV1存储器142-1可由包括在对应的集群142中的多个PE访问。例如,即使在集群142中的PE之中的第一PE和第二PE中分别执行的操作可彼此不同,但是用于操作的数据的相同部分可共同可用于集群142中的所有PE。由于该公共数据被存储在LV1存储器142-1中,而不是被存储在包括在第一PE和第二PE中的每一个中的LV0存储器141-1中,因此第一PE和第二PE可共享公共数据,这可提高加速器140的效率。在图1b的示例中,每个PE的相应的LV1存储器142-1可被布置,使得每个PE可访问与每个PE邻近的LV1存储器142-1。
此外,针对图1b,在一个示例中,存储器LV1 142-1中的每个表示LV1DMA,LV1 DMA被配置为监视和/或剖析将输入到相应的LV1存储器142-1或从相应的LV1存储器142-1输出的数据。此外,加速器140可包括相应的LV1控制器以控制相应的LV1存储器142-1和LV1DMA。
此外,PE 143的整体可共享LV2存储器143-1。也就是说,LV2存储器143-1可由包括在加速器140中的所有PE访问。例如,尽管在包括在加速器140中的PE之中,那些PE没有被聚集在一起以形成同一集群,但是可存在共享用于执行操作的数据的一部分的PE。。在这个示例中,这样的PE可不通过LV1存储器142-1共享数据,并且可通过LV2存储器143-1有效地共享公共数据,这可提高加速器140的效率。此外,针对图1b,在一个示例中,LV2存储器143-1还表示LV2 DMA,LV2 DMA被配置为监视和/或剖析输入到LV2存储器143-1或从LV2存储器143-1输出的数据。此外,加速器140可包括用于控制LV2存储器143-1和LV2 DMA的LV2控制器。
如上所述,每个PE可访问各自的LV0存储器141-1、与每个PE邻近的LV1存储器142-1和加速器140的LV2存储器143-1,并且使用这些存储器来执行分配或指示的工作负载。加速器140可包括包含分层存储器的多级存储器。
此外,包括在加速器140中的相应的DMA和控制器可以是分层多级类型。此外,可针对存储器访问成本、存储器使用或可用性以及加速器140的空闲信息来考虑来自相应的数据多级存储器的监视和/或剖析、监视和/或剖析输入到相应存储器或由相应存储器输出的数据的结果信息。因此,各种神经网络或网络层的加速器140进行的先前神经网络执行可提供信息用于估计多个候选神经网络层之中的先前实现的或新的候选神经网络层的空闲信息。因此,可针对候选层中的每个考虑对存储器的存储器访问、从存储器到PE、对应的工作负载以及对应的PE的开始和结束完成时间、从PE到存储器的存储器访问、以及对片外存储器220和/或主机处理器110的最终存储器访问的信息,以及工作负载特性(诸如,参数的数量、和输入和输出信息的范围、以及针对候选层中的每个的执行要执行的操作的类型)。为了每次估计每个候选层的PE和存储器空闲时间,最终调度和执行(例如,在完成先前调度的候选层之后最终调度和执行)至少一个结果候选层。
在一个非限制性示例中,包括在加速器140中的PE可同时执行多个工作负载。例如,具有相对较大的运算量的一个工作负载可被分配给较大数量的PE(例如,两个或更多个集群)并在其中被处理,并且具有相对较小的运算量的第二工作负载可被分配给较小数量的PE(例如,仅一个集群)并在其中被处理。可选地,可存在针对每个工作负载利用相等数量的集群执行的多个工作负载。
为了便于描述,图1b示出非限制性示例,其中,64个PE中的每八个PE聚集在一起以形成总共八个集群,并且三个级别存储器被用于执行四个工作负载中的每个。如图1中所示,包括在同一群集中的八个PE可处理不同的工作负载。然而,可应用各种数量的PE、工作负载和级别而没有限制。图1a和图1b中的组件还示出了图9的服务器和图10的电子装置的对应组件。
图2是示出根据一个或多个实施例的加速器的示例硬件资源的示图。
在图2的示例中,示出加速器210和片外存储器220。
在这个示例中,加速器210包括全局共享缓冲器和共享全局共享缓冲器的多个PE阵列。每个PE阵列包括本地缓冲器和共享本地缓冲器的多个PE。全局共享缓冲器和本地缓冲器可被称为设置在加速器210内部的片上存储器。
为了在加速器210中执行模型,可重复地或迭代地执行通过存储器访问读取用于执行模型的数据、在一个或多个相应的PE中执行运算或计算、以及将运算或计算的结果存储在存储器(例如,除了相应的片上存储器之外的片外存储器220)中的处理。
片上存储器可设置在加速器210内部,并且具有比片外存储器220低的访问成本。然而,片上存储器可具有比片外存储器220小的存储器容量,因此,片上存储器可不足以存储用于PE中的处理操作的所有数据。因此,在这样的情况下可使用片外存储器220。
为了在加速器210中执行模型,可使用各种硬件资源。例如,可使用基于一个或多个PE的运算资源(或计算资源)和基于片上存储器和/或片外存储器220的存储器访问资源。
例如,运算资源可指示在PE中可处理的运算量,并且可由测量单位(诸如,以每秒浮点运算(FLOPS)和每秒万亿次运算(TOPS)为例)表示。存储器访问资源可指示PE阵列之间的NoC带宽以及加速器210与片外存储器220之间的存储器带宽,并且可由另一测量单位(诸如,以每秒千兆字节(GB/s)为例)表示。此外,存储器访问资源可指示全局共享缓冲器和本地缓冲器的存储器容量,并且可由又一测量单位(诸如,以兆字节(MB)为例)表示。
在一个示例中,存储器带宽可以是用于将存储在可具有相对高容量的片外存储器220中的数据传送到可具有相对低容量的全局共享缓冲器的存储器带宽。NoC带宽可用于将已经传送到全局共享缓冲器的数据传送到例如执行实际操作的PE阵列。因此,一般来说,存储器带宽可最终小于加速器210中的NoC带宽。
如上所述,模型和/或包括在每个模型中的层可具有不同的工作负载特性,因此,将用于每个模型或层的运算资源和存储器访问资源可对于每个模型或层而不同。因此,通过基于工作负载特性执行调度以增加或最大限度地重叠加速器210中的存储器和计算/运算资源被使用的时间并减少或最小化空闲时间,各种示例可提高整体系统性能。
在一个示例中,为了模型调度,可进一步考虑片上存储器的数据依赖性和可用性。
数据依赖性可指示设计或编译器意图以获得期望结果的数据集的计算顺序,并且包括在一个模型中的多个层可以以预设顺序被顺序地处理。然而,将在加速器210中处理的多个模型之间可不存在数据依赖性,因此,模型的处理顺序的改变不会有显著影响。例如,在包括在第一模型中的一个层被处理之后,该层的后续层可被处理,或者随后将被处理的第二模型的层可被处理。如前面示例所述,第一模型与第二模型之间的处理顺序可通过每个层执行来改变。
片上存储器的可用性可限制加速器210的处理。片上存储器可以是可被快速访问但可不具有足以使PE有效地执行特定操作的存储器容量的加速器210的内部存储器。在这种情况下,当使用与加速器210的外部存储器对应的片外存储器220时,因为片外存储器220的存储器访问时间大于片上存储器的存储器访问时间,所以可针对执行调度而考虑片外存储器的存储器访问时间。也就是说,在加速器210的片上存储器中重复使用每个模型的中间数据的方法也可影响存储器访问成本,因此,它也可针对调度而被考虑。
图3是示出根据一个或多个实施例的逐层调度的示例的示图。
参照图3,包括在电子装置中的主机装置310和加速器装置320可通过PCIe连接,并且模型可基于由主机装置310确定的调度在加速器装置320中执行。主机装置310与加速器装置320之间的连接的示例不限于PCIe,并且其他类型的连接也可以是适用的。
主机装置310可包括主机存储器、主机处理器和输入存储装置。主机存储器可包括其中存储来自单个用户或者多个用户或功能的请求的请求队列。在请求队列中,加速器装置320所支持的模型的执行请求可被连续地累积。在此描述的模型的执行请求可表示用于执行该模型的请求。在图3的示例中,BERT和ResNet可表示从电子装置的用户或功能做出执行请求所针对的不同模型。
主机处理器可包括贪婪调度器(greedy scheduler),贪婪调度器例如被配置为对与存储在请求队列中的请求对应的模型之中的随后将被执行的层执行调度。为了便于描述,将贪婪调度器简称为调度器。
每当在加速器装置320中完成调度的层的执行时,调度器可被调用,并且调度器可在对应的时间对使加速器装置320的空闲时间最小化的该模型或另一模型的层执行调度。也就是说,调度器可计算或估计当在调度器被调用的时间点执行候选层时发生的空闲时间,对具有最小化或最小的空闲时间的选择的层执行调度,并允许该层将在加速器装置320中执行,所述候选层作为与可用的用户请求对应的多个模型中的每个模型中的针对调度的目标。在一组示例模型中,模型之间可没有数据依赖性,因此,调度器可独立于请求的顺序对不同的模型执行逐层调度。如上所述,由于调度器计算或估计在每当完成每个层的执行时选择每个候选层时发生的加速器装置320的空闲时间,并且对具有最小化或最小的空闲时间的层执行调度,因此即使通过基于层的一部分的运行时调度,而不考虑包括在每个模型中的所有层的执行,也可增加或最大化加速器装置320的吞吐量和性能。此外,即使每当将在加速器装置320中执行的层被切换(即,内容切换)时调用调度器,实时调度并支持对多个模型的可扩展性可在各种示例中被提供。在一个示例中,各个请求的排队的执行和多个模型的逐层调度可被实时执行。
在一个示例中,后续的加速器状态可被跟踪和记录,并且调度器可基于加速器状态来执行调度。诸如上面针对存储器和运算资源所讨论的,在此描述的加速器状态可包括以下项中的至少一个:包括在加速器中的存储器的使用信息(例如,以MB为测量单位的片上存储器的整个容量、使用的容量和/或剩余容量)、加速器的运算资源被最新近使用的时间点与加速器的存储器访问资源开始被使用的时间点之间的差(例如,以周期为测量单位)、或每个模型的进展的状态(例如,考虑到包括在同一模型中的多个层之间存在数据依赖性,由第n层表示)。在一个示例中,加速器的运算资源被最新近使用的时间点可指示最新近调度的先前层的运算资源的使用被完成的时间点。在下文中,将参照图4和图5更详细描述基于这样的加速器状态的调度。
此外,调度器可基于片上存储器的当前状态来计算/估计空闲时间将在未来发生的潜在概率,并且基于在当前时间进行的层的选择对未来的层调度的确定的影响来执行调度。
调度器可执行如上所述的调度,直到存储在请求队列中的所有模型的执行完成。
输入存储装置可包括用于将执行的多个模型的各种模型参数,以及作为各个推断的目标的各个输入数据。作为非限制性示例,输入数据可表示最初输入到模型的数据,或者来自先前已经执行的模型的一个或多个层的输出数据。
主机装置310可将关于在由调度器确定的哪个时间点将执行哪个层的加速器指令传送到加速器装置320。然后,加速器装置320可根据加速器指令执行层,并且将层执行被完成的模型(或模型的层)的推断结果返回到主机装置310。
如上所述,在不添加用于执行逐层运行时调度的单独的专用硬件或辅助硬件的情况下,各种示例实施例可有效地实现运行时调度器。
在一个非限制性示例中,图1a-图3和图9-图10的主机装置可以是相同的主机装置,图1a-图3和图9-图10的加速器或加速器装置可以是相同的加速器或加速器装置,图1a-图3和图9-图10的调度器可以是相同的调度器,注意替代物也存在。
图4和图5是示出根据一个或多个实施例的空闲时间的示例的示图。
对于将在运算资源中执行的操作,可需要首先通过存储器访问资源执行读取作为操作的目标的数据的处理。存储器访问资源和运算资源可并行操作。因此,可通过在运算资源中正在执行操作的同时通过存储器访问资源预先读取用于后续操作的数据来减少不必要的空闲时间。随着存储器访问资源和运算资源的这种空闲时间减少,加速器的利用率可提高,因此性能可提高。
图4示出运算资源的空闲时间的示例。在图4的示例中,“1”指示调度的第一层,该调度的第一层是最新近调度的先前层,“2”指示在第一层的执行完成之后将执行的第二层并且是用于调度的候选层目标。
参照图4,当通过存储器访问资源加载第一层的数据时,可在运算资源中执行对第一层的操作,并且可在存储器访问资源中开始对随后将执行的第二层的存储器访问。这里,当对第二层的存储器访问的时间大于对第一层的操作的时间时,可能无法完成对第二层的存储器访问,并且可能无法充分准备用于对第二层的操作的模型参数等,因此即使当运算资源中的对第一层的操作终止时,也可能无法立即或及时地执行对第二层的操作。因此,可发生空闲时间,直到对第二层的存储器访问完成。也就是说,当用于执行对作为调度的目标的候选层的存储器访问的时间大于用于在运算资源中执行最新近调度的先前层的操作的时间时,可发生运算资源的空闲时间。
在图4的示例中,调度器可基于针对先前层最新近执行运算资源的时间点t2与存储器访问资源被最新近执行的时间点t1之间的差,以及基于针对作为调度的目标的候选层执行存储器访问资源的执行时间,来确定运算资源的空闲时间。例如,调度器可通过从每个候选层的存储器访问资源的执行时间减去时间t1与时间t2之间的差来计算运算资源的空闲时间。
图5示出存储器访问资源的空闲时间的示例。在图5的示例中,“1”指示调度的第一层,“2”指示第二层,该第二层是最新近调度的层的先前层,“3”指示在第二层的执行完成之后将执行的作为用于调度的候选目标层的第三层。
参照图5,当通过存储器访问资源加载第一层的数据时,可在运算资源中执行对第一层的操作,然后存储器访问资源可对第二层执行数据加载。这里,由于片上存储器的有限大小,所以存储器访问资源可在片上存储器的可用容量内对后续层执行数据加载。在图5的示例中,当对第一层的操作的时间大于针对后续层(例如,第二层和第三层)的存储器访问资源的执行时间,并且片上存储器已满并且进一步的数据加载不可能的时间点t1达到时,可发生存储器访问资源的空闲时间。这里,当在时间点t2在运算资源中完成对第一层的操作时,可从片上存储器去除与对第一层的操作相关联的数据,并且可恢复暂停的存储器访问资源的执行。
调度器可基于由于加速器的片上存储器的大小(例如,存储容量的大小)有限而暂停作为调度的目标的每个候选层的存储器访问资源的执行的时间点t1以及最新近调度的先前层的运算资源的执行被完成的时间点t2来确定存储器访问资源的空闲时间。例如,调度器可计算时间t2与时间t1之间的差作为存储器访问资源的空闲时间。此外,当计算存储器访问资源的空闲时间时,调度器还可使用上述加速器状态。
在一个示例中,调度器可对作为多个模型的调度的目标的候选层之中的具有存储器访问资源的空闲时间和运算资源的空闲时间的最小和的选择的层执行调度。在这个示例中,例如,当存在具有存储器访问资源的空闲时间和运算资源的空闲时间的相同的最小和的的多个候选层时,调度器可对具有存储器访问资源的最小空闲时间的选择的层执行调度。也就是说,可对加速器的运算资源最新近被使用的时间点与存储器访问资源开始被使用的时间点之间的差被保持在与由片上存储器发生的存储器访问资源的空闲时间相似的级别的层优先执行调度。由此,可减少或最小化在下一调度中可发生的空闲时间。
图6和图7是示出根据一个或多个实施例的以层为单位(layer-unit)的调度的示例的示图。
图6示出如何顺序地执行逐层调度的示例。在图6的示例中,为了便于描述,假设在正在对模型A和模型B执行逐层调度的同时另外请求模型C,因此,现在对模型A、B和C执行逐层调度。
参照图6,首先对模型A和模型B执行调度。调度器可对作为模型A和模型B中的调度的目标的候选层610(例如,模型A和模型B的各自的第一层)之中的具有最小空闲时间的模型A的第一层执行调度。当调度器在模型A的第一层在加速器中被执行之后被调用时,调度器可对作为模型A和模型B中的调度的目标的候选层620(例如,模型A的第二层和模型B的第一层)之中的具有最小空闲时间的模型B的第一层执行调度。随后,当调度器在模型B的第一层被执行之后被调用时,调度器可对作为模型A和模型B中的调度的目标的候选层630(例如,模型A和模型B的各自的第二层)之中的模型B的第二层执行调度。随后,当调度器在模型B的第二层被执行之后被调用时,调度器可对包括另外请求的模型C的模型A、模型B和模型C执行逐层调度。例如,调度器可对作为模型A、模型B和模型C中的调度的目标的候选层640(例如,模型A的第二层、模型B的第三层和模型C的第一层)之中的具有最小空闲时间的层执行调度。通过这种运行时调度,可支持对多个模型的可扩展性。
在一些情况下,由于针对特定候选层的加速器的长空闲时间,该候选层可不被调度器选择。在这种情况下,包括候选层的模型的延迟可大大增加。为了防止这种情况,当在多个模型的候选层之中存在执行被延迟预设数量的次数或更多的层时,调度器可对该层执行调度并允许该层被强制执行。由此,可有效地管理加速器的时延。
尽管在图6中示出每个模型具有单个候选层,但是每个模型可根据需要具有多个候选层。也就是说,将被应用逐层调度的窗口可被设置为包括多个候选层。例如,在窗口的大小对应于三个层的情况下,候选层可以是模型A的层1、层2和层3以及模型B的层1、层2和层3。在这个示例中,从这些候选层的各种组合之中,可选择具有最小空闲时间的层,并且可对选择的层执行调度。即使在这种情况下,在同一模型中,层顺序也可由于数据依赖性而受到限制。因此,可考虑减少空闲时间或使空闲时间最小化的各种层的执行组合。
图7示出如何对具有不同工作负载特性的模型执行逐层调度的示例。在图7的示例中,第一模型可具有表示操作成本大于存储器访问成本的工作负载特性,第二模型可具有表示存储器访问成本大于操作成本的工作负载特性。第一模型可包括多个层(例如,L11、L12、L13等)。类似的,第二模型也可包括多个层(例如,L21、L22、L23等)。
参照图7,具有相对少的存储器访问成本的第一模型的第一层L11被分配给存储器访问资源,并且与层L11相关联的存储器访问操作被执行。当存储器访问操作被终止时,层L11被分配给运算资源并且与层L11相关联的计算操作被执行,第二模型的第一层L21被分配给存储器访问资源并且与层L21相关联的存储器访问操作被执行。当与层L21相关联的存储器访问操作在与层L11相关联的计算操作期间被终止时,第一模型的第二层L12随后被分配给存储器访问资源。因此,可防止在存储器访问资源中发生空闲时间。可以以与上述类似的方式对直到第一模型和第二模型中的每个的最后一层执行逐层调度。
如上所述,每个资源的使用程度可对于每个层而不同,因此,调度器可将包括在第一模型和第二模型中的每个中的层之中的具有不同工作负载的两个层分别分配给加速器的运算资源和存储器访问资源。例如,当包括在第一模型中的一个层正被分配给加速器的运算资源的同时,调度器可将需要随后将被处理的第一模型的后续层或第二模型的层分配给加速器的存储器访问资源。在这个示例中,第一模型的将被分配给运算资源的层可具有与将被分配给存储器访问资源的第一模型的后续层或第二模型的层的工作负载特性不同的工作负载特性。
如所描述的,调度器可基于第一模型和第二模型的每个层的工作负载特性以及加速器的硬件资源来对第一模型和第二模型执行逐层调度。因此,可最小化或减少在每个资源和加速器的利用中发生空闲时间。调度器可执行调度以基于彼此独立的模型之间的层级别或另一等效操作单元(例如,残差块、起始模块等)来改变执行顺序。
图8是示出根据一个或多个实施例的调度方法的流程图。
参照图8,在操作810中,调度器接收对将在加速器中独立执行的多个模型的一个或多个执行请求。在操作820中,调度器基于如果在加速器中执行的每个模型中的作为调度的目标的候选层的空闲时间对模型执行逐层调度。
在一个示例中,调度器可执行这样的以层为单位调度,该以层为单位的调度从模型的候选层之中选择具有最小空闲时间的层,因此,调度器可执行最小化或减少空闲时间的优化调度,而与用户或功能请求的顺序无关。在这个示例中,可在每当每个层的执行时调用调度器。
上面针对图1a至图7的讨论可适用于图8的讨论,因此,图8的操作的更详细描述被省略。
图9和图10是示出根据一个或多个实施例的电子装置的示例的示图。上面针对图1a至图8的讨论也可适用于图9和图10的讨论,因此,为了便于解释,将不再重复其详细描述。
参照图9,作为非限制性示例,电子装置可以是服务器900。
服务器900可以是与由用户控制的示例用户终端或其他电子装置区分开的单独的装置,并且可通过有线网络和/或无线网络与一个或多个这样的用户终端进行通信。服务器900可接收从多个用户通过用户的用户终端同时(或在时间上很快,例如,在时间上重叠执行和/或执行请求的情况下)发送的请求。服务器900还可从多个用户终端接收从同一用户发送的请求。通过调度器910,服务器900可对将在加速器920中执行的多个模型执行逐层调度。加速器920表示一个或者两个或更多个加速器920。加速器920可基于调度来执行模型并确定推断结果。然后,服务器900可将推断结果返回到对应的用户终端。在此描述的用户终端(或电子装置)可包括例如计算装置(诸如,智能电话、个人计算机(PC)、平板PC和膝上型计算机)、可穿戴装置(诸如,智能手表和智能眼镜)、家用电器(诸如,智能扬声器、智能TV和/或智能冰箱)、以及其他装置(诸如,智能车辆、智能自助服务终端和物联网(IoT)装置)中的任何一个或者任何两个或更多个的任何组合。此外,存在其中服务器操作由彼此通信的这样的电子装置中的一个执行,并且模型执行请求可从其他电子装置中的每个以及针对一个这样的电子装置被接收的示例。
参照图10,电子装置可被实现为用户终端1000。尽管为了便于描述,用户终端1000在图10中被示出为智能电话,但是由用户控制或为用户实现的任何装置可以是适用的而没有限制。例如,用户终端可以是针对图9讨论的任何电子装置。用户终端1000可直接从用户获得请求或由用户的行动或不行动发起的用户终端1000的功能,并且通过调度器1010对将在加速器1020中执行的模型执行调度。加速器1010表示一个或两个或多个加速器1010。加速器1020可基于调度来执行模型并确定推断结果。
图9的服务器900和图10的用户终端1000二者还表示分别包括上面针对图1a-图8描述的任何两个或更多个或者所有组件中的任何一个或任何组合。
在此针对图1a至图10描述的主机处理器、主机装置、调度器、存储器控制器、片外存储器、加速器、电子装置、用户终端以及其他装置、设备、单元、模块和组件通过硬件组件实现。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简明,单数术语“处理器”或“计算机”可用于本申请中描述的示例的描述,但是在其他的示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或二者。例如,单个硬件组件或者两个或更多个硬件组件可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,一个或多个其他硬件组件可通过一个或多个其他处理器,或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、多指令多数据(MIMD)多处理。
图1a至图10中示出的执行在本申请中描述的操作的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述地执行指令或软件,以执行在本申请中描述的通过该方法执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机如机器或专用计算机那样进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中所示的框图和流程图以及在此使用的对应描述使用任何编程语言容易地编写指令或软件,附图中所示的框图和流程图以及说明书中的对应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(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)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将所述指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机,使得一个或多个处理器或计算机能执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件和数据结构由一个或多个处理器或计算机以分布式方式存储、访问和执行。
虽然本公开包括特定的示例,但是在理解本申请的公开之后将清楚,在不脱离权利要求及其等同物的精神和范围的情况下,可以在这些示例中进行形式和细节上的各种改变。在此描述的示例仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为可适用于其他示例中的类似特征或方面。如果描述的技术以不同的顺序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合,和/或由其他组件或它们的等同物替换或补充,则可实现合适的结果。
Claims (22)
1.一种处理器实现的用于调度的方法,所述方法包括:
接收用于在加速器中独立执行多个模型的各个请求;
执行各个请求的排队;以及
基于针对与排队的各个请求对应的所述多个模型中的每个模型的各个候选层的估计的空闲时间,执行所述多个模型的逐层调度以由加速器执行。
2.根据权利要求1所述的方法,其中,执行逐层调度的步骤包括:
选择各个候选层中的与针对加速器的状态的估计的空闲时间之中的最小的空闲时间对应的一个候选层。
3.根据权利要求2所述的方法,其中,基于考虑以下项中的至少一个来确定加速器的状态:
加速器的存储器的使用信息;
加速器的运算资源被最新近使用的时间点与加速器的存储器访问资源将能够用于开始被使用的时间点之间的差;和
所述多个模型中的每个模型的进展的状态。
4.根据权利要求3所述的方法,其中,使用信息是加速器的片上存储器的整个容量、使用的容量和/或剩余容量的信息。
5.根据权利要求1所述的方法,其中,各个请求的排队的执行和所述多个模型的逐层调度被实时执行。
6.根据权利要求1所述的方法,其中,针对各个候选层的估计的空闲时间中的每个基于加速器的对应的运算资源的空闲时间和加速器的对应的存储器访问资源的空闲时间。
7.根据权利要求6所述的方法,其中,针对各个候选层中的每个候选层的对应的运算资源的空闲时间基于以下项来确定:
对应的运算资源完成先前调度的层的执行的时间点与针对先前调度的层的存储器访问资源完成执行的时间点之间的差;以及
对应的存储器访问资源的执行时间。
8.根据权利要求6所述的方法,其中,当对应的存储器访问资源的执行时间大于被最新近调度的先前层的运算资源的执行时间时,针对各个候选层中的每个候选层的对应的运算资源的空闲时间发生。
9.根据权利要求6所述的方法,其中,针对各个候选层中的每个候选层的对应的存储器访问资源的空闲时间基于以下项来确定:
由于对加速器的片上存储器的大小的约束而暂停针对各个候选层中的每个候选层的存储器访问资源的执行的时间点;以及
被最新近调度的先前层的运算资源的执行被完成的时间点。
10.根据权利要求1所述的方法,其中,基于估计的空闲时间来执行所述多个模型的逐层调度的步骤包括:从具有相同的最小的估计的空闲时间的多个候选层之中选择具有对应的存储器访问资源的最低空闲时间的候选层用于执行。
11.根据权利要求1所述的方法,其中,基于估计的空闲时间执行所述多个模型的逐层调度的步骤包括:确定各个候选层之中的第一候选层是否被延迟预设数量的次数或更多,并且基于确定的结果,调度第一候选层作为接下来要执行的候选层。
12.根据权利要求1所述的方法,其中,估计的空闲时间基于考虑当前在加速器中执行的多个层来估计。
13.根据权利要求1所述的方法,其中,独立于被接收的请求的顺序来执行所述多个模型的逐层调度。
14.根据权利要求1所述的方法,其中,当所述多个模型中的两个或更多个在加速器中被执行时,所述多个模型中的两个或更多个彼此没有数据依赖性。
15.根据权利要求1所述的方法,其中,加速器的运算资源基于加速器的一个或多个处理元件,并且加速器的存储器访问资源基于加速器的片上存储器和/或片外存储器。
16.一种存储指令的非暂时性计算机可读存储介质,所述指令在被处理器执行时,使处理器执行权利要求1至15中的任一项所述的方法。
17.一种存储指令的非暂时性计算机可读存储介质,所述指令在被与加速器不同的处理器执行时,使处理器执行权利要求1至15中的任一项所述的方法,并且基于使用加速器的调度导致所述多个候选层的各自执行。
18.一种电子装置,包括:
一个或多个处理器,被配置为:
实时地执行用于在加速器中独立执行多个模型的各个请求的排队,以及
基于针对与排队的各个请求对应的所述多个模型中的每个模型的各个候选层的估计的空闲时间,实时地执行所述多个模型的逐层调度以由加速器执行。
19.根据权利要求18所述的电子装置,还包括:
片外存储器;以及
加速器,包括片上存储器。
20.一种电子装置,包括:
调度器,被配置为:对用于独立执行多个模型的多个请求进行排队,并且基于针对所述多个模型中的每个模型的各个候选层的估计的空闲时间,对所述多个模型执行逐层调度以由加速器执行;以及
加速器,被配置为:基于由调度器执行的逐层调度来执行所述多个模型的各个层。
21.一种处理器实现的方法,包括:
对在加速器中请求执行的多个模型执行实时逐层调度,
其中,实时逐层调度基于针对所述多个模型的多个独立候选层的估计的空闲时间,以及
其中,在每次先前候选层已经在加速器中开始被调度并且剩余的候选层有待针对所述多个模型被调度之后,执行实时逐层调度;以及
指示加速器执行所述多个独立候选层中的与估计的空闲时间中的最低估计的空闲时间对应的一个或多个独立候选层。
22.根据权利要求21所述的方法,还包括:对用于所述多个模型的执行的各个请求进行排队,以及基于排队的各个请求、加速器的状态以及所述多个模型的所述多个独立候选层的各个工作负载特性来执行逐层调度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0132759 | 2020-10-14 | ||
KR1020200132759A KR20220049294A (ko) | 2020-10-14 | 2020-10-14 | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356510A true CN114356510A (zh) | 2022-04-15 |
Family
ID=77411629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110506864.0A Pending CN114356510A (zh) | 2020-10-14 | 2021-05-10 | 用于调度的方法和电子装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220114015A1 (zh) |
EP (1) | EP3985507A1 (zh) |
KR (1) | KR20220049294A (zh) |
CN (1) | CN114356510A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2016203619A1 (en) * | 2016-05-31 | 2017-12-14 | Canon Kabushiki Kaisha | Layer-based operations scheduling to optimise memory for CNN applications |
US10540202B1 (en) * | 2017-09-28 | 2020-01-21 | EMC IP Holding Company LLC | Transient sharing of available SAN compute capability |
US11086681B2 (en) * | 2019-08-28 | 2021-08-10 | Red Hat, Inc. | Workflow resource management for cloud computing services |
KR20230068709A (ko) * | 2021-11-11 | 2023-05-18 | 삼성전자주식회사 | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 |
-
2020
- 2020-10-14 KR KR1020200132759A patent/KR20220049294A/ko active Search and Examination
-
2021
- 2021-03-09 US US17/195,748 patent/US20220114015A1/en active Pending
- 2021-05-10 CN CN202110506864.0A patent/CN114356510A/zh active Pending
- 2021-08-19 EP EP21192131.7A patent/EP3985507A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220114015A1 (en) | 2022-04-14 |
EP3985507A1 (en) | 2022-04-20 |
KR20220049294A (ko) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11726931B2 (en) | Artificial intelligence-enabled management of storage media access | |
US11461615B2 (en) | System and method of memory access of multi-dimensional data | |
KR102569086B1 (ko) | 태스크 병렬 처리 방법, 장치, 시스템, 기억 매체 및 컴퓨터 기기 | |
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
JP7430744B2 (ja) | 機械学習モデルを改良して局所性を改善させること | |
EP3920026A1 (en) | Scheduler, method of operating the same, and accelerator apparatus including the same | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
JP7451614B2 (ja) | オンチップの計算ネットワーク | |
CN113312171A (zh) | 加速器、加速器的操作方法和加速器系统 | |
US20220121912A1 (en) | Data processing method and apparatus | |
US11551095B2 (en) | Sharing preprocessing, computations, and hardware resources between multiple neural networks | |
US20210256373A1 (en) | Method and apparatus with accelerator | |
US20230143270A1 (en) | Apparatus and method with scheduling | |
CN114356510A (zh) | 用于调度的方法和电子装置 | |
US11610102B1 (en) | Time-based memory allocation for neural network inference | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
CN114168311A (zh) | 计算装置和处理器实现的方法 | |
US20230004855A1 (en) | Co-operative and adaptive machine learning execution engines | |
Tasoulas | Resource management and application customization for hardware accelerated systems | |
EP4310731A1 (en) | Electronic device and controlling method of electronic device | |
CN114239794A (zh) | 操作方法和电子装置 | |
US20230161997A1 (en) | System and method of early termination of layer processing in an artificial neural network | |
US20210397557A1 (en) | Method and apparatus with accelerator processing | |
US20220222177A1 (en) | Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs | |
CN115965063A (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 |