CN117687495A - 一种数据获取方法、训练方法及电子设备 - Google Patents
一种数据获取方法、训练方法及电子设备 Download PDFInfo
- Publication number
- CN117687495A CN117687495A CN202410157737.8A CN202410157737A CN117687495A CN 117687495 A CN117687495 A CN 117687495A CN 202410157737 A CN202410157737 A CN 202410157737A CN 117687495 A CN117687495 A CN 117687495A
- Authority
- CN
- China
- Prior art keywords
- frequency
- frame
- cpu
- application
- state
- 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
- 238000012549 training Methods 0.000 title claims abstract description 235
- 238000000034 method Methods 0.000 title claims abstract description 93
- 230000002787 reinforcement Effects 0.000 claims abstract description 83
- 238000012545 processing Methods 0.000 claims abstract description 23
- 238000013507 mapping Methods 0.000 claims description 51
- 230000009471 action Effects 0.000 claims description 50
- 230000008569 process Effects 0.000 claims description 32
- 230000006870 function Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 13
- 230000001105 regulatory effect Effects 0.000 claims description 2
- 238000012937 correction Methods 0.000 description 167
- 230000000875 corresponding effect Effects 0.000 description 102
- 238000013461 design Methods 0.000 description 19
- 230000002159 abnormal effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000008859 change Effects 0.000 description 9
- 238000009877 rendering Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 6
- 230000007423 decrease Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
Classifications
-
- 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
- Mobile Radio Communication Systems (AREA)
Abstract
一种数据获取方法、训练方法及电子设备,涉及互联网技术领域。第一电子设备在显示第一应用的第K帧图像时采集第一状态信息,确定与第一状态信息匹配的CPU的第一频率。根据第一应用的目标帧率和应用帧率调整第一频率得到第二频率,将CPU的频率调节到第二频率,采集显示第一应用的第K+1帧图像时的第二状态信息,存储第二频率和第二状态信息。第一电子设备或第二电子设备获取上述多组状态信息和对应的CPU的频率,并作为训练输入训练预设强化学习网络,得到频率调节模型。从而采集多帧连续的应用帧率达到目标帧率的状态信息和对应的频率作为训练样本,提高预设强化学习网络的训练精度,从而提高频率调节模型输出的CPU的频率的合理性。
Description
技术领域
本申请实施例涉及互联网技术领域,尤其涉及一种数据获取方法、训练方法及电子设备。
背景技术
电子设备启动应用程序(例如,大型交互游戏、视频应用等)时,由于上述应用程序的帧率需求高,导致电子设备的负载比较重,从而使得电子设备的功耗变高,可能会导致应用程度的画面出现卡顿等问题。
发明内容
本申请提供一种数据获取方法、训练方法及电子设备,可以在启动应用时,采集多帧的状态信息和对应的频率,作为多组训练样本。根据训练样本训练预设强化学习网络,得到频率调节模型,从而提高频率调节模型输出的CPU的频率的合理性,以便于基于频率调节模型来调节CPU的频率。
第一方面,本申请提供了一种数据获取方法,应用于第一电子设备,第一电子设备包括中央处理器CPU,第一电子设备中安装有第一应用。第一应用是需要频繁刷新图像的应用,如游戏应用、视频播放应用等。第一电子设备启动第一应用,并显示第一应用的第K帧图像时,采集在显示期间的第一状态信息(包括以下至少一项:第一电子设备的CPU的第一复杂、第一应用的应用线程的第二负载、第一应用的第一帧率和第K帧图像的第一帧长),然后确定出于第一状态信息匹配的CPU的第一频率。根据第一应用的目标帧率和第一应用的帧率来调整第一频率,从而得到第二频率,将第一电子设备的CPU的频率调节到第二频率后,第一电子设备显示第一应用的第K+1帧图像,并采集显示期间的第二状态信息,将第二频率和第二状态信息存储。
综上所述,第一电子设备在启动第一应用后,可以首先确定与第一应用的第K帧状态信息相匹配的第一频率,然后再基于第一应用的实际帧率(也称应用帧率)和目标帧率对第一频率进行调整,得到第二频率,从而使第一应用在k+1帧以第二频率运行时,实际帧率尽量达到目标帧率,依此采集到的多组训练样本中,第一应用每帧均以满帧状态运行(实际帧率达到目标帧率)。基于此,采用上述多组训练样本训练得到的调节模型,可以确定出更合理的、使第一应用的实际帧率与目标帧率接近的CPU的频率。
在第一方面的一种可能设计方式中,映射模型为具有根据状态信息映射得到CPU的频率的功能的模型。基于此,第一电子设备可以将第一状态信息作为输入,运行映射模型,输出第一频率。
由于映射模型具有根据状态信息映射得到CPU的频率的功能,第一电子设备基于映射模型输出的第一频率,即为与第一状态信息具有映射关系的CPU的频率,也就是说,第一频率为映射模型在平衡应用程序的性能和CPU的功耗的基础上,得到的CPU的频率。
在第一方面的一种可能设计方式中,第一电子设备可以首先获取第一应用的目标帧率,然后基于第一应用的目标帧率和第一应用在第k帧的实际帧率(第一帧率)确定丢帧参数,从而基于丢帧参数调节第一频率,可以使得确定出的第二频率,是能够调节第一应用的实际帧率,使得第一应用在k+1帧的实际帧率尽量达到目标帧率的状态的频率,也就是说满足第一应用以目标帧率的运行需求。
基于此,电子设备在获取数据的过程中,基于应用帧率和目标帧率来修正映射模型输出的第一频率,得到第二频率,从而基于第二频率不断调节电子设备的CPU的频率,使应用帧率尽量达到目标帧率,从而可以采集到应用帧率达到满帧状态的多组训练样本。以便于电子设备基于上述训练样本训练离线强化学习网络模型后,得到的调节模型能够平衡应用程序的高帧率需求和CPU的功耗。
在第一方面的一种可能设计方式中,第一电子设备中存储有丢帧范围和频率调节范围的映射关系表。对应的,第一电子设备可以从映射关系表中查询丢帧参数所属的目标丢帧范围,然后确定出与目标丢帧范围对应的目标频率调节范围,并从目标频率调节范围中选择一个目标调节值,按照目标调节值调节第一频率,得到第二频率。其中,频率调节范围可以是一个确切的修正幅度,第一电子设备直接将上述修正幅度作为目标调节值。目标频率调节范围也可以是包括上限值和下限值的频率调节范围(包括频率修正幅度范围,和频率修正值范围)。第一电子设备可以在频率调节范围内随机选取一个频率值作为目标调节值。
基于此,电子设备在预先存储丢帧范围和频率调节范围的映射关系表的基础上,先确定丢帧数所属的目标丢帧范围,然后再对应的频率调节范围中选取目标调节值来调节第一频率,实现根据不同的丢帧程度,确定不同的频率调节范围,可以较精确的确定出一个合理的目标修正频率。
在第一方面的一种可能设计方式中,第一电子设备中存储的映射关系表包括第一丢帧范围和与第一丢帧范围对应的第一频率调节范围。
其中,在第一丢帧范围指示的丢帧数量小于或等于0时,第一频率调节范围的第一下限值指示将频率减小X1,第一频率调节范围的第一上限值指示将频率增加X2,X1和X2为大于或等于0的自然数,且X1>X2。
基于此,第一电子设备可以在第一应用的应用帧率大于或等于目标帧率、表明CPU的频率较高时,在下限值减小幅度较大(在第一频率的基础上减小X1),且上限值适当增加(在第一频率的基础上增加X2)的频率范围内,尽量选取一个较低的CPU的频率,实现在保持第一应用的应用帧率达到目标帧率的同时,降低CPU的功耗。
在第一方面的一种可能设计方式中,第一电子设备中存储的映射关系表包括第二丢帧范围和与第二丢帧范围对应的第二频率调节范围。
在第二丢帧范围指示的丢帧数量大于0时,第二频率调节范围的第二下限值指示将频率减小X3,第二频率调节范围的第二上限值指示将频率增加X4,X3和X4为大于或等于0的自然数,且X3<X4。
基于此,第一电子设备可以在第一应用的应用帧率小于目标帧率、表明则表明CPU的频率不能满足第一应用的高帧率需求时,在上限值增加幅度较大(在第一频率的基础上增加X4),且下限值适当减小(在第一频率的基础上减小X3)的频率范围内,尽量选择一个使应用帧率提高(达到目标帧率)、且较低的CPU的频率。
在第一方面的一种可能设计方式中, X1>X3,X2<X4。基于此,第一电子设备可以在丢帧数量小于或等于0时,在对应的频率调节范围内,更大概率的选取到一个低于第一频率的目标调节值。第一电子设备可以在丢帧数量大于0时,在对应的频率调节范围内,更大概率的选取到一个高于第一频率的目标调节值。依此使得,第一电子设备基于丢帧数动态的调节CPU的频率,使得调节后第一电子设备的第一应用的实际帧率尽量达到目标帧率。
在第一方面的一种可能设计方式中,第一电子设备针对丢帧数量大于0时,可以将丢帧范围分成多个丢帧范围,针对每个丢帧范围确定对应的频率调节范围。在丢帧数越多时,丢帧程度越高,对应的频率调节范围中,上限值增加的频率幅度越大,下限值减小的幅度越小。
在一些具体的设计方式中,第二丢帧范围包括第三丢帧范围和第四丢帧范围,第二频率调节范围包括第三频率调节范围和第四频率调节范围,第三频率调节范围与第三丢帧范围对应,第四频率调节范围与第四丢帧范围对应。
其中,第三丢帧范围对应的丢帧程度高于第四丢帧范围对应的丢帧程度,第三频率调节范围的下限值指示减小的频率幅度小于第四频率调节范围的下限值指示减小的频率幅度,第三频率调节范围的上限值指示增加的频率幅度大于第四频率调节范围的上限值指示增加的频率幅度。
基于此,第一电子设备根据不同的丢帧程度,确定出不同的频率调节范围,且在丢帧程度越高时,频率调节范围中包括的频率值越高,能够较快速的确定出一个合理的目标调节值,从而基于合理的目标调节值调节CPU的频率,将第一应用的应用帧率快速、精确的调整到目标帧率。
在第一方面的一种可能设计方式中,第一电子设备可以在如果满足第一条件时,确定与所述第一状态信息相匹配的所述CPU的所述第一频率。其中,第一条件包括达到第一时间点,与状态信息对应的帧的数量达到第一数量中的至少一项。
基于此,第一电子设备仅在达到第一时间点和/或采集到第一数量帧的状态信息时,才基于映射模型确定与第一状态信息相匹配的CPU的第一频率,可以周期性的采集和/或定量的执行频率调节操作(基于映射模型确定与第一状态信息相匹配的CPU的第一频率,然后根据应用帧率和目标帧率调节第一频率,得到第二频率),从而实现周期性的采集经过频率调节操作的多组训练样本(每组训练样本包括每帧的状态和与每帧状态对应的CPU的频率);和/或采集到定量的经过频率调节操作的训练样本。
在第一方面的一种可能设计方式中,第一电子设备可以在未达到第一时间点和/或采集到状态信息的帧的数量小于第一数量时,从第一电子设备支持的所有CPU的频率(也称CPU的频率全集)中选择第三频率,并将CPU的频率调节到第三频率。然后,第一电子设备在显示第一应用的第k+1帧图像时的第三状态信息,将第三频率和第三状态信息作为训练样本存储。
基于此,第一电子设备可以周期性的多组采集未经过频率调节操作(从CPU的频率全集中选择第三频率,将CPU的频率调节到第三频率)的训练样本、或者定量的采集多组未经过频率调节操作的训练样本,提高训练样本中包括的CPU频率的种类,进而增加训练样本的丰富性,提高基于上述训练样本训练离线强化学习网络模型的训练效果。
第二方面,本申请提供了一种训练方法,应用于第一电子设备或者第二电子设备,其中,第二电子设备为除第一电子设备之外的另一部署离线强化学习网络模型的设备。
第一电子设备或者第二电子设备获取采用上述第一方面的数据获取方法获得的多组训练样本,每组训练样本包括每帧的状态信息和对应的CPU的频率,并将上述多组训练样本作为训练输入,训练预设强化学习网络(如离线强化学习网络模型),得到频率调节模型。
基于此,第一电子设备或者第二电子设备可以在离线状态下实现预设强化学习网络的训练过程,不会在应用程序运行过程中占用过多的运算能力,减小训练过程带来的设备的功耗,提高应用帧率。并且,预设强化学习网络可以基于包含多个连续帧的状态和对应频率的训练样本,来训练预设强化学习网络,实现以帧为单位的离线训练,提高了频率调节模型输出的CPU的频率合理性。
在第二方面的一种可能设计方式中,如果某组训练样本中状态信息的帧长达到第一阈值时,则丢弃该组训练样本(包括上述帧长达到第一阈值的状态信息及与该状态信息对应的频率)。
基于此,可以通过帧长筛选掉异常帧的状态信息及对应的频率,基于正常帧(具体为帧长小于第一阈值)的状态信息及对应的频率,提高训练输入数据的质量,从而提高预设强化学习网络的训练精度。
在第二方面的一种可能设计方式中,如果某组训练样本中状态信息的帧率与目标帧率的差值大于或等于第二阈值,则丢弃该组训练样本(包括上述帧长达到第一阈值的状态信息及与该状态信息对应的频率)。
基于此,可以通过帧率筛选掉异常帧的状态信息及对应的频率,基于正常帧(具体为帧长小于第一阈值)的状态信息及对应的频率,提高训练输入数据的质量,从而提高预设强化学习网络的训练精度。
在第二方面的一种可能设计方式中,在采用所述多组训练样本作为训练输入,训练预设强化学习网络,得到频率调节模型之后,第一电子设备或者第二电子设备还可以将多组训练样本清零。
基于此,在每次训练操作完成后,及时清理掉已用于训练的训练样本,避免针对相同训练样本执行无用的重复训练操作,提高预设强化学习网络的训练效率。
在第二方面的一种可能设计方式中,采用上述第一方面的数据获取方法获得的多组训练样本中,每组训练样本包括以下至少一项:连续状态的状态值、离散状态的状态值;例如,每组训练样本包括连续状态的CPU的负载、连续状态的应用线程的负载以及离散状态的应用帧率。
基于此,可以针对每组训练样本,将训练样本中的每项连续状态的状态值均进行离散化处理,得到每项连续状态的状态值的多个取值区间,以及一一对应的多个离散状态值。针对每组训练样本,将训练样本中所有离散状态值进行排列组合,得到多种离散组合;其中,离散状态值包括以下至少一项:与每项连续状态的状态值对应的多个离散状态值,以及每项离散状态的状态值。然后,以每种离散组合为状态,以与每种离散组合对应的CPU的频率为动作,根据每连续两组训练样本确定奖励,训练预设强化学习网络,得到频率调节模型。
也就是说,可以通过将连续状态的状态值进行离散化处理,从而确定出离散状态下的状态值,然后基于排列组合,确定出每组训练样本对应的多种离散组合,便于预设强化学习网络基于离散状态下的状态值进行训练,得到对应的频率调节模型。
第三方面,本申请还提供了一种电子设备,该电子设备可以是上述第一设备或者第二设备,电子设备包括:存储器和一个或多个处理器,存储器与处理器耦合;其中,存储器中存储有计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被处理器执行时,使得电子设备执行上述第一方面、第二方面及其任一种可能的设计方式中的方法。
第四方面,本申请还提供了一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第一方面、第二方面及其任一种可能的设计方式中的方法。
第五方面,本申请提供一种计算机程序产品,包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行如第一方面、第二方面及其任一种可能的设计方式所述的方法。
可以理解地,上述提供的电子设备,计算机存储介质,计算机程序产品所能达到的有益效果,可参考第一方面、第二方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种强化学习网络的示意图;
图2为本申请实施例提供的一种在线强化学习的流程图;
图3为本申请实施例提供的一种采集样本数据过程的示意图;
图4为本申请实施例提供的一种训练过程的示意图;
图5为本申请实施例提供的一种网络结构的组成示意图;
图6为本申请实施例提供的一种训练过程的交互示意图之一;
图7为本申请实施例提供的一种运行状态图;
图8为本申请实施例提供的一种频点图;
图9为本申请实施例提供的一种手机的软件架构图;
图10为本申请实施例提供的一种训练过程的交互示意图之二。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个或两个以上(包含两个)。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。术语“连接”包括直接连接和间接连接,除非另外说明。“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
在本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例提供的方法,可以应用于需要调节CPU的频率的场景中,如游戏场景、看剧场景、视频通话场景等。应理解,CPU的频率越高,则CPU的运算处理能力就越强,电子设备的性能就越高。CPU的频率越低,CPU的运算处理能力有限,电子设备的性能就越受限,从而减少设备的功耗,避免设备的温度过高。与此同时,由于游戏等应用程序的帧率需求高,电子设备启动上述应用程序时,所需的CPU的运算能力高。因此,电子设备在启动如游戏等高帧率需求的应用时,可以通过调节CPU的频率,以调节CPU的运算能力,提高CPU的性能。
以应用程序为游戏应用为例,电子设备可以通过调高CPU的频率,满足游戏的高帧率需求;以及,电子设备可以通过调低CPU的频率,降低功耗,避免电子设备的温度过高。即,在启动游戏应用时,电子设备可以通过调节CPU的频率,来平衡游戏帧率和电子设备的功耗。
在一些实施例中,面对上述调节CPU的场景,由设电子备的调度器,如能源感知调度器(Energy Aware Scheduling,EAS)、完全公平调度器 ( Completely Fair Scheduler,CFS) 、功率调度器(power governor)等调度器,基于历史窗口内测量得到的CPU的负载(utilization),选取对应的CPU的频率。其中,随着负载的升高,则选择更高的频率,以满足算力的要求。
本实施例中,选择频率的依据是CPU的负载,而CPU的负载则是反映整个设备的资源利用情况,依据的粒度很粗。并且,本实施例中,选择频率的目标仅仅可以满足运算处理能力的要求,让任务尽快完成,但是无法实现运算处理能力与功耗的平衡。
基于此,在一些实施例中,电子设备通过训练在线强化学习网络模型(Reinforcement Learning,RL),得到调节模型,使用调节模型调节CPU的频率。
下面对通过训练在线强化学习,得到调节模型的过程进行说明:
强化学习是指一种试错学习方式,智能体在与环境的交互过程中通过强化学习以获得最大化的奖励。在本实施例中,智能体可以是用于执行强化学习的装置,如个人计算机(personal computer,PC)。环境可以是需要调节CPU的频率的电子设备,如手机、平板电脑。
强化学习一般包括三个要素,状态(states)、行为(actions)和奖励(rewards)。其中,状态可以包括智能体的状态和环境的状态。由于强化学习一般是从智能体学习来改变环境状态的角度出发,因此,强化学习所包含的状态要素可以指智能体感知到的、环境的状态。动作是指智能体的行为,智能体的行为可以改变环境的状态。奖励是指通过智能体通过强化学习,要使环境的状态达到的目标,也就是说,奖励是智能体可以根据智能体给出动作后环境状态的反馈,可以用来衡量智能体的行为的好坏。智能体可以根据奖励调节策略(也可以称为状态和动作的映射关系),决策出与动作后环境的状态对应地下一动作,从而在最大程度上使环境的状态达到目标。
示例性的,参见图1,在t时刻,环境的状态为st,智能体根据环境的状态决策出动作at,在t+1时刻,智能体对环境执行动作at,使得环境的状态从st变为st+1,环境向智能体反馈状态变化,智能体根据环境反馈的状态变化确定出奖励为Rt+1。基于此,智能体可以根据奖励Rt+1更新策略。然后,智能体需要根据更新后的策略,确定出与状态st+1对应的动作at+1,并在t+2时刻对环境执行at+1…以此类推。
下面对在线强化学习网络进行具体说明:
在在线强化学习网路中,状态可以包括以下至少两项:CPU的负载、应用线程的负载以及应用程序的帧率(以下简称应用帧率)。其中,应用线程的负载可以包括以下一种或多种:应用关键线程的负载(如逻辑线程的负载、渲染线程的负载)、应用中所有线程的总负载等。以游戏应用为例,状态可以包括:CPU的负载、游戏渲染线程的负载以及游戏应用的帧率。其中,在游戏应用中,将游戏线程的负载的衡量标准统一为在特定的核以特定频率运行时一帧的帧长内,一个或多个游戏线程运行所占的时长。例如,在算力最大的核以最高频率运行时一帧的帧长内,一个或多个游戏线程运行所占的时长。
动作是指下一时刻的CPU的频率。CPU可以支持多种频率,例如,1GHz,1.2GHz,2GHz等。智能体可以根据状态决策出动作,根据动作调节下一时刻环境中CPU的频率,以改变环境的状态,使得环境反馈正向奖励的概率增大。
强化学习的目标是通过调节CPU的频率在保证应用程序的性能的同时,降低CPU的功耗。对应的,奖励是可以用于计算动作前后,应用程序的性能变化和CPU的功耗变化的函数。也就是说,在环境执行动作后,环境向智能体反馈的奖励信息中包括:动作后的应用程序的性能参数和CPU的功耗参数等。然后,智能体可以根据应用程序的性能参数变化和CPU的功耗参数变化来更新策略,以确定下一时刻环境中CPU的频率。
以智能体为PC、环境为手机、以应用程序为游戏应用为例,在线强化学习的流程图如图2所示:
首先,在PC中搭建在线强化学习网络模型。其中,在线强化学习网络模型可以为深度Q学习Q-learning网络、时序差分在线控制(State-Action-Reward-State-Action,SARSA)网络、深度强化学习(Deep Q Network,DQN)网络等,本申请实施例对此不作具体限定。
为了保证在线强化学习的训练环境,手机中需要搭建安卓调试桥(Android DebugBridge,adeb)环境。同时,建立手机端与PC端之间的通信关系。这样,在训练过程中,手机可以实时与PC进行交互,不断优化PC中的策略,得到调节模型。
搭建好训练环境后,手机在运行游戏应用时,采集每帧的状态。PC从手机中获取状态,PC将状态作为训练样本,运行在线强化学习网络模型(如DQN网络)。在线强化学习网络模型基于策略输出动作(CPU的频率),PC将动作传输给手机。手机根据动作调节手机中CPU的频率。然后,PC继续获取动作后手机的状态,并根据动作前后手机的状态(如游戏帧率)计算得到对应的奖励,PC根据奖励调整策略,并决策出下一动作……通过手机和PC间的在线交互,迭代训练在线强化学习网络模型(如DQN网络),直至PC根据损失函数评估在线强化学习网络模型收敛时,则结束训练,得到调节模型。
采用在线训练的实施例,一方面针对应用程序(如上述游戏应用)来训练得到调节模型,并用于在该应用程序运行时,确定CPU的频率。这样,以应用程序为粒度,使得调节得到的CPU的频率与应用程序的需求更匹配。另一方面,在线强化学习过程是基于奖励信息中动作后的应用程序的性能参数和CPU的功耗参数等更新策略,依此确定出的下一时刻环境中CPU的频率是平衡了应用程序的性能和CPU的功耗的结果,而不仅仅是考虑到CPU的功耗。这样,使用调节模型确定的CPU的频率合理性更强。
但是,训练在线强化学习网络模型的过程中,手机和PC之间的交互会受到网络的影响,造成一定的时延,手机可能无法实时将采集到的状态逐帧传输到PC,PC可能无法将与每个状态对应的CPU的频率及时传输到手机。这样,可能会导致出现如下问题:PC输出的动作与上述动作作用的帧不匹配,基于此,PC计算得到的奖励不准确。或者,PC无法实时确定奖励、调整在线强化学习网络模型的策略,导致训练过程效率较低,均影响在线强化学习网络训练结果的精度。
示例性的,手机采集到第t帧的状态,PC将第t帧的状态输入在线强化学习网络模型中,在线强化学习网络模型输出与第t帧的状态对应的CPU的频率,即作用于第t+1帧的CPU的频率,如记为ft+1,并传输给手机,手机需要在第t+1帧将CPU的频率调整为ft+1。然而,受到网络状态的影响,手机接收到上述动作时已到达第t+3帧,手机未能将第t+1帧CPU的频率调整为ft+1。也就是说,手机将第t+3帧CPU的频率调整为ft+1时,手机接收到的动作(即作用于第t+1帧的CPU的频率)与该动作作用的帧(第t+3帧)不匹配。导致PC基于第t+2帧的状态、第t+3帧的状态计算得到的奖励不准确。进一步的,PC根据上述不准确的奖励调整的策略精度不高,导致训练精度不高。或者,PC在将ft+1传输给手机之后,需要接收手机的第t+1帧的状态,从而基于第t帧的状态和第t+1帧的状态计算奖励,然而受到网络的影响,PC未及时接收到手机传输第t+1帧的状态,此时PC无法及时计算得到准确的奖励,也就无法及时调整在线强化学习网络模型的策略,导致训练过程效率较低。基于此,调节模型输出的CPU的频率合理性也较差。
并且,手机实现在线训练的过程中,需要占用较大的运算能力,导致手机的功耗变高,影响应用帧率。
因此,本申请实施例提出一种训练离线强化网络学习模型(offline RL),得到调节模型的方法。如图3所示,电子设备在运行目标应用程序(也称第一应用,如游戏应用)时,采集每帧的状态,确定与每帧的状态对应的CPU的频率,根据每帧的状态和CPU的频率,构建训练样本集。也就是说,训练样本集包括多组训练样本,其中,每一帧的状态和CPU的频率即为一组训练样本。基于此,训练样本集包括多个连续帧的状态及与每帧状态对应的CPU的频率。
然后,离线训练模块根据训练样本集训练离线强化网络学习模型(offline RL),得到调节模型(也称频率调节模型),以便于电子设备在需要时使用调节模型调节CPU的频率。其中,离线训练模块的功能可以通过上述构建训练样本集的电子设备实现,也可以不通过上述构建训练样本集的电子设备实现。
采用上述方法,电子设备可以在离线状态下实现强化学习网络模型的训练过程,不会在应用程序运行过程中占用过多的运算能力,减小训练过程带来的设备的功耗,提高应用帧率。并且,电子设备可以基于包含多个连续帧的状态和对应频率的训练样本集,来训练强化学习网络模型,实现以帧为单位的离线训练,提高了调节模型输出的CPU的频率合理性。
进一步的,如图3所示,电子设备在采集到每帧的状态(也称状态信息,包括CPU的负载、应用线程的负载、应用帧率)后,可以先使用映射模型,确定出与状态对应的CPU的初始修正频率(在采集到第k帧的状态时,与第k帧的状态对应的CPU的初始修正频率可以称为第一频率)。映射模型可以指未经过训练的网络模型,也可以指已经过训练的网络模型。映射模型可以包括在线强化学习网络(如DQN网络),也可以包括离线强化学习网络(如BCQ网络)。映射模型输出的与状态对应的CPU的初始修正频率,已经是映射模型在平衡应用程序的性能和CPU的功耗。在此基础上,电子设备根据应用帧率和目标帧率确定出丢帧数,基于丢帧数动态修正上述CPU的初始修正频率,得到CPU的目标修正频率(在采集第k帧的状态时,修正上述CPU的初始修正频率,得到的CPU的目标修正频率可以称为第二频率)。其中,目标帧率可以指预先设置的每秒钟图像更新的次数。例如,目标帧率为100fps,120fps。应用帧率是每秒钟刷新的图像的帧数。例如,应用帧率为60帧,则表示应用画面每秒刷新60帧。电子设备将CPU的频率调整为上述目标修正频率后,电子设备中应用程序在下一针帧率(如k+1帧)也会产生变化,使得应用帧率可以尽量达到目标帧率(也即使应用帧率尽量处于满帧状态,如第k+1帧的第二状态信息中的第二帧率尽量达到目标帧率)。电子设备采集多组应用帧率处于满帧状态下的训练样本,构建训练样本集。
应理解,映射模型输出的与状态对应的CPU的初始修正频率,已经是映射模型在平衡应用程序的性能和CPU的功耗,得到的CPU的频率。在这基础上,根据丢帧数进一步调整上述初始修正频率,可以实现在平衡应用程序的性能和CPU的功耗的同时,使应用帧率尽量达到目标帧率。
一般情况下,帧数越高时,应用程序画面的流畅性就越高。在应用帧率处于满帧状态(应用帧率达到目标帧率)下运行时,应用程序可以显示更流畅、逼真的画面。在采集训练样本的过程中,基于应用帧率和明白帧率修正映射模型输出的CPU的初始修正频率,依此不断调节CPU的频率,以使应用帧率尽量达到目标帧率,从而采集到应用帧率达到满帧状态的多组训练样本,来构建训练样本集。使得设备基于训练样本集训练离线强化学习网络模型后,得到的调节模型能够平衡应用程序的高帧率需求和CPU的功耗。
以应用程序为游戏应用为例,电子设备中CPU的频率较低时,游戏应用的帧率低,游戏应用的画面刷新次数少,可能导致游戏画面不连贯。此时适当的调高CPU的频率,以尽可能低的CPU的频率,提高游戏应用在下一帧的帧率,得到更流畅、更逼真的动画。或者,电子设备中CPU的频率较高时,游戏应用的帧率较高,导致CPU的功耗过高,可能会出现设备温度升高、游戏画面卡顿的现象。此时,通过调低CPU的频率,在尽量使游戏应用的帧率达到目标帧率的同时,降低CPU的功耗,避免设备温度升高的同时得到流畅、逼真的动画。
具体地,上述采集训练样本的过程可以由运行目标应用程序的设备(可以记为第一电子设备,如手机、平板电脑等)执行。
训练过程可以由部署离线强化学习网络模型的设备执行,具体可以分为以下两种情况:情况1、第一电子设备中部署有离线强化学习网络模型。对应的,上述第一电子设备在采集到训练样本集后,直接基于训练样本集训练离线强化学习网络模型,得到调节模型。情况2、除第一电子设备之外的另一部署离线强化学习网络模型(可以即为第二电子设备,如个人计算机(personal computer,PC)、服务器等)的设备执行。也就是说第一电子设备,在采集到训练样本集后,将训练样本集传输给第二电子设备。第二电子设备(具体可以是第二电子设备的离线训练模块)基于训练样本集,训练离线强化学习网络模型,得到调节模型。
下文,以第一电子设备为手机,第二电子设备为PC为例,介绍训练离线强化学习网络模型,得到调节模型的过程。
如图4所示,手机中部署有映射模型。映射模型用于在采集训练样本集的过程中,根据手机中每帧的状态,确定出相匹配的CPU的频率,以便于手机实时调整CPU的频率。PC中搭建有离线强化学习网络模型。其中,离线强化学习网络模型可以为基于批量约束的深度Q 学习(Batch-Constrained deep Q- Learning,BCQ)网络、行为规范评委(BehaviorRegularized Actor-Critic,BRAC)网络、自举误差累积减少(bootstrapping erroraccumulation reduction,BEAR)网络等,在此不做具体限定。图4中,具体以离线强化学习网络模型为BCQ网络为例进行说明。PC在得到调节模型后,可以确定出对应的关系表。关系表包括一个或多个状态,即与每个状态对应的频率。
参见图5,BCQ网络的模型架构包括输入层、隐藏层、输出层、归一化模块以及值函数模块。
输入层、隐藏层以及输出层为神经网络的各个层。输入层用于输入状态,输入层中的每项用于输入一项状态。其中,以状态包括CPU的负载Sa、游戏线程的负载Sb共两项为例。
手机中CPU可以支持多种频率,每个频率可以对应一个动作。因此,基于CPU支持的多种频率可以构成动作集合,输出层中的项数与动作集合中的动作数量相等。例如,CPU支持的频率有4种,则动作集合对应的输出层中包括共4项数据,如频率f1、频率f2、频率f3、频率f4。
归一化模块用于对输出层的值进行归一化处理,得到与每个动作对应的概率,并且多个动作的概率之和为1。
值函数模块用于输出多个概率值,值函数模块的项数与动作集合中的动作数量相等,每项对应一种动作的概率,即对应一种CPU的频率的概率。例如,CPU支持的频率有f1、f2、f3以及f4,则输出层中包括频率f1的概率Qa、频率f2的概率Qb、频率f3的概率Qc和频率f4的概率Qd。
基于此,可以训练离线强化学习网络。
具体地,训练离线强化学习网络,得到调节模型的流程如图6所示:
S601、手机采集每帧的状态,作为训练样本数据,并存储在内存中。
具体地,手机在启动应用程序时,采集每帧的状态,状态包括CPU的负载、应用线程的负载和应用线程的帧率。手机将采集到的状态作为训练样本数据,并将训练样本数据存储在内存中。
S602、手机将每帧的状态输入映射模型中,得到映射模型输出的CPU的初始修正频率。
具体地,手机采集到每帧的状态后,将每帧的状态输入到映射模型中,通过映射模型,确定出与该帧状态对应的CPU的初始修正频率。
S603、手机根据目标帧率和每帧的应用帧率修正初始修正频率,得到与每帧状态对应的CPU的目标修正频率。
具体地,手机根据每帧的状态中携带的应用帧率以及目标帧率,确定每帧状态对应的丢帧数。丢帧数可以用于确定应用帧率是不是处于满帧状态。基于此,手机根据每帧状态对应的丢帧数,修正映射模型输出的CPU的初始修正频率,得到每帧状态对应的CPU的目标修正频率(也即下一帧的CPU的频率)。使CPU在下一帧以目标修正频率运行时,应用帧率尽量达到目标帧率,也即应用程序可以尽量以满帧状态运行。丢帧参数是用于指示在运行过程中,应用程序实际达到的帧率与目标帧率之间的差距的参数。丢帧参数具体可以根据目标帧率和应用帧率的差值来量化,得到丢帧数。示例性的,丢帧数=目标帧率-应用帧率。例如,目标帧率为120Hz,应用帧率为119Hz,丢帧数为1帧。
示例性的,丢帧数小于或等于零时,表示应用程序的帧率过高,此时CPU的功耗比较高,可以降低CPU的频率,在使应用帧率尽量达到目标帧率的同时减小CPU的功耗。丢帧数大于零时,表示应用帧率过低,CPU的频率无法满足应用程序高帧率的需求,可以通过提高CPU的频率,以提高应用帧率,使应用程序可以尽量以满帧状态运行。
下面对如何确定CPU的目标修正频率进行具体说明:
手机中可以记录丢帧范围和频率修正参数之间的关系(具体可以是丢帧范围和频率调节范围的映射关系表)。手机可以确定与丢帧数所属的目标丢帧范围,然后可以确定与目标丢帧范围对应的目标频率调节范围,并采用上述关系修正CPU的初始修正,得到目标修正频率,从而将CPU的频率调节为目标修正频率。
其中,频率修正参数可以是一个确切的修正幅度。具体的,丢帧数与修正幅度的关系呈正相关。例如,丢帧数为N1时,与该丢帧数对应的目标丢帧范围1对应的修正幅度为x1,目标修正频率即为x1。丢帧数为N2时,与该丢帧数对应的目标丢帧范围2对应的修正幅度为x2,目标修正频率即为x2;其中,N1<N2,x1<x2。基于此,手机可以在丢帧数较高时,则较大幅度的提升CPU的频率,在丢帧数较低时,则较小的幅度的提升或者降低CPU的频率,实现在使应用帧率尽量达到目标帧率的同时,尽量选择一个较低的CPU的频率,从而减小CPU的功耗。
频率修正参数也可以是一个频率调节范围。其中,频率调节范围包括频率修正幅度范围,和频率修正值范围。
具体地,频率修正幅度范围具体由一个修正幅度最小值(记为Z1)和一个修正幅度最大值(记为Z2)构成。对应的,手机在目标频率修正幅度范围内选择出一个目标调节值时,根据目标调节值调节初始修正频率,可以得到目标修正频率。示例性的,初始修正频率为f1,丢帧数为N1时,目标频率修正幅度范围为[Z1,Z2],对应的,手机在[Z1,Z2]中选择一个目标调节值Zn时,在初始修正频率的基础上调节Zn,得到目标修正频率=f1+Zn。例如,Z1=-1,Z2=+1,目标频率修正幅度范围为[-1,+1],手机在[-1,+1]中确定出目标调节值为+1时,对应的目标修正频率为f1+1。
具体地,频率修正值范围具体由初始修正频率与修正幅度最小值之和(记为H1)、初始修正频率与修正幅度最大值之和(记为H2)构成。对应的,手机在目标频率修正值范围内确定出一个目标调节值时,直接将目标调节值作为目标修正频率。示例性的,初始修正频率为f1,丢帧数为N1,目标频率修正幅度范围为[H1=f1+Z1,H2=f1+Z2]。例如, Z1=-2,Z2=-1,目标频率修正值范围为[f1-2, f1-1],手机在[f1-2, f1-1]中选择目标调节值为f1-2时,可以直接将CPU的频率调节为f1-2。为了便于说明,上述初始修频率可以称为第一频率,目标修正频率可以称为第二频率。
下文中,具体以频率修正参数是一个频率修正值范围为例说明:
丢帧数小于或等于0,则表明CPU的频率较高,此时功耗较高。手机可以适当降低CPU的频率,来降低CPU的功耗,同时尽量使应用帧率达到目标帧率,保证画面的流畅性。
具体地,丢帧数小于或等于0时,手机可以在以映射模型输出的CPU的初始修正频率的基础上,确定出第一频率范围。其中,第一频率范围的第一下限值低于或等于初始修正频率,第一频率范围的第一上限值高于或等于初始修正频率。第一频率范围的第一下限值与初始修正频率的第一差值,大于第一频率范围的第一上限值与初始修正频率的第二差值。并且,手机可以在第一频率范围内随机抓取一个频率,作为目标修正频率。从而实现在探索低一点的CPU的频率,降低CPU的功耗的同时,尽量使应用帧率达到目标帧率。
示例性的,以映射模型输出的CPU的初始修正频率为f1为例,手机可以在f1的基础上,选择第一频率范围[fx,fy]。其中,fx小于或等于f1,fy大于或等于f1,第一差值(fx-f1),大于第二差值(fy-f1)。在[fx,fy]内,手机随机抓取一个频率,作为目标修正频率。
以丢帧数小于或等于0为 第一丢帧范围为例,在丢帧数为-1时,确定丢帧数处于第一丢帧范围,手机在初始修正频率的基础上确定出第一频率范围[fx,fy],其中,fx=f1-2,fy=f1+1。手机在第一频率范围[f1-2,f1+1]内,抓取一个频率(如f1-1),作为目标修正频率,从而将CPU的频率调节为f1-1。
以及,丢帧数大于0,则表明CPU的频率不能满足应用程序的高帧率需求。这种情况下,手机可以通过提高CPU的频率,提高应用程序的帧率,提高画面的流畅性。
具体地,丢帧数大于0时,手机可以在以映射模型输出的CPU的初始修正频率的基础上,确定出一个第二频率范围,其中,第二频率范围的第二下限值低于或等于初始修正频率,第二频率范围的第二上限值高于或等于初始修正频率,且第二频率范围的第二下限值和初始修正频率之间的第三差值,小于第二上限值与初始修正频率的第四差值。且第一频率范围的第一下限值小于第二频率的第二下限值,第一频率范围的第一上限值小于第二频率范围的第二上限值。以此,手机可以在第二频率范围内随机抓取一个频率,作为目标修正频率,从而实现在使应用帧率尽量达到目标帧率的CPU频率范围内的同时,探索到低一点的CPU的频率,降低CPU的功耗。
示例性的,以映射模型输出的CPU的初始修正频率为f1为例,手机可以在f1的基础上,选择第二频率范围[fu,fv]。其中,fu小于或等于f1,fv大于或等于f1,第三差值(fu-f1),小于第四差值(fv-f1)。且fx>fu,fy>fv。在第二频率范围[fu,fv]内,手机随机抓取一个频率,作为目标修正频率。
例如,丢帧数大于0时,手机确定出第二频率范围[fu,fv],其中,fu=f1+0,fv=f1+4。手机在[f1,f1+4]的频率范围内,抓取一个频率(如f1+1),作为目标修正频率,从而将CPU的频率调节为f1+1。
基于此,手机在频率调节范围的上限值较高(高于或等于初始修正频率)时,更有可能选取到一个大于初始修正频率的频率值,来使应用帧率达到目标帧率,并且结合低于或等于初始修正频率的下限值,可以在频率调节范围中,探索出一个数值较低的CPU的频率,从而达到较低的功耗。
针对丢帧数大于0(也称第二丢帧范围)的情况,手机可以基于丢帧单位将丢帧数分为不同丢帧范围,确定与每个丢帧范围对应的CPU的频率调节范围,使频率修正的精度更高。例如,以1帧为丢帧单位将丢帧数分为不同丢帧范围,以0.5帧为丢帧单位将丢帧数分为不同丢帧范围。
需要说明的是,在丢帧数越多时,丢帧程度越高,与丢帧数所属目标丢帧范围对应的目标频率调节范围中,上限值增加的频率幅度越大,下限值减小的幅度越小。
示例性的,第二丢帧范围包括第三丢帧范围和第四丢帧范围,第二频率调节范围包括第三频率调节范围和第四频率调节范围,其中,第三频率调节范围与第三丢帧范围对应,第四频率调节范围与第四丢帧范围对应。在第三丢帧范围对应的丢帧程度高于第四丢帧范围对应的丢帧程度时,第三频率调节范围的下限值指示减小的频率幅度小于第四频率调节范围的下限值指示减小的频率幅度,第三频率调节范围的上限值指示增加的频率幅度大于第四频率调节范围的上限值指示增加的频率幅度。
例如,丢帧数为N3,频率修正值范围为[x3,x4];丢帧数为N4,修正幅度为[x5,x6];其中, 0<N4<N3, x5<x3, x6<x4。
根据不同的丢帧程度,确定出不同的频率调节范围,可以较精确的确定出一个合理的目标修正频率,并且在丢帧程度越高时,频率调节范围中包括的频率值越高,能够较快速的确定出一个较合理的目标修正频率,从而基于调节CPU的频率的操作,将应用帧率快速调整到目标帧率。
下面以映射模型输出的CPU的初始修正频率为f1,以1帧为丢帧单位,对不同阶段的丢帧数对应的修正策略进行说明:
当丢帧数大于0且小于或等于1帧时,表明应用帧率略低,手机可以适当调高CPU的频率,提高应用程序帧率。
示例性的,手机可以在f1的基础上,选择减小1个频点至增加2个频点的频率范围。然后,手机可以在上述频率范围内随机选取一个频率,作为目标修正频率。例如,手机可以在[f1-1,f1+2] 的频率范围内随机选取一个频率,作为目标修正频率。
当丢帧数在大于1且小于等于2帧内时,应用帧率过低,此时CPU的性能不足,手机可以提高CPU的频率,在提高CPU的性能同时,提高应用帧率。示例性的,手机可以在f1的基础上,选择减小1个频点至增加3个频点的频率范围。然后,手机可以在上述频率范围内随机选取一个频率,作为目标修正频率。例如,手机可以在[f1-1,f1+3] 的频率范围内随机选取一个频率,作为目标修正频率。
当丢帧数大于2帧时,CPU的频率过低,导致应用帧率过低,手机可以提高CPU的频率。示例性的,手机可以在f1的基础上,选择增加4个频点的频率范围。然后,手机可以在上述频率范围内随机选取一个频率,作为目标修正频率。例如,手机可以在[f1, f1+4] 的频率范围内随机选取一个频率,作为目标修正频率。
在一些实施例中,手机可以达到时机1(也可以称为满足第一条件)时,手机按照预设比例执行随机采集未经过频率修正操作的多组训练样本。也就是说,手机在达到时机1时,不采用上述根据应用帧率和目标帧率修正初始修正频率,得到目标修正频率的方法,而是随机在手机支持的所有频率范围内选取CPU的频率,并将CPU的频率更新为上述随机选取的CPU的频率(为了便于说明,上述随机选取的CPU的频率可以记为第三频率)。然后采集与第三频率对应的状态(为了便于说明,上述与第三频率对应的状态称为第三状态信息),将每帧的第三频率和第三状态信息作为一组训练样本。依此随机采集到多组的状态和对应的CPU的频率,且随机采集的多组样本训练在训练样本集中占有预设比例。未经过频率修正频率操作的训练样本中,应用帧率包括多种情况;如,应用帧率低于目标帧率,应用帧率高于目标帧率等。基于此,采集到的训练样本集中除了包括应用帧率达到目标帧率的多组训练样本,还包括其他可能(如,应用帧率低于目标帧率,应用帧率高于目标帧率)的多组训练样本,增加了训练样本集中CPU的频率的丰富性,基于包括多种可能的训练样本构成的训练样本集训练离线强化学习网络模型,可以提高离线强化学习网络模型的训练效果。其中,预设比例为未经过频率修正操作的训练样本数量占训练样本集的比例,预设比例可以根据实际需求设定。例如,预设比例为10%、12%等。
以预设比例为10%为例,未经过频率修正操作的训练样本数量占训练样本集中的10%。例如,训练样本集包括1000帧的训练样本,则手机可以采集900帧经过频率修正操作基于应用帧率和目标帧率修正初始修正频率,得到目标修正频率,将CPU的频率调节为目标修正频率)的训练样本,以及100帧未经过频率修正操作(在手机支持的所有频率范围内随机选取的CPU的频率,将CPU的频率调节为上述随机选取的CPU的频率)的训练样本。
需要说明的是,本申请对手机随机选取未经过频率修正操作的训练样本的时机1不作具体限定,下面仅列举几种可能的时机:
时机1.1,手机可以在每次训练样本的帧数超过数量1(也可以称为第一数量)之后,随机采集预设比例的未经过频率修正操作(在所有频点范围内随机选取CPU的频率,作为目标修正频率)的训练样本。
其中,数量1可以根据实际需求设定。例如,数量1为100帧、500帧等。
以数量2为1000帧、预设比例为10%为例,手机在每采集到1000帧的训练样本之后,手机可在下一个1000帧的训练样本中,随机采集100帧的未经过频率修正操作的训练样本,采集900帧基于频率修正操作的训练样本。
手机按照预设比例,采集多组未经过频率修正操作(在所有频点范围内随机选取CPU的频率,作为目标修正频率)的训练样本,可以提高训练样本集中包括的CPU频率的种类,进而增加训练样本集中训练样本的丰富性,提高离线强化学习网络模型的训练效果。
时机1.2,手机周期性的,随机采集预设比例的未经过频率修正操作(在所有频点范围内随机选取CPU的频率,作为目标修正频率)的训练样本。
其中,手机随机采集训练样本的周期可以称为第一周期,第一周期可以根据实际需求设定。例如,周期为1mins、10mins等。为了便于说明,上述第一周期结束的时间点可以称为第一时间点。
以周期为1mins、预设比例为10%为例,手机每隔1mins,手机随机采集10%的未经过频率修正操作的训练样本,采集90%基于应用帧率和目标帧率修正初始修正频率,得到目标修正频率的训练样本。
手机每个周期结束时,手机可以随机采集预设比例的未经过频率修正操作的训练样本,增加采集到的训练样本集中训练样本的丰富性,提高离线强化学习网络模型的训练效果。
S604、手机将下一帧CPU的频率更新为CPU的目标修正频率。
手机将下一帧CPU的频率(以下称final freuency)更新为CPU的目标修正频率,以此调整下一帧应用帧率,从而提高下一帧应用帧率处于满帧状态的概率。
S605、手机将每帧状态对应的CPU的目标修正频率作为训练样本数据,并存储在内存中。
具体地,手机将每帧状态对应的CPU的目标修正频率final frequency,作为训练样本数据(可以理解为与每帧的状态所对应的动作),存储在内存中。以便于PC根据每帧的状态、每帧状态对应的CPU的目标修正频率final frequency,训练离线强化学习网络模型。其中,训练样本集包括多组训练样本数据,每组训练样本数据包括:[每帧的状态,与每帧的状态对应的动作(作用于下一帧的CPU的频率)]。
在一些实施例中,手机将采集到的训练样本以逗号分隔值(Comma-SeparatedValues,CSV)格式文件存储在内存中。在CSV文件中,手机可以将一组训练样本(如每帧的状态和对应的CPU的频率)作为一组记录,记录间以换行符分隔。
应理解,手机在下一帧将CPU的频率更新为CPU的目标修正频率之后,手机在下一帧的状态发生了变化,此时手机可以继续采集下一帧的状态(包括CPU的负载、应用线程的负载和应用帧率),并将采集到的状态存储至内存中。
在应用程序的运行过程中,可能会出现跳帧的问题。或者,出现由于DDR异常或者IO加载慢导致的异常帧等问题。因此,手机还可以采集每帧的帧长,便于PC根据帧长筛选掉异常帧的状态。其中,应用帧率的倒数即为刷新两帧应用图像之间的时间间隔,即帧长。
S606、PC获取手机内存中存储的多组训练样本,一组训练样本包括一帧的状态及对应的CPU的目标修正频率。
需要说明的是,本申请对PC获取手机内存中存储的多组训练样本的时机2不作具体限定,下面仅列举几种可能的时机:
时机2.1,PC周期性的获取手机内存中存储的多组训练样本。
其中,PC采集多组训练样本的周期为第二周期,第二周期的范围可以超过或等于第一周期,可以根据实际需求设定。例如,周期为1mins、20mins等。
以周期为20mins为例,PC每隔20mins,获取手机内存中存储的多组训练样本。从而基于前20mins的多组训练样本训练离线强化学习网络模型。
在一个周期结束后,PC获取手机内存中存储的多组训练样本。这样,PC只需要定期获取手机采集的多组训练样本,训练离线强化学习网络模型,而无需额外监测手机采集的训练样本中帧的数量等信息,可以减少与手机间的交互。
时机2.2,手机可以在采集到数量2帧的训练样本后,主动向PC发送数量2帧的训练样本。
其中,数量2大于或等于数量1,数量2可以根据实际需求设定。例如,数量2为1000帧、1200帧等。
以数量2为1000帧为例,手机在训练样本的帧数超过1000帧时,向PC发送1000帧的训练样本。
手机仅在训练样本超过数量2帧时,才向PC发送训练样本,而不需要频繁将采集到的训练样本发送给PC,减少与PC间的交互,节省功耗。
可以理解的是,上述时机一和时机二可以结合。
S607、PC对多组训练样本进行筛选,得到目标数据。
具体地,手机采集的多组训练样本中,可能存在部分无用的数据。例如,由于其他因素(如前文所述的DDR异常或者IO加载慢)导致的异常帧,这种异常无法通过调频来解决。或者,频率跳变导致的异常帧,这种异常会干扰调频的结果。
基于此,PC需要对多组训练样本中的训练样本进行筛选,丢掉异常帧的状态和对应的频率,选取正常帧的状态,作为目标数据。
在一些实施例中,PC可根据采集到的帧率与目标帧率的差值是否大于或等于预设阈值(也称第二阈值),来确定该帧是否为异常帧。
一般情况下,正常帧的应用帧率与目标帧率的差值大概在0-2帧。对应的,设定预设阈值为2。也就是说,正常帧的应用帧率应位于[目标帧率-2, 目标帧率+2]范围内。
示例性的,当某帧的帧率不在上述正常帧的应用帧率范围内时,则确定该帧可能是出现频率跳变的异常帧。例如,目标帧率为120Hz,采集到的帧率为90Hz,则确定该帧为异常帧,需要删除。
在另一些实施例中,异常帧的帧长与正常帧的帧长不相同,因此PC还可以根据采集到的帧长是否位于预设帧长范围内,来确定该帧是否为异常帧。
一般情况下,目标帧率倒数即为预设的刷新两帧应用图像之间的时间间隔,即预设帧长。正常帧的应用帧率与目标帧率的差值不大,对应的,正常帧的帧长与预设帧长的差值也不会太大。在某帧的帧长远远大于目标帧长时,则该帧可能是异常帧。
示例性的,设定帧长的检测阈值(也称第一阈值)为预设帧长的两倍。PC在某帧的帧长大于或等于预设帧长的两倍时,确定该帧为异常帧。例如,在游戏应用中,预设每帧的帧长为8ms,采集到的帧长为17ms,则确定该帧为异常帧。
需要说明的是,上述S607的步骤也不是必要执行的步骤,在一些具体的实施方式中,可以不执行上述S607的步骤,基于此,S608中,PC不是对目标数据进行离散化处理,得到训练数据对,而是对每组训练样本进行离散化处理,得到训练数据对。
S608、PC对目标数据进行离散化处理,得到训练数据对。
可以理解的是,训练样本集中的目标数据包括以下至少一项:每帧的状态(包括CPU的负载、应用线程的负载和应用帧率),每帧的帧长,以及每帧的CPU的目标修正频率(final frequency)。
其中,应用帧率、每帧的帧长和final frequency 是离散化状态的数据,而状态中部分数据是处于连续状态的状态值(如CPU的负载,应用线程的负载),因此PC需要对处于连续状态的状态值进行离散化处理,以根据离散状态值得到对应的训练数据对。其中,训练数据对包括每帧的状态、每下一帧的状态、每帧状态对应的动作,以及与每个动作对应的奖励。其中,奖励是基于动作前后连续两帧的状态变化计算得到的,例如,训练样本对为[状态st,动作at,状态st+1,奖励f(状态st,状态st+1)]。
具体的,PC对状态进行离散化处理进一步包括下面两个过程:
过程1,PC将连续状态的状态值映射为多个离散状态值。
具体地,状态中可能包括一项或多项连续状态,如果包括多项连续状态,PC需要对每项连续状态的状态值都进行离散化,得到离散化状态值。
以游戏应用为例,状态中CPU的负载、游戏线程的负载通常包括大量连续的状态值。PC需要分别对连续状态的CPU的负载进行离散化,得到离散化CPU的负载,以及对连续状态的游戏线程的负载进行离散化,得到离散化游戏线程的负载。
具体地,PC可以将每项连续状态的状态值划分为多个状态区间,然后将多个状态区间一一映射到对应的多个离散状态值,从而实现将连续状态的状态值映射为少量离散状态值。
由于每项连续状态的状态值经过离散化处理后,可能得到一个或多个离散值,因此考虑到每个离散值,需要对状态进行排列组合:
过程2,PC将状态的每项离散状态值进行排列组合,得到多种离散组合。
具体地,PC遍历状态中每个离散状态值进行排列组合,得到多种离散组合,从而使离散组合中包括每项连续状态的状态值对应的所有离散值,及每项离散状态的状态值。以游戏应用为例,离散组合中包括与连续状态CPU的负载对应的离散状态值、与连续状态游戏应用的负载对应的离散状态值,以及游戏帧率。
以第一帧状态的离散状态值包括CPU的负载对应的离散状态值Sx、游戏应用的负载对应的离散状态值Sy,游戏帧率的状态值Sz为例,得到该帧状态的离散组合如表1所示:
表1
上表1中反映出,离散组合包括(x1,y1,Sz)、(x1,y2,Sz)、(x2,y1,Sz)、(x2,y2,Sz)共4种,遍历了所有的组合可能。其中,x1,x2是与连续状态CPU的负载对应的离散状态值。y2,y2是与连续状态游戏应用的负载对应的离散状态值,Sz离散状态的游戏帧率的状态值。基于此,PC可以得到每帧状态的离散组合。
通过过程1和过程2,PC对可以状态进行离散化处理,确定出每帧状态的离散组合。
然后,PC可以将每帧的CPU的目标修正频率确定为与每帧状态的离散组合对应的动作,并根据每连续2帧状态的离散组合计算得到对应的奖励,得到对应的训练样本对 [状态st,动作at,状态st+1,奖励f(状态st,状态st+1)]。
至此,需要说明的是:手机采用上述数据获取方法,可以在采集训练样本的过程中,不断的调整CPU的频率,尽量使应用帧率达到目标帧率,提高训练样本的质量,使得基于上述训练样本训练得到的调节模型,可以确定出尽量满足应用程序的高帧率需求的CPU的频率。同时,尽量基于频率调节范围探索出一个较低的CPU的频率(也可以称为使CPU的功耗较低的频率),从而使得训练样本中的每帧的PUC的频率是平衡了应用程序的性能和CPU的功耗的结果。
在训练开始前,PC端需要搭建离线强化学习网络,如搭建模型架构、设置初始的网络参数、设置奖励函数、损失函数等。然后,PC可以执行以下步骤:
S609、PC将训练数据对输入至离线强化学习网络模型中,得到频率调节模型。
具体地,PC将每帧的状态、动作、下一状态和奖励作为训练输入,训练离线强化学习网络模型(如BCQ网络,BCQ网络根据输入数据,从动作集合中确定出每个CPU的频率的概率),从而得到频率调节模型。
在一些具体地实施方式中,PC在得到训练离线强化学习网络模型,得到频率调节模型之后,将已训练的多组训练样本清零。
需要说明的是,一般情况下,离线强化学习网络模型输出的数据包括与每种CPU的频率的概率。PC可以选择其中的一个频率作为目标频率。
一般情况下,概率越高,则表明对应的CPU的频率所具有的价值越高。如图5所示,CPU支持的频率有f1、f2、f3以及f4,则BCQ输出的数据包括频率f1的概率Qa、频率f2的概率Qb、频率f3的概率Qc和频率f4的概率Qd。Qa>Qb>Qc>Qd,则表示f1、f2、f3以及f4的价值依次降低。
在一些具体的实施例中,PC可以选择最大概率对应的频率为动作中携带的CPU的频率,使调整后手机中CPU的频率为最大概率对应的频率。例如,最大概率为Qa,则动作中携带的CPU的频率为f1,调整后手机中CPU的频率为f1。
S610、PC中频率调节模型生成离散状态组合与目标频率的信息的关系表。
具体地,经过训练的离线强化学习网络模型(也称频率调节模型)确定与每个状态对应的CPU的目标频率后,PC可以基于每个状态的离散组合,生成关系表。关系表包括每个状态(包括每个状态中所有的离散组合),以及与每个状态对应的CPU的目标频率。
以某帧CPU的目标频率为f1为例,结合前文表1中第一帧状态的离散状态组,可以得到如下表2所示的第一帧的关系表。
表2
根据表2可知,第一帧的状态的离散组合包括4种,与第一帧中每种离散组合对应的目标频率均为f1。
由于PC是基于上述数据获取方法得到的训练样本,来训练离线强化学习网络模型,从而得到频率调节模型的。而上述训练样本中与每帧状态对应的CPU的频率,是在使应用帧率达到目标帧率的同时,探索出的功耗较低的频率。因此,基于上述训练样本训练得到的频率调节模型所确定出的CPU的频率,是平衡了应用程序的性能和CPU的功耗的结果。
在一些实施例中,手机采集到启动应用程序时的各项数据(包括CPU的负载、应用线程的负载、应用帧率、帧长、CPU的频率等)后,可以根据上述各项数据绘制对应的运行状态(trace)图,以便直观的观测到状态变化。
以手机的CPU1、应用程序为游戏应用为例,得到的trace图如图7所示。
根据CPU1的trace图,可以看出游戏线程主要包括渲染线程、逻辑线程。对应的,应用线程的负载包括逻辑线程的负载和渲染线程的负载。
也就是说,游戏应用中,每帧的状态可以包括:CPU1中负载、每帧的帧长、渲染线程的负载、逻辑线程的负载、CPU1的频率(如图7中的1.2GHz)、应用程序的帧率等。
可以理解的是,CPU的负载可以根据CPU的运行时长及CPU的频率计算得到;游戏线程的负载可以根据游戏线程的帧率和线程运行时长计算得到。
具体地,帧率可以为单位时间内的平均帧率。其中,单位时间可根据实际需求进行具体设定。
如图7所示,以单位时间为90ms为例,该单位时间内有5帧,则首先分别计算每帧的帧率(90ms/21ms,90ms/16.5ms,90ms/18.5ms,90ms/16.6ms,90ms/17.4ms),然后计算上述5帧的帧率的平均值,作为该单位时间内的统一的帧率(90ms/21ms+90ms/16.5ms+90ms/18.5ms+90ms/16.6ms+90ms/17.4ms)/5。
进一步的,根据CPU的trace图中各项数据,可以绘制得到对应的频点图。频点图可以用于表示状态、丢帧数和CPU的频率指数之间的映射关系。
示例性的,采用数据获取方法采集到的多组训练样本,可以绘制得到如图8所示的,呈阶梯状的频点图。
根据图8可以看出,应用程序的丢帧数大时,CPU的频率指数低,经过修正CPU的频率指数变高,使得对应的状态(主要指应用帧率)随之变高。
进一步的,上述手机的软硬件架构可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本文中,以分层架构的Android系统为例,示例性说明手机的软硬件结构。
参见图9,为本申请实施例提供的一种手机的软硬件架构图。如图9所示,分层架构将软硬件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件或硬件接口进行数据的传输与通信。在一些实施例中,将Android系统从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库(Native)以及内核层。
应用程序层可以包括一系列应用程序包。如图9所示,应用程序包可以包括备忘录、计算器、通话、浏览器、视频、游戏等应用程序。为了便于说明,可以将运行过程中需要频繁刷新图像的应用程序称为第一应用,如第一应用包括游戏应用、视频播放器等。
在本申请实施例中,可以针对单个应用来训练得到调节模型,并用于该应用运行过程中,确定CPU的频率。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
应用程序框架层可以包括窗口管理器、资源管理器、内容提供器和视图系统等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息、发出提示音、终端设备振动、指示灯闪烁等。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏、锁定屏幕、触摸屏幕、拖拽屏幕、截取屏幕等。资源管理器为应用程序提供各种资源,例如本地化字符串、图标、图片、布局文件、视频文件等等。内容提供器用于在不同的应用程序之间实现数据共享的功能,允许一个程序访问另一个程序中的数据,同时还能保证被访问的数据的安全性。视图系统可以负责应用程序的界面绘制和事件处理。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:媒体库(Media Libraries)、函数库(Function Libraries)等。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。函数库为开发者提供多种服务的API接口,方便开发者快速集成并实现各种功能。
在一些实施例中,系统库中还包括图形处理库(例如:OpenGL ES),图形处理库用于实现图形绘图、图像渲染、合成和图层处理等。在图像渲染的过程中,图形处理库可用于将绘制命令转换成图形命令。在一种具体的实现方式中,调度服务基于图形处理库转换得到的图形命令,可以确定应用画面的内容情况(如画面内容的复杂程度等)。
在一些实施例中,系统库中还包括窗口系统(SurfaceFlinger)。窗口系统可以将渲染好的每一帧图像送往显示屏显示。其中,窗口系统将第k+1帧图像送往显示屏显示,则意味着第k帧结束,第k+1帧开始。即,窗口系统是可以确定显示每一帧图像的开始时间点和结束时间点的。在一种具体的实现方式中,调度服务可以基于窗口系统中记录的该时间点,确定应用帧率(如游戏帧率)。例如,窗口系统中记录有第k帧图像送显的时间信息t1和第k+1帧图像送显的时间信息t2,那么,t2-t1即为第k帧的帧长,相当于间接得到了帧率。
在一些实施例中,系统库中还包括调度服务,如游戏调度服务(gamesScheduler),调度服务用于基于关系表确定最优频率。并且,调度服务中可以存储关系表,用于确定最优频率。
内核层是硬件和软件之间的层。内核层可以包括显示驱动、摄像头驱动、音频驱动、蓝牙驱动等。
在一些实施例中,内核层中还包括调度器。
调度器(Scheduler)即为前文中的EAS、CFS或者功率调度器,调度器包括数据采集模块和频率修正模块。其中,数据采集模块用于采集每帧的CPU的负载、应用线程的负载、帧率、帧长、CPU的频率等各项数据。频率修正模块用于将状态输入映射模型,确定CPU的初始修正频率,根据丢帧数和初始修正频率确定CPU的目标修正频率,调整CPU的频率为目标修正频率。具体可参见前文关于EAS、CFS或者功率调度器的说明,此处不再赘述。
在另一些实施例中,内核层中还可以包括调频模块,调频模块(governor)用于控制CPU的频率。例如,电子设备在需要调频时,调频模块将CPU的频率调节到最优频率。或者,在调度器根据丢帧数和初始修正频率确定CPU的目标修正频率之后,调频模块将CPU的频率调整为目标修正频率。
参见图10,本申请实施例这里将结合图9的软硬件架构,同样以游戏应用为例,对手机基于丢帧数,调节CPU的频率的过程(即S602-S604的过程)作进一步说明。
S1001、窗口系统在向显示屏发送待显示图像时,记录当前的时间信息。
在经过渲染、合成,得到应用的每一帧画面(即待显示图像)之后,都需要经过窗口系统向显示屏发送,然后显示屏显示待显示图像,此时应用画面从当前帧刷新为下一帧。那么,窗口系统向显示屏发送待显示图像的时间,则可以近似认为应用画面刷新的时间。例如,窗口系统在时间a向显示屏发送待显示图像,则近似认为应用画面在时间a发生刷新。
应理解,窗口系统记录的一个时间信息可以反映一次刷新的时间,则多个时间信息可以反映多次刷新之间的时间间隔,从而可用于计算帧长。
S1002、窗口系统向调度服务发送时间信息。
可以理解的是,窗口系统内向显示屏发送每一帧的画面时,记录的向显示屏发送待显示图像的时间信息,即为每帧结束的时间。
S1003、响应于接收到时间信息(即第k帧结束),调度服务基于时间信息确定应用帧率。
响应于接收到的每帧结束的时间,调度服务可以确定每帧的应用帧率。
在一些实施例中,调度服务可以将最近两次接收到的时间信息之间的时间差确定为帧长,将帧长的倒数确定为应用帧率。示例性的,最近两次接收到的时间信息分别为8点20分整和8点20分零20毫秒(ms),时间差有20ms,即帧长为20ms,那么,应用帧率为1/20ms=50帧。
在另一些实施例中,调度服务可以将最近n次接收到的时间信息的平均时间差确定为帧长,将帧长的倒数确定为应用帧率。其中,n为大于0的自然数,如n为3、4、5、10、20等。以n=3为例,最近三次接收到的时间信息分别为8点20分整、8点20分零20毫秒和8点20分零36毫秒,则平均时间差为36ms/2=18ms,即帧长为18ms,那么,应用帧率为1/18ms≈55帧。
S1004、响应于接收到时间信息,调度服务向数据采集模块发送应用帧率。
响应于接收到每帧结束的时间,调度服务可以将应用帧率发送给调度器(具体为调度器的数据采集模块),以触发调度器执行一次CPU的频率修正操作。其中,调度器包括数据采集模块和频率修正模块。数据采集模块用于采集训练样本。频率修正模块用于修正CPU的频率。
S1005、调度器的数据采集模块响应于接收到时间信息,将状态存储至内存中,其中,状态包括应用帧率、CPU的负载、应用线程的负载。
调度器的数据采集模块响应于时间信息,确定与时间信息对应的CPU的负载、应用线程的负载,将应用帧率、CPU的负载、应用线程的负载作为状态存储在内存中。
S1006、响应于接收到时间信息,数据采集模块向频率修正模块发送状态。
S1007、响应于接收到时间信息,频率修正模块将状态输入至映射模型中,得到CPU的初始修正频率。
频率修正模块将每帧结束的时间对应的状态输入至映射模型中,得到CPU的初始修正频率。
S1008、频率修正模块根据应用帧率和初始修正频率,确定CPU的目标修正频率。
频率修正模块在得道初始修正频率时,根据应用帧率和目标帧率确定出与时间信息对应的丢帧数。基于丢帧数修正上述CPU的初始修正频率,从而确定出CPU的目标修正频率。此时,CPU的目标修正频率为与时间信息对应的、下一帧的CPU的频率。
S1009、频率修正模块将CPU的频率调节为目标修正频率。
S1010、频率修正模块向数据采集模块发送目标修正频率。
S1011、数据采集模块存储目标修正频率。
应理解,目标修正频率可以作为与时间信息对应的动作。
本申请实施例中,电子设备的调度器可以基于应用程序的实际帧率和目标帧率,修正映射模型输出的CPU的初始修正频率,确定CPU的目标修正频率,然后将CPU的频率调整为目标修正频率,从而采集应用帧率处于满帧状态的多组训练样本。根据多组训练样本执行离线训练操作,得到调节模型,然后电子设备在需要时,可以根据调节模型确定与当前状态对应的最优频率,从而将CPU的频率调节到最优频率,保证应用程序高帧率输出的同时,减小CPU的功耗。
本申请实施例还提供了一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中各个功能或者步骤。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述方法实施例中的各个功能或者步骤。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述方法实施例中的各个功能或者步骤。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个电子设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不脱离本申请技术方案的精神和范围。
Claims (18)
1.一种数据获取方法,其特征在于,应用于第一电子设备,所述第一电子设备包括中央处理器CPU,所述第一电子设备中安装有第一应用,所述方法包括:
启动所述第一应用;
显示所述第一应用的第k帧图像,采集所述第一电子设备在显示所述第k帧图像期间的第一状态信息;其中,所述第一状态信息包括以下至少一项:所述CPU的第一负载、所述第一应用的应用线程的第二负载、所述第一应用的第一帧率和所述第k帧图像的第一帧长;
确定与所述第一状态信息相匹配的所述CPU的第一频率;
基于所述第一应用的目标帧率和所述第一帧率调节所述第一频率,得到所述CPU的第二频率;
将所述CPU的频率调节到所述第二频率;
显示所述第一应用的第k+1帧图像,采集所述第一电子设备在显示所述第k+1帧图像期间的第二状态信息;其中,所述第二状态信息包括以下至少一项:所述CPU的第三负载、所述第一应用的应用线程的第四负载、所述第一应用的第二帧率和所述第k+1帧图像的第二帧长;
存储所述第二频率和所述第二状态信息。
2.根据权利要求1所述的方法,其特征在于,所述确定与所述第一状态信息相匹配的所述CPU的第一频率,包括:
将所述第一状态信息作为输入,运行映射模型,输出所述第一频率;
其中,所述映射模型具有根据状态信息映射得到CPU的频率的功能。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一应用的目标帧率和所述第一帧率调节所述第一频率,得到所述CPU的第二频率,包括:
基于所述第一应用的所述目标帧率和所述第一帧率确定丢帧参数;
基于所述丢帧参数调节所述第一频率,得到所述CPU的所述第二频率。
4.根据权利要求3所述的方法,其特征在于,所述第一电子设备中存储有丢帧范围和频率调节范围的映射关系表;
所述基于所述丢帧参数调节所述第一频率,得到所述CPU的所述第二频率,包括:
从所述映射关系表中查询所述丢帧参数所属的目标丢帧范围以及所述目标丢帧范围对应的目标频率调节范围;
从所述目标频率调节范围中选择目标调节值,按照所述目标调节值调节所述第一频率,得到所述第二频率。
5.根据权利要求4所述的方法,其特征在于,所述映射关系表包括第一丢帧范围和与所述第一丢帧范围对应的第一频率调节范围;
所述第一丢帧范围指示的丢帧数量小于或等于0,所述第一频率调节范围的第一下限值指示将频率减小X1,所述第一频率调节范围的第一上限值指示将频率增加X2,X1和X2为大于或等于0的自然数,且X1>X2。
6.根据权利要求5所述的方法,其特征在于,所述映射关系表包括第二丢帧范围和与所述第二丢帧范围对应的第二频率调节范围;
所述第二丢帧范围指示的丢帧数量大于0,所述第二频率调节范围的第二下限值指示将频率减小X3,所述第二频率调节范围的第二上限值指示将频率增加X4,X3和X4为大于或等于0的自然数,且X3<X4。
7.根据权利要求6所述的方法,其特征在于,X1>X3,X2<X4。
8.根据权利要求6所述的方法,其特征在于,所述第二丢帧范围包括第三丢帧范围和第四丢帧范围,所述第二频率调节范围包括第三频率调节范围和第四频率调节范围,所述第三频率调节范围与所述第三丢帧范围对应,所述第四频率调节范围与所述第四丢帧范围对应;
所述第三丢帧范围对应的丢帧程度高于所述第四丢帧范围对应的丢帧程度,所述第三频率调节范围的下限值指示减小的频率幅度小于所述第四频率调节范围的下限值指示减小的频率幅度,所述第三频率调节范围的上限值指示增加的频率幅度大于所述第四频率调节范围的上限值指示增加的频率幅度。
9.根据权利要求1所述的方法,其特征在于,所述确定与所述第一状态信息相匹配的所述CPU的第一频率,包括:
如果满足第一条件,确定与所述第一状态信息相匹配的所述CPU的所述第一频率;
其中,第一条件包括以下至少一项:
达到第一时间点;
与状态信息对应的帧的数量达到第一数量。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
如果不满足所述第一条件,从所述CPU的频率全集中选择第三频率;
将所述CPU的频率调节到所述第三频率;
显示所述第一应用的第k+1帧图像,采集所述第一电子设备在显示所述第k+1帧图像期间的第三状态信息;其中,所述第三状态信息包括以下至少一项:所述CPU的第五负载、所述第一应用的应用线程的第六负载、所述第一应用的第三帧率和所述第k+1帧图像的第三帧长;
存储所述第三频率和所述第三状态信息。
11.一种训练方法,其特征在于,应用于第一电子设备或者第二电子设备,所述方法包括:
获取多组训练样本,每组训练样本包括通过上述权利要求1-10中任一项所述的数据获取方法获得的频率和状态信息;
采用所述多组训练样本作为训练输入,训练预设强化学习网络,得到频率调节模型。
12.根据权利要求11所述的方法,其特征在于,在所述获取多组训练样本之后,所述方法还包括:
如果所述状态信息中的帧长达到第一阈值时,则丢弃所述状态信息及与所述状态信息对应的频率。
13.根据权利要求11或12所述的方法,其特征在于,在所述获取多组训练样本之后,所述方法还包括:
如果所述状态信息的帧率与目标帧率的差值大于或等于第二阈值,则丢弃所述状态信息及与所述状态信息对应的频率。
14.根据权利要求11所述的方法,其特征在于,在采用所述多组训练样本作为训练输入,训练预设强化学习网络,得到频率调节模型之后,所述方法还包括:
将所述多组训练样本清零。
15.根据权利要求11所述的方法,其特征在于,每组训练样本包括以下至少一项:连续状态的状态值、离散状态的状态值;
所述采用所述多组训练样本作为训练输入,训练预设强化学习网络,得到频率调节模型,包括:
针对每组训练样本,将训练样本中的每项连续状态的状态值均进行离散化处理,得到每项连续状态的状态值的多个取值区间,以及一一对应的多个离散状态值;
针对每组训练样本,将训练样本中所有离散状态值进行排列组合,得到多种离散组合;其中,离散状态值包括以下至少一项:与所述每项连续状态的状态值对应的所述多个离散状态值,以及每项离散状态的状态值;
以每种离散组合为状态,以与每种离散组合对应的CPU的频率为动作,根据每连续两组训练样本确定奖励,训练预设强化学习网络,得到频率调节模型。
16.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-10或11-15中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10或11-15中任一项所述的方法。
18.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-10或11-15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410157737.8A CN117687495A (zh) | 2024-02-04 | 2024-02-04 | 一种数据获取方法、训练方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410157737.8A CN117687495A (zh) | 2024-02-04 | 2024-02-04 | 一种数据获取方法、训练方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117687495A true CN117687495A (zh) | 2024-03-12 |
Family
ID=90130521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410157737.8A Pending CN117687495A (zh) | 2024-02-04 | 2024-02-04 | 一种数据获取方法、训练方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117687495A (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200356834A1 (en) * | 2020-07-27 | 2020-11-12 | Zhu ZHOU | Hierarchical reinforcement learning algorithm for nfv server power management |
CN112130940A (zh) * | 2020-08-25 | 2020-12-25 | 北京小米移动软件有限公司 | 终端的控制方法、装置、存储介质和电子设备 |
CN112363842A (zh) * | 2020-11-27 | 2021-02-12 | Oppo(重庆)智能科技有限公司 | 图形处理器的频率调整方法、装置、电子设备及存储介质 |
CN112631415A (zh) * | 2020-12-31 | 2021-04-09 | Oppo(重庆)智能科技有限公司 | Cpu频率调整方法、装置、电子设备及存储介质 |
CN114510139A (zh) * | 2020-11-16 | 2022-05-17 | 深圳市万普拉斯科技有限公司 | 一种调频方法、装置及电子设备 |
CN217882138U (zh) * | 2022-05-31 | 2022-11-22 | 金文强 | 一种具有接口保护功能的5g通信模块装置 |
CN116173496A (zh) * | 2021-11-26 | 2023-05-30 | 华为技术有限公司 | 一种图像帧的渲染方法及相关装置 |
CN116680153A (zh) * | 2023-07-28 | 2023-09-01 | 荣耀终端有限公司 | 应用帧率平滑方法、电子设备及存储介质 |
CN116737357A (zh) * | 2022-09-28 | 2023-09-12 | 荣耀终端有限公司 | 一种调整处理器频率的方法及装置 |
CN116909378A (zh) * | 2023-06-25 | 2023-10-20 | 哈尔滨工业大学 | 一种基于深度强化学习的gpu动态能源效率优化运行时方法及系统 |
CN117130770A (zh) * | 2023-02-25 | 2023-11-28 | 荣耀终端有限公司 | 一种调频方法及电子设备 |
CN117130769A (zh) * | 2023-02-25 | 2023-11-28 | 荣耀终端有限公司 | 一种调频方法、频率调节神经网络的训练方法及电子设备 |
CN117130768A (zh) * | 2023-02-25 | 2023-11-28 | 荣耀终端有限公司 | 一种调频关系表的生成方法及电子设备 |
-
2024
- 2024-02-04 CN CN202410157737.8A patent/CN117687495A/zh active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200356834A1 (en) * | 2020-07-27 | 2020-11-12 | Zhu ZHOU | Hierarchical reinforcement learning algorithm for nfv server power management |
CN112130940A (zh) * | 2020-08-25 | 2020-12-25 | 北京小米移动软件有限公司 | 终端的控制方法、装置、存储介质和电子设备 |
CN114510139A (zh) * | 2020-11-16 | 2022-05-17 | 深圳市万普拉斯科技有限公司 | 一种调频方法、装置及电子设备 |
CN112363842A (zh) * | 2020-11-27 | 2021-02-12 | Oppo(重庆)智能科技有限公司 | 图形处理器的频率调整方法、装置、电子设备及存储介质 |
CN112631415A (zh) * | 2020-12-31 | 2021-04-09 | Oppo(重庆)智能科技有限公司 | Cpu频率调整方法、装置、电子设备及存储介质 |
CN116173496A (zh) * | 2021-11-26 | 2023-05-30 | 华为技术有限公司 | 一种图像帧的渲染方法及相关装置 |
CN217882138U (zh) * | 2022-05-31 | 2022-11-22 | 金文强 | 一种具有接口保护功能的5g通信模块装置 |
CN116737357A (zh) * | 2022-09-28 | 2023-09-12 | 荣耀终端有限公司 | 一种调整处理器频率的方法及装置 |
CN117130770A (zh) * | 2023-02-25 | 2023-11-28 | 荣耀终端有限公司 | 一种调频方法及电子设备 |
CN117130769A (zh) * | 2023-02-25 | 2023-11-28 | 荣耀终端有限公司 | 一种调频方法、频率调节神经网络的训练方法及电子设备 |
CN117130768A (zh) * | 2023-02-25 | 2023-11-28 | 荣耀终端有限公司 | 一种调频关系表的生成方法及电子设备 |
CN116909378A (zh) * | 2023-06-25 | 2023-10-20 | 哈尔滨工业大学 | 一种基于深度强化学习的gpu动态能源效率优化运行时方法及系统 |
CN116680153A (zh) * | 2023-07-28 | 2023-09-01 | 荣耀终端有限公司 | 应用帧率平滑方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10560546B2 (en) | Optimizing user interface data caching for future actions | |
CN109816116B (zh) | 机器学习模型中超参数的优化方法及装置 | |
KR102644700B1 (ko) | 콘텐츠 추천 방법, 장치, 기기 및 매체 | |
US20210241177A1 (en) | Method and system for performing machine learning process | |
US11762649B2 (en) | Intelligent generation and management of estimates for application of updates to a computing device | |
CN117130768A (zh) | 一种调频关系表的生成方法及电子设备 | |
WO2023024955A1 (zh) | 数据库任务处理方法、冷热数据处理方法、存储引擎、设备及存储介质 | |
CN110399214B (zh) | 一种优化显卡负载的方法、装置及计算机设备 | |
CN103713935A (zh) | 一种在线管理Hadoop集群资源的方法和装置 | |
EP3092558B1 (en) | Dynamically adjusting brand and platform interface elements | |
Rang et al. | Data life aware model updating strategy for stream-based online deep learning | |
WO2020131389A1 (en) | Image classification pipeline | |
CN117130770A (zh) | 一种调频方法及电子设备 | |
CN117687495A (zh) | 一种数据获取方法、训练方法及电子设备 | |
CN116089477B (zh) | 分布式训练方法及系统 | |
CN110502495A (zh) | 一种应用服务器的日志收集方法及装置 | |
CN114066098B (zh) | 学习任务的完成时长的预估方法及设备 | |
Handaoui et al. | Releaser: A reinforcement learning strategy for optimizing utilization of ephemeral cloud resources | |
WO2015103014A1 (en) | Building interactive, data driven apps | |
KR20220071895A (ko) | 오토 스케일링 방법, 장치 및 시스템 | |
CN112764837A (zh) | 数据上报方法、装置、存储介质及终端 | |
WO2015103016A1 (en) | Division of processing between systems based on external factors | |
CN117311909B (zh) | 虚拟场景的资源处理方法、装置、设备及存储介质 | |
US20220198361A1 (en) | Systems and methods for automated evaluation of digital services | |
Paokin et al. | Approbation of Methods for Supercomputer Job Queue Wait Time Estimation |
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 |