CN113760531A - 调度器、操作调度器的方法以及包括调度器的加速器设备 - Google Patents
调度器、操作调度器的方法以及包括调度器的加速器设备 Download PDFInfo
- Publication number
- CN113760531A CN113760531A CN202110073145.4A CN202110073145A CN113760531A CN 113760531 A CN113760531 A CN 113760531A CN 202110073145 A CN202110073145 A CN 202110073145A CN 113760531 A CN113760531 A CN 113760531A
- Authority
- CN
- China
- Prior art keywords
- model
- accelerator
- scheduling
- layer
- layers
- 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
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/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
- 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
-
- 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/5011—Allocation 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
- G06F9/5016—Allocation 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 the resource being the memory
-
- 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
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/506—Constraint
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Advance Control (AREA)
Abstract
公开了调度器、操作调度器的方法以及包括调度器的加速器设备。一种操作调度器以对将在加速器中执行的模型执行调度的方法,所述方法包括:接收对在加速器中彼此独立地执行的第一模型和第二模型的至少一个执行请求;以及基于第一模型和第二模型的工作负载特性,对第一模型和第二模型执行以层为单位的调度。
Description
本申请要求于2020年6月1日在韩国知识产权局提交的第10-2020-0065626号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及调度器、操作调度器的方法以及包括调度器的加速器设备。
背景技术
随着人工智能(AI)技术的发展,对仅用于AI的执行推断和学习的独立硬件的需求正在增加。因此,正在开发各种装置作为专用于实现AI的硬件。
这样的用于AI的专用硬件可由例如可被改变用途的中央处理器(CPU)、图形处理器(GPU)、现场可编程门阵列(FPGA)和专用集成电路(ASIC)来实现。
发明内容
提供本发明内容以便以简化的形式介绍将在下面的具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求权利的主题的关键特征或必要特征,也不意在用于帮助确定要求权利的主题的范围。
在一个总体方面,提供了一种调度加速器的方法,所述方法包括:接收对在加速器中彼此独立地执行的第一模型和第二模型的至少一个执行请求;以及基于第一模型和第二模型的工作负载特性,对第一模型和第二模型执行以层为单位的调度。
执行以层为单位的调度的步骤可包括:独立于所述至少一个执行请求被接收的顺序,对第一模型和第二模型执行以层为单位的调度。
第一模型和第二模型中的一个可具有计算成本大于存储器访问成本的工作负载特性,并且第一模型和第二模型中的另一个可具有存储器访问成本大于计算成本的工作负载特性。
执行以层为单位的调度的步骤可包括:响应于第一模型和第二模型具有相同的工作负载特性,执行以层为单位的调度,使得包括在第一模型中的层和包括在第二模型中的层以包括在第一模型中的层与包括在第二模型中的层之间的时间间隔被处理。
执行以层为单位的调度的步骤可包括:将第一模型和第二模型中的每个中的层之中的具有不同工作负载特性的两个层分别分配给加速器的计算资源和加速器的存储器访问资源。
执行以层为单位的调度的步骤可包括:响应于第一模型的第一层被分配给加速器的计算资源,将第一模型中的第一层之后的第二层或第二模型中的随后将被处理的第三层分配给加速器的存储器访问资源。
分配给计算资源的第一层可具有与分配给存储器访问资源的第二层或第三层的工作负载特性不同的工作负载特性。
执行以层为单位的调度的步骤可包括:基于第一模型和第二模型的每个层的工作负载特性以及加速器的硬件资源,对第一模型和第二模型执行以层为单位的调度。
执行以层为单位的调度的步骤可包括:对第一模型和第二模型执行以层为单位的调度,以使用加速器的内部存储器中的重用的第一模型和第二模型中的每个的中间数据。
执行以层为单位的调度的步骤可包括:对第一模型和第二模型执行以层为单位的调度,以在搜索指示从包括在第一模型和第二模型中的每个中的输入层到包括在第一模型和第二模型中的每个中的输出层的执行顺序的路径时,基于直到前一步骤中的最佳调度结果来确定当前步骤中的最佳调度结果。
第一模型和第二模型在加速器中被执行时可彼此不具有数据依赖性。
加速器的硬件资源可包括:基于加速器中包括的至少一个处理元件的计算资源和基于加速器的内部存储器和/或外部存储器的存储器访问资源。
工作负载特性可包括:用于处理对应的工作负载的存储器访问成本大于计算成本的存储器密集型特性,以及用于处理对应的工作负载的计算成本大于存储器访问成本的计算密集型特性。
所述方法可包括:基于每个模型的工作负载特性和加速器的硬件资源,从接收到对其的执行请求的模型选择将被执行调度的至少两个模型,其中,执行以层为单位的调度的步骤可包括:基于工作负载特性对选择的至少两个模型执行以层为单位的调度。
在另一总体方面,提供了一种调度器,所述调度器被配置为对加速器中的模型的执行进行调度,所述调度器包括:处理器,被配置为:接收对在加速器中彼此独立地执行的第一模型和第二模型的至少一个执行请求;以及基于第一模型和第二模型的工作负载特性,对第一模型和第二模型执行以层为单位的调度。
处理器可被配置为:独立于所述至少一个执行请求被接收的顺序,对第一模型和第二模型执行以层为单位的调度。
第一模型和第二模型中的一个可具有计算成本大于存储器访问成本的工作负载特性,并且第一模型和第二模型中的另一个可具有存储器访问成本大于计算成本的工作负载特性。
处理器可被配置为:响应于第一模型和第二模型具有相同的工作负载特性,执行以层为单位的调度,使得包括在第一模型中的层和包括在第二模型中的层以包括在第一模型中的层与包括在第二模型中的层之间的时间间隔被处理。
在另一总体方面,提供了一种加速器设备,所述加速器设备包括:调度器,被配置为:接收对彼此独立地执行的第一模型和第二模型的至少一个执行请求,并且基于第一模型和第二模型的工作负载特性对第一模型和第二模型执行以层为单位的调度;以及加速器,被配置为:基于由调度器确定的调度来执行第一模型和第二模型。
在另一总体方面,提供一种处理设备,所述处理设备包括:调度器,被配置为:基于一个或多个模型的各自的工作负载特性和加速器的硬件资源来确定用于执行所述一个或多个模型的以层为单位的调度,并且将调度发送到加速器;以及加速器,被配置为:基于由调度器确定的调度来执行所述一个或多个模型,其中,所述一个或多个模型在加速器中被执行时彼此不具有数据依赖性。
调度器可被配置为:基于所述一个或多个模型的每个层的各自的工作负载特性和加速器的硬件资源来确定调度。
调度可被配置为:基于直到前一步骤获得的调度来确定当前步骤的调度。
加速器可包括:多个处理元件和可由所述多个处理元件中的至少一个处理元件访问的多级存储器。
从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1A和图1B是示出加速器设备的示例的示图。
图2是示出加速器的硬件资源的示例的示图。
图3是示出调度器和加速器的示例的示图。
图4是示出调度器的操作的示例的示图。
图5是示出以层为单位的调度搜索的示例的示图。
图6是示出操作调度器的方法的示例的示图。
图7和图8是示出加速器设备的示例的示图。
贯穿附图和具体实施方式,除非另有描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者获得对在此描述的方法、设备和/或***的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或***的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此所阐述的那些操作的顺序,而是除了必须以特定顺序发生的操作之外,可如在理解本申请的公开之后将清楚地那样被改变。此外,为了更清楚和简明,在理解本申请的公开内容之后已知的特征的描述可被省略。
在此描述的特征可以以不同的形式来实现,并且不应被解释为限于在此描述的示例。相反,已提供在此描述的示例仅是为了示出在理解了本申请的公开后将是清楚的实现在此描述的方法、设备和/或***的许多可行方式中的一些方式。
在此使用的术语仅用于描述各种示例而不用于限制公开。除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。术语“包含”、“包括”和“具有”说明存在所陈述的特征、数量、操作、构件、元件和/或它们的组合,但是不排除存在或添加一个或多个其他特征、数量、操作、构件、元件和/或它们的组合。
尽管可在此使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但是这些构件、组件、区域、层或部分不受这些术语的限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
贯穿说明书,当组件被描述为“连接到”另一组件或“结合到”另一组件时,该组件可直接“连接到”另一组件或直接“结合到”另一组件,或者可存在介于两者之间的一个或多个其他组件。相比之下,当元件被描述为“直接连接到”另一元件或“直接结合到”另一元件时,可能不存在介于两者之间的其他元件。同样地,相似的表达,例如,“在……之间”、“紧接在……之间”、“与……邻近”与“与……紧邻”也应以相同的方式解释。如在此使用的,术语“和/或”包括相关所列项中的任意一个和任意两个或更多个的任意组合。
此外,在示例实施例的描述中,当认为在理解本申请的公开之后由此已知的结构或功能的详细描述将导致对示例实施例的模糊解释时,将省略这样的描述。在下文中,将参照附图详细描述示例,并且在附图中,相同的参考标号始终表示相同的元件。
图1A和图1B是示出加速器设备的示例的示图。
参照图1A,加速器设备100包括主机处理器110、片外存储器120、存储器控制器130和加速器140。主机处理器110、片外存储器120、存储器控制器130和加速器140可通过总线150彼此通信。
例如,主机处理器110可以是被配置为控制包括在加速器设备100中的组件的各个操作的装置,并且可包括中央处理器(CPU)。主机处理器110可接收用于在加速器140中处理神经网络的至少一个请求,并且响应于接收的请求而生成可在加速器140中执行的指令。可对基于神经网络的数据推断做出请求,并且可对通过允许加速器140执行针对任务(诸如,以语音识别、语音翻译、机器翻译、机器解释、对象识别、模式识别、对象验证、认证和计算机视觉为例)的神经网络来获得数据推断的结果来作出请求。神经网络的目标推断数据和参数可被主机处理器110传送到加速器140。
片外存储器120可以是设置在加速器140外部的存储器。在一个示例中,片外存储器120可以是用作加速器设备100的主存储器的动态随机存取存储器(DRAM)。可通过存储器控制器130来访问片外存储器120。片外存储器120可存储将在加速器140中执行的神经网络的参数,并且当加速器140中的片上存储器不足以在加速器140中执行神经网络时片外存储器120可被使用。
片外存储器120可具有比加速器140中的片上存储器大的存储器容量。然而,当执行神经网络时,加速器140访问片外存储器120的成本可大于访问片上存储器的成本。这样的存储器访问成本可指示用于访问存储器然后从存储器读取数据或在存储器中写入数据的功率和/或时间的量。
加速器140可以是被配置为根据主机处理器110的指令执行神经网络并推断输入的数据的人工智能(AI)加速器。在一个示例中,加速器140可以是与主机处理器110区分开的单独处理器。加速器140可以是诸如以神经处理器(NPU)、图形处理器(GPU)和张量处理器(TPU)为例的装置。
加速器140可基于神经网络的操作特性来处理工作负载,由单独的专用处理器(例如,加速器140)处理该工作负载比由用于通用目的的主机处理器110处理更有效。这里,包括在加速器140中的一个或多个处理元件(PE)和片上存储器可被使用。片上存储器可以是包括包含在加速器140中的全局共享缓冲器和本地缓冲器的装置,并且与设置在加速器140外部的片外存储器120区分开。片上存储器可包括诸如以通过地址空间可访问的暂存存储器和静态随机存取存储器(SRAM)为例的存储器。
神经网络包括多个层。在一个示例中,神经网络可包括输入层、多个隐藏层和输出层。每个层可包括多个节点,每个节点被称为人工神经元。每个节点可指示具有至少一个输入和输出的计算单元,并且节点可彼此连接。可针对节点之间的连接设置权重,并且可调整或改变权重。权重可增大、减小或保持确定数据值对最终结果的影响的相关数据值。包括在先前层中的节点的加权输入可被输入到包括在输出层中的每个节点。加权数据从一个层输入到该层的后续层的处理可被称为传播。
在一个示例中,当主机处理器110接收到多个请求时,加速器140可根据从主机处理器110发送的指令来执行多个神经网络。在这个示例中,将在加速器140中执行的神经网络可具有不同的结构,或者相同的神经网络可被执行多次。例如,当简单地基于由主机处理器110接收请求的顺序在加速器140中执行神经网络时,由于神经网络的工作负载特性,所以可能无法减少在执行过程中在其期间加速器140的硬件资源不被使用的空闲时间。此外,可能发生大的尾部时延,在大的尾部时延中,当先前的请求被处理时,较晚接收的请求被显著延迟。为了防止加速器140的利用率的这种降低,可能需要对将在加速器140中执行的神经网络进行调度。通过针对每个层单位对神经网络执行调度,可使在执行期间发生的空闲时间最小化。为了便于描述,在此描述的神经网络也可被称为模型。
图1B示出被配置为执行被调度的模型的加速器140的示例结构。加速器140可包括多个PE和可由多个PE中的至少一个访问的多级存储器。多级存储器可以是对应于加速器140的片上存储器的0级(LV)存储器(例如,LV0 SRAM)141-1、LV1存储器142-1和LV2存储器143-1的共同表达。
PE中的PE 141可包括LV0存储器141-1、LV0直接存储器访问(DMA)141-3、乘法器-累加器(MAC)141-5和LV0控制器141-7。
LV0存储器141-1可以是可由对应的PE 141访问的存储器。也就是说,LV0存储器141-1可仅由作为包括在加速器140中的多个PE之一的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。
加速器140可包括多个PE,每个PE独立地执行操作或计算,并且PE 141的前述描述可应用于包括在加速器140中的每个PE。
在一个示例中,多个PE中的每n个PE可聚集在一起。在这个示例中,n是大于1且小于包括在加速器140中的PE的数量的自然数。也就是说,包括在加速器140中的PE的一部分可聚集在一起以形成集群(例如,PE集群142)。
包括在集群142中的PE可共享一个LV1存储器142-1。也就是说,LV1存储器142-1可由包括在集群142中的多个PE访问。例如,即使在集群142中的多个PE之中的第一PE和第二PE中分别执行的操作彼此不同,操作所需的数据的一部分也可以是公共的。由于公共数据被存储在LV1存储器142-1中,而不是存储在包括在第一PE和第二PE中的每个中的LV0存储器141-1中,因此,第一PE和第二PE可共享公共数据,并且整体***操作效率可被提高。在图1B的示例中,每个PE可访问与每个PE邻近的LV1存储器142-1。
尽管在图1B中未示出,但是存在被配置为监视和/或剖析输入到LV1存储器142-1或从LV1存储器142-1输出的数据的LV1 DMA。此外,还存在控制LV1存储器142-1和LV1 DMA的LV1控制器。
此外,所有PE可共享LV2存储器143-1。也就是说,LV2存储器143-1可由包括在加速器140中的所有PE访问。例如,在包括在加速器140的PE中,可存在尽管没有聚集在一起以形成同一集群但是共享执行操作所需的数据的一部分的PE。在这个示例中,这样的PE可不通过LV1存储器142-1共享数据,而是通过LV2存储器143-1有效地共享公共数据,从而提高整体操作效率。尽管在图1B中未示出,但是存在被配置为监视和/或剖析输入到LV2存储器143-1或从LV2存储器143-1输出的数据的LV2 DMA。此外,还存在用于控制LV2存储器143-1和LV2 DMA的LV2控制器。
如上所述,每个PE可访问各自的LV0存储器141-1、与每个PE邻近的LV1存储器142-1和加速器140的LV2存储器143-1,并且使用这些存储器来执行分配的工作负载。加速器140可包括包含分层存储器的多级存储器。此外,包括在加速器140中的DMA和控制器可以是分层多级类型。
在图1B的示例中,包括在加速器140中的PE可同时执行四种工作负载。例如,具有相对较大的操作量的工作负载可被分配给较大数量的PE并在其中被处理,并且具有相对较小的操作量的工作负载可被分配给较小数量的PE并在其中被处理。
为了便于描述,在图1B中示出64个PE中的每八个PE聚集在一起以形成八个集群,并且三个级别的存储器被使用以执行四种工作负载。然而,可应用各种数量的PE、工作负载和级别而没有限制。
在下文中,将参照附图详细描述对模型执行调度。
图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)为例)表示。
模型和/或包括在每个模型中的层可具有不同的工作负载特性,因此,每个模型或层所需的计算资源和存储器访问资源对于每个模型或层可不同。因此,通过执行调度使得使用加速器210中的资源的时间基于模型的工作负载特性和/或包括在每个模型中的层的工作负载特性最大限度地重叠,可提高整体***性能。
在一个示例中,为了进行模型调度,可考虑片上存储器的数据依赖性和可用性。
数据依赖性可指示程序员或编译器意在获得期望结果的数据的计算顺序,并且包括在模型中的多个层可以以预设顺序被顺序地处理。然而,将在加速器210中处理的多个模型之间不存在数据依赖性,因此,模型的处理顺序的改变不会有显著影响。例如,在包括在第一模型中的一个层被处理之后,第一模型的后续层可被处理,或者随后将被处理的第二模型的层可被处理。如前所述,第一模型和第二模型之间的处理顺序可通过每个层单位来改变。
片上存储器的可用性可限制加速器210的处理。片上存储器可以是可被快速访问、但是可不具有足以执行PE中的计算的存储器容量的加速器210的内部存储器。在这种情况下,当使用与加速器210的外部存储器对应的片外存储器220时,因为片外存储器的存储器访问时间大于片上存储器的存储器访问时间,所以在执行调度时可考虑片外存储器的存储器访问时间。也就是说,重用加速器210的片上存储器中的每个模型的中间数据的方法也可影响存储器访问成本,因此其也可考虑用于调度。
图3是示出调度器和加速器的示例的示图。
参照图3,调度器310被配置为对将在加速器320中执行的模型执行调度。例如,调度器310可被实现为图1A的主机处理器110,或者可在单独的装置上实现。
从多个用户或单个用户传送的请求可由请求分配器基于工作负载特性来分配。例如,请求分配器可将每个请求分配到存储器密集型特性和计算密集型特性中的任何一个,存储器密集型特性具有大于计算成本的存储器访问成本,计算密集型特性具有大于存储器访问成本的计算成本。这样的分配的请求可被存储在请求队列中。也就是说,传送到加速器设备的用户请求可基于它们的特性而被分析,然后被存储在不同的队列中。
调度器310可基于工作负载特性对被请求的多个模型执行以层为单位(layer-unit)的调度。这里,因为模型之间不具有数据依赖性,所以调度器310可独立于请求被接收的顺序对模型执行以层为单位的调度。
在一个示例中,调度器310可对具有不同工作负载特性的模型执行调度。调度器310可对具有计算密集型特性的模型和具有存储器密集型特性的模型执行调度。例如,具有计算密集型特性的模型可包括卷积神经网络(CNN)等。具有存储器密集型特性的模型可包括例如多层感知器、来自变换器的双向编码器表示(BERT)、推荐模型等。通过对具有更大计算成本的模型和具有更大存储器访问成本的模型执行调度,可有效地防止在加速器320的硬件资源中发生空闲时间并提高整体***吞吐量。
此外,调度器310还可对具有相同特性的模型执行调度。例如,当在加速器320中执行具有相同特性的多个模型(在此也被称为相同模型)时,调度可被执行,使得包括在每个模型中的层以层之间的间隔或预定时间差被处理。例如,在包括在模型中的多个层之中可存在具有计算密集型特性的层和具有存储器密集型特性的层。因此,即使当具有相同特性的多个模型被一起执行时,基于模型的每个层的工作负载特性使用计算成本与存储器访问成本之间的差,也可提高加速器320的利用率。
在一个示例中,调度器310可基于每个模型的工作负载特性和加速器320的硬件资源,从接收到对其的执行请求的多个模型选择将对其执行调度的至少两个模型。例如,调度器310可通过从多个模型选择具有不同工作负载特性的模型或者通过从多个模型选择具有相同特性的模型来执行调度。
由调度器310确定的调度可以以表的形式记录,并且分配器可通过加速器驱动器控制加速器320的硬件资源,以在一定时间处理与每个层对应的存储器访问和计算。在另一示例中,由调度器310确定的调度可被传送到加速器320,并且在加速器320中被直接执行。
加速器320可根据由调度器310确定的调度来执行模型。这里,存储在模型存储库中的模型参数和存储在输入存储装置中的输入数据可被传送到加速器320。
图4是示出调度器的操作的示例的示图。
图4示出调度具有不同工作负载特性的模型的示例。在图4的示例中,假设第一模型具有计算成本大于存储器访问成本的工作负载特性,第二模型具有存储器访问成本大于计算成本的工作负载特性。第一模型可包括多个层(例如,L11、L12、L13等)。类似地,第二模型也可包括多个层(例如,L21、L22、L23等)。
为了在计算资源中执行计算,可需要首先通过存储器访问资源读取作为计算目标的数据。此外,存储器访问资源和计算资源可并行操作,因此,当在计算资源中执行计算时,用于下一计算的数据可被存储器访问资源预先读取。当存储器访问资源与计算资源之间不存在空闲时间或存在最小空闲时间时,加速器设备的利用率可被提高,并且更高水平的性能可被预期。
例如,如图4中所示,作为具有较少存储器访问成本的第一模型的第一层的层L11可被分配给存储器访问资源,然后基于层L11的存储器访问操作可被执行。当存储器访问操作被终止时,层L11可被分配给计算资源,然后基于层L11的计算操作可被执行。此外,作为第二模型的第一层的层L21可被分配给存储器访问资源,并且基于层L21的存储器访问操作可被执行。当在层L11的计算操作正在执行的同时层L21的存储器访问操作终止时,作为第一模型的第二层的层L12可随后被分配给存储器访问资源。因此,可防止在存储器访问资源中发生空闲时间。可以以这样的方式执行基于层单位的调度,直到第一模型和第二模型中的每个的最后一层。
如上所述,每种资源的使用程度对于每个层是不同的,因此,包括在第一模型和第二模型中的每个中的多个层之中的具有不同工作负载特性的两个层可被分别分配给加速器的计算资源和存储器访问资源。例如,当包括在第一模型中的层(例如,第一模型的第n层)正被分配给加速器的计算资源的同时,调度器可向加速器的存储器访问资源分配第一模型的后续层(例如,第一模型的第n+1层)或随后将被处理的第二模型的层(例如,第二模型的第m层),其中,n和m为正整数。在这个示例中,第一模型的将被分配给计算资源的层可具有与将被分配给存储器访问资源的第一模型的后续层和第二模型的层的工作负载特性不同的工作负载特性。
如上所述,通过基于第一模型和第二模型的每个层的工作负载特性以及加速器的硬件资源对第一模型和第二模型执行以层为单位的调度,可防止在每个资源中发生空闲时间并提高利用率。调度器可执行调度以基于独立模型之间的层级别或基于对应的计算单元(例如,残差块、起始模块等)来改变执行顺序。
图5是示出以层为单位的调度搜索的示例的示图。
图5示出计算密集型模型510与存储器密集型模型520之间的以层为单位的调度搜索的示例。在图5的示例中,为了便于描述,假设计算密集型模型510包括p层,存储器密集型模型520包括q层,其中,p和q为大于0的自然数。
在一个示例中,调度器可执行基于动态编程的以层为单位的调度以用于最优调度搜索。在搜索指示从包括在每个模型中的输入层(或第一层)直到包括在每个模型中的输出层(或最后一层)的执行顺序的路径的处理中,调度器可基于直到前一步骤获得的最佳调度结果来逐渐地确定当前步骤中的最佳调度结果。
在图5的示例中,从在左上端的<0,0>到在右下端的<p,q>的路径可指示包括在每个模型中的层的执行顺序。如上所述,可基于直到前一步骤<i-1,j>和<i,j-1>获得的最佳调度结果来逐渐确定当前步骤<j,j>中的最佳调度结果。Ci可指示计算密集型模型510的第i层的计算成本,Mj可指示存储器密集型模型520的第j层的存储器访问成本。这里,每个成本可表示为循环的数量。随着循环的数量减少,运算速度可提高。
为了调度以及计算或计量当前步骤<i,j>中的成本,可能需要考虑加速器的片上存储器的使用量与层之间的数据依赖性。基于层结构,存储在片上存储器中的神经网络的参数或输出数据可在后续层中被重用,或者可移动到片外存储器。这里,每个操作可伴随成本(例如,循环的数量、能量等),因此,可通过每个路径所需的总成本不同地确定操作速度。通过这样的方法,片上存储器可由编译器、运行时硬件或单独的硬件结构来管理,或者调度器可考虑这一点并被实现以搜索更期望的调度。
例如,使用直到前一步骤<i-1,j>获得的最优调度结果和通过在从前一步骤<i-1,j>到当前步骤<i,j>的方向上添加一层而执行的模拟的结果,可更新路径并且可确定此时的循环的数量。此外,使用直到前一步骤<i,j-1>获得的最优调度结果和通过在从前一步骤<i,j-1>到当前步骤<i,j>的方向上添加一层而执行的模拟的结果,可更新路径并且可确定此时的循环的数量。在当前步骤<i,j>中,从前一步骤得出的两个调度和循环的数量可全部被记录,并且这些可在后续搜索步骤中被使用。在最后的步骤<p,q>中,可从以上面描述的这样的方式更新的路径选择具有最少的循环的数量的路径。
如上所述,通过重用针对直到步骤<i-1,j>和<i,j-1>搜索的最优调度结果来确定当前步骤<i,j>中的最优调度结果,可使搜索成本最小化。通过这样的方法,通过将以最小的循环数量从<0,0>连接到<p,q>的路径确定为最优调度,可在有限时间内确定高质量的层执行顺序。
图6是示出操作调度器的方法的示例的示图。图6中的操作可以以所示的顺序和方式来执行,尽管在不脱离所描述的说明性示例的精神和范围的情况下,一些操作的顺序可被改变或者一些操作可被省略。图6中所示的操作中的许多操作可被并行或同时执行。图6的一个或多个框以及框的组合可由执行指定功能的基于专用硬件的计算机(诸如,处理器)或专用硬件和计算机指令的组合来实现。除了下面的图6的描述之外,图1至图5的描述也适用于图6,并且通过引用包含在此。因此,这里可不再重复上面描述。
图6示出操作调度器的方法。
参照图6,在操作610中,调度器接收对在加速器中彼此独立地执行的第一模型和第二模型的至少一个执行请求。在操作620中,调度器基于第一模型和第二模型的工作负载特性对第一模型和第二模型执行以层为单位的调度。
调度器可被全面地应用于应用了多个片上***(SoC)的产品线,以加速AI处理,每个SoC包括多个PE和共享存储器。此外,当加速器处理宽范围的工作负载时,调度器可被应用以将工作负载适当地分配给硬件资源。
此外,调度器可针对每个模型或每个层将深度学习模型工作负载分类为计算密集型特性和存储器密集型特性,并且基于加速器的硬件资源的情况将工作负载动态地分配给资源。因此,可使加速器的利用率最大化。此外,通过访问和计算被解耦的结构,调度器可隐藏存储器访问时间并提高计算资源的效率。
图7和图8是示出加速器设备的示例的示图。
参照图7,加速器设备可被实现为服务器700。
服务器700可表示与由用户控制的用户终端区分开的单独的装置,并且可通过有线和/或无线网络与一个或多个用户终端进行通信。服务器700可接收从多个用户通过用户的用户终端同时发送的请求。通过调度器710,服务器700可对将在加速器720中执行的多个模型执行调度。加速器720可基于调度来执行模型并确定推断结果。然后,服务器700可将推断结果返回到各个对应的用户终端。在此描述的用户终端可包括:例如,计算装置(诸如,智能电话、个人计算机(PC)、平板PC、台式计算机、个人数字助理(PDA)、机顶盒和膝上型计算机)、可穿戴装置(诸如,智能手表和智能眼镜)、家用电器(诸如,智能扬声器、智能TV和智能冰箱)、以及其他装置(诸如,智慧车辆、智能车辆、游戏装置、智能自助服务终端、智能家庭***和物联网(IoT)装置)。
参照图8,加速器设备可被实现为包括调度器810和加速器820的用户终端800。尽管为了便于描述,用户终端800在图8中被示出为智能电话,但是由用户控制的任何装置可以是适用的而没有限制。用户终端800可直接从用户获得请求,并且通过调度器810对将在加速器820中执行的模型执行调度。加速器820可基于调度来执行模型,并且确定结果(诸如,以推断、翻译和识别为例)。
在此针对图1A-1B、图2至图4以及图7至图8描述的调度器、加速器、加速器设备100、加速器140、调度器310、加速器320、调度器710、加速器720、调度器810和加速器820以及其他设备、单元、模块、装置和其他组件通过硬件组件实现。可用于执行在本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行在本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)来实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望的结果的任何其他装置或装置的组合)来实现处理器或计算机。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行用于执行在本申请中描述的操作的指令或软件(诸如,操作***(OS)和在OS上运行的一个或多个软件应用)。硬件组件还可响应于指令或软件的执行来访问、操控、处理、创建和存储数据。为了简明,单数术语“处理器”或“计算机”可用于本申请中描述的示例的描述,但是在其他的示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件或多种类型的处理元件或二者。例如,单个硬件组件或者两个或更多个硬件组件可通过单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,一个或多个其他硬件组件可通过一个或多个其他处理器,或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理、多指令多数据(MIMD)多处理、控制器和算术逻辑单元(ALU)、DSP、微型计算机、FPGA、可编程逻辑单元(PLU)、中央处理器(CPU)、图形处理器(GPU)、神经处理器(NPU)或能够以限定的方式响应并执行指令的任何其他装置。
图1至图6中示出的执行在本申请中描述的操作的方法通过计算硬件(例如,通过一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述地执行指令或软件,以执行在本申请中描述的通过该方法执行的操作。例如,单个操作或者两个或更多个操作可通过单个处理器或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可通过一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作或者两个或更多个操作。
用于控制处理器或计算机实现硬件组件并执行如上所述的方法的指令或软件被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置处理器或计算机如机器或专用计算机那样进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在一个示例中,指令或软件包括小应用程序、动态链接库(DLL)、中间件、固件、装置驱动器、存储操作调度器以对将在加速器中执行的模型执行调度的方法的应用程序中的至少一个。在另一示例中,指令或软件包括由处理器或计算机使用解释器执行的高级代码。本领域普通编程人员可基于附图中所示的框图和流程图以及说明书中的对应描述容易地编写指令或软件,附图中所示的框图和流程图以及说明书中的对应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制处理器或计算机实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(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 (24)
1.一种调度加速器的方法,所述方法包括:
接收对在加速器中彼此独立地执行的第一模型和第二模型的至少一个执行请求;以及
基于第一模型和第二模型的工作负载特性,对第一模型和第二模型执行以层为单位的调度。
2.根据权利要求1所述的方法,其中,执行以层为单位的调度的步骤包括:
独立于所述至少一个执行请求被接收的顺序,对第一模型和第二模型执行以层为单位的调度。
3.根据权利要求1所述的方法,其中,第一模型和第二模型中的一个具有计算成本大于存储器访问成本的工作负载特性,并且第一模型和第二模型中的另一个具有存储器访问成本大于计算成本的工作负载特性。
4.根据权利要求1所述的方法,其中,执行以层为单位的调度的步骤包括:
响应于第一模型和第二模型具有相同的工作负载特性,执行以层为单位的调度,使得包括在第一模型中的层和包括在第二模型中的层以预定时间差或以包括在第一模型中的层与包括在第二模型中的层之间的时间间隔被处理。
5.根据权利要求1至权利要求4中任意一项所述的方法,其中,执行以层为单位的调度的步骤包括:
将第一模型和第二模型中的每个中的层之中的具有不同工作负载特性的两个层分别分配给加速器的计算资源和加速器的存储器访问资源。
6.根据权利要求1至权利要求4中任意一项所述的方法,其中,执行以层为单位的调度的步骤包括:
响应于第一模型的第n层被分配给加速器的计算资源,将第一模型中的第n层之后的第n+1层或第二模型中的随后将被处理的第m层分配给加速器的存储器访问资源,其中,n和m为正整数。
7.根据权利要求6所述的方法,其中,被分配给加速器的计算资源的第n层具有与被分配给加速器的存储器访问资源的第n+1层或第m层的工作负载特性不同的工作负载特性。
8.根据权利要求1至权利要求4中任意一项所述的方法,其中,执行以层为单位的调度的步骤包括:
基于第一模型和第二模型的每个层的工作负载特性以及加速器的硬件资源,对第一模型和第二模型执行以层为单位的调度。
9.根据权利要求1至权利要求4中任意一项所述的方法,其中,执行以层为单位的调度的步骤包括:
通过使用加速器的内部存储器中的重用的第一模型和第二模型中的每个的中间数据,来对第一模型和第二模型执行以层为单位的调度。
10.根据权利要求1至权利要求4中任意一项所述的方法,其中,执行以层为单位的调度的步骤包括:
通过在搜索路径的处理中基于直到前一步骤中的最优调度结果确定当前步骤中的最优调度结果,来对第一模型和第二模型执行以层为单位的调度,所述路径指示从包括在第一模型和第二模型中的每个中的输入层到包括在第一模型和第二模型中的每个中的输出层的执行顺序。
11.根据权利要求1至权利要求4中任意一项所述的方法,其中,第一模型和第二模型在加速器中被执行时彼此不具有数据依赖性。
12.根据权利要求1至权利要求4中任意一项所述的方法,其中,加速器的硬件资源包括:基于包括在加速器中的至少一个处理元件的计算资源和基于加速器的内部存储器和/或外部存储器的存储器访问资源。
13.根据权利要求1至权利要求4中任意一项所述的方法,其中,工作负载特性包括:用于处理对应的工作负载的存储器访问成本大于计算成本的存储器密集型特性,以及用于处理对应的工作负载的计算成本大于存储器访问成本的计算密集型特性。
14.根据权利要求1至权利要求4中任意一项所述的方法,还包括:
基于每个模型的工作负载特性和加速器的硬件资源,从接收到对其的执行请求的模型选择将被执行调度的至少两个模型,
其中,执行以层为单位的调度的步骤包括:
基于工作负载特性对选择的所述至少两个模型执行以层为单位的调度。
15.一种存储命令的非暂时性计算机可读存储介质,所述命令在被处理器执行时使处理器执行权利要求1至权利要求14中任意一项所述的方法。
16.一种调度器,被配置为对加速器中的模型的执行进行调度,所述调度器包括:
处理器,被配置为:
接收对在加速器中彼此独立地执行的第一模型和第二模型的执行请求;以及
基于第一模型和第二模型的工作负载特性,对第一模型和第二模型执行以层为单位的调度。
17.根据权利要求16所述的调度器,其中,处理器还被配置为:
独立于所述执行请求被接收的顺序,对第一模型和第二模型执行以层为单位的调度。
18.根据权利要求16或权利要求17所述的调度器,其中,第一模型和第二模型中的一个具有计算成本大于存储器访问成本的工作负载特性,并且第一模型和第二模型中的另一个具有存储器访问成本大于计算成本的工作负载特性。
19.根据权利要求16或权利要求17所述的调度器,其中,处理器还被配置为:
响应于第一模型和第二模型具有相同的工作负载特性,执行以层为单位的调度,使得包括在第一模型中的层和包括在第二模型中的层以预定时间差或以包括在第一模型中的层与包括在第二模型中的层之间的时间间隔被处理。
20.一种加速器设备,包括:
调度器,被配置为:接收对彼此独立地执行的第一模型和第二模型的至少一个执行请求,并且基于第一模型和第二模型的工作负载特性对第一模型和第二模型执行以层为单位的调度;以及
加速器,被配置为:基于由调度器确定的调度来执行第一模型和第二模型。
21.一种处理设备,包括:
调度器,被配置为:基于一个或多个模型的各自的工作负载特性和加速器的硬件资源来确定用于执行所述一个或多个模型的以层为单位的调度,并且将调度发送到加速器;以及
加速器,被配置为:基于由调度器确定的调度来执行所述一个或多个模型,
其中,所述一个或多个模型在加速器中被执行时彼此不具有数据依赖性。
22.根据权利要求21所述的处理设备,其中,调度器还被配置为:基于所述一个或多个模型的每个层的各自的工作负载特性和加速器的硬件资源来确定调度。
23.根据权利要求21或权利要求22所述的处理设备,其中,调度器还被配置为:基于直到前一步骤获得的调度来确定当前步骤的调度。
24.根据权利要求21或权利要求22所述的处理设备,其中,加速器包括:多个处理元件和能够由所述多个处理元件中的至少一个处理元件访问的多级存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200065626A KR20210148586A (ko) | 2020-06-01 | 2020-06-01 | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템 |
KR10-2020-0065626 | 2020-06-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760531A true CN113760531A (zh) | 2021-12-07 |
Family
ID=76137983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110073145.4A Pending CN113760531A (zh) | 2020-06-01 | 2021-01-20 | 调度器、操作调度器的方法以及包括调度器的加速器设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210373944A1 (zh) |
EP (1) | EP3920026A1 (zh) |
KR (1) | KR20210148586A (zh) |
CN (1) | CN113760531A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220049294A (ko) * | 2020-10-14 | 2022-04-21 | 삼성전자주식회사 | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 |
US20230062889A1 (en) * | 2021-09-01 | 2023-03-02 | Google Llc | Off-Chip Memory Backed Reliable Transport Connection Cache Hardware Architecture |
US11514370B1 (en) | 2021-12-03 | 2022-11-29 | FriendliAI Inc. | Selective batching for inference system for transformer-based generation tasks |
US11442775B1 (en) | 2021-12-03 | 2022-09-13 | FriendliAI Inc. | Dynamic batching for inference system for transformer-based generation tasks |
KR102381776B1 (ko) * | 2021-12-24 | 2022-04-01 | 주식회사 코난테크놀로지 | 인공지능 기능 처리 및 데이터 수집을 동시 수행하는 데이터 처리장치 및 그 방법 |
KR102609481B1 (ko) * | 2023-04-12 | 2023-12-04 | 주식회사 하이퍼엑셀 | 레이턴시 프로세싱 유닛 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2017279610A1 (en) * | 2017-12-19 | 2019-07-04 | Canon Kabushiki Kaisha | Memory access optimisation using per-layer computational mapping and memory allocation for CNN application |
US10942767B2 (en) * | 2018-02-27 | 2021-03-09 | Microsoft Technology Licensing, Llc | Deep neural network workload scheduling |
CN110389824A (zh) * | 2018-04-20 | 2019-10-29 | 伊姆西Ip控股有限责任公司 | 处理计算任务的方法、设备和计算机程序产品 |
KR102029711B1 (ko) * | 2018-05-30 | 2019-10-08 | 한국항공대학교산학협력단 | 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법 |
-
2020
- 2020-06-01 KR KR1020200065626A patent/KR20210148586A/ko unknown
-
2021
- 2021-01-20 CN CN202110073145.4A patent/CN113760531A/zh active Pending
- 2021-02-08 US US17/170,109 patent/US20210373944A1/en active Pending
- 2021-05-26 EP EP21175973.3A patent/EP3920026A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20210148586A (ko) | 2021-12-08 |
EP3920026A1 (en) | 2021-12-08 |
US20210373944A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102569086B1 (ko) | 태스크 병렬 처리 방법, 장치, 시스템, 기억 매체 및 컴퓨터 기기 | |
CN113760531A (zh) | 调度器、操作调度器的方法以及包括调度器的加速器设备 | |
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
US20180285254A1 (en) | System And Method Of Memory Access Of Multi-Dimensional Data | |
US11176438B2 (en) | Neural network system, application processor having the same, and method of operating the neural network system | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
US20230342311A1 (en) | Operation method of an accelerator and system including the same | |
KR20210002676A (ko) | 집약성을 개선하기 위한 머신 학습 모델들의 수정 | |
US11694075B2 (en) | Partitioning control dependency edge in computation graph | |
US20220121912A1 (en) | Data processing method and apparatus | |
CN112949815A (zh) | 用于模型优化的方法和设备以及加速器*** | |
US12014202B2 (en) | Method and apparatus with accelerator | |
US20230143270A1 (en) | Apparatus and method with scheduling | |
US9898333B2 (en) | Method and apparatus for selecting preemption technique | |
US20230127869A1 (en) | Method and apparatus with process scheduling | |
US12001382B2 (en) | Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry | |
KR20240007354A (ko) | 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법 | |
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) | 计算装置和处理器实现的方法 | |
EP3985507A1 (en) | Electronic device and method with scheduling | |
KR20220049325A (ko) | 가속기 및 이를 포함한 전자 장치 | |
US20210397557A1 (en) | Method and apparatus with accelerator processing | |
US20230097529A1 (en) | Electronic device and operating method with model co-location | |
US12039360B2 (en) | Operation method of host processor and accelerator, and electronic device including the same |
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 |