发明内容
基于此,有必要针对上述技术问题,提供一种能够有效提高适配性和执行效率的计算图的优化方法、装置、计算机设备和存储介质。
第一方面,一种计算图的优化方法,所述方法包括:
获取计算网络模型的计算图;计算图中包括多个计算节点;
在计算图中插入至少一个检查节点;
当运行至每一个检查节点时,通过当前的检查节点获取当前性能裕量;
根据当前延时性能裕量,确定优化策略;
根据优化策略对当前的检查节点之后的计算节点进行优化。
在其中一个实施例中,当前性能裕量包括当前延时性能裕量,根据当前性能裕量,确定优化策略,包括:
若当前延时性能裕量充足,则将存储优化策略确定为优化策略;存储优化策略用于减少计算节点在计算时占用的内存;
若当前延时性能裕量不充足,则将延时优化策略确定为优化策略;延时优化策略用于减少计算节点在计算时的计算消耗时长。
在其中一个实施例中,当前性能裕量包括当前存储性能裕量,根据当前延时性能裕量,确定优化策略,包括:
若当前存储性能裕量充足,则将延时优化策略确定为优化策略;延时优化策略用于减少计算节点在计算时的消耗时长;
若当前存储性能裕量不充足,则将存储优化策略确定为优化策略;存储优化策略用于减少计算节点在计算时占用的内存。
在其中一个实施例中,所述存储优化策略包括:
将检查节点之后的计算节点在计算时产生的数据存储至高访问延迟的存储空间;高访问延迟的存储空间至少包括全局内存和片外存储器;
和/或,延时优化策略包括:将检查节点之后的计算节点在计算时产生的数据存储至低访问延迟的存储空间;低访问延迟的存储空间至少包括缓存空间和片内存储。
在其中一个实施例中,延时优化策略还包括:
获取检查节点之后的计算节点在计算时产生的数据的大小;
将计算节点在计算时产生的数据的大小与预设存储内存的大小进行比较;
若计算节点在计算时产生的数据的大小超出预设存储内存大小,则拆分检查节点之后的计算节点,并将拆分后的计算节点在计算时产生的数据存储至低访问延迟的存储空间;
若计算节点在计算时产生的数据的大小未超出预设存储内存大小,则将检查节点之后的计算节点在计算时产生的数据存储至低访问延迟的存储空间。
在其中一个实施例中,通过当前的检查节点获取当前性能裕量,包括:
获取当前的检查节点之前的所有计算节点的第一总目标计算消耗时长和总实际计算消耗时长;
根据第一总目标计算消耗时长和总实际计算消耗时长,确定当前延时性能裕量。
在其中一个实施例中,获取当前的检查节点之前的所有计算节点的第一总目标计算消耗时长,包括:
获取当前的检查节点所在路径上的所有计算节点的第二总目标计算消耗时长;
根据第二总目标计算消耗时长和预设比例,确定第一总目标计算消耗时长;预设比例为当前的检查节点之前的所有计算节点的总计算消耗时长在检查节点所在路径上的所有计算节点的总计算消耗时长中所占比例。
在其中一个实施例中,在计算图中插入至少一个检查节点,包括:
获取计算图中最长路径上各计算节点的计算消耗时长比例;
根据计算消耗时长比例,在最长路径上确定至少一个检查节点的插入位置;
在至少一个检查节点的插入位置处,插入至少一个所述检查节点。
在其中一个实施例中,获取计算图中最长路径上各计算节点的计算消耗时长比例,包括:
获取最长路径上各计算节点的计算量;
根据各计算节点的计算量获取最长路径上各计算节点的计算消耗时长;
根据最长路径上各计算节点的计算消耗时长,确定最长路径上各计算节点的计算消耗时长比例。
在其中一个实施例中,获取计算图中最长路径上各计算节点的计算消耗时长比例,包括:
构建消耗时长预估模型;
采用消耗时长预估模型,获取最长路径上各计算节点的计算消耗时长;
根据最长路径上各计算节点的计算消耗时长,确定最长路径上各计算节点的计算消耗时长比例。
在其中一个实施例中,根据计算消耗时长比例,在最长路径上确定至少一个检查节点的插入位置,包括:
根据计算消耗时长比例,将最长路径均分成预设数量的多个子路径;
在多个子路径中选择至少一个子路径作为插入检查点的插入位置。
在其中一个实施例中,在计算图中插入至少一个检查节点,包括:
获取计算图中间隔至少一个计算节点的始端计算节点和末端计算节点;
在始端计算节点和末端计算节点的中间位置插入至少一个检查节点。
在其中一个实施例中,获取计算网络模型的计算图,包括:
加载计算网络模型的拓扑结构和参数;
对计算网络模型的拓扑结构和参数进行编译,得到计算网络模型的计算图。
第二方面,一种计算图的优化装置,所述装置包括:
第一获取模块,用于获取计算网络模型的计算图;计算图中包括多个计算节点;
插入模块,用于在计算图中插入至少一个检查节点;
第二获取模块,用于当运行至每一个检查节点时,通过当前的检查节点获取当前性能裕量;
确定模块,用于根据当前性能裕量,确定优化策略;
优化模块,用于根据优化策略对当前的检查节点之后的计算节点进行优化。
第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现第一方面任一实施例所述的计算图的优化方法。
第四方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一实施例所述的计算图的优化方法。
本申请提供的一种计算图的优化方法、装置、计算机设备和存储介质,通过获取包括多个计算节点的计算网络模型的计算图,再在计算图中插入至少一个检查节点,并当运行至每一个检查节点时,通过当前的检查节点获取当前性能裕量,然后根据当前性能裕量,确定优化策略,以及根据该优化策略对当前的检查节点之后的计算节点所需消耗资源进行优化。上述优化方法通过插入检查节点获取计算机设备在运行到各检查节点时的当前性能裕量,然后根据当前性能裕量,选择符合计算机设备实际运行情况的优化策略对检查节点之后的计算节点所需消耗资源进行优化,使计算机设备运行至上述计算节点的过程中,可以动态调整计算图中各计算节点计算时的资源使用情况,以满足用户针对该计算图提出的性能指标需求,以及提高计算机设备上的资源利用率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请提供的计算图的优化方法,可以应用于如图1所示的计算机设备中,该计算机设备可以是服务器,也可以是终端,其内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种计算图的优化方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为一个实施例提供的一种计算图的优化方法的流程图,该方法的执行主体为图1中的计算机设备,该方法涉及的是计算机设备在运行计算网络模型的计算图时对该计算图进行优化的具体过程。如图2所示,该方法具体包括以下步骤:
S101、获取计算网络模型的计算图;计算图中包括多个计算节点。
其中,计算网络模型可以由计算机设备预先根据实际应用需求构建,其具体可以是具备各种功能应用的计算网络模型,例如,神经网络模型、机器学习网络模型、智能算法网络模型等。计算图是一种描述计算方法的“语言”,具体由多个计算节点组成,多个存在依赖关系的计算节点之间相互连接。计算节点可以包括执行某种计算功能的代码,用于使计算机设备运行至计算节点时,可以执行计算网络模型中对应的计算任务。
本实施例中,计算机设备可以通过编译器编译预设的计算网络模型,生成编译后的计算图。可选地,计算机设备也可以通过其它方法直接获取到经过编译会后的计算网络模型的计算图,对此本实施例不做限定。可选地,当编译器编译计算网络模型之前,计算机设备还可以预先根据实际应用需求构建该计算网络模型,然后再基于构建好的计算网络模型进行编译,以便之后运行时使用。可选地,计算机设备也可以直接获取预编译的计算网络模型,再基于获取到的计算网络模型进行编译,以便之后运行时使用,对此本实施例不做限定。
S102、在计算图中插入至少一个检查节点。
其中,检查节点可以包括执行某种计算或测试功能的代码,用于使计算机设备运行至检查节点时,可以执行相应的计算或测试任务,该检查节点可以由计算设备预先配置。本实施例中,当计算机设备获取到计算网络模型的计算图,以及需要在之后运行该计算图的过程中优化该计算图时,可以进一步的在该计算图中插入至少一个检查节点,以使计算图被运行至插入的检查节点时,计算机设备可以检测计算机设备在当前时刻的资源消耗情况,从而根据当前资源消耗情况,动态调整之后计算节点的资源利用方式,使计算图在被执行的过程中,消耗的资源情况始终能够满足用户提出的性能指标或达到最优,充分利用了计算机设备上的资源。
S103、当运行至每一个检查节点时,通过当前的检查节点获取当前性能裕量。
其中,当前性能裕量表示计算设备运行至当前的检查节点时实际消耗的计算设备资源与用户期望性能指标所示的计算设备资源之间的裕量,该当前性能裕量可以是表示延时性能指标的性能裕量,也可以是表示存储性能指标的性能裕量,或是表示计算机设备计算时所消耗的其它类型性能指标的性能裕量。具体的,上述表示延时性能指标的性能裕量指计算设备运行至当前的检查节点时实际消耗的计算消耗时长和用户期望的计算消耗时长之间的裕量;上述表示存储指标的性能裕量指计算设备运行至当前的检查节点时实际消耗的内存大小和用户期望消耗的内存大小之间的裕量。在实际应用中,若实际消耗的计算设备资源大于或等于用户期望性能指标所示的计算设备资源时,表示当前性能裕量不充足,若实际消耗的计算设备资源小于用户期望性能指标所示的计算设备资源时,表示当前性能裕量充足。本实施例中,当计算机设备运行至每一个当前的检查节点时,计算机设备可以通过执行该检查节点上的代码获取到计算设备的当前性能裕量,以便之后计算机设备根据该当前性能裕量,对检查点之后的计算节点进行不同方法的优化,从而使优化后的计算节点在被执行时可以充分利用计算设备的资源。
S104、根据当前性能裕量,确定优化策略。
其中,优化策略用于对检查节点之后的计算节点所需消耗的资源进行优化,使之后的计算节点在被执行时所消耗的资源能够满足用户需求或与计算设备的性能指标匹配。本实施例中,当计算机设备通过当前的检查节点获取当前性能裕量时,可以通过判断当前性能裕量是否充足,从而根据判断结果选择不同的优化策略,以动态优化计算图中检查节点之后的计算节点。例如,若表示延时性能指标的当前性能裕量充足,则可以采用减少内存的优化策略进行编译和运行,以降低计算机设备存储时的性能消耗,使计算机设备各方面的性能指标均能够满足用户需求,若表示延时性能指标的当前延时性能裕量不充足,则可以采用减少访问延时高的访存操作的优化策略进行编译和运行,以降低计算机设备计算时的延时性能消耗,使计算机设备各方面的性能指标均能够满足用户需求。相应的,若表示存储性能指标的当前性能裕量充足,则可以采用减少访问延时高的访存操作的优化策略进行编译和运行,以降低计算机设备计算时的延时性能消耗;若表示存储性能指标的当前性能裕量充足,以降低计算机设备存储时的性能消耗。
S105、根据优化策略对当前的检查节点之后的计算节点进行优化。
本实施例中,当计算机设备根据当前性能裕量确定优化策略后,即可根据该优化策略对当前的检查节点之后的计算节点上的参数或变量进行优化,例如,计算机设备可以改变计算节点上参数或变量的存储方式,从而改变该计算节点读取或写入数据时的时间长度,进而改变计算机设备运行至该计算节点时的计算时间,以改善计算设备的延时性能,完成对该计算节点的优化。又例如,计算机设备还可以拆分计算节点,使一个计算节点所消耗的资源分成多个计算节点所消耗的资源,以减轻计算设备运行至各计算节点时的资源消耗负担,完成对该计算节点的优化。
本实施例提供的计算图的优化方法,通过获取包括多个计算节点的计算网络模型的计算图,再在计算图中插入至少一个检查节点,并当运行至每一个检查节点时,通过当前的检查节点获取当前性能裕量,然后根据当前性能裕量,确定优化策略,以及根据该优化策略对当前的检查节点之后的计算节点所需消耗资源进行优化。上述优化方法通过插入检查节点获取计算机设备在运行到各检查节点时的当前性能裕量,然后根据当前性能裕量,选择符合计算机设备实际运行情况的优化策略对检查节点之后的计算节点所需消耗资源进行优化,使计算机设备运行至上述计算节点的过程中,可以动态调整计算图中各计算节点计算时的资源使用情况,以满足用户针对该计算图提出的性能指标需求,以及提高计算机设备上的资源利用率。
在一个实施例中,上述当前性能裕量包括表示延时性能指标的性能裕量,即当前延时性能裕量,在该应用场景下,本申请提供了上述S104的一种实现方式,该方法包括:若当前延时性能裕量充足,则将存储优化策略确定为优化策略;存储优化策略用于减少计算节点在计算时占用的内存。
本实施例涉及计算机设备获取到当前延时性能裕量充足的应用场景,说明计算机设备此时所需的计算消耗时长比较充裕,还能够满足后期计算节点的计算需求,在该种应用下,计算机设备可以不关注计算节点在计算时的计算消耗时长问题,可以重点关注计算节点在计算时占用的内存情况,以优化计算设备上的内存资源,避免计算机设备内存被占用过大,从而影响计算机设备的计算性能,进而影响计算图被执行的计算速度。
可选地,上述存储优化策略具体可以包括:将检查节点之后的计算节点在计算时产生的数据存储至高访问延迟的存储空间;高访问延迟的存储空间至少包括全局内存和片外存储器。
上述计算节点在计算时产生的数据可以包括计算中所需的中间结果和临时变量。当计算机设备根据存储优化策略对检查节点之后的计算节点进行优化时,具体可以将检查节点之后的计算节点在计算时产生的数据存储至高访问延迟的存储空间,例如,GPU的全局内存或TPU的片外存储等,以减少计算机设备内存的占用率,从而提高计算机设备的计算速度。
可选地,基于上述实施例,若当前延时性能裕量不充足,则将延时优化策略确定为优化策略;延时优化策略用于减少计算节点在计算时的计算消耗时长。
本实施例涉及计算机设备获取到当前延时性能裕量不充足的应用场景,说明计算机设备此时所需的计算消耗时长比较紧张,可能不能够满足后期计算节点的计算需求,在该种应用下,计算机设备需要重点关注计算节点在计算时的计算消耗时长问题,可以不关注计算节点在计算时占用的内存问题,以优化计算设备的延时性能,避免计算节点在计算时消耗的时长过长,从而影响计算图被执行的计算速度。
可选地,上述延时优化策略具体可以包括:将检查节点之后的计算节点在计算时产生的数据存储至低访问延迟的存储空间;低访问延迟的存储空间至少包括缓存空间和片内存储。
本实施例中,当计算机设备根据延时优化策略对检查节点之后的计算节点进行优化时,具体可以将检查节点之后的计算节点在计算时产生的数据存储至低访问延迟的存储空间,例如,计算机设备的内存或缓存等,以减少计算节点在计算时访问存储空间的时间,从而提高计算节点的计算速度,进而提高计算机设备的计算速度。
在一个实施例中,上述当前性能裕量包括表示存储性能指标的性能裕量,即当前存储性能裕量,在该应用场景下,本申请提供了上述S104的一种实现方式,该方法包括:若当前存储性能裕量充足,则将延时优化策略确定为优化策略;延时优化策略用于减少所述计算节点在计算时的消耗时长。
本实施例涉及计算机设备获取到当前存储性能裕量充足的应用场景,说明计算机设备此时所需的内存资源比较充裕,还能够满足后期计算节点的计算需求,在该种应用下,计算机设备需要重点关注计算节点在计算时的计算消耗时长问题,可以不关注计算节点在计算时占用的内存问题,以优化计算设备的延时性能,避免计算节点在计算时消耗的时长过长,从而影响计算图被执行的计算速度。
可选地,基于上述实施例,若当前存储性能裕量不充足,则将存储优化策略确定为优化策略;存储优化策略用于减少计算节点在计算时占用的内存。
本实施例涉及计算机设备获取到当前存储性能裕量不充足的应用场景,说明计算机设备此时所需的内存资源比较紧张,可能不能够满足后期计算节点的计算需求,在该种应用下,计算机设备需要重点关注计算节点在计算时时占用的内存问题,可以不关注计算节点在计算时消耗时长问题,以优化计算设备的存储性能,避免计算节点在计算时内存占用过多,从而影响计算图被执行的计算速度。
可选地,在实际应用中,基于上述的延时优化策略,如图2A所示,该延时优化策略还可以包括:
S1041、获取当前的检查节点之后的计算节点在计算时产生的数据的大小。
本实施例适用于计算机设备上的内存或缓存不能够满足计算节点计算所需的内存或缓存时的应用场景,在该种应用场景下,当计算机设备确定的优化策略为延时优化策略时,可以先获取当前的检查节点之后的计算节点在计算时产生的数据大小,以便之后根据该数据大小预估计算机设备上的内存或缓存是否满足计算要求。
S1042、将计算节点在计算时产生的数据的大小与预设存储空间的大小进行比较,若计算节点在计算时产生的数据的大小超出预设存储空间的大小,则执行步骤S1043,若计算节点在计算时产生的数据的大小未超出预设存储空间的大小,则执行步骤S1044。
本实施例中,当计算机设备获取到计算节点在计算时产生的数据的大小时,可以进一步的将计算节点在计算时产生的数据的大小与预设存储空间的大小进行比较,得到比较结果,然后根据该比较结果选择不同的延时优化策略对当前的检查节点之后的计算节点进行优化处理。上述预设存储空间可以为低访问延迟的存储空间,例如计算机设备的内存和/或缓存空间。上述比较结果包括:计算节点在计算时产生的数据的大小超出预设存储空间的大小,此时说明计算机设备上现有的存储空间不能满足计算节点计算所需,以及计算节点在计算时产生的数据的大小未超出预设存储空间的大小,此时说明计算机设备上现有的存储空间还比较宽裕,能够满足计算节点计算所需。
S1043、拆分当前的检查节点之后的计算节点,并将拆分后的计算节点在计算时产生的数据存储至低访问延迟的存储空间。
本实施例涉及上述比较结果为计算节点在计算时产生的数据的大小超出预设存储空间的大小的应用场景,在该种应用下,计算机设备可以拆分检查节点之后的计算节点,并将拆分后的计算节点在计算时产生的数据存储至低访问延迟的存储空间,即计算机设备上的内存和/或缓存中。因为上述计算节点已被拆分,因此,计算机设备上现有的存储空间即可满足拆分后的各计算节点计算时所需的预设存储空间的大小。
S1044、将当前的检查节点之后的计算节点在计算时产生的数据存储至低访问延迟的存储空间。
本实施例涉及上述比较结果为计算节点在计算时产生的数据的大小未超出预设存储空间的大小的应用场景,在该种应用下,计算机设备可以直接将检查节点之后的计算节点在计算时产生的数据存储至低访问延迟的存储空间。该步骤与前述描述延时优化策略时的步骤相同,详细内容请参见前述说明,在此不重复累赘说明。
图3为图2实施例中S103的一种实现方式的流程图,如图3所示,上述S103中的“通过当前的检查节点获取当前性能裕量”,包括:
S201、获取当前的检查节点之前的所有计算节点的第一总目标计算消耗时长和总实际计算消耗时长。
其中,第一总目标计算消耗时长表示当前的检查节点之前所有计算节点在计算时,用户期望的该所有计算节点累计的计算消耗时长。总实际消耗时长表示计算机设备运行至当前的检查节点时,该当前的检查节点之前的所有计算节点计算时累计的实际计算消耗的时长。当计算机设备需要获取当前性能裕量时,可以先获取当前的检查节点之前的所有计算节点的第一总目标计算消耗时长和总实际计算消耗时长,以便之后根据该第一总目标计算消耗时长和总实际计算消耗时长确定当前性能裕量。
S202、根据第一总目标计算消耗时长和总实际计算消耗时长,确定当前性能裕量。
当计算机设备获取到第一总目标计算消耗时长和总实际计算消耗时长,可以直接将该第一总目标计算消耗时长和总实际计算消耗时长进行差值运算,得到当前性能裕量;可选地,也可以将第一总目标计算消耗时长和总实际计算消耗时长分别加权后再进行差值运算,得到当前性能裕量。
可选地,如图4所示,上述S201中的“获取当前的检查节点之前的所有计算节点的第一总目标计算消耗时长”的一种方法具体可以包括:
S301、获取当前的检查节点所在路径上的所有计算节点的第二总目标计算消耗时长;
其中,第二总目标计算消耗时长表示当前的检查节点所在路径上的所有计算节点在计算时,用户期望的累计的计算消耗时长。当计算机设备需要获取当前的检查节点之前的所有计算节点的第一总目标计算消耗时长时,可以先获取当前的检查节点所在路径上的所有计算节点的第二总目标计算消耗时长,之后再根据该第二总目标计算消耗时长确定第一总目标计算消耗时长。
S302、根据第二总目标计算消耗时长和预设比例,确定第一总目标计算消耗时长;预设比例为当前的检查节点之前的所有计算节点的总计算消耗时长在所述检查节点所在路径上的所有计算节点的总计算消耗时长中所占比例。
其中,预设比例可以由计算机设备预先获取,具体的可以通过多种方法得到,例如,计算机设备可以预先计算计算图中各计算节点的计算量,再基于各计算节点的计算量估计各计算节点的计算消耗时长,最后通过当前检查节点之前的计算节点的总的计算消耗时长,以及所有计算节点的总的计算消耗时长,确定预设比例。再例如,计算机设备还可以采用现有的消耗时长估计模型,预估各计算节点的计算消耗时长,再相应的通过当前检查节点之前的计算节点的总的计算消耗时长,以及所有计算节点的总的计算消耗时长,确定预设比例。可选的,预设比例还可以采用其它方法确定,对此本实施例不做限定。
本实施例中,当计算机设备获取到当前的检查节点所在路径上所有计算节点的预设计算消耗时长,即第二总目标计算消耗时长,以及预设比例时,可以将第二总目标计算消耗时长和预设比例进行乘法运算,得到第一总目标计算消耗时长。例如,第二总目标计算消耗时长为10小时,预设比例为1/2,则对应的第一总目标计算消耗时长为5小时。可选地,计算机设备也可以将第二总目标计算消耗时长和预设比例进行加权后,再进行乘法运算,得到第一总目标计算消耗时长。
图5为图2实施例中S102的一种实现方式的流程图,如图5所示,上述S102中的“在计算图中插入至少一个检查节点”,包括:
S401、获取计算图中最长路径上计算节点的消耗时长比例。
本实施例中,计算机设备可以先根据计算图中各计算节点的布局方式确定其中的最长路径,再获取该最长路径上各计算节点的计算消耗时长,然后可以根据各计算节点的计算消耗时长进行比例运算,得到该最长路径上计算节点的计算消耗时长比例。
S402、根据计算消耗时长比例,在最长路径上确定至少一个检查节点的插入位置。
本实施例中,为了平衡最长路径上各计算节点的计算消耗时长,计算机设备在插入检查节点时,可以根据计算消耗时长比例,在最长路径上确定至少一个检查节点的插入位置,使该位置上插入的检查节点之前的所有计算节点和之后的所有计算节点的总的计算消耗时长相等。当然,也可以使该位置上插入的检查节点之前的所有计算节点和之后的所有计算节点的总的计算消耗时长不完全相等,使检查节点之前的所有计算节点和之后的所有计算节点的总的计算消耗时长之差在预设时长范围内即可。
S403、在至少一个检查节点的插入位置处,插入至少一个检查节点。
当计算机设备在最长路径上确定了至少一个检查节点的插入位置时,即可在至少一个检查节点的插入位置处,插入至少一个检查节点,以便之后通过该检查节点优化之后的计算节点。
可选地,基于上述实施例,本申请提供了计算机设备获取计算消耗时长比例的一种具体方式,如图6所示,上述S401“获取计算图中最长路径上计算节点的计算消耗时长比例”的一种方法具体可以包括:
S501、获取最长路径上各计算节点的计算量。
当计算机设备通过编译计算网络模型,得到对应的计算图时,即可根据各计算节点包含的计算步骤等信息获取到该计算图中各计算节点的计算量。因此,本实施例中,计算机设备可以先确定计算图中的最长路径,再确定该最长路径上包含的各计算节点,然后即可根据最长路径上各计算节点包含的计算步骤等信息,得到最长路径上各计算节点的计算量。
S502、根据各计算节点的计算量获取最长路径上各计算节点的计算消耗时长。
当计算机设备获取到最长路径上各计算节点的计算量时,可以进一步的根据各计算节点的计算量的大小,预估各计算节点的计算消耗时长,从而得到最长路径上各计算节点的计算消耗时长。上述各计算节点的计算量越大,预估的各计算节点的计算消耗时长越长,各计算节点的计算量越小,预估的各计算节点的计算消耗时长越小。
S503、根据最长路径上各计算节点的计算消耗时长,确定最长路径上各计算节点的计算消耗时长比例。
当计算机设备获取到最长路径上各计算节点的计算消耗时长时,即可对各计算节点的计算消耗时长进行比例运算,得到最长路径上各计算节点的计算消耗时长比例。
可选地,本申请提供了计算机设备获取计算消耗时长比例的另一种具体方式,如图7所示,上述S401“获取计算图中最长路径上各计算节点的计算消耗时长比例”的另一种方法具体可以包括:
S601、构建消耗时长预估模型。
当计算机设备需要获取最长路径上各计算节点的计算消耗时长比例时,可以先构建消耗时长预估模型,用于分析各计算节点包含的计算步骤等信息预估各计算节点的计算量。需要说明的是,上述消耗时长预估模型可以为预先训练好的预估模型,属于现有技术,对此不具体累赘说明。
S602、采用消耗时长预估模型,获取最长路径上各计算节点的计算消耗时长。
当计算机设备构建完成消耗时长预估模型时,即可采用该消耗时长预估模型通过分析最长路径上各计算节点的计算步骤等信息,预估出最长路径上各计算节点的计算消耗时长。
S603、根据最长路径上各计算节点的计算消耗时长,确定最长路径上各计算节点的计算消耗时长比例。
本实施例S603的步骤与上述S503的步骤内容相同,详细内容请参见前述说明,在此不重复累赘说明。
在一个实施例中,还提供了上述S402步骤的具体实现方式,如图8所示,上述S402“根据计算消耗时长比例,在最长路径上确定至少一个检查节点的插入位置”,包括:
S701、根据计算消耗时长比例,将最长路径均分成预设数量的多个子路径。
其中,预设数量表示在最长路径上预插入检查节点的数量,该预设数量可以由计算机设备预先根据最长路径的长短或实际应用需求确定。本实施例中,当计算机设备确定了插入检查节点的预设数量时,可以进一步的通过分析该最长路径上计算节点的计算消耗时长比例,将该最长路径均分成预设数量的多个子路径,使各子路径上的计算节点的计算消耗时长均衡。
S702、在多个子路径中选择至少一个子路径作为插入检查点的插入位置。
当计算机设备将最长路径均分成预设数量的多个子路径,即可在多个子路径中选择至少一个子路径作为插入检查点的插入位置,其中选择的子路径之前的所有计算节点和之后的所有计算节点的总的计算消耗时长尽可能的相等,以平衡最长路径上各计算节点的计算消耗时长。
示例性说明上述图8实施例所述的确定检查节点的插入位置的方法,如图8A所示的计算图(未插入检查节点时的计算图),该计算图中的最长路径上计算节点1、计算节点2、和计算节点3,已知计算节点1、计算节点2、和计算节点3的计算消耗时长比例是1:5:6,则通过分析该计算消耗时长比例,将该最长路径均匀划分为2份,使计算节点1和计算节点2的计算消耗时长总长(6小时),与计算节点3的计算消耗时长(6小时)相等,则可以具体在计算节点2和计算节点3之间插入检查节点a(如图8B所示)。
图9为图2实施例中S102的另一种实现方式的流程图,如图9所示,上述S102中的“在计算图中插入至少一个检查节点”,包括:
S801、获取计算图中间隔至少一个计算节点的始端计算节点和末端计算节点。
当计算图中存在跨计算节点的路径时,可以获取该路径上的始端计算节点和末端计算节点,以便之后在始端计算节点和末端计算节点之间插入检查节点。需要说明的是,跨计算节点的数量可以是一个,也可以是多个,对此本实施例不做限定。
S802、在始端计算节点和末端计算节点的中间位置插入至少一个检查节点。
当计算机设备确定了始端计算节点和末端计算节点时,即可在始端计算节点和末端计算节点的中间位置插入至少一个检查节点。示例性说明上述图9实施例所述的在计算图中插入至少一个检查节点的方法,如图8A所示的计算图(未插入检查节点时的计算图),该计算图中的最长路径上计算节点1、计算节点2、和计算节点3,其中计算节点1和计算节点3之间跨计算节点2,则计算节点1为始端计算节点,计算节点3为末端计算节点,则对应在计算节点1和计算节点3的中间位置插入一个检查节点b(如图9A所示)。
图10为图2实施例中S101的一种实现方式的流程图,如图10所示,上述S101中的“获取计算网络模型的计算图”,包括:
S901、加载计算网络模型的拓扑结构和参数。
在实际应用中,当计算机设备的编译器可以通过加载计算网络模型的拓扑结构和参数进行编译的方法获取到计算网络模型的计算图。
S902、对计算网络模型的拓扑结构和参数进行编译,得到计算网络模型的计算图。
当计算机设备的编译器载入计算网络模型的拓扑结构和参数时,可以进行编译,得到该计算网络模型的计算图,以便之后运行该计算图的过程中优化该计算图的计算消耗资源。
综上,本申请还提供了一种计算图的优化方法,如图11所示,该方法包括:
S1001、加载计算网络模型的拓扑结构和参数。
S1002、对计算网络模型的拓扑结构和参数进行编译,获取到计算网络模型的计算图。
S1003、获取计算图中最长路径上各计算节点的计算消耗时长比例。
S1004、根据计算消耗时长比例,在最长路径上确定至少一个检查节点的插入位置。
S1005、在至少一个检查节点的插入位置处,插入至少一个所述检查节点。
S1006、获取计算图中间隔至少一个计算节点的始端计算节点和末端计算节点。
S1007、在始端计算节点和末端计算节点的中间位置插入至少一个检查节点。
S1008、当运行至每一个检查节点时,通过当前的检查节点获取当前延时性能裕量。
S1009、判断当前延时性能裕量是否充足,若当前延时性能裕量充足,则执行步骤S1010;若当前延时性能裕量不充足,则执行步骤S1011。
S1010、选择存储优化策略对当前的检查节点之后的计算节点进行优化;存储优化策略包括:将当前的检查节点之后的计算节点在计算时产生的数据存储至高访问延迟的存储空间。
S1011、获取当前的检查节点之后的计算节点在计算时产生的数据的大小,并将计算节点在计算时产生的数据的大小与预设存储空间的大小进行比较,若计算节点在计算时产生的数据的大小超出预设存储空间的大小,则执行步骤S1012,若计算节点在计算时产生的数据的大小未超出存储内存大小,则执行步骤S1013。
S1012、拆分当前的检查节点之后的计算节点,并将拆分后的计算节点在计算时产生的数据存储至低访问延迟的存储空间。
S1013、将当前的检查节点之后的计算节点在计算时产生的数据存储至低访问延迟的存储空间。
综上所有实施例,示例性说明其优化方法的步骤,例如,以如图8B所示的计算图为例进行说明,假设图8B中最长路径上计算节点1、计算节点2、和计算节点3的总的预设计算消耗时长为T,内存占用为M,计算机设备通过计算量或预估时长计算模型预估出的计算节点1、计算节点2、和计算节点3的计算消耗时长比例为1:5:6,设定预设时长阈值为th,则当计算机设备运行至检查节点a时,检查节点a之前的计算节点1和计算节点2实际计算消耗时长为Tr,则当前延时性能裕量为T*6/12-Tr,若T*6/12-Tr>th,则对应采用存储优化策略对检查节点之后的计算节点进行优化,具体的将计算节点3中计算所需的中间结果或临时变量存入高访问延迟存储空间(片外GPU存储空间或TPU存储空间);若T*6/12-Tr≤th,则对应采用延时优化策略对检查节点之后的计算节点进行优化,具体将计算节点3中计算所需的中间结果或临时变量存入低访问延迟存储空间(内存或缓存),在存入之前,可以先判断计算节点3计算所需内存空间或缓存空间的大小是否大于现有内存空间或缓存空间M,若大于,则对应采用其它延时优化策略,比如,拆分计算节点3,并将拆分后的计算节点中计算所需的中间结果或临时变量存入低访问延迟存储空间(内存或缓存)。
应该理解的是,虽然图2-11的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-11中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行。
在一个实施例中,如图12所示,提供了一种计算图的优化装置,包括:第一获取模块11、插入模模块12、第二获取模块13、确定模块14和优化模块15,其中:
第一获取模块11,用于获取计算网络模型的计算图;计算图中包括多个计算节点;
插入模块12,用于在计算图中插入至少一个检查节点;
第二获取模块13,用于当运行至每一个检查节点时,通过当前的检查节点获取当前延时性能裕量;
确定模块14,用于根据当前延时性能裕量,确定优化策略;
优化模块15,用于根据优化策略对当前的检查节点之后的计算节点进行优化。
关于计算图的优化装置的具体限定可以参见上文中对于一种计算图的优化方法的限定,在此不再赘述。上述计算图的优化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取计算网络模型的计算图;计算图中包括多个计算节点;
在计算图中插入至少一个检查节点;
当运行至每一个检查节点时,通过当前的检查节点获取当前延时性能裕量;
根据当前延时性能裕量,确定优化策略;
根据优化策略对当前的检查节点之后的计算节点进行优化。
上述实施例提供的一种计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时还实现以下步骤:
获取计算网络模型的计算图;计算图中包括多个计算节点;
在计算图中插入至少一个检查节点;
当运行至每一个检查节点时,通过当前的检查节点获取当前延时性能裕量;
根据当前延时性能裕量,确定优化策略;
根据优化策略对当前的检查节点之后的计算节点进行优化。
上述实施例提供的一种计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。