CN115167937A - 模型调用方法、装置、设备及存储介质 - Google Patents

模型调用方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN115167937A
CN115167937A CN202210775509.8A CN202210775509A CN115167937A CN 115167937 A CN115167937 A CN 115167937A CN 202210775509 A CN202210775509 A CN 202210775509A CN 115167937 A CN115167937 A CN 115167937A
Authority
CN
China
Prior art keywords
model
loading
subset
loaded
execution
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
Application number
CN202210775509.8A
Other languages
English (en)
Inventor
吴晓强
暴天鹏
吴立威
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Sensetime Technology Co Ltd
Original Assignee
Shenzhen Sensetime Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Sensetime Technology Co Ltd filed Critical Shenzhen Sensetime Technology Co Ltd
Priority to CN202210775509.8A priority Critical patent/CN115167937A/zh
Publication of CN115167937A publication Critical patent/CN115167937A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开实施例提供了一种模型调用方法、装置、设备及存储介质,其中,所述方法包括:获取设定的任务流中当前待执行的任务节点;从任务流对应的网络模型集中,确定该任务节点对应的目标模型;其中,网络模型集包括第一模型子集和第二模型子集,第一模型子集中的每一第一模型的加载方式为固定加载,第二模型子集中的每一第二模型的加载方式为动态加载;在设定的存储空间中未加载目标模型的情况下,基于设定的动态加载机制,将目标模型动态加载至存储空间中,并调用存储空间中已加载的目标模型执行该任务节点;其中,存储空间用于存储固定加载的每一第一模型和当前动态加载的至少一个第二模型。

Description

模型调用方法、装置、设备及存储介质
技术领域
本公开涉及但不限于人工智能技术领域,尤其涉及一种模型调用方法、装 置、设备及存储介质。
背景技术
随着深度学习等技术的发展,深度学习算法在很多应用领域取得了落地。 在许多应用领域中,比如工业领域等,通过一个实现深度学习算法的网络模型 来完成一个项目中的所有算法任务是比较困难的。因而,相关技术中通常将一 个项目中的算法任务拆解成多个任务节点,每个任务节点针对性地使用一种网 络模型去执行,从而可以由局部到整体来满足整体项目的需求。
但是,相关技术中随着项目的不断推进,项目中包含的任务节点越来越多, 对应的网络模型的个数也随之增长,加载并运行网络模型所需占用的存储空间 也不断增长,从而在存储空间不足以加载所有网络模型的情况下,会导致整体 项目将无法正常运行,影响项目运行的稳定性。
发明内容
有鉴于此,本公开实施例至少提供一种模型调用方法、装置、设备及存储 介质。
本公开实施例的技术方案是这样实现的:
本公开实施例提供一种模型调用方法,所述方法包括:
获取设定的任务流中当前待执行的任务节点;
从所述任务流对应的网络模型集中,确定所述任务节点对应的目标模型; 其中,所述网络模型集包括第一模型子集和第二模型子集,所述第一模型子集 中的每一第一模型的加载方式为固定加载,所述第二模型子集中的每一第二模 型的加载方式为动态加载;
在设定的存储空间中未加载所述目标模型的情况下,基于设定的动态加载 机制,将所述目标模型动态加载至所述存储空间中,并调用所述存储空间中已 加载的所述目标模型执行所述任务节点;其中,所述存储空间用于存储固定加 载的每一所述第一模型和当前动态加载的至少一个所述第二模型。
本公开实施例提供一种模型调用装置,所述装置包括:
获取模块,用于获取设定的任务流中当前待执行的任务节点;
第一确定模块,用于从所述任务流对应的网络模型集中,确定所述任务节 点对应的目标模型;其中,所述网络模型集包括第一模型子集和第二模型子集, 所述第一模型子集中的每一第一模型的加载方式为固定加载,所述第二模型子 集中的每一第二模型的加载方式为动态加载;
调用模块,用于在设定的存储空间中未加载所述目标模型的情况下,基于 设定的动态加载机制,将所述目标模型动态加载至所述存储空间中,并调用所 述存储空间中已加载的所述目标模型执行所述任务节点;其中,所述存储空间 用于存储固定加载的每一所述第一模型和当前动态加载的至少一个所述第二模 型。
本公开实施例提供一种计算机设备,包括存储器和处理器,所述存储器存 储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方 法中的部分或全部步骤。
本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该 计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
本公开实施例提供一种计算机程序,包括计算机可读代码,当所述计算机 可读代码在计算机设备中运行时,所述计算机设备中的处理器执行用于实现上 述方法中的部分或全部步骤。
本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了 计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并 执行时,实现上述方法中的部分或全部步骤。
本公开实施例中,通过获取设定的任务流中当前待执行的任务节点,从该 任务流对应的网络模型集中确定该任务节点对应的目标模型,并在设定的存储 空间中未加载所述目标模型的情况下,基于设定的动态加载机制,将所述目标 模型动态加载至所述存储空间中,并调用所述存储空间中已加载的所述目标模 型执行所述任务节点,其中,网络模型集包括第一模型子集和第二模型子集, 第一模型子集中的每一第一模型的加载方式为固定加载,第二模型子集中的每 一第二模型的加载方式为动态加载,存储空间用于存储固定加载的每一所述第 一模型和当前动态加载的至少一个所述第二模型。这样,一方面,在执行各任 务节点的过程中,可以根据实际应用场景,采用合适的动态加载机制在设定的 存储空间中动态加载任务流对应的网络模型集中的至少一个第一模型,从而可 以支持在存储空间容量有限的情况下正常运行任务流中的每一任务节点,减少 存储空间耗尽导致任务运行异常的问题,进而可以提高任务流执行的稳定性和 可靠性;另一方面,通过将任务流对应的网络模型集中的第一模型固定加载至 存储空间中,可以减少第一模型再次被调用的情况下的推理耗时,从而可以提 高对应的任务节点的执行效率,进而提高整个任务流的执行效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的, 而非限制本公开的技术方案。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符 合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1A为本公开实施例提供的一种模型调用方法的实现流程示意图;
图1B为本公开实施例提供的一种任务流的示意图;
图2为本公开实施例提供的一种模型调用方法的实现流程示意图;
图3为本公开实施例提供的一种模型调用方法的实现流程示意图;
图4为本公开实施例提供的一种模型调用方法的实现流程示意图;
图5A为本公开实施例提供的一种模型调用方法的实现流程示意图;
图5B为本公开实施例提供的一种模型剪枝的实现示意图;
图5C为本公开实施例提供的一种执行依赖图中边和第二模型的连通情况 的示意图;
图6为本公开实施例提供的一种模型调用装置的组成结构示意图;
图7为本公开实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面结合附图和实施例 对本公开的技术方案进一步详细阐述,所描述的实施例不应视为对本公开的限 制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施 例,都属于本公开保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集, 但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集, 并且可以在不冲突的情况下相互结合。
所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象 的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的 顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述 的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术 领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公 开的目的,不是旨在限制本公开。
本公开实施例提供一种模型调用方法,该方法可以由计算机设备的处理器 执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计 算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个 人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。 图1A为本公开实施例提供的一种模型调用方法的实现流程示意图,如图1A所 示,该方法包括如下步骤S101至步骤S103:
步骤S101,获取设定的任务流中当前待执行的任务节点。
这里,任务流可以是预先根据实际应用场景设定的,可以包括待执行的至 少两个任务节点,以及每一任务节点之间的执行顺序。在实施时,可以根据任 务流中每一任务节点之间的执行顺序,遍历任务流中的每一任务节点,以获取 任务流中当前待执行的任务节点。
在一些实施方式中,任务流可以是一个有向无环的任务管道流(Pipeline), 该任务管道流可以将采用不同类型的网络模型实现的算法处理子过程抽象为一 个任务节点,每一任务节点可以对应一个网络模型,将每一网络模型前后进行 的通用数据处理子过程(如模型输入数据过滤、模型输出结果过滤等)抽象为 一个通用处理节点,将各任务节点及通用处理节点之间的依赖关系抽象为该任 务管道流中的边。图1B为本公开实施例提供的一种任务流的示意图,如图1B 所示,该任务流中包括三个任务节点(即部件检测11、第一类缺陷分类12、第 二类缺陷分类13),六个通用处理节点(即阈值过滤21、结果过滤22、概率分段线性映射23、阈值过滤24、取概率最大的检测框25、概率分段线性映射26) 和多条表征各任务节点及通用处理节点之间的依赖关系的边31。
步骤S102,从所述任务流对应的网络模型集中,确定所述任务节点对应的 目标模型;其中,所述网络模型集包括第一模型子集和第二模型子集,所述第 一模型子集中的每一第一模型的加载方式为固定加载,所述第二模型子集中的 每一第二模型的加载方式为动态加载。
这里,任务流中的每一任务节点可以对应一个网络模型,每一任务节点对 应的网络模型的集合即为该任务流对应的网络模型集。从该网络模型集中可以 确定当前待执行的任务节点对应的目标模型。
任务流中的每一任务节点对应的网络模型可以是实现该任务节点对应的算 法处理子过程的任意合适的模型。在实施时,本领域技术人员可以根据任务节 点对应的算法处理子过程选择合适的网络模型,这里并不限定。例如,在任务 节点对应的算法处理子过程为对工业部件的缺陷进行检测的过程的情况下,该 任务节点对应的网络模型可以是缺陷检测模型;在任务节点对应的算法处理子 过程为对图像中的目标对象进行分割的过程的情况下,该任务节点对应的网络 模型可以是图像分割模型;在任务节点对应的算法处理子过程为对语音中的语 义进行识别的过程的情况下,该任务节点对应的网络模型可以是语义识别模型。
网络模型集可以包括第一模型子集和第二模型子集。第一模型子集中包括 至少一个第一模型,每一第一模型的加载方式为固定加载。第二模型子集中包 括至少一个第二模型,每一第二模型的加载方式为动态加载。
在任务流的整个执行过程中,固定加载的第一模型在加载后不会从存储空 间中释放,动态加载的第二模型会根据设定的动态加载机制被动态加载至存储 空间中或者从存储空间中释放。在实施时,可以采用任意合适的方式从网络模 型集中确定第一模型子集和第二模型子集,并预先将第一模型子集中的每一第 一模型均固定加载至设定的存储空间中。
在一些实施方式中,可以采用随机划分的方式将网络模型集划分为第一模 型子集和第二模型子集。在一些实施方式中,可以根据网络模型集中每一网络 模型的存储占用量,将网络模型集中存储占用量最大的设定数量的网络模型添 加至第一模型子集中,并将剩余的网络模型添加至第二模型子集中。这样,可 以将存储占用量最大的设定数量的网络模型的加载方式确定为固定加载,从而 可以减少存储占用量较大的网络模型再次被调用的情况下的推理耗时,提高对 应的任务节点的执行效率,进而提高整个任务流的执行效率。
步骤S103,在设定的存储空间中未加载所述目标模型的情况下,基于设定 的动态加载机制,将所述目标模型动态加载至所述存储空间中,并调用所述存 储空间中已加载的所述目标模型执行所述任务节点;其中,所述存储空间用于 存储固定加载的每一所述第一模型和当前动态加载的至少一个所述第二模型。
这里,存储空间可以是预先根据实际业务场景设定的。存储空间可以包括 但不限于内存、显存等中的至少之一,本公开实施例对此并不限定。
存储空间可以用于存储固定加载的每一第一模型和当前动态加载的至少一 个第二模型。在一些实施方式中,可以从存储空间中选取第一子空间和第二子 空间,并将第一子空间用于存储固定加载的每一第一模型,将第二子空间用于 存储动态加载的至少一个第二模型。在实施时,可以基于第一模型子集中每一 第一模型的存储占用量,确定第一子空间的存储容量;可以基于第二模型子集 中每一第二模型的存储占用量以及存储空间中除第一子空间之外剩余的存储容 量,确定缓存空间的存储容量。
加载网络模型指的是在存储空间中分配用于存储该网络模型、该网络模型 的模型参数以及模型推理过程中用到的中间结果等的空间,并将该网络模型以 及相应的模型参数等存储至该空间中的过程。在一些实施方式中,将网络模型 加载至存储空间中后,可以为该网络模型生成一个模型句柄,利用该模型句柄 可以从存储空间中调用并运行该网络模型以执行对应的任务节点。
动态加载指的是根据需要将网络模型加载至存储空间中。在实施时,本领 域技术人员可以根据实际应用场景设定合适的动态加载机制,并根据该动态加 载机制将目标模型动态加载至存储空间中。例如,动态加载机制可以包括但不 限于基于存储空间的存储容量与网络模型集中每一网络模型的存储占用量之间 的大小关系、该存储空间中当前已加载的至少一个第二模型的优先级与目标模 型的优先级之间的高低关系、该存储空间中当前已加载的至少一个第二模型在 该任务流中的推理次数与目标模型在该任务流中的推理次数之间的大小关系、 该存储空间中当前已加载的至少一个第二模型的历史执行次数与目标模型的历 史执行次数之间的大小关系等中的至少之一,确定是否将目标模型加载至该存 储空间中和/或将该存储空间中当前已加载的至少一个第二模型从该存储空间 中释放。
在一些实施方式中,存储空间的存储容量大于网络模型集中当前已加载的 每一第一模型及第二模型的存储占用量的总和;在该存储空间中未加载目标模 型的情况下,可以将该目标模型加载至该存储空间中。
在一些实施方式中,存储空间的存储容量小于或等于网络模型集中当前已 加载的每一第一模型及第二模型的存储占用量的总和;在该存储空间中未加载 目标模型的情况下,可以将该存储空间中当前已加载的至少一个第二模型从该 存储空间中释放,并将该目标模型加载至该存储空间中。在实施时,可以根据 实际情况采用合适的方式从该存储空间中选择释放至少一个当前已加载的第二 模型,这里并不限定。例如,可以将该存储空间中当前已加载的各第二模型中 优先级最低的第二模型从该存储空间中释放;也可以将该存储空间中当前已加 载的各第二模型中优先级低于该目标模型的第二模型从该存储空间中释放;还 可以将该存储空间中当前已加载的各第二模型中在该任务流中的推理次数小于 该目标模型在该任务流中的推理次数的第二模型从该存储空间中释放;还可以 将该存储空间中当前已加载的各第二模型中历史执行次数小于该目标模型的历 史执行次数的第二模型从该存储空间中释放。
在一些实施方式中,在设定的存储空间中已加载所述目标模型的情况下, 可以直接调用所述存储空间中已加载的所述目标模型执行所述任务节点。
本公开实施例中,通过获取设定的任务流中当前待执行的任务节点,从该 任务流对应的网络模型集中确定该任务节点对应的目标模型,并在设定的存储 空间中未加载所述目标模型的情况下,基于设定的动态加载机制,将所述目标 模型动态加载至所述存储空间中,并调用所述存储空间中已加载的所述目标模 型执行所述任务节点,其中,网络模型集包括第一模型子集和第二模型子集, 第一模型子集中的每一第一模型的加载方式为固定加载,第二模型子集中的每 一第二模型的加载方式为动态加载,存储空间用于存储固定加载的每一所述第 一模型和当前动态加载的至少一个所述第二模型。这样,一方面,在执行各任 务节点的过程中,可以根据实际应用场景,采用合适的动态加载机制在设定的 存储空间中动态加载任务流对应的网络模型集中的至少一个第一模型,从而可 以支持在存储空间容量有限的情况下正常运行任务流中的每一任务节点,减少 存储空间耗尽导致任务运行异常的问题,进而可以提高任务流执行的稳定性和 可靠性;另一方面,通过将任务流对应的网络模型集中的第一模型固定加载至 存储空间中,可以减少第一模型再次被调用的情况下的推理耗时,从而可以提 高对应的任务节点的执行效率,进而提高整个任务流的执行效率。
在一些实施例中,所述存储空间中包括用于存储当前动态加载的至少一个 所述第二模型的缓存空间,上述步骤S103中所述的基于设定的动态加载机制, 将所述目标模型动态加载至所述存储空间中,可以包括如下步骤S111至步骤 S113:
步骤S111,获取所述缓存空间的模型容量和所述缓存空间当前的使用量, 并基于所述模型容量和所述使用量,确定所述缓存空间当前的可用容量。
步骤S112,在所述可用容量小于所述目标模型的缓存占用量的情况下,从 所述缓存空间中已加载的至少一个第二模型中确定优先级最低的候选模型。
步骤S113,在所述目标模型的优先级高于所述候选模型的优先级的情况 下,将所述候选模型从所述缓存空间中释放,并将所述目标模型加载至所述缓 存空间中。
这里,缓存空间的模型容量可以表征缓存空间中可加载第二模型的数量, 也可以表征缓存空间中可加载第二模型的空间容量等,这里并不限定。在实施 时,缓存空间的模型容量可以是预先设置的,也可以是基于缓存空间的存储容 量和第二模型子集中每一第二模型的存储占用量确定的,本公开实施例对此并 不限定。
缓存空间当前的使用量可以是缓存空间中当前已经存储的第二模型的数 量,也可以是缓存空间中当前已经被占用的空间量等,这里并不限定。
缓存空间当前的可用容量可以是缓存空间中当前还可以存储第二模型的数 量,也可以是缓存空间中当前还可以使用的空间量等,这里并不限定。
目标模型的缓存占用量可以是目标模型占用的模型数,也即1个模型;目 标还可以是缓存空间中加载目标模型所需的空间量等,这里并不限定。
在一些实施方式中,缓存空间的模型容量表征缓存空间中可加载第二模型 的数量,缓存空间当前的使用量为缓存空间中当前已经存储的第二模型的数量, 缓存空间当前的可用容量为缓存空间中当前还可以存储第二模型的数量,目标 模型的缓存占用量为目标模型占用的模型数。
在一些实施方式中,缓存空间的模型容量表征缓存空间中可加载第二模型 的空间容量,缓存空间当前的使用量为缓存空间中当前已经被占用的空间量, 缓存空间当前的可用容量为缓存空间中当前还可以使用的空间量,目标模型的 缓存占用量为缓存空间中加载目标模型所需的空间量。
在一些实施方式中,在所述可用容量大于或等于所述目标模型的缓存占用 量的情况下,可以将所述目标模型加载至所述缓存空间中。
在一些实施方式中,可以根据第二模型/目标模型当前的执行紧急程度、在 任务流中的推理次数、历史执行次数等中的至少之一,确定该第二模型/目标模 型的优先级,从而可以从缓存空间中已加载的至少一个第二模型中确定优先级 最低的候选模型。
上述实施例中,在缓存空间当前的可用容量小于目标模型的缓存占用量的 情况下,从缓存空间中已加载的至少一个第二模型中确定优先级最低的候选模 型,并在确定目标模型的优先级高于候选模型的优先级的情况下,将候选模型 从缓存空间中释放,并将目标模型加载至缓存空间中。这样,一方面,可以减 少缓存空间不足导致第二模型加载失败的问题,从而可以提高任务流执行的稳 定性和可靠性;另一方面,可以优先将优先级更高的第二模型加载至缓存空间 中,从而可以提高优先级更高的第二模型对应的任务节点的执行效率。
在一些实施例中,上述步骤S103中所述的基于设定的动态加载机制,将所 述目标模型动态加载至所述存储空间中,还可以包括如下步骤S121:
步骤S121,在所述目标模型满足设定条件的情况下,确定所述目标模型的 优先级高于所述候选模型的优先级;所述设定条件包括以下至少之一:所述目 标模型的执行紧急程度高于所述候选模型的执行紧急程度;所述目标模型在所 述任务流中的推理次数大于所述候选模型在所述任务流中的推理次数;所述目 标模型的历史执行次数大于所述候选模型的历史执行次数。
这里,执行紧急程度指的是对应的目标模型/候选模型与当前正在执行的模 型之间的执行距离,该执行距离越小,表明对应的目标模型/候选模型会越早 被执行,也即执行紧急程度更高;该执行距离越大,表明对应的目标模型/候 选模型会越晚被执行,也即执行紧急程度更低。
在一些实施方式中,可以基于当前执行的任务节点以及任务流中各任务节 点之间的执行顺序,确定第二模型与当前正在执行的模型之间的执行距离、以 及候选模型与当前正在执行的模型之间的执行距离,从而基于目标模型与当前 正在执行的模型之间的执行距离、以及候选模型与当前正在执行的模型之间的 执行距离,分别确定目标模型和候选模型的执行紧急程度。
在一些实施方式中,可以基于模型加载队列中目标模型与目标模型之间的 距离,确定第二模型与当前正在执行的模型之间的执行距离;基于模型加载队 列中候选模型与当前正在执行的模型之间的距离,确定候选模型与当前正在执 行的模型之间的执行距离;基于目标模型与当前正在执行的模型之间的执行距 离、以及候选模型与当前正在执行的模型之间的执行距离,分别确定目标模型 和候选模型的执行紧急程度。
通过对任务流中每一任务节点对应的网络模型进行分析,可以得到第二模 型在任务流中的推理次数以及候选模型在任务流中的推理次数。
在一些实施方式中,上述步骤S113中所述的确定所述目标模型的优先级高 于所述候选模型的优先级,可以包括如下步骤S131至步骤S133:
步骤S131,在所述目标模型的执行紧急程度高于所述候选模型的执行紧急 程度的情况下,确定所述目标模型的优先级高于所述候选模型的优先级。
这样,通过在目标模型的执行紧急程度高于候选模型的执行紧急程度的情 况下,确定目标模型的优先级高于候选模型的优先级,可以在缓存空间中优先 加载执行紧急程度更高的第二模型,从而可以提高任务流的整体执行效率。
步骤S132,在所述目标模型的执行紧急程度等于所述候选模型的执行紧急 程度,且所述目标模型在所述任务流中的推理次数大于所述候选模型在所述任 务流中的推理次数的情况下,确定所述目标模型的优先级高于所述候选模型的 优先级。
这样,通过在目标模型的执行紧急程度等于候选模型的执行紧急程度,且 目标模型在任务流中的推理次数大于候选模型在任务流中的推理次数的情况 下,确定目标模型的优先级高于候选模型的优先级,从而可以在两个目标模型 的执行紧急程度相等的情况下,在缓存空间中优先加载在任务流中的推理次数 较多的第二模型,从而可以减少第二模型多次推理的总耗时,进而可以提高任 务流的整体执行效率。
步骤S133,在所述目标模型的执行紧急程度等于所述候选模型的执行紧急 程度、且所述目标模型在所述任务流中的推理次数等于所述候选模型在所述任 务流中的推理次数、且所述目标模型的历史执行次数大于所述候选模型的历史 执行次数的情况下,确定所述目标模型的优先级高于所述候选模型的优先级。
这里,通过在目标模型的执行紧急程度等于候选模型的执行紧急程度,且 目标模型在任务流中的推理次数等于候选模型在任务流中的推理次数,且目标 模型的历史执行次数大于候选模型的历史执行次数的情况下,确定目标模型的 优先级高于候选模型的优先级,这样,可以在两个第二模型的执行紧急程度以 及在任务流中的推理次数均相等的情况下,在缓存空间中优先加载历史执行次 数较多的第二模型,从而可以提高缓存空间中加载的第二模型的有效率,进而 可以提高任务流的整体执行效率。
在一些实施方式中,上述步骤S111中所述的获取所述缓存空间的模型容 量,可以包括如下步骤S141至步骤S143:
步骤S141,基于所述第一模型子集中每一第一模型的存储占用量,确定所 述存储空间中固定占用的第一存储容量。
这里,存储空间中固定占用的第一存储容量指的是存储空间中用于存储固 定加载的第一模型子集中的每一第一模型的容量,该容量是大于或者等于第一 模型子集中每一第一模型的存储占用量的总和的。
在一些实施方式中,可以基于第一模型子集中每一第一模型的存储占用量 的总和,确定存储空间中固定占用的第一存储容量。例如,可以将第一模型子 集中每一第一模型的存储占用量的总和确定为存储空间中固定占用的第一存储 容量,也可以将第一模型子集中每一第一模型的存储占用量的总和进行适当扩 大后确定为存储空间中固定占用的第一存储容量。
步骤S142,基于所述存储空间的总存储容量与所述第一存储容量之间的差 值,确定所述缓存空间的第二存储容量。
这里,可以将存储空间的总存储容量与存储空间中固定占用的第一存储容 量之间的差值确定为缓存空间的第二存储容量,也可以将存储空间的总存储容 量与存储空间中固定占用的第一存储容量之间的差值进行适当缩小后确定为缓 存空间的第二存储容量,本公开实施例对此并不限定。
步骤S143,基于所述缓存空间的第二存储容量和所述第二模型子集中每一 第二模型的存储占用量,确定所述缓存空间的模型容量;其中,所述模型容量 表征所述缓存空间中可加载第二模型的数量。
这里,缓存空间用于动态加载第二模型子集中的每一第二模型,因此,基 于缓存空间的第二存储容量和第二模型子集中每一第二模型的存储占用量,可 以确定缓存空间中可加载第二模型的数量,也即缓存空间的模型容量。
本公开实施例中,综合考虑缓存空间的第二存储容量和每一第二模型的存 储占用量,可以为缓存空间确定更加合适的模型容量,从而可以进一步可以提 高任务流执行的稳定性和可靠性。
在一些实施例中,上述步骤S143可以包括如下步骤S151至步骤S152:
步骤S151,将所述第二模型子集中的每一第二模型按照存储占用量由大到 小的顺序进行排序,得到排序后的第二模型序列。
步骤S152,依次累加所述第二模型序列中每一第二模型的存储占用量,直 至累加的存储占用量之和超出所述第二存储容量,并将当前累加的第二模型的 数量确定为所述缓存空间的模型容量。
这样,通过依次累加第二模型序列中每一第二模型的存储占用量,直至累 加的存储占用量之和超出所述第二存储容量,可以快速准确地确定缓存空间中 至少可以同时加载的第二模型的数量,也即缓存空间的模型容量。
本公开实施例提供一种模型调用方法,该方法可以由计算机设备的处理器 执行。图2为本公开实施例提供的一种模型调用方法的实现流程示意图,如图 2所示,该方法包括如下步骤S201至步骤S203:
步骤S201,获取设定的任务流中当前待执行的任务节点。
步骤S202,从所述任务流对应的网络模型集中,确定所述任务节点对应的 目标模型;其中,所述网络模型集包括第一模型子集和第二模型子集,所述第 一模型子集中的每一第一模型的加载方式为固定加载,所述第二模型子集中的 每一第二模型的加载方式为动态加载。
这里,上述步骤S201至步骤S202分别对应于前述步骤S101至步骤S102, 在实施时可以参照前述步骤S101至步骤S102的具体实施方式。
步骤S203,在设定的存储空间中未加载所述目标模型的情况下,以所述目 标模型为遍历起始点,依次遍历设定的模型加载队列中的每一第二模型,并针 对遍历过程中访问的每一第二模型,基于所述第二模型的状态信息,将所述第 二模型加载至缓存空间中,并调用缓存空间中已加载的所述目标模型执行所述 任务节点;
其中,所述模型加载队列中包括所述第二模型子集中的至少一个第二模型, 所述存储空间用于存储固定加载的每一所述第一模型和当前动态加载的至少一 个所述第二模型,所述存储空间中包括用于存储当前动态加载的至少一个所述 第二模型的缓存空间。
这里,模型加载队列可以是根据任务流中每一任务节点对应的网络模型之 间的执行顺序预先设定的,也可以是对任务流中每一任务节点对应的网络模型 之间的依赖关系进行分析后确定的,本公开实施例对此并不限定。
在一些实施方式中,可以对任务流中每一任务节点对应的网络模型之间的 依赖关系进行分析,得到第二模型子集中每一第二模型之间的执行顺序,并基 于该执行顺序,将每一第二模型依次加入模型加载队列。
模型加载队列中的每一第二模型具有一个状态信息,该状态信息可以表征 是否将对应的第二模型预先加载至缓存空间中。在实施时,每一第二模型的状 态信息可以是预先设定的,也可以是对当前待执行的任务节点对应的目标模型 的输入数据和/或算法类型进行分析后得到的,这里并不限定。
本公开实施例中,以目标模型为遍历起始点,依次遍历设定的模型加载队 列中的每一第二模型,并针对遍历过程中访问的每一第二模型,基于该第二模 型的状态信息,将该第二模型加载至缓存空间中。这样,可以基于模型加载队 列中每一第二模型的状态信息,方便快捷地将第二模型加载至缓存空间中。
在一些实施例中,每一所述第二模型的状态信息包括待加载状态或跳过状 态;上述步骤S203中所述的基于所述第二模型的状态信息,将所述第二模型加 载至所述缓存空间中,可以包括如下步骤S211至步骤S212:
步骤S211,在所述第二模型的状态信息为待加载状态的情况下,将所述第 二模型加载至所述缓存空间中,并将所述第二模型的状态信息更新为跳过状态。
这里,待加载状态可以表征对应的第二模型当前需要被加载至缓存空间中。 跳过状态表征对应的第二模型当前不需要被加载至缓存空间中。
在将第二模型加载至缓存空间中后,在下一次遍历到该第二模型的情况下, 不需要再对该第二模型进行加载,从而可以将该第二模型的状态信息更新为跳 过状态。
步骤S212,在所述第二模型的状态信息为跳过状态的情况下,结束访问当 前的第二模型,并继续访问所述模型加载队列中的下一个第二模型。
在一些实施例中,上述步骤S211可以包括如下步骤S221至步骤S222:
步骤S221,在所述第二模型的状态信息为待加载状态的情况下,获取所述 缓存空间的模型容量和所述缓存空间中当前已加载的第二模型的第一数量;其 中,所述模型容量表征所述缓存空间中可加载第二模型的数量。
步骤S222,在所述模型容量大于所述第一数量的情况下,将所述第二模型 加载至所述缓存空间中,并将所述第二模型的状态信息更新为跳过状态。
上述实施例中,在缓存空间的模型容量大于缓存空间中当前已加载的第二 模型的第一数量的情况下,将第二模型加载至缓存空间中。这样,可以减少存 储空间不足导致第二模型加载失败的问题,从而可以进一步提高任务流执行的 稳定性和可靠性。
在一些实施例中,步骤S211还可以包括如下步骤S231至步骤S232:
步骤S231,在所述模型容量等于所述第一数量的情况下,从所述缓存空间 中已加载的至少一个第二模型中确定优先级最低的候选模型。
这里,可以根据第二模型当前的执行紧急程度、在任务流中的推理次数、 历史执行次数等中的至少之一,确定该第二模型的优先级。
步骤S232,在确定所述第二模型的优先级高于所述候选模型的优先级的情 况下,将所述候选模型从所述缓存空间中释放,并将所述第二模型加载至所述 缓存空间中。
上述实施例中,在模型容量等于第一数量的情况下,从缓存空间中已加载 的至少一个第二模型中确定优先级最低的候选模型,并在确定第二模型的优先 级高于候选模型的优先级的情况下,将候选模型从缓存空间中释放,并将第二 模型加载至缓存空间中。这样,可以优先将优先级更高的第二模型加载至缓存 空间中,从而可以提高优先级更高的第二模型对应的任务节点的执行效率。
在一些实施例中,上述步骤S232中所述的确定所述第二模型的优先级高于 所述候选模型的优先级,可以包括以下步骤S241至步骤S243中的至少之一:
步骤S241,在所述第二模型的执行紧急程度高于所述候选模型的执行紧急 程度的情况下,确定所述第二模型的优先级高于所述候选模型的优先级。
步骤S242,在所述第二模型的执行紧急程度等于所述候选模型的执行紧急 程度,且所述第二模型在所述任务流中的推理次数大于所述候选模型在所述任 务流中的推理次数的情况下,确定所述第二模型的优先级高于所述候选模型的 优先级。
步骤S243,在所述第二模型的执行紧急程度等于所述候选模型的执行紧急 程度、且所述第二模型在所述任务流中的推理次数等于所述候选模型在所述任 务流中的推理次数、且所述第二模型的历史执行次数大于所述候选模型的历史 执行次数的情况下,确定所述第二模型的优先级高于所述候选模型的优先级。
本公开实施例提供一种模型调用方法,该方法可以由计算机设备的处理器 执行。图3为本公开实施例提供的一种模型调用方法的实现流程示意图,如图 3所示,该方法包括如下步骤S301至步骤S305:
步骤S301,获取设定的任务流中当前待执行的任务节点。
步骤S302,从所述任务流对应的网络模型集中,确定所述任务节点对应的 目标模型;其中,所述网络模型集包括第一模型子集和第二模型子集,所述第 一模型子集中的每一第一模型的加载方式为固定加载,所述第二模型子集中的 每一第二模型的加载方式为动态加载。
这里,上述步骤S301至步骤S302分别对应于前述步骤S101至步骤S102, 在实施时可以参照前述步骤S101至步骤S102的具体实施方式。
步骤S303,基于所述任务流中各任务节点之间的依赖关系,确定所述第二 模型子集中每一第二模型之间的执行依赖关系。
这里,可以通过对任务流中各任务节点之间的依赖关系进行分析,得到各 任务节点之间的执行顺序,从而可以得到各任务节点分别对应的网络模型之间 的执行顺序,进而可以基于网络模型之间的执行顺序,确定第二模型子集中每 一第二模型之间的执行依赖关系。
步骤S304,基于所述第二模型子集中每一第二模型之间的执行依赖关系, 确定所述任务流对应的模型加载队列,以及所述模型加载队列中每一第二模型 的状态信息。
这里,可以按照第二模型子集中每一第二模型之间的执行依赖关系中每一 第二模型之间的执行顺序,将每一第二模型依次加入模型加载队列。
通过对第二模型子集中每一第二模型之间的执行依赖关系进行分析,可以 得到至少一个第二模型的数据流通状态,根据至少一个第二模型的数据流通状 态,可以确定是否将每一第二模型预先加载至缓存空间中,也即可以得到每一 第二模型的状态信息。
步骤S305,在设定的存储空间中未加载所述目标模型的情况下,以所述目 标模型为遍历起始点,依次遍历设定的模型加载队列中的每一第二模型,并针 对遍历过程中访问的每一第二模型,基于所述第二模型的状态信息,将所述第 二模型加载至缓存空间中,并调用缓存空间中已加载的所述目标模型执行所述 任务节点;
其中,所述模型加载队列中包括所述第二模型子集中的至少一个第二模型, 所述存储空间用于存储固定加载的每一所述第一模型和当前动态加载的至少一 个所述第二模型,所述存储空间中包括用于存储当前动态加载的至少一个所述 第二模型的缓存空间。
这里,上述步骤S305对应于前述步骤S203,在实施时可以参照前述步骤 S203的具体实施方式。
本公开实施例中,基于任务流中各任务节点之间的依赖关系,确定第二模 型子集中每一第二模型之间的执行依赖关系,并基于第二模型子集中每一第二 模型之间的执行依赖关系,确定任务流对应的模型加载队列以及模型加载队列 中每一第二模型的状态信息,这样,可以基于任务流中各任务节点之间的依赖 关系确定是否将每一第二模型预先加载至缓存空间中,从而可以提高任务流的 整体执行效率。
在一些实施例中,所述第二模型子集中每一第二模型之间的执行依赖关系 包括每一第二模型之间的执行依赖图;上述步骤S304可以包括如下步骤S311 至步骤S313:
步骤S311,采用深度遍历的方式遍历所述执行依赖图中的每一第二模型, 得到所述任务流对应的模型加载队列。
这里,执行依赖图可以是一个有向无环图,该有向无环图中的每一节点可 以表示一个第二模型,每一条边可以表示连接的两个第二模型之间的依赖关系。
步骤S312,基于当前待执行的任务节点对应的目标模型的数据流通状态, 对所述执行依赖图中每一第二模型的数据流进行预测,得到每一所述第二模型 的数据流通状态。
这里,数据流通状态可以包括但不限于目标模型的数据流入状态(即是否 有数据流入)、数据流出状态(即是否有数据流出)等中的至少之一。
根据目标模型的数据流通状态,可以对执行依赖图中每一第二模型的数据 流进行预测,得到每一第二模型的数据流通状态。例如,在目标模型的数据流 入状态为无数据流入和/或数据流出状态为无数据流出的情况下,可以确定执行 依赖图中依赖该目标模型的输出数据进行运算的至少一个第二模型的数据流入 状态为无数据流入;在目标模型的数据流出状态为有数据流出的情况下,可以 确定执行依赖图中依赖该目标模型的输出数据进行运算的至少一个第二模型的 数据流入状态为有数据流入;这样,依次对执行依赖图中的每一第二模型的数 据流通状态进行分析,可以得到每一第二模型的数据流通状态。
步骤S313,基于至少一个所述第二模型的数据流通状态,确定每一所述第 二模型的状态信息。
这里,基于至少一个第二模型的数据流通状态,可以确定每一第二模型是 否需要被预先加载至缓存空间中,从而可以确定每一所述第二模型的状态信息。
在一些实施例中,所述数据流通状态包括数据流入状态;上述步骤S313 可以包括如下步骤S321:
步骤S321,采用深度遍历的方式遍历所述执行依赖图中的每一第二模型, 针对遍历过程中访问的每一第二模型,基于所述第二模型的数据流入状态,至 少确定所述第二模型的状态信息。
这里,对于执行依赖图中的每一第二模型,在该第二模型的数据流入状态 表征该第二模型中有数据流入的情况下,表明在本次任务流的执行过程中需要 执行该第二模型,从而可以将该第二模型预先加载至缓存空间中,也即该第二 模型的状态信息为待加载状态;在该第二模型的数据流入状态表征该第二模型 中无数据流入的情况下,表明在本次任务流的执行过程中不需要执行该第二模 型,从而可以不将该第二模型预先加载至缓存空间中,也即该第二模型的状态 信息为跳过状态。
在一些实施例中,上述步骤S321中所述的基于所述第二模型的数据流入状 态,至少确定所述第二模型的状态信息,可以包括以下之一:步骤S331,在所 述第二模型的数据流入状态为有数据流入的情况下,将所述第二模型的状态信 息确定为待加载状态;步骤S332,在所述第二模型的数据流入状态为无数据流 入的情况下,确定所述执行依赖图中以所述第二模型为根节点的第一子图,并 将所述第一子图中的每一第二模型的状态信息确定为跳过状态。
这里,在第二模型的数据流入状态为无数据流入的情况下,表明在本次任 务流的执行过程中不需要执行该第二模型,进而可以确定在本次任务流的执行 过程中也不需要执行依赖该第二模型的其他第二模型,也即不需要执行该执行 依赖图中以该第二模型为根节点的第一子图中的全部第二模型。因此,可以对 该执行依赖图中的该第一子图进行剪枝处理,也即将该第一子图中的每一第二 模型的状态信息均确定为跳过状态。这样,可以减少对不必要加载的第二模型 进行加载的操作,从而可以提高任务流的整体执行效率。
在一些实施例中,所述数据流通状态包括数据流入状态和数据流出状态; 上述步骤S313可以包括如下步骤S341至步骤S343:
步骤S341,基于至少一个所述第二模型的数据流入状态和数据流出状态, 确定所述执行依赖图中相邻的每两个第二模型之间的数据连通关系。
这里,两个第二模型之间的数据连通关系指的是是否有数据从这两个第二 模型中的一个第二模型中流向另一个第二模型中。
对于执行依赖图中相邻的两个第二模型,根据这两个第二模型的数据流入 状态和数据流出状态,可以确定这两个第二模型之间的数据连通关系。例如, 对于执行依赖图中相邻的两个第二模型A和B,其中,第二模型B的执行依赖 于第二模型A的输出数据,在第二模型A的数据流出状态为有数据流出且第二 模型B的数据流入状态为有数据流入的情况下,可以确定第二模型A和第二模 型B之间的具有数据连通关系,也即有数据从第二模型A中流向第二模型B。
步骤S342,从至少一个所述第二模型中,确定与所述目标模型之间具有数 据连通关系的第三模型子集。
这里,与当前待执行的任务节点对应的目标模型之间具有数据连通关系的 第三模型子集中可以包括与目标模型之间具有直接的数据连通关系的第二模 型、以及与目标模型之间具有间接的数据连通关系的第二模型。
步骤S343,将所述第三模型子集中的每一第二模型的状态信息确定为待加 载状态。
这里,由于目标模型是在本次任务流的执行过程中待执行的,因此,与目 标模型之间具有数据连通关系的第三模型子集中的每一第二模型均是在本次任 务流中会被执行的,从而可以在缓存空间中预先加载第三模型子集中的每一第 二模型,也即可以将第三模型子集中的每一第二模型的状态信息确定为待加载 状态。这样,可以对确定会被执行的第二模型进行预先加载,从而可以减少模 型调用时等待加载的时间,进而可以提高任务流的整体执行效率。
本公开实施例提供一种模型调用方法,该方法可以由计算机设备的处理器 执行。图4为本公开实施例提供的一种模型调用方法的实现流程示意图,如图 4所示,该方法包括如下步骤S401至步骤S404:
步骤S401,获取设定的任务流中当前待执行的任务节点。
步骤S402,从所述任务流对应的网络模型集中,确定所述任务节点对应的 目标模型。
这里,上述步骤S401至步骤S402分别对应于前述步骤S101至步骤S102, 在实施时可以参照前述步骤S101至步骤S102的具体实施方式。
步骤S403,将所述网络模型集划分为第一模型子集和第二模型子集;其中, 所述第一模型子集中的每一第一模型的加载方式为固定加载,所述第二模型子 集中的每一第二模型的加载方式为动态加载。
这里,可以采用任意合适的方式对网络模型集进行划分,本公开实施例对 此并不限定。例如,可以采用随机划分的方式将网络模型集划分为第一模型子 集和第二模型子集;也可以根据网络模型集中每一网络模型的存储占用量,将 网络模型集中存储占用量最大的设定数量的网络模型添加至第一模型子集中, 并将剩余的网络模型添加至第二模型子集中;还可以根据网络模型集中每一网 络模型的存储占用量和执行耗时,对每一网络模型的加载方式进行动态规划, 从而根据动态规划得到的每一网络模型的加载方式,将网络模型集划分为第一 模型子集和第二模型子集。
步骤S404,在设定的存储空间中未加载所述目标模型的情况下,基于设定 的动态加载机制,将所述目标模型动态加载至存储空间中,并调用所述存储空 间中已加载的所述目标模型执行所述任务节点;其中,所述存储空间用于存储 固定加载的每一所述第一模型和当前动态加载的至少一个所述第二模型。
这里,上述步骤S404对应于前述步骤S103,在实施时可以参照前述步骤 S103的具体实施方式。
本公开实施例中,将网络模型集划分为第一模型子集和第二模型子集,通 过在设定的存储空间中动态加载第一模型子集中的至少一个第一模型,可以支 持在存储空间容量有限的情况下正常运行任务流中的每一任务节点,减少存储 空间耗尽导致任务运行异常的问题,从而可以提高任务流执行的稳定性和可靠 性;通过将第二模型子集中的每一第一模型固定加载至存储空间中,可以减少 第一模型再次被调用的情况下的推理耗时,从而可以提高对应的任务节点的执 行效率,进而提高整个任务流的执行效率。
在一些实施例中,上述步骤S403可以包括如下步骤S411至步骤S413:
步骤S411,获取所述网络模型集中每一网络模型的存储占用量、第一执行 耗时和第二执行耗时;其中,每一所述网络模型的第一执行耗时表征对应的网 络模型在固定加载至存储空间中的情况下的执行耗时,每一所述网络模型的第 二执行耗时表征对应的网络模型在动态加载至存储空间中的情况下的执行耗 时。
这里,可以通过预先在存储空间中分别加载每一网络模型,来确定每一网 络模型的存储占用量。
可以预先利用每一网络模型处理设定的测试数据集,并统计每个网络模型 采用固定加载方式被加载至存储空间中的情况下的执行时间,也即第一执行耗 时,以及统计每个网络模型采用动态加载方式被加载至存储空间中的情况下的 执行时间,也即第二执行耗时。
步骤S412,基于所述存储空间的总存储容量以及所述网络模型集中每一网 络模型的存储占用量、第一执行耗时和第二执行耗时,对每一网络模型的加载 方式进行动态规划,得到每一网络模型的加载方式,使得每一网络模型按照相 应的加载方式加载至所述存储空间的情况下,所述存储空间中同时加载的各网 络模型的存储占用量之和未超出所述存储空间的总存储容量,且执行全部所述 网络模型的总耗时最小。
这里,通过对每一网络模型的加载方式进行动态规划,可以得到规划后的 每一网络模型的加载方式,并且在执行任务流的过程中,将每一网络模型按照 规划后的加载方式加载至存储空间的情况下,可以使得在存储空间中同时加载 的各网络模型的存储占用量之和未超出存储空间的存储容量的同时,执行网络 模型集中全部网络模型的总耗时(也即任务流的整体执行耗时)最小。
在实施时,可以采用任意合适的方式基于存储空间的总存储容量以及网络 模型集中每一网络模型的存储占用量、第一执行耗时和第二执行耗时,对每一 网络模型的加载方式进行动态规划,本公开实施例对此并不限定。
步骤S413,将加载方式为固定加载的每一网络模型均添加至所述第一模型 子集中,并将加载方式为动态加载的每一网络模型均添加至所述第二模型子集 中。
上述实施例中,基于存储空间的总存储容量以及网络模型集中每一网络模 型的存储占用量、第一执行耗时和第二执行耗时,对每一网络模型的加载方式 进行动态规划,得到每一网络模型的加载方式,使得每一网络模型按照相应的 加载方式被加载至存储空间的情况下,存储空间中同时加载的各网络模型的存 储占用量之和未超出存储空间的总存储容量,且执行全部网络模型的总耗时最 小,从而可以在充分利用存储空间资源的情况下有效减少任务流的整体执行耗 时,提高任务流的执行效率。
下面说明本公开实施例提供的模型调用方法在实际场景中的应用,以工业 领域中利用有限的显存调用多个网络模型的场景为例进行说明。
为了更好地理解本公开实施例提供的模型调用方法,下面先对相关技术中 的模型调用方案进行说明。
在工业领域,质检和巡检是比较常见的业务,如列车智慧巡检系统、生产 设备质检系统等,而通过一个网络模型来完成一个项目中的所有算法任务是比 较困难的。相关技术中,可以将一个项目中的算法任务拆解成多个任务节点, 每个任务节点针对性地使用一种网络模型去执行,从而由局部到整体来满足整 体项目的需求。
由于在大多数业务场景下用户对任务执行的时效性会有比较高的要求,所 以网络模型在满足精度要求的同时,同样需要面对性能上的考验。由于模型推 理通常需要大量复杂的矩阵运算,通过中央处理器(Central Processing Unit, CPU)进行运算的耗时是不可接受的,所以通常的做法是将网络模型放到显卡 上的图形处理器(GraphicsProcessing Unit,GPU)上进行运算,因为GPU能 实现高速并行运算,并且各个显卡厂家都有对外提供并行开发库,比如统一计 算设备架构(Compute Unified DeviceArchitecture,CUDA)、ROCm平台等等。 通过GPU加载的模型推理性能会大大高于通过CPU加载的网络模型。
相关技术中,一块显卡包括GPU计算单元和显存。显卡中显存总量(即显 存的存储容量,对应前述实施例中的第一存储总量)是有限的,加载网络模型 时需要分配显存中的空间用于存储网络模型的模型参数和推理过程中用到的中 间结果,所以一块显卡能加载的网络模型的数量也是有限的。但是,随着项目 的不断推进,项目中包含的任务节点越来越多,对应的网络模型的个数也随之 增长,加载并运行网络模型所需占用的存储空间也不断增长,从而在显存总量 不足以加载所有网络模型的情况下,会导致整体项目将无法正常运行,影响项 目运行的稳定性。例如,当运行的网络模型的显存占用总量大于显卡中显存总 量时,CUDA底层就会报显存溢出(Out-Of-Memory,OOM)的运行时异常。
本公开实施例提供一种模型调用方法,可以在任务流对应的网络模型集中 各网络模型的显存占用总量大于显卡显存总量的情况下,通过固定加载任务流 中的部分网络模型,并将其它网络模型在使用之前动态加载进显存中的方式, 让任务流正常执行,并能改善动态加载每一网络模型带来的耗时开销较大的问 题。此外,还能通过动态规划确定每一网络模型的加载方式以提高任务流整体 的运行效率。该方法可以由计算机设备中的处理器执行,如图5A所示,该方 法包括如下步骤S501至步骤S507:
步骤S501,获取设定的任务流对应的网络模型集中每一网络模型的显存占 用量、第一执行耗时和第二执行耗时;
这里,每一网络模型的第一执行耗时表征对应的模型采用固定加载方式被 加载至显存中的情况下的执行时间,每一模型的第二执行耗时表征对应的模型 采用动态加载方式被加载至显存中的情况下的执行时间。
对于每一网络模型,该网络模型的第二执行耗时通常会比第一执行耗时大。 第二执行耗时超出第一执行耗时的部分主要包括模型加载的耗时和模型首次推 理的耗时,其中,模型加载的耗时指的是加载模型所需的时间,模型首次推理 的耗时指的是加载完成后第一次推理时会做一些耗时的初始化操作,主要是显 存的初始化,而且模型首次推理的耗时是较大的。
通过实验测试部分模型对1300张图片进行处理得到的第一执行耗时和第 二执行耗时的对比如下表1所示:
表1第一执行耗时和第二执行耗时的测试对比表
Figure BDA0003726893760000171
由表1中的数据可知,每个网络模型采用动态加载的方式进行加载的推理 耗时(即第二执行耗时),相比采用固定加载的方式进行加载的推理耗时(即第 一执行耗时),会上涨几倍、几十倍甚至上百倍,但是每个模型耗时的上涨的幅 度各不相同,基于这点,要尽量保证推理耗时上涨幅度大的网络模型尽量少切 换,有限切换上涨幅度小的网络模型。
由于考虑到在任务流执行的过程中对网络模型的显存占用量、第一执行耗 时和第二执行耗时的统计与数据维护可能会进一步带来任务流执行耗时的增 加,因此,可以采用离线统计的方式统计任务流对应的网络模型集中每一模型 的显存占用量、第一执行耗时和第二执行耗时。在实施时,可以通过预先在显 卡中运行每一网络模型,来统计每一网络模型的显存占用量。可以预先利用每 一网络模型处理设定的测试数据集,并统计每个网络模型采用固定加载方式被 加载至显存中的情况下执行该网络模型所需的时间,也即第一执行耗时,以及 统计每个网络模型采用动态加载方式被加载至显存中的情况下执行该网络模型 所需的时间,也即第二执行耗时。例如,在任务流为高铁智慧巡检系统中的巡 检任务流的情况下,可以利用巡检车沿设定的多条高铁线路分别在每两个电线 杆之间随机采集5张测试图像,得到测试图像集,可以预先利用每一网络模型 处理该测试图像集,统计每个网络模型的第一执行耗时和第二执行耗时。
步骤S502,基于显卡中的显存总量以及每一网络模型的显存占用量、第一 执行耗时和第二执行耗时,对每一网络模型的加载方式进行动态规划,得到每 一网络模型的加载方式,使得每一网络模型按照相应的加载方式被加载至显存 的情况下,显存中同时加载的各网络模型的显存占用量之和未超出该显存总量, 且执行网络模型集中全部模型的总耗时最小。
这里,根据加载方式可以将模型分类两类:
1)常驻模型(对应前述实施例中的第一模型):采用固定加载方式进行加 载的模型,不参与模型的动态加载;常驻模型的生命周期与任务流的生命周期 一致;
2)动态模型(对应前述实施例中的第二模型):采用动态加载方式进行加 载的模型,在模型使用前进行加载,模型使用完放在显存中,可能随着其它模 型的加载被从显存中换出。
为了让任务流整体的运行耗时最低,考虑到模型有两种加载方式,这两种 加载方式会带来不同的显存占用和不同的推理耗时,由此可以用动态规划确定 每一模型的加载方式,以使得每一模型按照相应的加载方式被加载至显存的情 况下,显存中同时加载的各模型所占的第四存储总量未超出该显存总量,且执 行网络模型集中全部模型的总耗时最小。
在一些实施方式中,在任务流对应的网络模型集中包括n个模型,显卡的 显存总量为m的情况下,可以通过如下步骤S511至步骤S513求得全局最小总 耗时fastest_running_time,以及对应的每个模型的加载方式,其中,n为大于1 的整数:
步骤S511,初始化fastest_running_time=MAX_INT(即整型数值的最大值);
步骤S512,将n个模型按照显存占用从大到小进行排序,得到排序后的n 个模型;
步骤S513,循环遍历排序后的每个模型,对遍历过程中访问的第i个模型 (0<i<n+1),执行如下步骤S521至步骤S527,得到全局最小总耗时 fastest_running_time:
步骤S521,将前i-1个模型的加载方式确定为固定加载,并以第i个模型 的显存占用量作为动态加载的总调用显存scheduled_mem,这保证了剩下的模 型可以通过01背包问题求解;
步骤S522,将前i-1个模型的显存占用量之和确定为当前的常驻显存总量base_resident_mem,将前i-1个模型的第一执行耗时之和确定为当前的常驻处理 耗时base_running_time;
步骤S523,在base_resident_mem+scheduled_mem>m的情况下,结束;
步骤S524,计算当前参与动态规划的显存容量:cur_free_mem=m– base_resident_mem–scheduled_mem;
步骤S525,对第i至n个模型进行动态规划,得到本次动态规划的最小总 耗时best_running_time;
这里,对动态规划中使用的变量如下:
1)设置矩阵T[2][cur_free_mem+1]作为状态转移矩阵,由于状态转移只涉 及相邻的两行数据,所以对矩阵进行了空间优化,只申请2*(cur_free_mem+1) 的矩阵;
2)j表示当前模型的序号;
3)T[1][k]表示确定当前模型的加载方式后,显存总量为k MB的情况下, 任务流整体的最短处理耗时,其中,k为整数,且0<=k<=cur_free_mem;
4)T[0][k]表示确定上一个模型的加载方式后,显存总量为k MB的情况下, 任务流整体的最短处理耗时。
动态规划的状态转移过程如下:
1)起始状态:T[0]整行设置为0,表示没有模型时,耗时都为0;
2)按照顺序遍历第i至n个模型,并对当前遍历的模型执行如下步骤S531 至步骤S533:
步骤S531,获取当前遍历的模型的显存占用量cur_mem,第二执行耗时scheduled_running_time,第一执行耗时resident_running_time;
步骤S532,求得T[1][k]=min(T[0][k]+scheduled_running_time,T[0][k– cur_mem]+resident_running_time),这样可以复用上一个模型的最优解来求得当 前模型在此基础上固定加载和动态加载对应的任务流处理耗时的最小值;
步骤S533,求解完将矩阵第0行删除,并在矩阵末尾补充全为0的空行用 于下个模型的计算。
在计算完每个模型对应的任务流整体的最短处理耗时T[1][k]后,可以确定 第i至n个模型的不同加载方式的组合对应的最短处理耗时中的最小值,即为 本次动态规划的最小总耗时best_running_time,以及该最小总耗时 best_running_time对应的每一模型的加载方式。
步骤S526,基于本次动态规划的最小总耗时best_running_time,确定本次 动态规划的任务流总耗时total_time=base_running_time+best_running_time;
步骤S527,基于本次动态规划的任务流总耗时total_time,更新任务流的 全局最小总耗时fastest_running_time=min(fastest_running_time,total_time),并在 全局最小总耗时有更新的情况下,同步将本次动态规划的最小总耗时 best_running_time对应的每一模型的加载方式更新为当前的最优加载方式。
在确定最终的全局最小总耗时后,即可确定最终的目标加载方式(即每一 模型目标的加载方式)。
在一些实施方式中,在确定了每个模型的加载方式后,可以根据加载方式 为动态加载的每个第二模型的显存占用量,确定用于动态加载至少一个第二模 型的缓存空间的模型容量。在实施时,可以采用如下步骤S541至步骤S544确 定缓存空间的模型容量:
步骤S541,将显卡的显存总量依次减去所有常驻模型的显存占用量,得到 用于动态加载第二模型的缓存空间的显存容量total_scheduled_mem;
步骤S542,将每一第二模型按照显存占用量从大到小排序;
步骤S543,依次累加排序后的每一第二模型的显存占用量,直至累加的显 存占用量之和sum_scheduled_mem>total_scheduled_mem,并在 sum_scheduled_mem>total_scheduled_mem的情况下,将当前累加的第二模型的 数量确定为缓存空间的模型容量。
步骤S503,将加载方式为固定加载方式的每一模型均添加至第一模型子集 中,并将加载方式为动态加载方式的每一模型均添加至第二模型子集中。
步骤S504,获取任务流中当前待执行的任务节点。
步骤S505,从网络模型集中,确定该任务节点对应的目标模型。
步骤S506,在显存中未加载目标模型的情况下,基于设定的动态加载机制, 将目标模型动态加载至显存中,并调用显存中已加载的目标模型执行该任务节 点。
步骤S507,在显存中已加载目标模型的情况下,调用显存中已加载的目标 模型执行该任务节点。
这里,可以对任务流对应的算法流程图(对应前述实施例中的执行依赖图) 进行逻辑分析,通过深度优先遍历算法流程图中的每个第二模型,然后根据模 型的执行顺序生成对应的模型加载队列,并确定模型加载队列中每个第二模型 的状态信息的初始值。
在一些实施方式中,可以在显存内部维护一个模型缓存池(对应前述实施 例中的缓存空间),模型动态加载完毕后会被放到模型缓存池中,等待被调用; 在模型缓存池已满,并且有新的模型需要加载的情况下,可以将模型缓存池中 优先级最低的模型释放掉,为新的模型腾出空间,模型的优先级可以通过如下 三个因素进行确定:
a)执行距离:即模型与当前待执行的节点对应的目标模型之间的距离,可 以描述模型当前的执行紧急程度,执行距离越小表示模型当前的执行紧急程度 越高,对应的优先级也越高;
b)推理次数:描述模型在任务流的一次生命周期内的推理次数,在执行距 离相同的情况下,推理次数越高,越优先保留,即优先级越高。考虑推理次数 可以减轻模型首次推理耗时很长带来的影响;
c)使用频次:可以描述该模型的历史使用次数,使用频次越高,优先级越 高。与推理次数不同的是,使用频次是以模型为单位进行的统计。例如,一个 模型加载进显存,推理了1次,推理次数是1;但是这个模型在历史所有的任 务流执行过程内,一共被使用了10次,所以使用频次是10。考虑使用频次可 以保留比较可能再次被请求加载的模型,也就是可以提高模型的缓存命中率。
在任务流执行的过程中,可以设置执行游标,该执行游标可以指向任务流 中当前正在执行的节点。还可以设置加载游标,该加载游标处于不断遍历模型 加载队列的过程中,每次加载完一个模型后,会从执行游标指向的节点对应的 模型开始重新遍历。
在一些实施方式中,可以从加载游标指向的位置开始遍历模型加载队列:
a)在遍历的第二模型确定需要加载的情况下:在模型缓存池中的模型个数 小于模型容量的情况下,通过后台线程将该第二模型加载至模型缓存池,移动 加载游标至下一个第二模型;在模型缓存池中的模型个数等于模型容量的情况 下,将该第二模型的优先级与模型缓存池中优先级最低的候选模型进行比较, 若该第二模型的优先级高于候选模型的优先级,则通过后台线程将该候选模型 从模型缓存池中释放,并将该第二模型加载至模型缓存池中,若该第二模型的 优先级低于或等于候选模型的优先级,暂时跳过该第二模型,等待下次遍历。
b)在遍历的第二模型暂时不确定是否需要加载的情况下,暂时跳过该第二 模型,等待下次遍历;
c)在遍历的第二模型已经被标识为跳过状态的情况下,跳过该第二模型, 并移动加载游标至下一个第二模型。
在一些实施方式中,在确定执行依赖图中的某条边上无数据流过的情况下, 可以认为依赖该边的子图中的第二模型完全不用处理任何数据,从而可以跳过 遍历依赖该边的子图,即对该边执行剪枝,并且在模型加载队列中将子图里包 含的所有第二模型的状态信息都标识成跳过状态。如图5B所示,执行依赖图 中第二模型model11输出结果后,通过边e11和边e12将结果传输到第二模型 model12和第二模型model13,但是由于边e11会对输入数据进行过滤(比如分 类模型只对特定标签的检测框进行分类),过滤完后边e11上流过的数据为空, 因此,可以将边e12进行剪枝,对应的模型加载队列中可以将第二模型model12、model14和model15的状态信息都标识为跳过状态,遍历过程中这三个模型会 被跳过;而边e12不进行过滤,可以确定边e12是有数据流过的,可以将模型 加载队列中的第二模型model13的状态信息更新为待加载状态,在遍历过程中 加载游标41会跳过第二模型model12、model14和model15,优先加载第二模 型model13,此外,由于第二模型model13是否会有数据流出是不确定的,因 此,边e15和边e16上是否会有数据流过也是不确定的,从而第二模型model16、 model17的状态信息为待确定状态。
在一些实施方式中,在某个第二模型确定有数据输入的情况下,可以确定 该第二模型需要处理数据,进而可以推知该第二模型会被加载,因此,可以采 用预加载的方式提前加载该第二模型,减少等待加载的时间。
在实施时,可以通过边的输入状态和第二模型的连通性这两个信息来判断 第二模型是否有数据输入。边的输入状态指的是某条边上是否有数据流入;第 二模型的连通性指的是某条边上流入数据时,可以在执行依赖图传递到的最远 区域,在此区域范围内的第二模型就可以确定为有数据流过,可以提前确定需 要被加载。图5C为本公开实施例提供的一种执行依赖图中边和第二模型的连 通情况的示意图,如图5C所示,数据流经边e20、e21、e23、e24、e25和e26 均不进行过滤,数据不会被丢弃,从而边e20、e21、e23、e24、e25和e26是连通的;数据流经边e22会进行过滤,数据可能会被丢弃,从而边e22的连通 性未知;第二模型model21、model22和model23接收输入数据后进行模型推理 会对外输出数据,则第二模型model21、model22和model23是连通的;第二模 型model24、model25、model26和model27接收输入数据后进行模型推理不一 定会对外输出数据,则第二模型model24、model25、model26和model27的连 通性未知;因此,该执行依赖图在有数据流入的情况下,可以确定数据最远可 流经的区域包括第二模型model21、model22、model24和model25,从而可以 预先加载第二模型model21、model22、model24和model25,而由于e22连通 性未知,所以暂时不加载第二模型model22、model26和model27。
本公开实施例中,只加载部分模型到显存中,其余模型在运行时动态加载 并更新模型缓存池,可以实现有限的显存下正常运行超量的模型;采用动态规 划的方式确定每一模型的加载方式,可以提高任务流整体的执行性能;通过模 型的剪枝,对本次任务流的生命周期中不处理数据的模型进行标记,从而不对 该模型进行加载,可以节省耗时开销;根据执行依赖图中边和模型的连通性, 预知各模型是否一定有数据输入,对确定一定有数据输入的模型实现提前加载, 节省耗时开销。
本公开实施例中提供了一种模型调用机制,在任务流中所有模型的显存占 用总量超过系统可用显存时也能正常运行任务流,而不是只能被动地等显卡升 级和削减模型个数;此外,考虑到对模型进行动态加载和调用会带来额外的耗 时开销,所以在实现模型动态加载功能时也考虑性能上的优化:
a)由于动态加载模型的耗时成本过高,所以支持只有部分模型参与动态加 载,并且将筛选参与动态加载的模型的过程抽象成动态规划问题,通过量化计 算的方式得到最优解,提高显存占用率,提高任务流整体的执行速度;
b)由于加载一个模型耗时成本很高,为保证动态加载的模型在生命周期内 一定会被使用到,将不需要被加载的模型进行剪枝,减小耗时开销;
c)由于模型加载需要一定的时间,所以通过对执行依赖图的逻辑分析,计 算出各个模型和边的连通性,在数据流入时便可确认数据最远可流入的模型从 而,提前加载相应的模型,获得对应的模型句柄,减小等待时间。
基于前述的实施例,本公开实施例提供一种模型调用装置,该装置包括所 包括的各单元、以及各单元所包括的各模块,可以通过计算机设备中的处理器 来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为 中央处理器(CentralProcessing Unit,CPU)、微处理器(Microprocessor Unit, MPU)、数字信号处理器(Digital Signal Processor,DSP)或现场可编程门阵列 (Field Programmable GateArray,FPGA)等。
图6为本公开实施例提供的一种模型调用装置的组成结构示意图,如图6 所示,模型调用装置600包括:获取模块610、第一确定模块620和调用模块 630,其中:
获取模块610,用于获取设定的任务流中当前待执行的任务节点;
第一确定模块620,用于从任务流对应的网络模型集中,确定任务节点对 应的目标模型;其中,网络模型集包括第一模型子集和第二模型子集,第一模 型子集中的每一第一模型的加载方式为固定加载,第二模型子集中的每一第二 模型的加载方式为动态加载;
调用模块630,用于在设定的存储空间中未加载目标模型的情况下,基于 设定的动态加载机制,将目标模型动态加载至存储空间中,并调用存储空间中 已加载的目标模型执行任务节点;其中,存储空间用于存储固定加载的每一第 一模型和当前动态加载的至少一个第二模型。
在一些实施例中,存储空间中包括用于存储当前动态加载的至少一个第二 模型的缓存空间;调用模块还用于:获取缓存空间的模型容量和缓存空间当前 的使用量,并基于模型容量和使用量,确定缓存空间当前的可用容量;在可用 容量小于目标模型的缓存占用量的情况下,从缓存空间中已加载的至少一个第 二模型中确定优先级最低的候选模型;在目标模型的优先级高于候选模型的优 先级的情况下,将候选模型从缓存空间中释放,并将目标模型加载至缓存空间 中。
在一些实施例中,调用模块还用于:在目标模型满足设定条件的情况下, 确定目标模型的优先级高于候选模型的优先级;设定条件包括以下至少之一: 目标模型的执行紧急程度高于候选模型的执行紧急程度;目标模型在任务流中 的推理次数大于候选模型在任务流中的推理次数;目标模型的历史执行次数大 于候选模型的历史执行次数。
在一些实施例中,存储空间中包括用于存储当前动态加载的至少一个第二 模型的缓存空间;调用模块还用于:以目标模型为遍历起始点,依次遍历设定 的模型加载队列中的每一第二模型,并针对遍历过程中访问的每一第二模型, 基于第二模型的状态信息,将第二模型加载至缓存空间中,模型加载队列中包 括第二模型子集中的至少一个第二模型。
在一些实施例中,每一第二模型的状态信息包括待加载状态或跳过状态; 调用模块还用于:在第二模型的状态信息为待加载状态的情况下,将第二模型 加载至缓存空间中,并将第二模型的状态信息更新为跳过状态;在第二模型的 状态信息为跳过状态的情况下,结束访问当前的第二模型,并继续访问模型加 载队列中的下一个第二模型。
在一些实施例中,所述装置还包括:第二确定模块,用于基于任务流中各 任务节点之间的依赖关系,确定第二模型子集中每一第二模型之间的执行依赖 关系;第三确定模块,用于基于第二模型子集中每一第二模型之间的执行依赖 关系,确定任务流对应的模型加载队列,以及模型加载队列中每一第二模型的 状态信息。
在一些实施例中,第二模型子集中每一第二模型之间的执行依赖关系包括 每一第二模型之间的执行依赖图;第三确定模块还用于:采用深度遍历的方式 遍历执行依赖图中的每一第二模型,得到任务流对应的模型加载队列;基于当 前待执行的任务节点对应的目标模型的数据流通状态,对执行依赖图中每一第 二模型的数据流进行预测,得到每一第二模型的数据流通状态;基于至少一个 第二模型的数据流通状态,确定每一第二模型的状态信息。
在一些实施例中,数据流通状态包括数据流入状态;第三确定模块还用于: 采用深度遍历的方式遍历执行依赖图中的每一第二模型,针对遍历过程中访问 的每一第二模型,执行以下之一操作:在第二模型的数据流入状态为有数据流 入的情况下,将第二模型的状态信息确定为待加载状态;在第二模型的数据流 入状态为无数据流入的情况下,确定执行依赖图中以第二模型为根节点的第一 子图,并将第一子图中的每一第二模型的状态信息确定为跳过状态。
在一些实施例中,数据流通状态包括数据流入状态和数据流出状态;第三 确定模块还用于:基于至少一个第二模型的数据流入状态和数据流出状态,确 定执行依赖图中相邻的每两个第二模型之间的数据连通关系;从至少一个第二 模型中,确定与目标模型之间具有数据连通关系的第三模型子集;将第三模型 子集中的每一第二模型的状态信息确定为待加载状态。
在一些实施例中,调用模块还用于:基于第一模型子集中每一第一模型的 存储占用量,确定存储空间中固定占用的第一存储容量;基于存储空间的总存 储容量与第一存储容量之间的差值,确定缓存空间的第二存储容量;基于缓存 空间的第二存储容量和第二模型子集中每一第二模型的存储占用量,确定缓存 空间的模型容量;其中,模型容量表征缓存空间中可加载第二模型的数量。
在一些实施例中,调用模块还用于:将第二模型子集中的每一第二模型按 照存储占用量由大到小的顺序进行排序,得到排序后的第二模型序列;依次累 加第二模型序列中每一第二模型的存储占用量,直至累加的存储占用量之和超 出第二存储容量,并将当前累加的第二模型的数量确定为缓存空间的模型容量。
在一些实施例中,所述装置还包括:划分模块,用于通过以下步骤,将网 络模型集划分为第一模型子集和第二模型子集:获取网络模型集中每一网络模 型的存储占用量、第一执行耗时和第二执行耗时;其中,每一网络模型的第一 执行耗时表征对应的网络模型在固定加载至存储空间中的情况下的执行耗时, 每一网络模型的第二执行耗时表征对应的网络模型在动态加载至存储空间中的 情况下的执行耗时;基于存储空间的总存储容量以及网络模型集中每一网络模 型的存储占用量、第一执行耗时和第二执行耗时,对每一网络模型的加载方式 进行动态规划,得到每一网络模型的加载方式,使得每一网络模型按照相应的 加载方式加载至存储空间的情况下,存储空间中同时加载的各网络模型的存储 占用量之和未超出存储空间的总存储容量,且执行全部网络模型的总耗时最小; 将加载方式为固定加载的每一网络模型均添加至第一模型子集中,并将加载方 式为动态加载的每一网络模型均添加至第二模型子集中。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法 实施例相似的有益效果。在一些实施例中,本公开实施例提供的装置具有的功 能或包含的模块可以用于执行上述方法实施例描述的方法,对于本公开装置实 施例中未披露的技术细节,请参照本公开方法实施例的描述而理解。
需要说明的是,本公开实施例中,如果以软件功能模块的形式实现上述的 模型调用方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可 读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对 相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在 一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、 服务器、或者网络设备等)执行本公开各个实施例所述方法的全部或部分。而 前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、 磁碟或者光盘等各种可以存储程序代码的介质。这样,本公开实施例不限制于 任何特定的硬件、软件或固件,或者硬件、软件、固件三者之间的任意结合。
本公开实施例提供一种计算机设备,包括存储器和处理器,所述存储器存 储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方 法中的部分或全部步骤。
本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该 计算机程序被处理器执行时实现上述方法中的部分或全部步骤。所述计算机可 读存储介质可以是瞬时性的,也可以是非瞬时性的。
本公开实施例提供一种计算机程序,包括计算机可读代码,在所述计算机 可读代码在计算机设备中运行的情况下,所述计算机设备中的处理器执行用于 实现上述方法中的部分或全部步骤。
本公开实施例提供一种计算机程序产品,所述计算机程序产品包括存储了 计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并 执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过 硬件、软件或其结合的方式实现。在一些实施例中,所述计算机程序产品具体 体现为计算机存储介质,在另一些实施例中,计算机程序产品具体体现为软件 产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
这里需要指出的是:上文对各个实施例的描述倾向于强调各个实施例之间 的不同之处,其相同或相似之处可以互相参考。以上设备、存储介质、计算机 程序及计算机程序产品实施例的描述,与上述方法实施例的描述是类似的,具 有同方法实施例相似的有益效果。对于本公开设备、存储介质、计算机程序及 计算机程序产品实施例中未披露的技术细节,请参照本公开方法实施例的描述 而理解。
需要说明的是,图7为本公开实施例中计算机设备的一种硬件实体示意图, 如图7所示,该计算机设备700的硬件实体包括:处理器701、通信接口702 和存储器703,其中:
处理器701通常控制计算机设备700的总体操作。
通信接口702可以使计算机设备通过网络与其他终端或服务器通信。
存储器703配置为存储由处理器701可执行的指令和应用,还可以缓存待 处理器701以及计算机设备700中各模块待处理或已经处理的数据(例如,图 像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH) 或随机访问存储器(Random AccessMemory,RAM)实现。处理器701、通信 接口702和存储器703之间可以通过总线704进行数据传输。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实 施例有关的特定特征、结构或特性包括在本公开的至少一个实施例中。因此, 在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指 相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合 在一个或多个实施例中。应理解,在本公开的各种实施例中,上述各步骤/过程 的序号的大小并不意味着执行顺序的先后,各步骤/过程的执行顺序应以其功能 和内在逻辑确定,而不应对本公开实施例的实施过程构成任何限定。上述本公 开实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意 在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装 置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为 这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由 语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物 品或者装置中还存在另外的相同要素。
在本公开所提供的几个实施例中,应该理解到,所揭露的设备和方法,可 以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所 述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式, 如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽 略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦 合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可 以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为 单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可 以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来 实现本实施例方案的目的。
另外,在本公开各实施例中的各功能单元可以全部集成在一个处理单元中, 也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一 个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软 件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可 以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储 介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介 质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者 光盘等各种可以存储程序代码的介质。
或者,本公开上述集成的单元如果以软件功能模块的形式实现并作为独立 的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样 的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软 件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干 指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等) 执行本公开各个实施例所述方法的全部或部分。而前述的存储介质包括:移动 存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本公开的实施方式,但本公开的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化 或替换,都应涵盖在本公开的保护范围之内。

Claims (15)

1.一种模型调用方法,其特征在于,所述方法包括:
获取设定的任务流中当前待执行的任务节点;
从所述任务流对应的网络模型集中,确定所述任务节点对应的目标模型;其中,所述网络模型集包括第一模型子集和第二模型子集,所述第一模型子集中的每一第一模型的加载方式为固定加载,所述第二模型子集中的每一第二模型的加载方式为动态加载;
在设定的存储空间中未加载所述目标模型的情况下,基于设定的动态加载机制,将所述目标模型动态加载至所述存储空间中,并调用所述存储空间中已加载的所述目标模型执行所述任务节点;其中,所述存储空间用于存储固定加载的每一所述第一模型和当前动态加载的至少一个所述第二模型。
2.根据权利要求1所述的方法,其特征在于,所述存储空间中包括用于存储当前动态加载的至少一个所述第二模型的缓存空间;所述基于设定的动态加载机制,将所述目标模型动态加载至所述存储空间中,包括:
获取所述缓存空间的模型容量和所述缓存空间当前的使用量,并基于所述模型容量和所述使用量,确定所述缓存空间当前的可用容量;
在所述可用容量小于所述目标模型的缓存占用量的情况下,从所述缓存空间中已加载的至少一个第二模型中确定优先级最低的候选模型;
在所述目标模型的优先级高于所述候选模型的优先级的情况下,将所述候选模型从所述缓存空间中释放,并将所述目标模型加载至所述缓存空间中。
3.根据权利要求2所述的方法,其特征在于,所述基于设定的动态加载机制,将所述目标模型动态加载至所述存储空间中,还包括:在所述目标模型满足设定条件的情况下,确定所述目标模型的优先级高于所述候选模型的优先级;所述设定条件包括以下至少之一:所述目标模型的执行紧急程度高于所述候选模型的执行紧急程度;所述目标模型在所述任务流中的推理次数大于所述候选模型在所述任务流中的推理次数;所述目标模型的历史执行次数大于所述候选模型的历史执行次数。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述存储空间中包括用于存储当前动态加载的至少一个所述第二模型的缓存空间;所述基于设定的动态加载机制,将所述目标模型动态加载至所述存储空间中,包括:
以所述目标模型为遍历起始点,依次遍历设定的模型加载队列中的每一第二模型,并针对遍历过程中访问的每一第二模型,基于所述第二模型的状态信息,将所述第二模型加载至所述缓存空间中,所述模型加载队列中包括所述第二模型子集中的至少一个第二模型。
5.根据权利要求4所述的方法,其特征在于,每一所述第二模型的状态信息包括待加载状态或跳过状态;所述基于所述第二模型的状态信息,将所述第二模型加载至所述缓存空间中,包括:
在所述第二模型的状态信息为待加载状态的情况下,将所述第二模型加载至所述缓存空间中,并将所述第二模型的状态信息更新为跳过状态;
在所述第二模型的状态信息为跳过状态的情况下,结束访问当前的第二模型,并继续访问所述模型加载队列中的下一个第二模型。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
基于所述任务流中各任务节点之间的依赖关系,确定所述第二模型子集中每一第二模型之间的执行依赖关系;
基于所述第二模型子集中每一第二模型之间的执行依赖关系,确定所述任务流对应的模型加载队列,以及所述模型加载队列中每一第二模型的状态信息。
7.根据权利要求6所述的方法,其特征在于,所述第二模型子集中每一第二模型之间的执行依赖关系包括每一第二模型之间的执行依赖图;所述基于所述第二模型子集中每一第二模型之间的执行依赖关系,确定所述任务流对应的模型加载队列,以及所述模型加载队列中每一第二模型的状态信息,包括:
采用深度遍历的方式遍历所述执行依赖图中的每一第二模型,得到所述任务流对应的模型加载队列;
基于当前待执行的任务节点对应的目标模型的数据流通状态,对所述执行依赖图中每一第二模型的数据流进行预测,得到每一所述第二模型的数据流通状态;
基于至少一个所述第二模型的数据流通状态,确定每一所述第二模型的状态信息。
8.根据权利要求7所述的方法,其特征在于,所述数据流通状态包括数据流入状态;所述基于至少一个所述第二模型的数据流通状态,确定每一所述第二模型的状态信息,包括:
采用深度遍历的方式遍历所述执行依赖图中的每一第二模型,针对遍历过程中访问的每一第二模型,执行以下之一操作:
在所述第二模型的数据流入状态为有数据流入的情况下,将所述第二模型的状态信息确定为待加载状态;
在所述第二模型的数据流入状态为无数据流入的情况下,确定所述执行依赖图中以所述第二模型为根节点的第一子图,并将所述第一子图中的每一第二模型的状态信息确定为跳过状态。
9.根据权利要求7或8所述的方法,其特征在于,所述数据流通状态包括数据流入状态和数据流出状态;所述基于至少一个所述第二模型的数据流通状态,确定每一所述第二模型的状态信息,包括:
基于至少一个所述第二模型的数据流入状态和数据流出状态,确定所述执行依赖图中相邻的每两个第二模型之间的数据连通关系;
从至少一个所述第二模型中,确定与所述目标模型之间具有数据连通关系的第三模型子集;
将所述第三模型子集中的每一第二模型的状态信息确定为待加载状态。
10.根据权利要求2或3所述的方法,其特征在于,所述获取所述缓存空间的模型容量,包括:
基于所述第一模型子集中每一第一模型的存储占用量,确定所述存储空间中固定占用的第一存储容量;
基于所述存储空间的总存储容量与所述第一存储容量之间的差值,确定所述缓存空间的第二存储容量;
基于所述缓存空间的第二存储容量和所述第二模型子集中每一第二模型的存储占用量,确定所述缓存空间的模型容量;其中,所述模型容量表征所述缓存空间中可加载第二模型的数量。
11.根据权利要求10所述的方法,其特征在于,所述基于所述缓存空间的第二存储容量和所述第二模型子集中每一第二模型的存储占用量,确定所述缓存空间的模型容量,包括:
将所述第二模型子集中的每一第二模型按照存储占用量由大到小的顺序进行排序,得到排序后的第二模型序列;
依次累加所述第二模型序列中每一第二模型的存储占用量,直至累加的存储占用量之和超出所述第二存储容量,并将当前累加的第二模型的数量确定为所述缓存空间的模型容量。
12.根据权利要求1至11中任一项所述的方法,其特征在于,所述方法还包括:
通过以下步骤,将所述网络模型集划分为所述第一模型子集和所述第二模型子集:
获取所述网络模型集中每一网络模型的存储占用量、第一执行耗时和第二执行耗时;其中,每一所述网络模型的第一执行耗时表征对应的网络模型在固定加载至存储空间中的情况下的执行耗时,每一所述网络模型的第二执行耗时表征对应的网络模型在动态加载至存储空间中的情况下的执行耗时;
基于所述存储空间的总存储容量以及所述网络模型集中每一网络模型的存储占用量、第一执行耗时和第二执行耗时,对每一网络模型的加载方式进行动态规划,得到每一网络模型的加载方式,使得每一网络模型按照相应的加载方式加载至所述存储空间的情况下,所述存储空间中同时加载的各网络模型的存储占用量之和未超出所述存储空间的总存储容量,且执行全部所述网络模型的总耗时最小;
将加载方式为固定加载的每一网络模型均添加至所述第一模型子集中,并将加载方式为动态加载的每一网络模型均添加至所述第二模型子集中。
13.一种模型调用装置,其特征在于,包括:
获取模块,用于获取设定的任务流中当前待执行的任务节点;
第一确定模块,用于从所述任务流对应的网络模型集中,确定所述任务节点对应的目标模型;其中,所述网络模型集包括第一模型子集和第二模型子集,所述第一模型子集中的每一第一模型的加载方式为固定加载,所述第二模型子集中的每一第二模型的加载方式为动态加载;
调用模块,用于在设定的存储空间中未加载所述目标模型的情况下,基于设定的动态加载机制,将所述目标模型动态加载至所述存储空间中,并调用所述存储空间中已加载的所述目标模型执行所述任务节点;其中,所述存储空间用于存储固定加载的每一所述第一模型和当前动态加载的至少一个所述第二模型。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至12任一项所述方法中的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12任一项所述方法中的步骤。
CN202210775509.8A 2022-07-01 2022-07-01 模型调用方法、装置、设备及存储介质 Pending CN115167937A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210775509.8A CN115167937A (zh) 2022-07-01 2022-07-01 模型调用方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210775509.8A CN115167937A (zh) 2022-07-01 2022-07-01 模型调用方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN115167937A true CN115167937A (zh) 2022-10-11

Family

ID=83488806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210775509.8A Pending CN115167937A (zh) 2022-07-01 2022-07-01 模型调用方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN115167937A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115981871A (zh) * 2023-03-17 2023-04-18 苏州万店掌网络科技有限公司 一种gpu资源调度方法、装置、设备及存储介质
CN116578423A (zh) * 2023-07-07 2023-08-11 阿里巴巴(中国)有限公司 任务处理方法、自动问答方法以及图像生成方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115981871A (zh) * 2023-03-17 2023-04-18 苏州万店掌网络科技有限公司 一种gpu资源调度方法、装置、设备及存储介质
CN115981871B (zh) * 2023-03-17 2024-01-26 苏州万店掌网络科技有限公司 一种gpu资源调度方法、装置、设备及存储介质
CN116578423A (zh) * 2023-07-07 2023-08-11 阿里巴巴(中国)有限公司 任务处理方法、自动问答方法以及图像生成方法
CN116578423B (zh) * 2023-07-07 2023-11-28 阿里巴巴(中国)有限公司 任务处理方法、自动问答方法以及图像生成方法

Similar Documents

Publication Publication Date Title
CN115167937A (zh) 模型调用方法、装置、设备及存储介质
CN106919957B (zh) 处理数据的方法及装置
CN111381970B (zh) 集群任务的资源分配方法及装置、计算机装置及存储介质
JP2020024534A (ja) 画像分類装置及びプログラム
CN112150237B (zh) 多模型融合的订单逾期预警方法、装置、设备及存储介质
CA3156623A1 (en) Automatic reduction of training sets for machine learning programs
CN111160959B (zh) 一种用户点击转化预估方法及装置
US11481659B1 (en) Hyperparameter optimization using fairness constraints
CN114936085A (zh) 基于深度学习算法的etl调度方法及装置
KR20200082490A (ko) 기계 학습 데이터 선택 방법 및 장치
KR20210157302A (ko) 워크플로우 기반의 자동 예측 모델링 방법 및 그를 위한 장치
US20210319269A1 (en) Apparatus for determining a classifier for identifying objects in an image, an apparatus for identifying objects in an image and corresponding methods
CN112199417B (zh) 基于人工智能的数据处理方法、装置、终端及存储介质
CN111754261B (zh) 一种车辆出租意愿的评估方法、装置及终端设备
CN115461718A (zh) 神经网络中的内存分配
CN109800887B (zh) 预测流程模型的生成方法、装置、存储介质和电子设备
CN113792945B (zh) 一种营运车辆的派遣方法、装置、设备及可读存储介质
CN114490094A (zh) 一种基于机器学习的gpu显存分配方法及系统
US11580358B1 (en) Optimization with behavioral evaluation and rule base coverage
CN112395167A (zh) 一种作业故障预测方法、装置及电子设备
CN114358350A (zh) 会议预定模型的使用方法、装置、设备及存储介质
Riedlinger et al. Uncertainty quantification for object detection: output-and gradient-based approaches
US20230418666A1 (en) Graph streaming neural network processing system and method thereof
CN110288364A (zh) 一种基于XGBoost模型的二手车定价方法,装置及系统
EP4270278A1 (en) Resource allocation in complex environments

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