并发线程数控制方法及装置与流程

allin2023-04-06  55



1.本技术实施例涉及数据处理技术领域,尤其涉及一种并发线程数控制方法及装置。


背景技术:

2.随着模型的广泛应用,模型训练框架是模型训练领域的重要基础性组件,通过模型训练框架可以大幅降低开发和使用模型的复杂度。
3.现有技术中,在模型训练过程中会涉及到复杂的计算逻辑,训练框架通过并发线程的方式管理和执行训练过程中各种操作,因此,线程池中并发线程数的设置对模型的训练过程起着至关重要的作用。一般的,在设置线程数时,可以采用默认的线程数。
4.然而,采用默认的线程数时,一般采用处理器物理核或逻辑核的数量作为默认线程数,没有考虑具体训练任务的特点,降低了线程数设置的准确性与灵活性,进而影响了模型的训练效率。


技术实现要素:

5.本技术实施例提供一种并发线程数控制方法及装置,以提高线程数设置的准确性与灵活性。
6.第一方面,本技术实施例提供一种并发线程数控制方法,包括:
7.根据任务负载信息确定目标并发线程数;
8.若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数;
9.通过所述目标并发线程数对应的线程,从任务队列中获取目标任务,并根据所述目标任务实现模型的训练。
10.可选的,所述根据任务负载信息确定目标并发线程数,包括:
11.获取所述初始并发线程数;
12.确定任务的平均等待时长,以及线程的平均空闲时长;
13.根据所述平均等待时长,以及所述平均空闲时长确定任务负载信息;
14.根据所述任务负载信息以及所述初始并发线程数确定目标并发线程数。
15.可选的,所述确定任务的平均等待时长,以及线程的平均空闲时长,包括:
16.根据所述任务队列中第一目标任务的等待时长,以及至少一第二目标任务的等待时长确定任务的平均等待时长,其中,所述第一目标任务为所述任务队列中未被处理的,且等待时间最长的任务,所述第二目标任务为所述任务队列中已经被处理的任务;
17.根据线程池中每个空闲线程的空闲时长确定线程的平均空闲时长。
18.可选的,所述根据所述平均等待时长,以及所述平均空闲时长确定任务负载信息,包括:
19.根据所述平均等待时长,以及预设的平均等待时长阈值确定任务等待时长因子;
20.根据所述平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子;
21.根据所述任务等待时长因子以及所述线程空闲时长因子确定任务负载信息。
22.可选的,所述根据所述平均等待时长,以及预设的平均等待时长阈值确定任务等待时长因子,包括:
23.若所述平均等待时长小于所述平均等待时长阈值,则确定所述任务等待时长因子为1;
24.若所述平均等待时长大于或等于所述平均等待时长阈值,则确定所述任务等待时长因子为所述平均等待时长与所述平均等待时长阈值的比值;
25.对应的,所述根据所述平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子,包括:
26.若所述平均空闲时长小于所述平均空闲时长阈值,则确定所述线程空闲时长因子为1;
27.若所述平均空闲时长大于或等于所述平均空闲时长阈值,则确定所述
28.线程空闲时长因子为所述平均空闲时长与所述平均空闲时长阈值的比值;
29.对应的,所述根据所述任务等待时长因子以及所述线程空闲时长因子确定任务负载信息,包括:
30.将所述任务等待时长因子以及所述线程空闲时长因子做乘法运算,得到任务负载信息。
31.可选的,所述根据所述任务负载信息以及所述初始并发线程数确定目标并发线程数,包括:
32.将所述初始并发线程数与所述任务负载信息做乘法运算,得到目标并发线程数。
33.可选的,所述若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数,包括:
34.若初始并发线程数与所述目标并发线程数的比值未在预设阈值范围内,则将所述线程池的并发线程数设置为所述目标并发线程数。
35.可选的,还包括:
36.若所述初始并发线程数与所述目标并发线程数的比值在预设阈值范围内,则维持所述线程池的并发线程数为所述初始并发线程数;
37.生成并显示并发线程数不变提示。
38.可选的,所述模型为深度学习模型,则在所述根据所述目标任务实现模型的训练之后,还包括:
39.通过训练完成的所述深度学习模型进行多媒体数据的处理,得到处理后的多媒体数据,其中,所述多媒体数据包括语音、视频以及图片中的至少一种;
40.将所述处理后的多媒体数据发送至终端设备进行显示。
41.第二方面,本技术实施例提供一种并发线程数控制装置,包括:
42.确定模块,用于根据任务负载信息确定目标并发线程数;
43.处理模块,用于若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数;
44.所述处理模块,还用于通过所述目标并发线程数对应的线程,从任务队列中获取
目标任务,并根据所述目标任务实现模型的训练。
45.本技术实施例提供了一种并发线程数控制方法及装置,采用上述方案后,可以根据任务负载信息确定目标并发线程数,然后在初始并发线程数与目标并发线程数的关系满足预设条件时,则将线程池的并发线程数设置为目标并发线程数,再通过该目标并发线程数对应的线程,从任务队列中获取目标任务,并根据目标任务实现模型的训练,通过根据当前负载情况来确定目标并发线程数,并在初始并发线程数与目标并发线程数的关系满足预设条件时,再调整并发线程数的方式,提高了线程数设置的准确性与灵活性,进而提高了模型训练的效率。
附图说明
46.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
47.图1为本技术实施例提供的并发线程数控制方法的应用场景示意图;
48.图2为本技术实施例提供的并发线程数控制方法的流程示意图;
49.图3为本技术另一实施例提供的并发线程数控制方法的流程示意图;
50.图4为本技术实施例提供的并发线程数控制方法的系统架构图;
51.图5为本技术实施例提供的并发线程数控制装置的结构示意图;
52.图6为本技术实施例提供的电子设备的硬件结构示意图。
具体实施方式
53.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
54.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例还能够包括除了图示或描述的那些实例以外的其他顺序实例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
55.并发线程数指处理器同时运行的线程个数,并发线程数的设置对模型的训练过程起着至关重要的作用。线程数设置过少会导致任务排队时间长、处理器使用率低等问题,线程数过多又会增加线程争抢和切换开销。且不同训练任务对并发的需求差异较大,同一个任务训练的不同步骤对并发的需求也有很大差别。若只是采用处理器物理核或者逻辑核的数量作为默认线程数,没有考虑到具体训练任务的特点,降低了线程数设置的准确性与灵活性,进而影响了模型训练的效率。
56.此外,还可以通过运维人员的经验手动设置并发线程数,然而该方式过于依赖人工经验知识,并且对于新的模型也没有太大的参考价值,同样也降低了线程数设置的准确性与灵活性。
57.基于上述技术问题,本技术通过根据当前负载情况来确定目标并发线程数,并在初始并发线程数与目标并发线程数的关系满足预设条件时,再调整并发线程数的方式,达到了既提高了线程数设置的准确性与灵活性,又提高了模型训练的效率的技术效果。
58.图1为本技术实施例提供的并发线程数控制方法的应用场景示意图,如图1所示,在该实施例中,待执行任务队列中包含多个任务,且每个任务在任务队列中按提交时间顺序排列,在线程池中包含1至n个线程,当线程空闲时,可以从待执行任务队列中依次获取任务,并执行该任务,最终实现模型(示例性的,可以为深度学习模型)的训练。其中,n表示线程池中线程的个数,且n的数值是可变的,可以根据任务负载情况进行变更。
59.此外,从待执行任务队列中获取任务时,可以按任务存储的时间进行获取,即可以先获取存储时间最久的任务,也可以先获取存储时间最短的任务。还可以按照其他自定义规则进行获取,在此不再详细进行限制。
60.下面以具体地实施例对本技术的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
61.图2为本技术实施例提供的并发线程数控制方法的流程示意图,本实施例的方法可以由服务器或终端设备执行,且服务器或终端设备中可以运行相关的训练任务。如图2所示,本实施例的方法,可以包括:
62.s201:根据任务负载信息确定目标并发线程数。
63.在本实施例中,不同训练任务对并发的需求差异较大,且同一个任务训练的不同步骤对并发的需求也有很大差别,因此,可以先确定任务负载信息,然后根据任务负载信息调节线程池的并发线程数,得到目标并发线程数。可选的,目标并发线程数可以为与当前负载情况相匹配的并发线程数,以减少并发线程数设置的较多时,浪费线程资源,或并发线程数设置的较少时,影响任务处理效率的情况。
64.其中,任务负载信息表明任务处理的快慢程度,若任务负载信息高,表明任务量大或者并发线程数设置的较少;若任务负载信息低,表明任务量小或者并发线程数设置的较高。
65.s202:若初始并发线程数与目标并发线程数的关系满足预设条件,则将线程池的并发线程数设置为目标并发线程数。
66.在本实施例中,在得到目标并发线程数之后,可以将线程池的并发线程数直接设置为目标并发线程数。
67.此外,目标并发线程数可以比线程池的初始并发线程数高,也可以比线程池的初始并发线程数低,还可以与线程池的初始并发线程数一样。
68.若目标并发线程数与线程池的初始并发线程数一样,可以不再额外修改线程池的并发线程数。
69.另外,在基于任务等待时长以及线程空闲时长确定出目标并发线程数之后,可以根据目标并发线程数与初始并发线程数之间的关系来确定是否需要对线程池的并发线程数进行更新。
70.进一步的,所述若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数,具体可以包括:
71.若初始并发线程数与所述目标并发线程数的比值未在预设阈值范围内,则将所述线程池的并发线程数设置为所述目标并发线程数。
72.可选的,所述方法还可以包括:
73.若初始并发线程数与所述目标并发线程数的比值在预设阈值范围内,则维持所述线程池的并发线程数为所述初始并发线程数。
74.生成并显示并发线程数不变提示。
75.具体的,只有当目标并发线程数跟初始并发线程数的条件满足预设条件时,才需要对线程数进行调整。其中,目标并发线程数与初始并发线程数之间的差距可以通过初始并发线程数与目标并发线程数的比值来表示。此外,在另一实施例中,若初始并发线程数与所述目标并发线程数的比值在预设阈值范围内,则维持所述线程池的并发线程数为所述初始并发线程数。
76.进一步的,可以根据表达式确定为线程池设置的新的并发线程数:
[0077][0078]
其中,old_thr_count表示初始并发线程数,ideal_thr_count表示目标并发线程数,α∈[0,1],用于控制线程数量调节的敏感性。
[0079]
综上,通过在当目标并发线程数跟初始并发线程数的关系满足预设条件时,才对线程数进行调整的方式,降低了并发线程数调整的次数,同时提高了并发线程数设置的准确性。
[0080]
此外,生成并显示并发线程数不变提示,可以通过并发线程数不变提示,可以提醒运维人员,当前并发线程数无需调整,即当前并发线程数设置的较为合理,使得运维人员可以及时了解并发线程数设置的情况,保障了任务的稳定执行。
[0081]
s203:通过目标并发线程数对应的线程,从任务队列中获取目标任务,并根据目标任务实现模型的训练。
[0082]
在本实施例中,在将线程池的并发线程数设置为目标并发线程数之后,即可以有目标并发线程数个线程在为模型训练任务提供服务。然后可以通过目标并发线程数对应的线程,从任务队列中获取目标任务,并根据目标任务最终实现模型的训练,得到可应用于不同场景的模型。采用上述方案后,可以根据任务负载信息确定目标并发线程数,然后在初始并发线程数与目标并发线程数的关系满足预设条件时,则将线程池的并发线程数设置为目标并发线程数,再通过该目标并发线程数对应的线程,从任务队列中获取目标任务,并根据目标任务实现模型的训练,通过根据当前负载情况来确定目标并发线程数,并在初始并发线程数与目标并发线程数的关系满足预设条件时,再调整并发线程数的方式,提高了线程数设置的准确性与灵活性,进而提高了模型训练的效率。
[0083]
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
[0084]
图3为本技术另一实施例提供的并发线程数控制方法的流程示意图,如图3所示,s201:根据任务负载信息确定目标并发线程数,具体可以包括:
[0085]
s301:获取初始并发线程数。
[0086]
在本实施例,在确定目标并发线程数时,可以先获取线程池的初始并发线程数,该初始并发线程数表明线程池当前并发的线程个数。可以为默认数值,也可以为预设时长之前确定的前一次的目标并发线程数。
[0087]
s302:确定任务的平均等待时长,以及线程的平均空闲时长。
[0088]
在本实施例中,并发线程数设置应该综合考虑任务等待时间和线程空间时间,如果任务等待时间过长,表明可用的空闲线程太少,此时应该适当增加并发线程数。如果线程空闲时间过长,表明线程数太多而没有足够的任务执行,此时应该适当减少并发线程数。即在执行任务时,任务排队太久或者线程空闲太久都是不合适的,理想情况下为待执行任务不用排队太久就能被线程执行,同时每个线程不用空闲太久就有新的任务到来。因此,在确定目标并发线程数时,可以先确定任务的平均等待时长以及线程的平均空闲时长。
[0089]
进一步的,确定任务的平均等待时长,以及线程的平均空闲时长,具体可以包括:
[0090]
根据所述任务队列中第一目标任务的等待时长,以及至少一第二目标任务的等待时长确定任务的平均等待时长,其中,所述第一目标任务为所述任务队列中未被处理的,且等待时间最长的任务,所述第二目标任务为所述任务队列中已经被处理的任务。
[0091]
根据线程池中每个空闲线程的空闲时长确定线程的平均空闲时长。
[0092]
具体的,在确定任务的平均等待时长时,若仅通过出队列任务的等待时长来确定平均等待时长时,若一直没有空闲的线程时,则一直没有任务可以出队列,则确定的平均等待时长为零。另外,还可能存在前期一直没有空闲的线程,任务队列中的任务已经等待了很长时间,在某一时刻,突然空闲出很多线程,任务队列中的任务均被执行了,此时,任务队列中已经没有任务了,若仅通过未被处理的任务的等待时长来确定平均等待时长时,也会出现确定的平均等待时长为零的情况。因此,可以将任务队列中未被处理的,且等待时间最长的任务作为第一目标任务。将出队列的多个任务作为第二目标任务。然后计算第一目标任务的等待时长以及每个第二目标任务的等待时长的平均值,作为任务的平均等待时长。其中,为了保证任务选择的时效性,第二目标任务可以选择时间最新的n个出队列任务,或者最新的预设时间段内的出队列任务。通过结合出队列任务的等待时长,以及未被处理的任务的等待时长来确定平均等待时长的方式,避免了极端情况下平均等待时长无法准确反应负载状况的情况,提高了平均等待时长确定的准确性。
[0093]
另外,在确定线程的平均空闲时长时,可以将每个空闲线程从空闲到接到下一个执行任务的时间间隔来计算平均值,得到线程的平均空闲时长。
[0094]
s303:根据平均等待时长,以及平均空闲时长确定任务负载信息。
[0095]
在本实施例中,在得到平均等待时长和平均空闲时长之后,即可以根据平均等待时长,以及平均空闲时长确定任务负载信息。
[0096]
进一步的,根据所述平均等待时长,以及所述平均空闲时长确定任务负载信息,具体可以包括:
[0097]
根据所述平均等待时长,以及预设的平均等待时长阈值确定任务等待时长因子。
[0098]
根据所述平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子。
[0099]
根据所述任务等待时长因子以及所述线程空闲时长因子确定任务负载信息。
[0100]
具体的,在通过平均等待时长和平均空闲时长确定任务负载信息时,可以先根据平均等待时长以及预设的平均等待时长阈值确定任务等待时长因子。其中,平均等待时长阈值可以根据实际应用场景自定义进行设置,通常为毫秒或微秒级别,该值表示期望的任务处理速度,该值越小表明任务响应时效性越好。然后可以根据平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子。其中,平均空闲时长阈值可以根据实际应用场景自定义进行设置,通常为毫秒或微秒级别,该值表示期望的工作线程空闲时间,该值越小表明线程越繁忙。
[0101]
更进一步的,根据所述平均等待时长,以及预设的平均等待时长阈值确定任务等待时长因子,具体可以包括:
[0102]
若所述平均等待时长小于所述平均等待时长阈值,则确定所述任务等待时长因子为1。
[0103]
若所述平均等待时长大于或等于所述平均等待时长阈值,则确定所述任务等待时长因子为所述平均等待时长与所述平均等待时长阈值的比值。
[0104]
其中,可以根据表达式确定任务等待时长因子:
[0105][0106]
其中,ave_t_w_t表示平均等待时长,tar_t_w_t表示平均等待时长阈值。
[0107]
对应的,所述根据所述平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子,具体可以包括:
[0108]
若所述平均空闲时长小于所述平均空闲时长阈值,则确定所述线程空闲时长因子为1。
[0109]
若所述平均空闲时长大于或等于所述平均空闲时长阈值,则确定所述线程空闲时长因子为所述平均空闲时长与所述平均空闲时长阈值的比值。
[0110]
其中,可以根据表达式确定线程空闲时长因子:
[0111][0112]
其中,ave_t_i_t表示平均空闲时长,tar_t_i_t表示平均空闲时长阈值。
[0113]
对应的,所述根据所述任务等待时长因子以及所述线程空闲时长因子确定任务负载信息,包括:
[0114]
将所述任务等待时长因子以及所述线程空闲时长因子做乘法运算,得到任务负载信息。
[0115]
其中,可以根据表达式确定任务负载信息:
[0116]
f(system_workload)=g(task_wait_time)*h(thread_idle_time)。
[0117]
s304:根据任务负载信息以及初始并发线程数确定目标并发线程数。
[0118]
在本实施例中,在确定任务负载信息之后,可以根据任务负载信息调节初始并发线程数,进而得到目标并发线程数。
[0119]
进一步的,根据所述任务负载信息以及所述初始并发线程数确定目标并发线程数,具体可以包括:
[0120]
将所述初始并发线程数与所述任务负载信息做乘法运算,得到目标并发线程数。
[0121]
其中,可以根据表达式确定目标并发线程数:
[0122]
ideal_thr_count=old_thr_count*f(system_workload)。
[0123]
其中,old_thr_count表示初始并发线程数。
[0124]
示例性的,若f(system_workload)为1,则目标并发线程数为初始并发线程数,表明当前并发线程数设置的比较合理。若f(system_workload)为2,则目标并发线程数为初始并发线程数的2倍,表明当前并发线程数设置的较少,无法满足任务的实际需求。
[0125]
综上,通过根据任务负载情况实时动态调整并发线程数,使得并发线程数一直保持在合适的数量,既提高了任务的处理效率,也减少了设备算力的浪费。
[0126]
此外,在另一实施例中,所述模型为深度学习模型,则在所述根据所述目标任务实现模型的训练之后,所述方法还可以包括:
[0127]
通过训练完成的深度学习模型进行多媒体数据的处理,得到处理后的多媒体数据,其中,所述多媒体数据包括语音、视频以及图片中的至少一种。
[0128]
将处理后的多媒体数据发送至终端设备进行显示。
[0129]
在本实施例中,模型可以为深度学习模型,在深度学习模型训练完成之后,可以通过该深度学习模型对多媒体数据进行处理。其中,多媒体数据可以包括语音、视频以及图片中的至少一种。
[0130]
示例性的,多媒体数据可以为图片,通过深度学习模型,可以为图片添加卡通形象的特效,然后可以将添加卡通形象的图片在终端设备进行显示。其中,图片可以为本地存储的图片,也可以为终端设备实时拍摄的图片。
[0131]
此外,该深度学习模型还可以应用在自然语言处理、搜索推荐等领域。
[0132]
图4为本技术实施例提供的并发线程数控制方法的系统架构图,如图4所示,在该实施例中,可以包括系统负载统计模块、并发数优化模块、线程管理模块、任务队列以及任务执行模块。
[0133]
其中,系统负载统计模块:用于实时统计每个任务的等待时长,和每个线程的空闲时长。并发数优化模块:用于确定任务的平均等待时长以及线程的平均空闲时长,然后根据任务的平均等待时长以及线程的平均空闲时长确定目标并发线程数。线程管理模块:用于依据并发数优化模块结的计算结果调整并发线程个数。任务队列:用于存放待执行的任务。任务执行模块:用于使用具体的线程依次执行任务队列中的任务。
[0134]
基于同样的思路,本说明书实施例还提供了上述方法对应的装置,图5为本技术实施例提供的并发线程数控制装置的结构示意图,如图5所示,
[0135]
本实施例提供的装置,可以包括:
[0136]
确定模块501,用于根据任务负载信息确定目标并发线程数。
[0137]
处理模块502,用于若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数。
[0138]
所述处理模块502,还用于通过所述目标并发线程数对应的线程,从任务队列中获取目标任务,并根据所述目标任务实现模型的训练。
[0139]
采用上述方案后,采用上述方案后,可以根据任务负载信息确定目标并发线程数,然后在初始并发线程数与目标并发线程数的关系满足预设条件时,则将线程池的并发线程数设置为目标并发线程数,再通过该目标并发线程数对应的线程,从任务队列中获取目标任务,并根据目标任务实现模型的训练,通过根据当前负载情况来确定目标并发线程数,并在初始并发线程数与目标并发线程数的关系满足预设条件时,再调整并发线程数的方式,提高了线程数设置的准确性与灵活性,进而提高了模型训练的效率。
[0140]
在另一实施例中,所述确定模块501,还用于:
[0141]
获取所述初始并发线程数。
[0142]
确定任务的平均等待时长,以及线程的平均空闲时长。
[0143]
在本实施例中,所述确定模块501,还用于:
[0144]
根据所述任务队列中第一目标任务的等待时长,以及至少一第二目标任务的等待时长确定任务的平均等待时长,其中,所述第一目标任务为所述任务队列中未被处理的,且等待时间最长的任务,所述第二目标任务为所述任务队列中已经被处理的任务。
[0145]
根据线程池中每个空闲线程的空闲时长确定线程的平均空闲时长。
[0146]
根据所述平均等待时长,以及所述平均空闲时长确定任务负载信息。
[0147]
在本实施例中,所述确定模块501,还用于:
[0148]
根据所述平均等待时长,以及预设的平均等待时长阈值确定任务等待时长因子。
[0149]
根据所述平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子。
[0150]
根据所述任务等待时长因子以及所述线程空闲时长因子确定任务负载信息。
[0151]
进一步的,所述确定模块501,还用于:
[0152]
若所述平均等待时长小于所述平均等待时长阈值,则确定所述任务等待时长因子为1。
[0153]
若所述平均等待时长大于或等于所述平均等待时长阈值,则确定所述任务等待时长因子为所述平均等待时长与所述平均等待时长阈值的比值。
[0154]
若所述平均空闲时长小于所述平均空闲时长阈值,则确定所述线程空闲时长因子为1。
[0155]
若所述平均空闲时长大于或等于所述平均空闲时长阈值,则确定所述线程空闲时长因子为所述平均空闲时长与所述平均空闲时长阈值的比值。
[0156]
将所述任务等待时长因子以及所述线程空闲时长因子做乘法运算,得到任务负载信息。
[0157]
根据所述任务负载信息以及所述初始并发线程数确定目标并发线程数。
[0158]
在本实施例中,所述确定模块501,还用于:
[0159]
将所述初始并发线程数与所述任务负载信息做乘法运算,得到目标并发线程数。
[0160]
在本实施例中,所述确定模块501,还用于:
[0161]
若初始并发线程数与所述目标并发线程数的比值未在预设阈值范围内,则将所述线程池的并发线程数设置为所述目标并发线程数。
[0162]
此外,所述确定模块501,还用于:
[0163]
若初始并发线程数与所述目标并发线程数的比值在预设阈值范围内,则维持所述线程池的并发线程数为所述初始并发线程数。
circuits,简称:asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
[0178]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0179]
最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。

技术特征:
1.一种并发线程数控制方法,其特征在于,包括:根据任务负载信息确定目标并发线程数;若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数;通过所述目标并发线程数对应的线程,从任务队列中获取目标任务,并根据所述目标任务实现模型的训练。2.根据权利要求1所述的方法,其特征在于,所述根据任务负载信息确定目标并发线程数,包括:获取所述初始并发线程数;确定任务的平均等待时长,以及线程的平均空闲时长;根据所述平均等待时长,以及所述平均空闲时长确定任务负载信息;根据所述任务负载信息以及所述初始并发线程数确定目标并发线程数。3.根据权利要求2所述的方法,其特征在于,所述确定任务的平均等待时长,以及线程的平均空闲时长,包括:根据所述任务队列中第一目标任务的等待时长,以及至少一第二目标任务的等待时长确定任务的平均等待时长,其中,所述第一目标任务为所述任务队列中未被处理的,且等待时间最长的任务,所述第二目标任务为所述任务队列中已经被处理的任务;根据线程池中每个空闲线程的空闲时长确定线程的平均空闲时长。4.根据权利要求2所述的方法,其特征在于,所述根据所述平均等待时长,以及所述平均空闲时长确定任务负载信息,包括:根据所述平均等待时长,以及预设的平均等待时长阈值确定任务等待时长因子;根据所述平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子;根据所述任务等待时长因子以及所述线程空闲时长因子确定任务负载信息。5.根据权利要求4所述的方法,其特征在于,所述根据所述平均等待时长,以及预设的平均等待时长阈值确定任务等待时长因子,包括:若所述平均等待时长小于所述平均等待时长阈值,则确定所述任务等待时长因子为1;若所述平均等待时长大于或等于所述平均等待时长阈值,则确定所述任务等待时长因子为所述平均等待时长与所述平均等待时长阈值的比值;对应的,所述根据所述平均空闲时长,以及预设的平均空闲时长阈值确定线程空闲时长因子,包括:若所述平均空闲时长小于所述平均空闲时长阈值,则确定所述线程空闲时长因子为1;若所述平均空闲时长大于或等于所述平均空闲时长阈值,则确定所述线程空闲时长因子为所述平均空闲时长与所述平均空闲时长阈值的比值;对应的,所述根据所述任务等待时长因子以及所述线程空闲时长因子确定任务负载信息,包括:将所述任务等待时长因子以及所述线程空闲时长因子做乘法运算,得到任务负载信息。6.根据权利要求2所述的方法,其特征在于,所述根据所述任务负载信息以及所述初始并发线程数确定目标并发线程数,包括:
将所述初始并发线程数与所述任务负载信息做乘法运算,得到目标并发线程数。7.根据权利要求1-6任一项所述的方法,其特征在于,所述若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数,包括:若初始并发线程数与所述目标并发线程数的比值未在预设阈值范围内,则将所述线程池的并发线程数设置为所述目标并发线程数。8.根据权利要求7所述的方法,其特征在于,还包括:若所述初始并发线程数与所述目标并发线程数的比值在预设阈值范围内,则维持所述线程池的并发线程数为所述初始并发线程数;生成并显示并发线程数不变提示。9.根据权利要求1-6任一项所述的方法,其特征在于,所述模型为深度学习模型,则在所述根据所述目标任务实现模型的训练之后,还包括:通过训练完成的所述深度学习模型进行多媒体数据的处理,得到处理后的多媒体数据,其中,所述多媒体数据包括语音、视频以及图片中的至少一种;将所述处理后的多媒体数据发送至终端设备进行显示。10.一种并发线程数控制装置,其特征在于,包括:确定模块,用于根据任务负载信息确定目标并发线程数;处理模块,用于若初始并发线程数与所述目标并发线程数的关系满足预设条件,则将所述线程池的并发线程数设置为所述目标并发线程数;所述处理模块,还用于通过所述目标并发线程数对应的线程,从任务队列中获取目标任务,并根据所述目标任务实现模型的训练。

技术总结
本申请实施例提供了一种并发线程数控制方法及装置,所述方法包括:根据任务负载信息确定目标并发线程数,若初始并发线程数与目标并发线程数的关系满足预设条件,则将线程池的并发线程数设置为目标并发线程数,通过目标并发线程数对应的线程,从任务队列中获取目标任务,并根据目标任务实现模型的训练。本申请通过根据当前负载情况来确定目标并发线程数的方式,提高了线程数设置的准确性与灵活性,进而提高了模型训练的效率。而提高了模型训练的效率。而提高了模型训练的效率。


技术研发人员:李豪 董建波
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2022.03.18
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-9339.html

最新回复(0)