CN109840597B - 一种模型预测方法、装置、电子设备及存储介质 - Google Patents
一种模型预测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109840597B CN109840597B CN201711221175.5A CN201711221175A CN109840597B CN 109840597 B CN109840597 B CN 109840597B CN 201711221175 A CN201711221175 A CN 201711221175A CN 109840597 B CN109840597 B CN 109840597B
- Authority
- CN
- China
- Prior art keywords
- prediction
- threads
- model
- input data
- thread
- 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.)
- Active
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例公开一种模型预测方法、装置、电子设备及存储介质,涉及计算机技术领域,能够有效提高模型预测过程中的数据吞吐量。所述预测方法包括:接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分,其中各所述子模型分别由不同的进程驱动,每个所述进程中包括至少两个线程,所述预测模型基于TensorFlow框架;对各所述子模型的预测打分的分数进行加权求和,以获得所述预测模型的预测结果。本发明适用于图像分析和预测中。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种模型预测方法、装置、电子设备及存储介质。
背景技术
TensorFlow是基于gRPC(*** Remote Procedure Call Protocol,远程过程调用协议)实现的机器学习框架,可以在该框架下通过机器学习训练出各种模型,以便用于对相应的问题进行预测。
然而,由于训练出的模型一般都较为复杂,在运行模型进行预测的过程中常常需要经过大量计算,容易出现数据吞吐量低等问题。
发明内容
有鉴于此,本发明实施例提供一种模型预测方法、装置、电子设备及存储介质,能够有效提高模型预测过程中的数据吞吐量。
第一方面,本发明实施例提供一种模型预测方法,包括:接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分,其中各所述子模型分别由不同的进程驱动,每个所述进程中包括至少两个线程,所述预测模型基于TensorFlow框架;对各所述子模型的预测打分的分数进行加权求和,以获得所述预测模型的预测结果。
结合第一方面,在第一方面的第一种实施方式中,每个所述线程由CPU(centralprocess unit,中央处理器)或GPU(Graphics Processing Unit,图形处理器)执行。
结合第一方面,在第一方面的第二种实施方式中,所述接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分包括:接收所述输入数据并将所述输入数据分配给至少两个子模型,其中每个子模型通过单独一个进程驱动;将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作;将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分。
结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,所述将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作之后,所述将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分之前,所述方法还包括:将所述第一线程预处理后的数据存入缓冲队列;从所述缓冲队列中读取所述预处理后的数据到所述至少两个第二线程。
结合第一方面的第二种实施方式,在第一方面的第四种实施方式中,所述第一线程由CPU执行,所述第二线程由GPU执行。
第二方面,本发明的实施例还提供一种模型预测装置,包括:分配单元,用于接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分,其中各所述子模型分别由不同的进程驱动,每个所述进程中包括至少两个线程,所述预测模型基于TensorFlow框架;求和单元,用于对各所述子模型的预测打分的分数进行加权求和,以获得所述预测模型的预测结果。
结合第二方面,在第二方面的第一种实施方式中,每个所述线程由中央处理器CPU或图形处理器GPU执行。
结合第二方面,在第二方面的第二种实施方式中,所述分配单元包括:进程分配模块,用于接收所述输入数据并将所述输入数据分配给至少两个子模型,其中每个子模型通过单独一个进程驱动;第一线程分配模块,用于将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作;第二线程分配模块,用于将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分。
结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,所述分配单元还包括:存入模块,用于在将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作之后,将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分之前,将所述第一线程预处理后的数据存入缓冲队列;读取模块,用于从所述缓冲队列中读取所述预处理后的数据到所述至少两个第二线程。
结合第二方面的第二种实施方式,在第二方面的第四种实施方式中,所述第一线程由中央处理器CPU执行,所述第二线程由图形处理器GPU执行。
第三方面,本发明的实施例还提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行本发明的实施例提供的任一种模型预测方法。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明的实施例提供的任一种模型预测方法。
本发明的实施例提供的模型预测方法、装置、电子设备、存储介质,在利用基于TensorFlow框架构建的预测模型进行预测时,能够将输入模型的数据分配到至少两个子模型中分别进行预测打分,然后再对各子模型预测打分的分数进行加权求和得到预测结果。由于在预测打分过程中,每个子模型都由单独的进程驱动且每个进程中又包括至少两个线程,可以进行并行数据处理,因此大大提高了模型预测过程中的数据吞吐量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例提供的模型预测方法的一种流程图;
图2为本发明的实施例提供的模型预测方法的一种程序执行逻辑示意图;
图3为图2所示的程序执行逻辑对应的GPU占用效果的一种示意图;
图4为本发明的实施例提供的模型预测方法的另一种程序执行逻辑示意图;
图5为图4所示的程序执行逻辑对应的GPU占用效果的一种示意图;
图6为本发明的实施例提供的模型预测方法的一种详细流程图;
图7为本发明的实施例提供的模型预测装置的一种结构示意图;
图8为本发明的实施例提供的电子设备的一种结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
第一方面,本发明的实施例提供一种模型预测方法,在利用基于TensorFlow框架构建的预测模型进行预测时,能够将输入模型的数据分配到至少两个子模型中分别进行预测打分,其中每个子模型都由单独的进程驱动,且每个进程中又包括至少两个线程,这样在预测打分的过程中,可以进行并行数据处理,因此大大提高了模型预测过程中的数据吞吐量。
如图1所示,本发明的实施例提供的模型预测方法,可包括:
S11,接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分,其中各所述子模型分别由不同的进程驱动,每个所述进程中包括至少两个线程,所述预测模型基于TensorFlow框架;
其中,本发明实施例中的预测模型是基于TensorFlow框架训练出的模型,可以用于图像识别和语音识别等深度学习。TensorFlow是一种采用数据流图(data flow graphs)的方式进行数值计算的开源软件库。本发明的实施例提供的模型预测方法,可以应用于视频推荐领域中,用开源深度学习框架TensorFlow进行关键帧图片分析,并据此对视频进行分类和打标签,以鉴别图片是否色情,是否模糊,以及是否会令人感到不适等。
本步骤中的输入数据,是指输入到预测模型中、通过模型运算可以得出相应的预测结果的各种类型的数据,例如图像数据、语音数据等。以下,本发明的实施例主要以图像识别为例,对模型预测方法进行说明,但本发明不限于此。本发明实施例提供的模型预测方法可用于任何类型的输入数据。
具体的,输入预测模型的图像数据可以分为视频数据和图文数据等。而不论是视频还是图文(图片可以是通过视频分析得到关键帧),图片对于内容分发来说都非常重要。一方面,图片高度概括了内容本身,通过理解图片可以加深对内容含义的理解;另一方面,图片展示是客户端页面的重要部分,精彩而准确的配图可以吸引更多用户的点击。
为了识别出图片内容是否色情,是否模糊,以及是否会令人感到不适等,可以用大量的带有标记的图片进行机器学习,训练出针对图片内容所属类别的预测模型,从而利用该预测模型对新的图片进行预测。
在模型预测的过程中,需要进行大量的运算,为了合理利用计算资源,提高数据吞吐量,本步骤中,将一个完整的预测模型拆分成多个子模型,每个子模型都可以对输入数据独立进行打分,只要综合各子模型的打分情况即可以得出模型的最终预测结果。
由于图像的预测是由多个子模型共同完成的,如何分配计算资源从而在保证程序运行安全的前提下尽量提高数据吞吐量,需要进行合理规划。
可选的,如果为每一个子模型开一个线程作为一个worker,建立graph(拓扑)和会话(session),从训练好的checkpoint文件读取模型的参数,然后进行预测,则在检验打分的时候,有时结果中会出现一些10的-20次方这样的接近于0的分数,甚至会有nan(not anumber,非数值)的出现。在排除了其他种种可能的问题之后,可以发现多个线程分别创建出的session相互之间是存在资源共享的,因此用多个线程来驱动各子模型的预测打分存在线程安全隐患,即tf.Session()具有线程安全隐患。
为了避免上述可能出现的安全问题,在本发明的一个实施例中,并没有为每一个子模型单独开一个线程,而是为每一个子模型单独开一个进程,每个进程中再由多个线程来具体实现。这样,由于tf.Session.run()是线程安全的,因此可以建立一个session由多个线程调用run()。虽然在多进程的情况下,worker间通信的成本提高,但由于模型预测的性能瓶颈主要在打分计算,进程间的通信情况非常少见,通信和资源的代价是可以接受的,从而在不过多消耗其它***资源的条件下,有效避免了线程间的共享变量所带来的安全隐患。
S12,对各所述子模型的预测打分的分数进行加权求和,以获得所述预测模型的预测结果。
具体的,各个子模型虽然都是预测模型的一部分,但各子模型在预测模型中具有不同的权重,各个子模型所打的分数对模型预测结果的影响也会相应不同。本步骤中,对每个子模型的预测打分的分数进行加权求和计算,从而获得预测模型最终的预测结果。
本发明的实施例提供的模型预测方法,在利用基于TensorFlow框架构建的预测模型进行预测时,能够将输入模型的数据分配到至少两个子模型中分别进行预测打分,然后再对各子模型预测打分的分数进行加权求和得到预测结果。由于在预测打分过程中,每个子模型都由单独的进程驱动且每个进程中又包括至少两个线程,可以进行并行数据处理,因此大大提高了模型预测过程中的数据吞吐量。
在步骤S11中,每个进程驱动子模型进行打分时,可以通过多个线程实现。具体来说,可以由多个线程各自处理一部分图片,进行解码、预处理、打分预测等操作。
具体而言,本发明的实施例提供的是一种模型预测方法,其运行环境可以为多种计算机体系。这些计算机体系可以具有一个CPU或多个CPU,也可以同时具有CPU和GPU。在不同的体系结构下,线程可以由不同的处理器来驱动。例如,当模型预测方法基于具有一个CPU的计算机***时,每个线程都要由该CPU来驱动;当模型预测方法基于具有CPU和GPU的计算机***时,每个线程可以由中央处理器CPU或图形处理器GPU执行。
由于CPU具有很强的通用性可以用来处理各种不同的数据类型,而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境,为了有效提高预测打分的效率,在本发明的一个实施例中,可以将输入数据的编解码、预处理等需要较强通用性处理的操作交给CPU执行,而将预处理后的比较规整的数据交给GPU进行矩阵计算及打分操作。
具体而言,在本发明的一个实施例中,步骤S11中接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分可包括:
接收所述输入数据并将所述输入数据分配给至少两个子模型,其中每个子模型通过单独一个进程驱动;
将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作;
将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分。
可选的,本实施例中,第一线程可以由中央处理器CPU执行,第二线程由图形处理器GPU执行。由于CPU对输入数据进行预处理后才能被GPU利用,为了提高数据吞吐量,使CPU和GPU在等待对方处理结果的同时仍然可以进行自己的数据处理工作,在本发明的一个实施例中,在将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作之后,在将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分之前,本发明的实施例提供的模型预测方法还可包括:
将所述第一线程预处理后的数据存入缓冲队列;
从所述缓冲队列中读取所述预处理后的数据到所述至少两个第二线程。
缓冲队列的优势可以通过如下对比说明。
可选的,如果CPU与GPU之间不设置缓冲队列,CPU与GPU之间的程序执行逻辑可如图2所示。由图2可知,CPU先对输入数据进行编解码、预处理等操作后,再由GPU对预处理后的数据进行计算,CPU和GPU之间进行的是串行的合作,各自的计算单元都没有得到充分的利用。用Nvidia Visual Profiler做评估,得到的结果也证明了这一观点,评估结果如图3所示,其中,横坐标表示时间,黑色短竖线表示GPU被预测运算占用,各行信号中没有被黑色短竖线覆盖的空白部分则表示GPU空闲,由图3可知,在没有缓冲队列的情况下,GPU几乎有一半的时间是空闲的。
为了充分利用GPU,在本发明的一个实施例中,可以在CPU与GPU之间设置缓冲队列。这种情况下,CPU与GPU之间的程序执行逻辑可如图4所示。由图4可见,CPU处理后的数据直接存入缓存队列后即可处理新的数据,无需等待GPU;同样的,GPU可以在CPU忙于处理新的数据时,从缓冲队列中读取预处理后的数据,利用预处理后的数据进行预测打分,而无需等待CPU的处理结果,CPU和GPU之间进行并行计算。此时再用Nvidia Visual Profiler进行评估,如图5所示,可以看出在各行信号几乎都被黑色短竖线均匀覆盖,GPU的利用率大大提高,不再有明显的空闲等待。
由上述分析可知,本发明的实施例提供的模型预测方法基于TensorFlow框架,并且采取了一种与TensorFlow框架适应的并发执行方式。TensorFlow提供有队列操作tf.FIFOQueue。tf.FIFOQueue与一般的先入先出队列区别不大,并且与TensorFlow的其他操作也能很好的兼容。在本发明的一个实施例中,可以通过python的threading模块实现异步线程,将GPU计算线程放到后台,通过两个队列与前台线程通信。前台线程由CPU负责对输入数据的预处理以及对GPU打分后的数据进行后处理。
具体而言,如图4所示,本实施例中,左上侧的方框中的程序流程主要涉及CPU进行的数据预处理操作,例如解码图片,图片裁剪和场景抽取特化等,然后CPU将预处理后的数据放入第一缓冲队列(enqueue代表入队操作);右侧方框中的程序流程主要涉及GUP利用预处理后的数据进行预测打分的操作,GPU可以从第一缓冲队列中读取CPU预处理后的数据(dequeue代表出队操作),进行矩阵运算,特征计算,梯度计算等,得到相应的预测打分,并将预测打分的分数放入第二缓冲队列;左下侧方框中的程序流程主要涉及CPU对GPU打分后的数据进行后处理操作,即,CPU可以从第二缓冲队列中获取GPU的返回结果,主要包括打分和打分相关的一些调试信息等,并将这些返回结果进行后处理,从而得到预测模型的预测结果。
为了进一步提高预测模型的数据吞吐量,在本发明的一个实施例中,可以按照批处理操作(batch)输入数据。由于GPU本身的架构特征支持数据并行,而通过TensorFlow的map-reduce操作可以实现cpu上数据并行,本发明的实施例提供的模型推荐方法可以对具有并行特征的batch输入进行并行处理。
可选的,在预测模型开始进行程序运行开始阶段,还可以先增加一个batch的预热(warm up),让CPU先运行一段时间将预处理后的数据填入缓冲队列中,再让CPU与GPU协同运行,从而得到cpu与GPU并发计算的效果。
下面通过具体实施例对本发明实施例提供的模型预测方法进行详细说明。
如图6所示,本实施例提供的模型预测方法可包括如下步骤:
S201,接收输入数据,将输入数据分别传递给预测模型中的多个子模型,每个子模型由一个单独的进程驱动执行;
S202,各进程接收到输入数据后,将这些输入数据交给CPU中的m个线程,每个线程对一部分输入数据分别进行编解码、预处理等操作;
S203,各CPU线程将预处理后的数据存入缓冲队列Q1,然后继续处理下一批输入数据;
S204,GPU中的n个线程分别从缓冲队列Q1中读取预处理后的数据,对其进行矩阵运算,特征计算,梯度计算等,进行预测打分操作;
S205,各GPU线程分别将预测打分数据存入缓冲队列Q2;
S206,CPU从存入缓冲队列Q2中读取预测打分数据;
S207,CPU对读取的预测打分数据进行后处理,对GPU所打的分数进行加权求和,得到预测模型的预测结果。
本发明的实施例提供的模型预测方法,采用了多进程并行驱动子模型--每个进程中设置多个线程--各线程分别由CPU或GPU并行执行的结构,构成了一个三级并行的***,大大提升了预测的吞吐量。在构建并行***时,由于采用了上述适于TensorFlow的并行结构,还有效解决了TensorFlow的线程安全、异常处理等问题。
本发明的实施例提供的模型预测方法,利用TensorFlow进行CNN(ConvolutionalNeural Network,卷积神经网络)训练后,在预测阶段,模型打分采用多线程、多进程的多层次优化,在有效提升吞吐量的同时也兼顾了资源管理、线程安全、负载均衡和计算性能等。
第二方面,本发明的实施例还提供一种模型预测装置,在利用基于TensorFlow框架构建的预测模型进行预测时,能够将输入模型的数据分配到至少两个子模型中分别进行预测打分,其中每个子模型都由单独的进程驱动,且每个进程中又包括至少两个线程,这样在预测打分的过程中,可以进行并行数据处理,因此大大提高了模型预测过程中的数据吞吐量。
如图7所示,本发明的实施例提供的模型预测装置可包括:
分配单元31,用于接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分,其中各所述子模型分别由不同的进程驱动,每个所述进程中包括至少两个线程,所述预测模型基于TensorFlow框架;
求和单元32,用于对各所述子模型的预测打分的分数进行加权求和,以获得所述预测模型的预测结果。
本发明的实施例提供的模型预测方法,在利用基于TensorFlow框架构建的预测模型进行预测时,能够将输入模型的数据分配到至少两个子模型中分别进行预测打分,然后再对各子模型预测打分的分数进行加权求和得到预测结果。由于在预测打分过程中,每个子模型都由单独的进程驱动且每个进程中又包括至少两个线程,可以进行并行数据处理,因此大大提高了模型预测过程中的数据吞吐量。
可选的,每个所述线程由中央处理器CPU或图形处理器GPU执行。
可选的,分配单元31可包括:
进程分配模块,用于接收所述输入数据并将所述输入数据分配给至少两个子模型,其中每个子模型通过单独一个进程驱动;
第一线程分配模块,用于将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作;
第二线程分配模块,用于将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分。
进一步的,分配单元31还可包括:
存入模块,用于在将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作之后,将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分之前,将所述第一线程预处理后的数据存入缓冲队列;
读取模块,用于从所述缓冲队列中读取所述预处理后的数据到所述至少两个第二线程。
可选的,第一线程可以由中央处理器CPU执行,第二线程可以由图形处理器GPU执行。
第三方面,相应的,本发明实施例提供一种电子设备,能够进行并行数据处理,因此大大提高了模型预测过程中的数据吞吐量。
如图8所示,本发明的实施例提供的一种电子设备,可以包括:壳体41、处理器42、存储器43、电路板44和电源电路45,其中,电路板44安置在壳体41围成的空间内部,处理器42和存储器43设置在电路板44上;电源电路45,用于为上述电子设备的各个电路或器件供电;存储器43用于存储可执行程序代码;处理器42通过读取存储器43中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的模型预测方法。
处理器42对上述步骤的具体执行过程以及处理器42通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、***总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种模型预测方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种模型预测方法,其特征在于,包括:
接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分,其中各所述子模型分别由不同的进程驱动,每个所述进程中包括至少两个线程,所述预测模型基于TensorFlow框架;
对各所述子模型的预测打分的分数进行加权求和,以获得所述预测模型的预测结果;
所述接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分包括:
接收所述输入数据并将所述输入数据分配给至少两个子模型,其中每个子模型通过单独一个进程驱动;
将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作;
将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分。
2.根据权利要求1所述的方法,其特征在于,每个所述线程由中央处理器CPU或图形处理器GPU执行。
3.根据权利要求1所述的方法,其特征在于,所述将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作之后,所述将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分之前,所述方法还包括:
将所述第一线程预处理后的数据存入缓冲队列;
从所述缓冲队列中读取所述预处理后的数据到所述至少两个第二线程。
4.根据权利要求1所述的方法,其特征在于,所述第一线程由中央处理器CPU执行,所述第二线程由图形处理器GPU执行。
5.一种模型预测装置,其特征在于,包括:
分配单元,用于接收输入数据并将所述输入数据分配到预测模型的至少两个子模型中分别进行预测打分,其中各所述子模型分别由不同的进程驱动,每个所述进程中包括至少两个线程,所述预测模型基于TensorFlow框架;
求和单元,用于对各所述子模型的预测打分的分数进行加权求和,以获得所述预测模型的预测结果;
所述分配单元包括:
进程分配模块,用于接收所述输入数据并将所述输入数据分配给至少两个子模型,其中每个子模型通过单独一个进程驱动;
第一线程分配模块,用于将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作;
第二线程分配模块,用于将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分。
6.根据权利要求5所述的装置,其特征在于,每个所述线程由中央处理器CPU或图形处理器GPU执行。
7.根据权利要求5所述的装置,其特征在于,所述分配单元还包括:
存入模块,用于在将每个所述进程对应的输入数据分配给至少两个第一线程分别进行预处理操作之后,将所述第一线程预处理后的数据通过至少两个第二线程分别进行预测打分之前,将所述第一线程预处理后的数据存入缓冲队列;
读取模块,用于从所述缓冲队列中读取所述预处理后的数据到所述至少两个第二线程。
8.根据权利要求5所述的装置,其特征在于,所述第一线程由中央处理器CPU执行,所述第二线程由图形处理器GPU执行。
9.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述权利要求1-4任一项所述的模型预测方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述权利要求1至4中任一项所述的模型预测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711221175.5A CN109840597B (zh) | 2017-11-28 | 2017-11-28 | 一种模型预测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711221175.5A CN109840597B (zh) | 2017-11-28 | 2017-11-28 | 一种模型预测方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109840597A CN109840597A (zh) | 2019-06-04 |
CN109840597B true CN109840597B (zh) | 2023-04-07 |
Family
ID=66881568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711221175.5A Active CN109840597B (zh) | 2017-11-28 | 2017-11-28 | 一种模型预测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109840597B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110390100B (zh) * | 2019-07-16 | 2023-10-31 | 广州小鹏汽车科技有限公司 | 处理方法、第一电子终端、第二电子终端和处理*** |
CN111274049A (zh) * | 2020-01-17 | 2020-06-12 | 成都鼎安华智慧物联网股份有限公司 | 一种基于异构并行加速的高效多路视频分析方法 |
CN111813529B (zh) * | 2020-07-20 | 2023-12-12 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000298593A (ja) * | 1999-04-14 | 2000-10-24 | Nec Corp | マルチタスクシステムの性能予測システム及び予測方法並びにその方法プログラムを記録した記録媒体 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146745B2 (en) * | 2006-06-29 | 2015-09-29 | Intel Corporation | Method and apparatus for partitioned pipelined execution of multiple execution threads |
US8719829B2 (en) * | 2009-03-09 | 2014-05-06 | International Business Machines Corporation | Synchronizing processes in a computing resource by locking a resource for a process at a predicted time slot |
US9466102B2 (en) * | 2012-09-26 | 2016-10-11 | Siemens Corporation | Multi-GPU FISTA implementation for MR reconstruction with non-uniform K-space sampling |
CN104035751B (zh) * | 2014-06-20 | 2016-10-12 | 深圳市腾讯计算机***有限公司 | 基于多图形处理器的数据并行处理方法及装置 |
US10579748B2 (en) * | 2015-03-31 | 2020-03-03 | Ca, Inc. | Capacity planning for systems with multiprocessor boards |
US10789544B2 (en) * | 2016-04-05 | 2020-09-29 | Google Llc | Batching inputs to a machine learning model |
-
2017
- 2017-11-28 CN CN201711221175.5A patent/CN109840597B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000298593A (ja) * | 1999-04-14 | 2000-10-24 | Nec Corp | マルチタスクシステムの性能予測システム及び予測方法並びにその方法プログラムを記録した記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
CN109840597A (zh) | 2019-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4379551A1 (en) | Data processing method and apparatus based on edge computing, and device and storage medium | |
CN109657793B (zh) | 模型训练方法及装置、存储介质及电子设备 | |
CN111506434B (zh) | 一种任务处理方法、装置及计算机可读存储介质 | |
CN109840597B (zh) | 一种模型预测方法、装置、电子设备及存储介质 | |
CN108012156A (zh) | 一种视频处理方法及控制平台 | |
CN111459754B (zh) | 异常任务的处理方法、装置、介质及电子设备 | |
CN112860402B (zh) | 一种深度学习推理服务的动态批处理任务调度方法及*** | |
CN115292046A (zh) | 算力分配方法、装置、存储介质及电子设备 | |
CN114915753A (zh) | 云服务器的构架、数据处理方法及存储介质 | |
CN113610699A (zh) | 一种硬件图层渲染调度方法、装置、设备及储存介质 | |
CN113867907A (zh) | 一种基于cpu资源在工程领域调度***及优化算法 | |
CN111580883B (zh) | 应用程序启动方法、装置、计算机***和介质 | |
CN111858916B (zh) | 用于聚类句子的方法和装置 | |
CN116188240B (zh) | 一种用于容器的gpu虚拟化方法及装置、电子设备 | |
CN112165572A (zh) | 图像处理方法、装置、终端及存储介质 | |
CN116661964A (zh) | 任务处理方法、装置及电子设备 | |
CN116456496A (zh) | 资源调度的方法、存储介质及电子设备 | |
CN112995532B (zh) | 视频处理方法及装置 | |
CN115599533A (zh) | 任务处理方法、装置、设备以及存储介质 | |
CN115470901A (zh) | 支持移动端异构处理器分载的混合精度训练方法及设备 | |
CN114661475A (zh) | 一种用于机器学习的分布式资源调度方法及装置 | |
CN114331198A (zh) | 工单分配方法、设备及存储介质 | |
CN113900783A (zh) | 基于有限资源的任务处理方法、装置、设备及存储介质 | |
CN113419842A (zh) | 一种基于JavaScript构建边缘计算微服务的方法、装置 | |
CN115344359A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |