显存分配的方法、装置、计算设备及计算机存储介质与流程

文档序号:17066182发布日期:2019-03-08 22:56阅读:244来源:国知局
显存分配的方法、装置、计算设备及计算机存储介质与流程

本发明涉及计算机技术领域,具体涉及一种显存分配的方法、装置、计算设备及计算机存储介质。



背景技术:

随着硬件技术的高速发展,目前市面上的主流硬件设备已经能满足深度学习算法的基本运行,但是在实际工业生产当中却隐含诸多问题。其中一种较典型的问题如下:大部分开源深度学习框架主要针对学术研究而开发,而对显卡的显存利用率一直不是很高,一般显卡设备无法负担以resnet等超大规模的深度神经网络作为特征提取网络的深度学习算法对内存的需求。并且,在实际工业使用中,如果使用开源深度学习框架,比如caffe这种通用的深度学习框架,它的硬件成本是非常昂贵的,进而造成一块显卡无法负载多个深度学习算法模型。

因此,需要一种适用于工业生产的方案以克服现有的深度学习算法模型运行时显存利用率低、实施成本高的问题。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的显存分配的方法、装置、计算设备及计算机存储介质。

根据本发明的一个方面,提供了一种显存分配的方法,其特征在于,包括:

解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到解析结果;

根据解析结果得到各个深度学习算法模型的数据流动过程中所需占用的显存块的第一数量;

确定各个深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则;

在一个或多个深度学习算法模型的运行中,根据各个深度学习算法模型对应的分配规则为所述深度学习算法模型分配显存块。

根据本发明的另一方面,提供了一种显存分配的装置,其特征在于,包括:

解析模块,适于解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到解析结果;

显存块数量确定模块,适于根据解析结果得到各个深度学习算法模型的数据流动过程中所需占用的显存块的第一数量;

分配规则确定模块,适于确定各个深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则;

分配模块,适于在一个或多个深度学习算法模型的运行中,根据各个深度学习算法模型对应的分配规则为所述深度学习算法模型分配显存块。

根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;

所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述显存分配的方法对应的操作。

根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述显存分配的方法对应的操作。

根据本发明的显存分配的方法、装置、计算设备及计算机存储介质,通过对深度学习算法模型的数据流动路线进行解析,可以得到反映深度学习算法模型中的多个神经网络层之间的数据流动关系的信息,即解析结果;然后,根据该信息得到深度学习算法模型的数据流动过程中所需占用的显存块的第一数量,并对数据流动过程中的第一数量的显存块进行分配,得到分配规则,该分配规则可以保障深度学习算法模型的正常数据流动,同时也可以仅占用必要的显存资源;在深度学习算法模型的运行过程中,根据分配规则进行显存块的分配,而不是给每个中间数据均分配显存块,进而减少了深度学习算法模型运行过程中所占用的显存资源,并且有利于在同一设备上运行多个深度学习算法模型,进而可以降低实施成本。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的显存分配的方法的流程图;

图2示出了根据本发明另一个实施例的显存分配的方法的流程图;

图3示出了一个具体的深度学习算法模型的数据流动路线的示意图;

图4示出了根据本发明一个实施例的显存分配的装置的功能框图;

图5示出了根据本发明实施例的一种计算设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

深度学习算法模型是一种组接性以及模块化极强的算法模型,目前常用的深度学习框架比如caffe,mxnet,tensorflow等,它们的设计理念是将深度学习算法模型抽象成一个计算路线图(即为定义好的有向无环图),然后控制算法模型输入数据流动,逐层计算,并且每层都会有一个输入和输出,每一层的输出作为下一层输入依次经过计算路线图中的各个神经网络层,最终给出结果。现有技术中,用于学术研究的深度学习算法模型,在运行过程中,通常会将经过每一层传输的数据进行存储,而随着神经网络层的加深,所需存储的数据也越来越多,相应的,则需要开辟更多的显存用来存储数据,则一个深度学习算法模型会同时占用大量的显存空间,并且不利于在多个深度学习算法模型之间进行显存资源的分配与复用。基于此,同时考虑到实际工业生产中,算法使用者主要关注的是深度学习算法模型给出的最后值,其它的中间结果则没有任何意义,本发明提出了一种对常用的深度学习算法模型进行智能解析,利用解析结果为深度学习算法模型的运行过程分配显存的方案。

图1示出了根据本发明一个实施例的显存分配的方法的流程图。如图1所示,该方法包括:

步骤s101:解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到解析结果。

其中,数据流动路线是指与深度学习算法模型的计算路线相对应的路线。例如,对于一个单线路的计算路线,则数据流动路线为该计算路线中第一层的输入数据至最后一层的输出数据的流动路线。其中,计算路线是在深度学习算法模型定义的时候就确定好的。

具体地,对加载于设备中的一个或多个深度学习算法模型的数据流动路线进行解析,得到解析结果,该解析结果包括反映深度学习算法模型中的多个神经网络层之间的数据流动关系的信息。

步骤s102:根据解析结果得到各个深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。

其中,第一数量为允许深度学习算法模型同时占用的显存块的最大数量值,并且本发明中得到的第一数量少于深度学习算法模型中的数据节点的数量,该数据节点包括深度学习算法模型的初始输入数据(即第一个神经网络层的输入数据)对应的一个数据节点,以及深度学习算法模型的多个神经网络层的输出数据对应的多个数据节点。举例来说,深度学习算法模型共有5个神经网络层,则共有6个数据节点。

具体地,从解析结果中可以获知为了保障深度学习算法模型的各个神经网络层的正常运算,深度学习算法模型的数据流动过程中的各个时刻所必须占用的显存块的情况,根据各个时刻所必须占用的显存块的情况确定可以深度学习算法模型分配的、允许深度学习算法模型同时占用的显存块的最大数量值,并将该允许深度学习算法模型同时占用的显存块的最大数量值作为深度学习算法模型的数据流动的整个过程中所需占用的少于数据节点的显存块的第一数量。

步骤s103:确定各个深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则。

在得到第一数量之后,确定如何分配该第一数量的显存块,即第一数量的显存块的分配规则,以便于在深度学习算法模型的运行过程中按照此分配规则进行显存块的分配。

具体地,根据深度学习算法模型中的多个神经网络层之间的数据流动关系确定在数据流动的各个时刻所需保留的数据以及可以丢弃的数据,并为所需保留、但未存储的数据,以及为可以丢弃、但占用显存块的数据设置第一数量的显存块的分配规则,该分配规则的具体规则内容与数据流动过程中的各个阶段(或各个时刻)是对应的。而且,第一数量的显存块的分配规则的具体规则内容是指对数量的分配,即增加或减少显存块的数量,使深度学习算法模型各个时刻占用的显存块的数量始终在第一数量内。

步骤s104:在一个或多个深度学习算法模型的运行中,根据各个深度学习算法模型对应的分配规则为深度学习算法模型分配显存块。

经过上述步骤s101至步骤s103,通过对数据流动路线的解析,最终得到了可以用于深度学习算法模型的运行中的第一数量的显存块的分配规则。在步骤s104中,则根据分配规则进行显存块的数量的分配。

具体地,在深度学习算法模型的运行过程中,根据当前数据流动所对应的阶段或时刻从分配规则中确定具体规则内容,并按照该具体规则内容对深度学习算法模型分配显存块,而不是给每个中间数据均分配显存块,进而减少了深度学习算法模型运行过程中所占用的显存资源。而且,加载于设备中的各个深度学习算法模型的运行过程均按照各自的分配规则进行显存块分配,使得一块显卡可以支持多个深度学习算法模型的正常运行,进而可以降低实施成本。

本实施例方案,可以由设备本身的处理器来执行,或者可以由专用于本方案的智能分析引擎来执行,本实施例对此不做具体限定。

根据本实施例提供的显存分配的方法,通过对深度学习算法模型的数据流动路线进行解析,可以得到反映深度学习算法模型中的多个神经网络层之间的数据流动关系的信息,即解析结果;然后,根据该信息得到深度学习算法模型的数据流动过程中所需占用的显存块的第一数量,并对数据流动过程中的第一数量的显存块进行分配,得到分配规则,该分配规则可以保障深度学习算法模型的正常数据流动,同时也可以仅占用必要的显存资源;在深度学习算法模型的运行过程中,根据分配规则进行显存块的分配,而不是给每个中间数据均分配显存块,进而减少了深度学习算法模型运行过程中所占用的显存资源,并且有利于在同一设备上运行多个深度学习算法模型,进而可以降低实施成本。

图2示出了根据本发明另一个实施例的显存分配的方法的流程图。如图2所示,该方法包括:

步骤s201:设置包括多个显存块的显存池。

其中,多个显存块中各个显存块对应的存储空间的大小可以是固定设置的常量,也可以是根据设备中加载的一个或多个深度学习算法模型的各个神经网络层的输入输出数据的数据量进行动态分配的变量。并且,各个显存块对应的存储空间的大小可以相同,也可以不同,本发明对此不做任何限定。

具体地,将设备显卡的部分显存空间划分为多个显存块,并将该多个显存块添加至显存池中,以专用于一个或多个深度学习算法模型运行中的数据存储,而在深度学习算法模型运行时,则只能从该显存池中申请显存资源,这种方式可以将用于深度学习算法模型的运行的显存资源与其它用途的显存资源区别开,避免深度学习算法模型的运行影响设备的其它功能的正常实现。可选的,该多个显存块中包括一个显存中转块,该显存中转块用于在显存池中的其它显存块与内存之间进行存储数据的中转。

步骤s202:解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到解析结果。

具体地,对加载于设备中的一个或多个深度学习算法模型的数据流动路线进行解析,得到解析结果,该解析结果包括反映深度学习算法模型中的多个神经网络层之间的数据流动关系的信息。

在一个具体的实施例中,多个神经网络层之间的数据流动关系包括数据流动的时序关系以及数据流动的逻辑顺序关系。相应的,在该具体实施例中,解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到的解析结果包含如下内容:其一,得到对应各个深度学习算法模型的数据流动路线的数据流动时序。根据该数据流动时序,可以确定深度学习算法模型中的多个神经网络层的运算时序。例如,对于一个单线路的深度学习算法模型中依次连接的n个神经网络层,则该n个神经网络层的运算时序为从接收初始输入数据的第1个神经网络层至输出最后计算结果的第n个神经网络层。而对于存在支路的深度学习算法模型中的m个神经网络层,则该n个神经网络层的运算时序除了同一支路中多个神经网络层的运算顺序外,还包括不同支路中的神经网络层之间的运算顺序,该不同支路中的神经网络层之间的运算顺序不仅涉及分支前的最后一个神经网络层的输出数据的存储,还涉及确定对应各个时刻时同时可能正在运算的神经网络层的数量。其二,得到对应各个深度学习算法模型的数据流动路线的数据流动时序中的各个时刻所需占用的显存块的第二数量。在得到深度学习算法模型中的各个神经网络层的运算时序后,进一步根据数据流动路线中各个神经网络层的输入数据的来源和输出数据的流向,确定运算过程中的中间数据在后续运算中是否具有使用价值。针对特定时刻,对于后续运算需要用到的中间数据,则需要占用显存块进行存储,而对于后续运算无需用到的中间数据,则无需占用显存块进行存储。例如,对于分支前的最后一个神经网络层的输出数据,可能多个分支中的第一个神经网络层均会将该分支前的最后一个神经网络层的输出数据作为输入数据,则在确定该分支前的最后一个神经网络层的输出数据的使用价值时,需要确定多个分支中的第一个神经网络层是否均已完成运算,并且仅当该多个分支中的第一个神经网络层是否均已完成运算,才能确定该分支前的最后一个神经网络层的输出数据在后续运算中无需用到。基于此,则可以确定各个时刻所必须占用的显存块的第二数量。需要在此说明的是,该第二数量可以是一个准确的数值;或者,考虑到实际运算过程中,各个神经网络层的运算速度与理论值之间可能存在一定的偏差,进而导致各个时刻实际所必须占用的显存块的数量也存在波动,相应的,则将第二数量设置为一个数值范围。

为了便于对该步骤s202的理解,下面以一个具体的深度学习算法模型为例,来进行解析并得到解析结果。图3示出了一个具体的深度学习算法模型的数据流动路线的示意图。如图3所示,该深度学习算法模型包括n个神经网络层,分别为算法模型第一层、算法模型第二层……算法模型第n层,共有n+1个数据节点,分别为初始输入对应的数据节点,第一层输出、第二层输出……第n层输出分别对应的数据节点。通过对图3的深度学习算法模型的数据流动路线的解析,可以得到n个神经网络层的运算时序为从算法模型第一层至算法模型第n层;并且,由于该深度学习算法模型为单线路的,不存在分支,则数据流动也是单线路的,各个神经网络层的输入数据来源于前一神经网络层,输出数据流向唯一的下一神经网络层,则在数据流动时序中的各个时刻,均需要两个显存块即可,一个显存块用于当前正在运算的神经网络层的输入数据的存储,另一显存块用于当前正在运算的神经网络层的输出数据的存储。

需要在此说明的是,虽然图3仅以单线路为例进行了数据流动路线的解析说明,但是并发明并不以此为限,本领域技术人员应该理解的是,具体实施时,该步骤s202也同样适用于存在分支的多线路的深度学习算法模型的解析。

步骤s203:根据解析结果得到各个深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。

具体地,根据解析出的各个时刻所需占用的显存块的第二数量得到深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。其中,各个时刻所必须占用的显存块的第二数量表明了保障当前各个时刻深度学习算法模型的正常运算所需占用的显存块的资源情况;其中,第一数量为可以保障深度学习算法模型的整个运算过程的正常运算、且所需的少于数据节点的数量的显存块的数量值。

进一步的,比较解析出的各个时刻所需占用的显存块的第二数量的数量值的大小,确定数量值最大的第二数量为深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。确定第一数量的过程,即根据各个时刻深度学习算法模型必须使用的显存块的资源情况来确定允许深度学习算法模型同时占用的显存块的最大数量值,则在解析出各个时刻所必须占用的显存块的第二数量之后,将各个时间所必须占用的显存块的数量值最大的第二数量作为允许深度学习算法占用的显存块的最大数量值,即第一数量,该第一数量的显存块可以保障深度学习算法模型中各个神经网络层的正常运算,并且,在深度学习算法模型包括多个神经网络层的情况下,同一时刻所需存储的数据通常不会是所有数据节点的数据,则所需的显存块的第二数量通常不会超过数据节点的数量,相应的,将数量值最大的第二数量确定为第一数量,可以使第一数量的数量值小于数据节点的数量值,进而可以占用更少的显存资源。

步骤s204:确定各个深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则。其中,分配规则包括释放显存块的规则和/或新增显存块的规则。

在确定了允许深度学习算法模型占用的显存块的最大数量值后,即第一数量,为深度学习算法模型的数据流动过程设置分配规则,该分配规则包含使数据流动过程中的各个时刻同时占用的显存块的数量均不超过第一数量的规则,或者,为了给除当前的深度学习算法模型之外的其它深度学习算法模型留有足够的显存块的资源,该分配规则还包含使数据流动过程中的各个时刻同时占用的显存块的数量为后续需要用到的数据对应的数据节点的数量的规则,进而不会分配显存块存储多余的数据。

具体地,根据各个深度学习算法模型的数据流动路线和数据流动时序确定深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则。其中,分配规则的具体规则内容与数据流动过程中的各个阶段(或各个时刻)是对应的,则需要确定各个阶段(或各个时刻)的具体规则内容。按照数据流动时序,针对该数据流动时序中的某一阶段或时刻,确定后续运算需要用到的数据,然后确定对应该阶段或时刻的具体规则内容为:释放存储后续运算无需用到的数据的显存块,新增存储后续运算需要用到的数据的显存块。其中,关于数据在后续运算是否需要用到,可根据数据流动路线来确定,进一步的,在后的神经网络层的运算会用到与之连接的在前的神经网络层输出的数据,并且,针对在前的神经网络层输出的数据,若与之相连的在后的神经网络层中存在至少一个神经网络层未完成运算,则该在前的神经网络层输出的数据为后续运算中需要用到的数据。

需要在此说明的是,本实施例的上述步骤s202至步骤s204中示出的解析、确定第一数量以及设置分配规则的方式仅为优选的方式,本发明并不以此为限,具体实施时,本领域技术人员可以确定允许深度学习算法模型占用的显存块的最大数量值为目的,来灵活选择解析、以及确定第一数量的方式;以及,可以使数据流动过程中的各个时刻同时占用的显存块的数量均不超过第一数量为目的,来灵活选择设置分配规则的方式。

步骤s205:根据释放显存块的规则将深度学习算法模型已占用的显存块释放至显存池中;和/或,根据新增显存块的规则从显存池中提取存储当前的待存储数据的显存块。

具体地,在一个或多个深度学习算法模型运行的各个时刻,根据释放显存块的规则中的相应具体规则内容,释放已被占用的、存储后续运算中无需用到的数据的显存块,释放过程即将显存块中存储的数据清空;和/或,根据新增显存块的规则中的相应具体规则内容,新增用来存储新产生的、且后续运算中需要用到的数据。

进一步的,在进行显存块的释放之后,将释放的已占用的显存块的状态设置为闲置状态。以及,根据新增显存块的规则从显存池中提取存储当前的待存储数据的显存块具体为:根据新增显存块的规则从显存池中提取闲置状态的显存块存储当前的待存储数据。若显存池中不存在闲置状态的显存块,则控制当前的深度学习算法模型暂停运行以等待闲置状态的显存块,即等待从其它深度学习算法模型中释放出显存块。若有多个深度学习算法模型加载于设备中,该多个深度学习算法模型的运行是相互独立的,当其中一个或多个深度学习算法模型向显存池中申请提取闲置状态的显存块存储当前的待存储数据、且显存池中不存在闲置状态的显存块时,则控制该一个或多个深度学习算法模型暂停运行,此时设备中的其它深度学习算法模型依然处于正常运行的状态,该运行过程中可能会释放显存块,则释放出的显存块可以供该一个或多个深度学习算法模型提取使用。

更进一步的,判断等待闲置状态的显存块的时间是否超过预设时间,若等待超时,则表明设备中此时的显存块的数量严重不足,存在多个深度学习算法模型均需从显存池中提取闲置状态的显存块,或者是所有的深度学习算法模型均需从显存池中提取闲置状态的显存块,而显存池中无闲置状态的显存块,致使各个深度学习算法模型均处于锁死状态,此时,则需采用强制手段得到闲置状态的显存块以使各个深度学习算法模型正常运行。可选的,若等待闲置状态的显存块的时间是否超过预设时间,则从一个或多个深度学习算法模型当前已占用的显存块中选择预设数量的显存块;其中,预设数量可为固定的数量,或者为根据设备中暂停运行的深度学习算法模型设置的数。将预设数量的显存块中存储的数据拷贝至内存中,以及记录预设数量的显存块中存储的数据的索引信息;其中,可通过显存中转块来将预设数量的显存块中存储的数据拷贝至内存中,同时为了便于后续查找使用,还需将预设数量的显存块中存储的数据的索引信息与对应的数据关联存储至内存中,该索引信息包括数据来源的深度学习算法模型的标识,以及来源的神经网络层的标识。将预设数量的显存块中存储的数据清空,并将预设数量的显存块的状态设置为闲置状态;该设置为闲置状态的预设数量的显存块可供暂停运行的深度学习算法模型提取使用。

根据本实施例提供的显存分配的方法,解析深度学习算法模型的数据流动路线,得到对应各个深度学习算法模型的数据流动路线的数据流动时序,以及得到对应各个深度学习算法模型的数据流动路线的数据流动时序中的各个时刻所需占用的显存块的第二数量;根据各个时刻深度学习算法模型需要使用的显存块的资源情况来确定允许深度学习算法模型占用的显存块的最大数量值,即第一数量;然后,根据各个深度学习算法模型的数据流动路线和数据流动时序确定深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则,使数据流动过程中的各个时刻同时占用的显存块的数量均不超过第一数量,或者,进一步可使数据流动过程中的各个时刻同时占用的显存块的数量为后续需要用到的数据对应的数据节点的数量,而不会分配显存块存储多余的数据。在一个或多个深度学习算法模型运行的各个时刻,根据释放显存块的规则将深度学习算法模型已占用的显存块释放至显存池中;和/或,根据新增显存块的规则从显存池中提取存储当前的待存储数据的显存块,减少了深度学习算法模型运行过程中所占用的显存资源,并且有利于在同一设备上运行多个深度学习算法模型,进而可以降低实施成本。

图4示出了根据本发明一个实施例的显存分配的装置的功能框图。如图4所示,该装置包括:解析模块401、显存块数量确定模块402、分配规则确定模块403、分配模块404;可选的,还包括,第一设置模块405、第二设置模块406、判断模块407、拷贝模块408。

解析模块401,适于解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到解析结果;

显存块数量确定模块402,适于根据解析结果得到各个深度学习算法模型的数据流动过程中所需占用的显存块的第一数量;

分配规则确定模块403,适于确定各个深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则;

分配模块404,适于在一个或多个深度学习算法模型的运行中,根据各个深度学习算法模型对应的分配规则为所述深度学习算法模型分配显存块。

在一种可选的实施方式中,所述解析模块401进一步适于:

解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到对应各个深度学习算法模型的数据流动路线的数据流动时序,以及得到对应各个深度学习算法模型的数据流动路线的数据流动时序中的各个时刻所需占用的显存块的第二数量;

所述显存块数量确定402模块进一步适于:根据解析出的各个时刻所需占用的显存块的第二数量得到所述深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。

在一种可选的实施方式中,所述显存块数量确定模块402进一步适于:

比较解析出的各个时刻所需占用的显存块的第二数量的数量值的大小,确定数量值最大的第二数量为所述深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。

在一种可选的实施方式中,所述分配规则确定模块403进一步适于:

根据各个深度学习算法模型的数据流动路线和数据流动时序确定所述深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则。

在一种可选的实施方式中,所述分配规则包括释放显存块的规则和/或新增显存块的规则。

在一种可选的实施方式中,所述装置还包括:第一设置模块405,适于设置包括多个显存块的显存池;

所述分配模块404进一步适于:根据所述释放显存块的规则将所述深度学习算法模型已占用的显存块释放至显存池中;和/或,

根据所述新增显存块的规则从显存池中提取存储当前的待存储数据的显存块。

在一种可选的实施方式中,所述装置还包括:第二设置模块406,适于将释放的所述已占用的显存块的状态设置为闲置状态。

在一种可选的实施方式中,所述分配模块404进一步适于:

根据新增显存块的规则从显存池中提取闲置状态的显存块存储当前的待存储数据。

在一种可选的实施方式中,所述分配模块404进一步适于:

若显存池中不存在闲置状态的显存块,则控制当前的深度学习算法模型暂停运行以等待闲置状态的显存块。

在一种可选的实施方式中,所述装置还包括:

判断模块407,适于判断等待闲置状态的显存块的时间是否超过预设时间;若是,则从一个或多个深度学习算法模型当前已占用的显存块中选择预设数量的显存块;

拷贝模块408,适于将所述预设数量的显存块中存储的数据拷贝至内存中,以及记录所述预设数量的显存块中存储的数据的索引信息;

第二设置模块406进一步适于,将所述预设数量的显存块中存储的数据清空,并将所述预设数量的显存块的状态设置为闲置状态。

关于上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。

本申请实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的显存分配的方法。

图5示出了根据本发明实施例的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。

如图5所示,该计算设备可以包括:处理器(processor)502、通信接口(communicationsinterface)504、存储器(memory)506、以及通信总线508。

其中:

处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。

通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。

处理器502,用于执行程序510,具体可以执行上述显存分配的方法实施例中的相关步骤。

具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。

处理器502可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。

存储器506,用于存放程序510。存储器506可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

程序510具体可以用于使得处理器502执行以下操作:

解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到解析结果;

根据解析结果得到各个深度学习算法模型的数据流动过程中所需占用的显存块的第一数量;

确定各个深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则;

在一个或多个深度学习算法模型的运行中,根据各个深度学习算法模型对应的分配规则为所述深度学习算法模型分配显存块。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:

解析加载于设备中的一个或多个深度学习算法模型的数据流动路线,得到对应各个深度学习算法模型的数据流动路线的数据流动时序,以及得到对应各个深度学习算法模型的数据流动路线的数据流动时序中的各个时刻所需占用的显存块的第二数量;

根据解析出的各个时刻所需占用的显存块的第二数量得到所述深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:

比较解析出的各个时刻所需占用的显存块的第二数量的数量值的大小,确定数量值最大的第二数量为所述深度学习算法模型的数据流动过程中所需占用的显存块的第一数量。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:

根据各个深度学习算法模型的数据流动路线和数据流动时序确定所述深度学习算法模型的数据流动过程中的第一数量的显存块的分配规则。

在一种可选的实施方式中,所述分配规则包括释放显存块的规则和/或新增显存块的规则。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:设置包括多个显存块的显存池;

根据所述释放显存块的规则将所述深度学习算法模型已占用的显存块释放至显存池中;和/或,

根据所述新增显存块的规则从显存池中提取存储当前的待存储数据的显存块。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:将释放的所述已占用的显存块的状态设置为闲置状态。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:

根据新增显存块的规则从显存池中提取闲置状态的显存块存储当前的待存储数据。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:

若显存池中不存在闲置状态的显存块,则控制当前的深度学习算法模型暂停运行以等待闲置状态的显存块。

在一种可选的实施方式中,程序510具体可以进一步用于使得处理器502执行以下操作:

判断等待闲置状态的显存块的时间是否超过预设时间;

若是,则从一个或多个深度学习算法模型当前已占用的显存块中选择预设数量的显存块;

将所述预设数量的显存块中存储的数据拷贝至内存中,以及记录所述预设数量的显存块中存储的数据的索引信息;

将所述预设数量的显存块中存储的数据清空,并将所述预设数量的显存块的状态设置为闲置状态。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的显存分配的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1