掌桥专利:专业的专利平台
掌桥专利
首页

深度学习模型的资源使用情况预测

文献发布时间:2023-06-19 11:45:49


深度学习模型的资源使用情况预测

背景技术

近年来,深度学习在信息技术行业变得非常流行,并且正在改变人们的生活。了解深度学习任务在其整个生命周期中的准确资源使用情况对于提高生产效率至关重要。如果能够准确地预测深度学习任务的资源使用情况,则深度学习开发人员可以预先选择最佳模型参数,以避免由于资源不足而导致的故障,并且在资源限制的情况下获得最佳模型性能。此外,如果能够准确地预测深度学习任务的资源使用情况,则可以通过动态调整深度学习任务的执行计划来确保深度学习任务在给定的服务水平协议(SLA)下完成(例如,满足给定的时间或预算要求)。

发明内容

根据本公开的实现,提出了一种用于预测深度学习模型的资源使用情况的方案。在该方案中,与深度学习模型有关的信息被获取。该信息包括用于描述深度学习模型的第一信息、以及与深度学习模型所关联的任务的运行环境有关的第二信息。该任务的静态资源使用情况基于第一信息被确定。该任务在运行环境中运行时的策略基于第一信息和第二信息被确定。然后,基于该策略和静态资源使用情况来预测该任务在运行环境中运行时的资源使用情况。该方案能够准确地预测深度学习模型在特定运行时策略下的各种资源的使用情况,诸如算力消耗、存储器消耗和执行时间等。此外,该方案具有可扩展架构,便于支持各种不同类型的深度学习框架。

提供发明内容部分是为了简化的形式来介绍对概念的选择,其在下文的具体实施方式中将被进一步描述。发明内容部分无意标识要求保护的主题的关键特征或主要特征,也无意限制要求保护的主题的范围。

附图说明

图1示出了能够实施本公开的多个实现的计算设备的框图;

图2示出了根据本公开的实现的用于预测深度学习模型的资源使用情况的示例系统的框图;

图3A示出了深度学习模型的训练任务的示例程序代码;

图3B示出了根据本公开的实现的与深度学习模型的训练任务对应的示例计算图;

图3C示出了前向传播过程中的卷积运算符所对应的深度神经网络代码库中的示例代码;以及

图4示出了根据本公开的实现的用于预测深度学习模型的资源使用情况的示例方法的流程图。

这些附图中,相同或相似参考符号用于表示相同或相似元素。

具体实施方式

现在将参照若干示例实现来论述本公开。应当理解,论述了这些实现仅是为了使得本领域普通技术人员能够更好地理解且因此实现本公开,而不是暗示对本公开的范围的任何限制。

如本文所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实现”和“一种实现”要被解读为“至少一个实现”。术语“另一个实现”要被解读为“至少一个其他实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。

如本文所使用的,“神经网络模型”(简称“模型”)能够处理输入并且提供相应输出,其通常包括输入层和输出层以及在输入层与输出层之间的一个或多个隐藏层。在深度学习应用中使用的模型(在本文中被称为“深度学习模型”或“深度神经网络”)通常包括许多隐藏层,从而延长网络的深度。神经网络模型的各个层按顺序相连,从而前一层的输出被提供作为后一层的输入,其中输入层接收神经网络模型的输入,而输出层的输出作为神经网络模型的最终输出。神经网络模型的每个层包括一个或多个节点(也称为处理节点或神经元),每个节点处理来自上一层的输入。在本文中,术语“神经网络”、“模型”、“网络”和“神经网络模型”可互换使用。

如上所述,近年来,深度学习在信息技术行业变得非常流行,并且正在改变人们的生活。了解深度学习任务在其整个生命周期中的准确资源使用情况对于提高生产力至关重要。如果能够准确地预测深度学习任务的资源使用情况,则深度学习开发人员可以预先选择最佳模型参数,以避免由于资源不足而导致的故障,并且在资源限制的情况下获得最佳模型性能。此外,如果能够准确地预测深度学习任务的资源使用情况,则可以通过动态调整深度学习任务的执行计划来确保深度学习任务在给定的SLA下完成(例如,满足给定的时间或预算要求)。

一些传统方案仅能够基于深度学习模型的描述信息和执行深度学习任务的硬件的规格来预测深度学习任务的执行时间,而无法预测深度学习任务的其他资源消耗,诸如算力消耗、存储器消耗等。此外,一些传统方案往往基于机器学习方法,其所适用的描述信息的类型和所适用的机器学习模型的框架类型通常是有限的,其所提供的预测结果也往往不具有可解释性,例如无法帮助深度学习开发人员发现模型的瓶颈、调试模型参数以提供模型性能。

根据本公开的实现,提出了一种用于预测深度学习模型的资源使用情况的方案。在该方案中,与深度学习模型有关的信息被获取。该信息包括用于描述深度学习模型的第一信息、以及与深度学习模型所关联的任务的运行环境有关的第二信息。该任务的静态资源使用情况基于第一信息被确定。该任务在运行环境中运行时的策略基于第一信息和第二信息被确定。然后,基于该策略和静态资源使用情况来预测该任务在运行环境中运行时的资源使用情况。

以此方式,该方案能够准确地预测深度学习模型在特定运行时策略下的各种资源的使用情况,诸如,算力消耗、存储器消耗和执行时间等。此外,该方案能够支持各种类型的输入并且具有可扩展架构,便于支持各种不同类型的深度学习框架。该方案所提供的预测结果具有可解释性,并能够与其他深度学习系统组件(例如,AutoML系统)或人工智能平台对接,以提高深度学习的生产效率。例如,该预测结果能够帮助深度学习开发人员发现模型的瓶颈,从而通过调试模型参数来提高模型性能;该预测结果有助于其他深度学习系统组件(例如,AutoML系统)提前对深度学习模型的模型参数的搜索空间进行裁剪,以提高模型参数搜索效率;该预测结果有助于优化人工智能平台的任务执行策略,从而提高资源利用率等等。

以下进一步结合附图来详细描述该方案的各种示例实现。

图1示出了能够实施本公开的多个实现的计算设备100的框图。应当理解,图1所示出的计算设备100仅仅是示例性的,而不应当构成对本公开所描述的实现的功能和范围的任何限制。如图1所示,计算设备100包括通用计算设备形式的计算设备100。计算设备100的组件可以包括但不限于一个或多个处理器或处理单元110、存储器120、存储设备130、一个或多个通信单元140、一个或多个输入设备150以及一个或多个输出设备160。

在一些实现中,计算设备100可以被实现为各种用户终端或服务终端。服务终端可以是各种服务提供方提供的服务器、大型计算设备等。用户终端诸如是任意类型的移动终端、固定终端或便携式终端,包括移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统(PCS)设备、个人导航设备、个人数字助理(PDA)、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,计算设备100能够支持任意类型的针对用户的接口(诸如“可佩戴”电路等)。

处理单元110可以是实际或虚拟处理器并且能够根据存储器120中存储的程序来执行各种处理。在多处理器系统中,多个处理单元并行执行计算机可执行指令,以提高计算设备100的并行处理能力。处理单元110也可以被称为中央处理单元(CPU)、微处理器、控制器、微控制器。

计算设备100通常包括多个计算机存储介质。这样的介质可以是计算设备100可访问的任何可以获得的介质,包括但不限于易失性和非易失性介质、可拆卸和不可拆卸介质。存储器120可以是易失性存储器(例如寄存器、高速缓存、随机访问存储器(RAM))、非易失性存储器(例如,只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存)或其某种组合。

存储设备130可以是可拆卸或不可拆卸的介质,并且可以包括机器可读介质,诸如内存、闪存驱动、磁盘或者任何其他介质,其能够用于存储信息和/或数据并且可以在计算设备100内被访问。计算设备100可以进一步包括另外的可拆卸/不可拆卸、易失性/非易失性存储介质。尽管未在图1中示出,可以提供用于从可拆卸、非易失性磁盘进行读取或写入的磁盘驱动和用于从可拆卸、非易失性光盘进行读取或写入的光盘驱动。在这些情况中,每个驱动可以由一个或多个数据介质接口被连接至总线(未示出)。

通信单元140实现通过通信介质与另外的计算设备进行通信。附加地,计算设备100的组件的功能可以以单个计算集群或多个计算机器来实现,这些计算机器能够通过通信连接进行通信。因此,计算设备100可以使用与一个或多个其他服务器、个人计算机(PC)或者另一个一般网络节点的逻辑连接来在联网环境中进行操作。

输入设备150可以是一个或多个各种输入设备,例如鼠标、键盘、追踪球、语音输入设备等。输出设备160可以是一个或多个输出设备,例如显示器、扬声器、打印机等。计算设备100还可以根据需要通过通信单元140与一个或多个外部设备(未示出)进行通信,外部设备诸如存储设备、显示设备等,与一个或多个使得用户与计算设备100交互的设备进行通信,或者与使得计算设备100与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可以经由输入/输出(I/O)接口(未示出)来执行。

在一些实现中,除了被集成在单个设备上之外,计算设备100的各个部件中的一些或所有部件还可以以云计算架构的形式被设置。在云计算架构中,这些部件可以被远程布置,并且可以一起工作以实现本公开所描述的功能。在一些实现中,云计算提供计算、软件、数据访问和存储服务,它们不需要终端用户知晓提供这些服务的系统或硬件的物理位置或配置。在各种实现中,云计算使用适当的协议通过广域网(诸如因特网)提供服务。例如,云计算提供商通过广域网提供应用,并且它们可以通过web浏览器或任何其他计算组件被访问。云计算架构的软件或组件以及相应的数据可以被存储在远程位置处的服务器上。云计算环境中的计算资源可以在远程数据中心位置处被合并或者它们可以被分散。云计算基础设施可以通过共享数据中心提供服务,即使它们表现为针对用户的单一访问点。因此,可以使用云计算架构从远程位置处的服务提供商提供本文所描述的组件和功能。备选地,它们可以从常规服务器被提供,或者它们可以直接或以其他方式被安装在客户端设备上。

计算设备100可以用于实施本公开的多种实现中的对深度学习模型的资源使用情况的预测。存储器120可以包括资源预测模块122,其具有一个或多个程序指令,该模块可以由处理单元110访问和运行,以实现本文所描述的各种实现的功能。

在预测深度学习模型的资源使用情况时,计算设备100可以通过输入设备150接收与待训练的深度学习模型有关的信息。该信息可以包括用于描述深度学习模型的信息170(本文中也称为“描述信息”或“第一信息”)以及与该深度学习模型所关联的任务的运行环境有关的信息180(本文中也称为“执行信息”或“第二信息”)。在此所述的“任务”也称为“深度学习任务”,其可以包括训练该深度学习模型的任务(简称“训练任务”)或者利用经训练的深度学习模型进行推理的任务(简称“推理任务”)。在一些实现中,描述信息170例如可以包括该深度学习模型的配置参数(例如,超参数)。附加地或备选地,描述信息170例如可以包括该深度学习模型的模型文件(例如,二进制模型文件)和/或与该深度学习模型相关联的任务(训练任务或推理任务)的程序代码。执行信息180例如可以包括该深度学习模型的框架类型(例如,TensorFlow或PyTorch)、运行环境中用于执行该任务的至少一个计算设备(例如,中央处理单元/图形处理单元、网络、存储设备等)的规格和数目、和/或该任务在至少一个计算设备上的执行策略。执行策略例如可以指示该任务是在单机还是多机上被执行、以串行方式还是并行方式执行、由单个图形处理单元还是多个图形处理单元执行、是否以分布式方式执行等等。

描述信息170和执行信息180可以被输入给存储器120中的资源预测模块122。资源预测模块122可以基于描述信息170和执行信息180,预测该深度学习模型所关联的任务在运行时的资源使用情况190(也称为“预测结果190”)。预测结果190例如可以指示该任务在给定运行环境中以给定执行策略运行时的算力消耗、存储器消耗(例如,中央处理单元中的主存储器的消耗、或图形处理单元的存储器消耗)和/或I/O资源消耗等。此外,预测结果190例如还可以指示该任务在运行时的其他资源消耗,诸如执行时间、功率消耗、在具体AI平台上将消耗的预算等等。其他资源消耗例如可以基于算力消耗和/或存储器消耗而被确定。

图2示出了根据本公开的实现的用于预测深度学习模型的资源使用情况的示例系统200的框图。系统200可以被实现在图1的计算设备100中,例如,资源预测模块122处。如图2所示,系统200可以包括解析模块210和预测模块220。

在一些实现中,解析模块210可以被配置为解析深度学习模型的描述信息170,以生成与该深度学习模型相对应的计算图201。如之前所描述的,描述信息170例如可以包括该深度学习模型的模型文件(例如,二进制模型文件)、用于训练该深度学习模型的程序代码、和/或该深度学习模型的配置参数(例如,超参数)等等。在一些实现中,解析模块210可以基于程序分析方法来生成计算图201。所生成的计算图201可以包括多个节点,其中该多个节点对应于深度学习模型中的多个算子(例如,每个节点对应于一个算子,并且连接多个节点的边缘可以指示多个算子之间的依赖关系。以下将结合图3A和3B来举例说明计算图的生成。

图3A示出了深度学习模型的训练任务的示例程序代码300。示例程序代码300可以是如图2所示的描述信息170的一个示例。该程序代码300例如使用PyTorch框架,并且构造了由卷积算子(如程序代码300中所示的self.conv())、池化算子(如程序代码300中所示的self.pool())和全连接算子(如程序代码300中所示的self.fc())组成的卷积神经网络。PyTorch是一种流行的深度学习框架,它采用混合编程模型,其中Python代码描述了深度学习程序的高层模型结构。尽管以PyTorch框架为例来说明计算图的生成,应当理解,这仅仅出于说明的目的,而无意于限制本公开的范围。本公开的实现也适用于诸如TensorFlow、MXNet等其他类似框架。

图3B示出了根据本公开的实现的如图3A所示的示例程序代码300相对应的模型训练任务的示例计算图305。示例计算图305可以是如图2所示的计算图201的一个示例。

在一些实现中,深度神经网络的执行可以被表示为有向无环计算图

如示例计算图305所示,深度学习模型训练程序300是一个循环程序,其包括3个阶段:前向传播阶段310,对应于如图3A所示的第21-22行代码;反向传播阶段320,对应于如图3A所示的第23行代码;以及梯度下降阶段330,对应于如图3A所示的第24行代码。如图3B所示,前向传播阶段310例如可以包括三个节点311、312和313,它们分别与深度学习模型中的相应算子相对应。例如,节点311对应于卷积算子(如图3A中的第11行代码所示),节点312对应于池化算子(如图3A中的第12行代码所示)并且节点313对应于全连接算子(如图3A中的第14行代码所示)。反向传播阶段320例如可以包括三个节点321、322和323,它们与前向传播阶段310中的算子反向对应。例如,节点321对应于卷积算子,节点322对应于池化算子并且节点323对应于全连接算子。梯度下降阶段330例如可以包括节点331,其对应于梯度下降算子(如图3A中的第24行代码所示)。不同节点间的有向边缘表示不同算子之间的数据流向。

返回参考图2,在一些实现中,计算图201、与计算图201中的多个算子相对应的代价模型(也称为“资源预测模型”)202和执行信息180可以被提供给预测模块220,以用于预测深度学习任务在运行时的资源使用情况(也即,预测结果190)。如之前所描述的,执行信息180例如可以包括该深度学习模型的框架类型(例如,TensorFlow或PyTorch等)、运行环境中用于执行该深度学习任务的至少一个计算设备(例如,中央处理单元/图形处理单元、网络、存储设备等)的规格和数目、和/或该深度学习任务在至少一个计算设备上的执行策略(例如,执行策略可以指示该任务是在单机还是多机上被执行、以串行方式还是并行方式执行、由单个图形处理单元还是多个图形处理单元执行、是否以分布式方式执行等等)。预测结果190例如可以指示深度学习任务在由执行信息180所指示的运行环境中以给定执行策略运行时的算力消耗、存储器消耗(例如,中央处理单元中的主存储器的消耗、或图形处理单元的存储器消耗)和/或I/O资源消耗等。此外,预测结果190例如还可以指示深度学习任务在具体运行环境中运行时的其他资源消耗,诸如执行时间、功率消耗、将消耗的预算等等。其他资源消耗例如可以基于算力消耗和/或存储器消耗而被确定。

如图2所示,在一些实现中,预测模块220例如可以包括静态预测单元221、仿真预测单元222和机器学习预测单元223。应当理解,如图2所示的预测模块220中所包括的功能单元仅是示例性的,无意于限制本公开的范围。在具体实现中,预测模块220可以包括附加的功能单元或者省略图2中所示的功能单元。

在一些实现中,静态预测单元221可以基于计算图201和代价模型202,预测运算图中的多个算子的相应静态资源使用情况。在一些实现中,算子的静态资源使用情况可以包括该算子的存储器消耗(例如,输出缓冲器、权重缓冲器、临时工作区等的大小)、该算子的算力消耗(例如,浮点运算量等)、该算子的I/O资源消耗等。静态预测单元221可以基于多个算子的相应静态资源使用情况来确定深度学习任务的静态资源使用情况。在一些实现中,仿真预测单元222可以基于计算图201和执行信息180来确定深度学习任务在由执行信息180所指示的具体运行环境中运行时的策略,诸如资源分配策略和执行策略等。仿真预测单元222进一步可以通过基于所确定的策略来执行针对资源消耗的仿真分析,从而基于仿真结果调整所确定的学习任务的静态资源使用情况,以得到深度学习任务在运行时的资源使用情况190。附加地或备选地,机器学习预测单元223可以利用经训练的机器学习模型(或者深度学习模型),来生成用于优化所预测的深度学习任务在运行时的资源使用情况190的参数,并且基于该参数来优化和校准所预测的深度学习任务在运行时的资源使用情况190,以提高资源使用情况预测的准确度。

在一些实现中,针对计算图201中的多个算子中的每个算子可以预先建立用于预测其资源消耗的代价模型。在一些实现中,代价模型可以是基于计算图来建立的,其对于不同深度学习框架(诸如,TensorFlow、PyTorch、MXNet等)可以是通用的。备选地,在一些实现中,针对部分算子而言,可以基于不同深度学习框架来构建其相应的代价模型。

在一些实现中,对于给定算子(例如,某个算子),针对其消耗的不同资源(例如,算力、主存储器/GPU存储器、网络I/O等)可以分别建立相同或者不同的代价模型,以用于估计该算子所引起的相应资源消耗。以下将以存储器资源为例来描述代价模型的构建。

以如图3A所示的代码300为例,如图3A所示的Python代码300隐藏了张量分配和释放的细节。如图3B所示的计算图305中的每个节点所对应的算子当在GPU上被执行时,可以对应于相应的深度神经网络代码库(例如,cuDNN)中的代码。图3C示出了前向传播过程中的卷积算子所对应的cuDNN代码的示例315。例如,图3A中的第6行代码将按照如图3C所示的示例代码315来执行。在一些实现中,可以从cuDNN代码中确定针对算子的具体张量分配要求,并且基于cuDNN应用编程接口和特定于具体框架的算子的实现来构建与该算子相对应的代价模型。

举例而言,针对卷积算子,通过分析从如图3C所示的示例cuDNN代码315,可以确定卷积算子的前向和反向传播过程中的张量类型以及具体分配和释放的细节,从而确定与该卷积算子的对应的代价模型。例如,如图3C中的第4-15行代码所示,所需的缓冲区(input、filter、output、workspace等)首先需要通过相应API进行分配。由于cuDNN是封闭的代码库,因此可以配置其仅支持若干种卷积算法。这些算法根据速度和空间之间的权衡使用不同的工作区大小。因此,工作区大小可以通过相应API获取或者根据已知算法构建相应代价模型来估计。然后,如图3C中的第20-26行代码所示,卷积运算将被执行。一旦卷积运算被执行,如果所分配的缓冲区不被其他算子所依赖,则可以通过相应API(如图3C中的第29行代码所示)将其释放。以此方式,通过对示例代码315进行分析,能够针对卷积算子的存储器消耗来构建代价模型,以用于预测卷积算子的存储器消耗。类似地,还可以为卷积算子预先构建针对其他类型的资源消耗的代价模型。

在一些实现中,可以建立统一代价模型以用于估计如下资源消耗:存储器消耗;算力消耗(例如,所消耗的浮点运算量);I/O相关的资源消耗(例如,I/O时间、吞吐量等);其他资源消耗(例如,基于算力消耗和存储器消耗而得到的执行时间、预算、功率消耗等)。以下将以GPU存储器和浮点运算量(FLOPs)为例来详细解释代价模型的构建。

如上所述,深度神经网络的执行可以被表示为有向无环计算图

在一些实现中,深度神经网络的总存储器消耗M可以通过累积所有算子的存储器消耗来被确定,如以下公式(1)所示。

M=(M

其中,M

在估计M

运行时存储器消耗M

M

针对每个算子u,其所消耗的存储器M(u)可以包括以下中的一项或多项的和:权重缓冲器W(u),输出缓冲器O(u)和临时缓冲器E(u),如以下公式(4)所示。

M(u)=W(u)+O(u)+E(u) (4)

其中,权重缓冲器W(u)可以包括用于缓存算子的权重的缓冲器W

W(u)=W

输出缓冲器O(u)可以包括用于缓存算子的前向传播输出的缓冲器O

O(u)=O

应当注意,由于算子的输入是前一算子的输出,因此上述缓冲器的统计应避免重复。临时缓冲区E(u)可以包括以下部分:临时工作区E

E(u)=E

以上存储器消耗估计是针对算子的存储器消耗估计的完整集合,并且不同算子的存储器消耗可以上述完整集合的子集。

在一些实现中,深度神经网络的总算力消耗F

其中,每个算子u的算力消耗被表示为F(u)。

以卷积算子为例,假设卷积算子被实现为滑动窗口,可以根据其所涉及的矩阵运算规模来确定其浮点运算量。在此假设卷积算子的一组输入特征图的尺寸为N×C×H×W,其中N表示输入特征图的数目,C表示通道数,H×W表示每个特征图的形状(例如,所对应的矩阵的行数和列数)。在此假设卷积算子所采用的一组卷积过滤器的尺寸为K×C×R×S,其中K表示卷积过滤器的数目,C表示通道数,R×S表示每个卷积过滤器的形状(例如,所对应的矩阵的行数和列数)。在此假设该卷积算子的输出为N×K个特征图,其中每个特征图的形状为P×Q(例如,其可以根据输入特征图和过滤器的形状结合附加的跨步和填充参数来确定)。假设一次浮点乘加操作的浮点运算量为2,则卷积算子在前向传播阶段的总浮点运算量为2×K×C×R×S×N×P×Q。相应地,其他算子的浮点运算量可以以类似方式来确定。

以上以存储器消耗和算力消耗为例描述了根据本公开的实现的代价模型的构建。应当理解,其他类型的资源消耗的代码模型可以以类似方式来构建,在此不再赘述。

上述代价模型的建立仅考虑了对资源使用情况的静态估计。以存储器消耗为例,在深度学习任务运行时,框架(例如,TensorFlow、PyTorch或MXNet等)将执行运行时存储器管理和优化,这将影响对存储器消耗的估计。例如,在图3C所示的示例中,第13-15行代码所对应的工作区大小取决于用于权衡空间和时间的多种策略之一。图3C中的第29行代码何时被调用将受到计算图和张量活跃度的影响。框架内置的分配器将舍入并对齐由图3C中的第4-15行代码所分配的空间大小。此外,框架还可以包括难以从程序中推理出的隐藏存储器开销。这些因素共同决定了深度学习任务在运行时的存储器分配策略。此外,深度学习任务的具体执行环境,例如用于执行该深度学习任务的计算设备(例如,中央处理单元/图形处理单元、网络、存储设备等)的规格和数目以及该深度学习任务在计算设备上的执行策略等,也将影响对存储器消耗的估计。

在一些实现中,为了使得对深度学习模型的资源使用情况的预测更加准确,仿真预测单元222可以基于计算图201和执行信息180来确定深度学习任务在运行时的资源分配策略和执行策略。资源分配策略例如可以包括如上所述的存储器分配策略和/或其他资源分配策略。执行策略例如可以指示该深度学习任务是在单机还是多机上被执行、以串行方式还是并行方式执行、由单个图形处理单元还是多个图形处理单元执行、是否以分布式方式执行。仿真预测单元222可以基于所确定的资源分配策略和执行策略中的至少一项来调整由静态预测单元221确定的静态资源使用情况,以得到深度学习任务在具体运行环境中运行时的资源使用情况。

上述静态资源预测和基于仿真的资源预测能够适应大部分深度学习框架。然而,某些框架可能涉及复杂的资源分配策略,从而导致资源预测精度的波动。在一些实现中,为了进一步优化所预测的资源使用情况,可以利用经训练的机器学习模型,来预测深度学习任务在具体运行环境中运行时的潜在资源消耗。这些潜在资源消耗例如难以通过分析静态代码和运行时环境来被预测,而机器学习是预测这类资源消耗的良好方法。

在一些实现中,可以建立基于机器学习的估计模型,该模型例如可以基于以下方式来被建立。首先,可以通过之前的程序分析过程中提取部分特征和标签,以作为机器学习模型的训练数据。所提取的特征可以包括与资源消耗有关特征、与计算图有关的特征和与执行环境有关的特征等等。具体特征的选择可以根据具体实现来被确定,本公开的范围在此方面不受限制。在一些实现中,可以使用机器学习或深度学习模型来进行模型训练。在一些实现中,模型训练所使用的损失函数L例如可以被确定为预测比值Y

应当理解,本公开的实现仅仅利用机器学习方法来优化和校准通过程序分析方法预测的深度学习任务的资源使用情况,而非仅仅利用机器学习方法来进行资源使用情况的预测。以此方式,所输出的预测结果190具有可解释性,例如能够帮助深度学习开发人员发现深度学习的瓶颈,从而通过调试模型参数来提供模型性能。此外,所输出的预测结果190能够与其他深度学习系统组件(例如,AutoML系统)或人工智能平台对接,以提高深度学习的生产效率。例如,该预测结果有助于提前对深度学习模型的模型参数的搜索空间进行裁剪,以提高模型参数搜索效率;该预测结果有助于优化人工智能平台的任务调度,从而提高工作效率等等。

图4示出了根据本公开一些实现的用于预测深度学习模型的资源使用情况的方法400的流程图。方法400可以由计算设备100来实现,例如可以被实现在计算设备100的存储器120中的资源预测模块122处。在框410处,计算设备100获取与深度学习模型有关的信息,所述信息包括用于描述所述深度学习模型的第一信息、以及与所述深度学习模型所关联的任务的运行环境有关的第二信息。在框420处,计算设备100基于所述第一信息,确定所述任务的静态资源使用情况。在框430处,计算设备100基于所述第一信息和所述第二信息,确定所述任务在所述运行环境中运行时的策略。在框440处,计算设备100基于所述策略和所述静态资源使用情况,预测所述任务在所述运行环境中运行时的资源使用情况。

在一些实现中,所述第一信息包括所述深度学习模型的配置参数。

在一些实现中,所述第一信息包括以下至少一项:所述深度学习模型的模型文件;以及所述任务的程序代码。

在一些实现中,所述第二信息包括以下至少一项:所述深度学习模型的框架类型;所述运行环境中用于执行所述任务的计算设备的规格和数目;以及所述任务在所述计算设备上的执行策略。

在一些实现中,所述资源使用情况包括以下至少一项:算力消耗;存储器消耗;I/O资源消耗;执行时间;以及功率消耗。

在一些实现中,所述资源使用情况包括基于所述算力消耗和所述存储器消耗中的至少一项而确定的其他资源消耗。

在一些实现中,确定所述静态资源使用情况包括:基于所述第一信息,生成与所述深度学习模型相对应的计算图,所述计算图包括多个节点,所述多个节点对应于所述深度学习模型中的多个算子,连接所述多个节点的边缘指示所述多个算子之间的依赖关系;基于所述计算图和所述多个算子的相应资源预测模型,预测所述多个算子的相应静态资源使用情况;以及基于所述多个算子的相应静态资源使用情况,确定所述任务的所述静态资源使用情况。

在一些实现中,所述策略包括以下至少一项:所述深度学习模型的资源分配策略;以及所述任务在所述运行环境中的执行策略。

在一些实现中,预测所述任务在所述运行环境中运行时的所述资源使用情况包括:基于所述资源分配策略和所述执行策略中的至少一项来调整所述静态资源使用情况,以得到所述任务在所述运行环境中运行时的所述资源使用情况。

在一些实现中,方法400还包括:利用经训练的机器学习模型,生成用于优化经预测的所述资源使用情况的参数;以及基于所述参数,优化经预测的所述资源使用情况。

基于以上描述能够看出,根据本公开的实现的用于预测深度学习模型的资源使用情况的方案能够准确地预测深度学习模型在特定运行时策略下的各种资源的使用情况,诸如,算力消耗、存储器消耗和执行时间等。此外,该方案能够支持各种类型的输入并且具有可扩展架构,便于支持各种不同类型的深度学习框架。该方案所提供的预测结果具有可解释性,并能够与其他深度学习系统组件(例如,AutoML系统)或人工智能平台对接,以提高深度学习的生产效率。例如,该预测结果能够帮助深度学习开发人员发现模型的瓶颈,从而通过调试模型参数来提供模型性能;该预测结果有助于其他深度学习系统组件(例如,AutoML系统)提前对深度学习模型的模型参数的搜索空间进行裁剪,以提高模型参数搜索效率;该预测结果有助于优化人工智能平台的任务执行策略,从而提高资源利用率等等。

以下列出了本公开的一些示例实现方式。

在一方面,本公开提供了一种计算机实现的方法。所述方法包括:获取与深度学习模型有关的信息,所述信息包括用于描述所述深度学习模型的第一信息、以及与所述深度学习模型所关联的任务的运行环境有关的第二信息;基于所述第一信息,确定所述任务的静态资源使用情况;基于所述第一信息和所述第二信息,确定所述任务在所述运行环境中运行时的策略;以及基于所述策略和所述静态资源使用情况,预测所述任务在所述运行环境中运行时的资源使用情况。

在一些实现中,所述第一信息包括所述深度学习模型的配置参数。

在一些实现中,所述第一信息包括以下至少一项:所述深度学习模型的模型文件;以及所述任务的程序代码。

在一些实现中,所述第二信息包括以下至少一项:所述深度学习模型的框架类型;所述运行环境中用于执行所述任务的计算设备的规格和数目;以及所述任务在所述计算设备上的执行策略。

在一些实现中,所述资源使用情况包括以下至少一项:算力消耗;存储器消耗;I/O资源消耗;执行时间;以及功率消耗。

在一些实现中,所述资源使用情况包括基于所述算力消耗和所述存储器消耗中的至少一项而确定的其他资源消耗。

在一些实现中,确定所述静态资源使用情况包括:基于所述第一信息,生成与所述深度学习模型相对应的计算图,所述计算图包括多个节点,所述多个节点对应于所述深度学习模型中的多个算子,连接所述多个节点的边缘指示所述多个算子之间的依赖关系;基于所述计算图和所述多个算子的相应资源预测模型,预测所述多个算子的相应静态资源使用情况;以及基于所述多个算子的相应静态资源使用情况,确定所述任务的所述静态资源使用情况。

在一些实现中,所述策略包括以下至少一项:所述深度学习模型的资源分配策略;以及所述任务在所述运行环境中的执行策略。

在一些实现中,预测所述任务在所述运行环境中运行时的所述资源使用情况包括:基于所述资源分配策略和所述执行策略中的至少一项来调整所述静态资源使用情况,以得到所述任务在所述运行环境中运行时的所述资源使用情况。

在一些实现中,所述方法还包括:利用经训练的机器学习模型,生成用于优化经预测的所述资源使用情况的参数;以及基于所述参数,优化经预测的所述资源使用情况。

在另一方面,本公开提供了一种电子设备。所述电子设备包括:处理单元;以及存储器,耦合至所述处理单元并且包含存储于其上的指令,所述指令在由所述处理单元执行时,使得所述设备执行动作,所述动作包括:获取与深度学习模型有关的信息,所述信息包括用于描述所述深度学习模型的第一信息、以及与所述深度学习模型所关联的任务的运行环境有关的第二信息;基于所述第一信息,确定所述任务的静态资源使用情况;基于所述第一信息和所述第二信息,确定所述任务在所述运行环境中运行时的策略;以及基于所述策略和所述静态资源使用情况,预测所述任务在所述运行环境中运行时的资源使用情况。

在一些实现中,所述第一信息包括所述深度学习模型的配置参数。

在一些实现中,所述第一信息包括以下至少一项:所述深度学习模型的模型文件;以及所述任务的程序代码。

在一些实现中,所述第二信息包括以下至少一项:所述深度学习模型的框架类型;所述运行环境中用于执行所述任务的计算设备的规格和数目;以及所述任务在所述计算设备上的执行策略。

在一些实现中,所述资源使用情况包括以下至少一项:算力消耗;存储器消耗;I/O资源消耗;执行时间;以及功率消耗。

在一些实现中,所述资源使用情况包括基于所述算力消耗和所述存储器消耗中的至少一项而确定的其他资源消耗。

在一些实现中,确定所述静态资源使用情况包括:基于所述第一信息,生成与所述深度学习模型相对应的计算图,所述计算图包括多个节点,所述多个节点对应于所述深度学习模型中的多个算子,连接所述多个节点的边缘指示所述多个算子之间的依赖关系;基于所述计算图和所述多个算子的相应资源预测模型,预测所述多个算子的相应静态资源使用情况;以及基于所述多个算子的相应静态资源使用情况,确定所述任务的所述静态资源使用情况。

在一些实现中,所述策略包括以下至少一项:所述深度学习模型的资源分配策略;以及所述任务在所述运行环境中的执行策略。

在一些实现中,预测所述任务在所述运行环境中运行时的所述资源使用情况包括:基于所述资源分配策略和所述执行策略中的至少一项来调整所述静态资源使用情况,以得到所述任务在所述运行环境中运行时的所述资源使用情况。

在一些实现中,所述动作还包括:利用经训练的机器学习模型,生成用于优化经预测的所述资源使用情况的参数;以及基于所述参数,优化经预测的所述资源使用情况。

在又一方面,本公开提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机存储介质中并且包括机器可执行指令,机器可执行指令在由设备执行时使设备执行上述方面的方法。

在又一方面,本公开提供了一种计算机可读介质,其上存储有机器可执行指令,机器可执行指令在由设备执行时使设备执行上述方面的方法。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实现的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

相关技术
  • 深度学习模型的资源使用情况预测
  • 判断资源泄漏、预测资源使用情况的方法及装置
技术分类

06120113046549