CN114968272A - 一种算法运行方法、装置、设备、存储介质 - Google Patents
一种算法运行方法、装置、设备、存储介质 Download PDFInfo
- Publication number
- CN114968272A CN114968272A CN202210613711.0A CN202210613711A CN114968272A CN 114968272 A CN114968272 A CN 114968272A CN 202210613711 A CN202210613711 A CN 202210613711A CN 114968272 A CN114968272 A CN 114968272A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- target
- data processing
- algorithms
- model
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例提供一种算法运行方法、装置、设备及存储介质。算法运行方法包括:获取多组目标算法的分组信息;根据多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。本公开提供的技术方案克服了算法运行、部署过程中资源占用高的问题。
Description
技术领域
本公开实施例涉及但不限于人工智能技术领域,尤其涉及一种算法运行方法、装置、设备、存储介质。
背景技术
近年来,随着人工智能领域的发展,越来越多的AI(Artificial Intelligence,人工智能)算法被开发出来应用到各行各业,例如,基于深度学习的计算机视觉被广泛地应用于各个领域。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
第一方面,本公开实施例提供了一种算法运行方法,包括:
获取多组目标算法的分组信息;
根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
在示例性实施方式中,所述获取多组目标算法的分组信息之前,还包括:
获取所述多个数据处理设备的可用资源和部署任意一个目标算法所需的资源消耗;
根据所述可用资源和所述资源消耗将所述多个目标算法以所述数据处理设备为单位进行分组;同一个目标算法以及该算法所对应的算法模型划分到同一组数据处理设备,同一组数据处理设备对应至少一个目标算法以及所述至少一个目标算法所对应的算法模型。
在示例性实施方式中,任意一组分组信息中包括至少一个目标算法信息以及所述至少一个目标算法信息所对应的算法模型信息。
在示例性实施方式中,所述根据所述可用资源和所述资源消耗将所述多个目标算法以所述数据处理设备为单位进行分组,包括:
将所述多个目标算法中最常用的一组算法模型作为当前算法模型组,选择其中一组数据处理设备作为当前数据处理设备;
将所述当前算法模型组添加到所述当前数据处理设备中;
根据所述当前数据处理设备的可用资源和部署所述当前算法模型组对应的所有目标算法的资源消耗,判断所述当前数据处理设备的可用资源能否容纳部署所述当前算法模型组对应的所有目标算法;
判定当前数据处理设备能够容纳部署所述当前算法模型组所对应的所有目标算法的状态下,将当前算法模型组所对应的所有目标算法添加到当前数据处理设备中;将未分组的多个目标算法中最常用的一组算法模型作为当前算法模型,继续将所述当前算法模型组添加到所述当前数据处理设备中。
在示例性实施方式中,判定当前数据处理设备不能够容纳部署当前算法模型组所对应的所有目标算法的状态下,还包括:
将当前数据处理设备能够容纳的与所述当前算法模型组对应的目标算法添加到当前数据处理设备中,新增一组数据处理设备作为当前数据处理设备,将前一组数据处理设备中的算法模型添加到当前数据处理设备中,将未分组的与当前算法模型组对应的目标算法添加到当前数据处理设备中;将未分组的所述多个目标算法中最常用的一组算法模型作为当前算法模型组,继续将所述当前算法模型组添加到所述当前数据处理设备中。
在示例性实施方式中,所述获取多组目标算法的分组信息,包括:获取算法部署表,所述算法部署表包括所述多组目标算法的分组信息和目标算法的资源配置信息,所述分组信息包括多个算法分组标识;
所述根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法,包括:
根据所述多个算法分组标识生成多个第一配置文件,将同一算法分组标识对应的所有目标算法的启动命令写入该组算法标识所对应的第一配置文件;
根据所述第一配置文件所对应的多组目标算法的资源配置信息,给所述多个第一配置文件分别配置一个数据处理设备;
根据所述第一配置文件在对应的数据处理设备中启动微服务容器,在所述微服务容器中启动模型管理器;
控制所述模型管理器加载该组目标算法对应的算法模型;
在对应的微服务容器中运行对应的目标算法;同一组算法分组标识对应的算法和模型管理器在同一个数据处理设备中启动。
在示例性实施方式中,在对应的微服务容器中运行对应的目标算法之后,还包括:输出并保存算法运行结果。
在示例性实施方式中,所述在对应的微服务容器中运行对应的目标算法,包括:在对应的微服务容器中运行对应的目标算法,并调用目标算法所需要的算法模型。
在示例性实施方式中,所述算法部署表还包括算法代码地址和算法运行路径;
所述在对应的微服务容器中启动对应的目标算法之前,还包括:根据所述算法代码地址获取目标算法的代码;
所述在对应的微服务容器中启动对应的目标算法,包括:根据所述算法运行路径在对应的微服务器中运行对应的目标算法代码。
在示例性实施方式中,所述算法部署表还包括测试视频流地址、算法名称和反馈测试输出地址;
获取所述算法部署表之后,还包括:根据所述测试视频流地址获取视频源文件,通过预设的推流镜像将所述目标算法测试用的视频源文件推流成视频流,生成拉流地址,使用所述拉流地址对所述对应目标算法的第一配置文件进行更新;所述视频流地址和所述拉流地址包含视频名称,所述视频名称与对应的所述算法名称具有对应关系;
所述在对应的微服务容器中运行对应的目标算法之后,还包括:根据所述算法部署表遍历需要测试视频流的目标算法,启动测试平台,启动需要测试视频流的目标算法根据相应的视频流地址进行播放测试,等待预设时间,收集多个目标算法反馈的测试报告,将未通过测试的信息通过所述反馈测试输出地址发送至异常信息反馈平台。
在示例性实施方式中,所述算法部署表中还包括算法模型信息;
所述获取多组目标算法的分组信息之前,还包括:将模型仓库中的原始算法模型转换为开放式神经网络交换格式,将开放式神经网络交换格式进行转换得到TensorRT模型,将TensorRT模型保存至模型仓库中;在转换为TensorRT模型的过程中,合并原始算法模型中的一部分网络层;
所述控制所述模型管理器加载该组目标算法对应的算法模型,包括:获取所述目标算法对应的算法模型法信息,控制所述模型管理器从所述模型仓库中加载与所述算法模型信息对应的TensorRT模型。
在示例性实施方式中,所述在对应的微服务容器中运行对应的目标算法之后,还包括:
根据所述业务部署表测试所有所述目标算法,输出并保存测试结果。
在示例性实施方式中,所述获取多组目标算法的分组信息备之前,还包括:触发周期性部署;
所述根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法之后,还包括:触发周期性检测。
第二方面,本公开实施例还提供一种算法运行装置,
包括获取模块、运行模块;
所述获取模块,设置为获取多组目标算法的分组信息;
所述运行模块,设置为根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
第三方面,本公开实施例还提供一种算法运行设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,以执行:
获取多组目标算法的分组信息;
根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
第四方面,本公开实施例还提供一种非瞬态计算机可读存储介质,所述存储介质用于存储计算机程序指令,其中,所述计算机程序指令运行时可实现上述任一实施例所述的算法运行方法。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本公开实施例技术方案的理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开实施例的技术方案,并不构成对本公开技术方案的限制。
图1所示为本公开实施例提供的算法运行方法的流程图;
图2a所示为本公开示例性实施例提供的一种自动化部署模块逻辑结构示意图;
图2b所示为本公开示例性实施例提供的AI算法自动化检测的逻辑架构示意图;
图2c所示为本公开示例性实施例提供的一种Jenkins框架结构示意图;
图3所示为本公开示例性实施例提供的一种AI平台运行状态检查流程图;
图4所示为本公开示例性实施例提供的一种AI算法运行状态检查流程图;
图5所示为本公开示例性实施例提供的一种算法指标测试的逻辑结构图;
图6a所示为本公开示例性实施例提供的一种视频源处理的逻辑框架图;
图6b所示为本公开示例性实施例提供的一种视频源处理的逻辑框架图;
图7所示为本公开实施例提供的一种算法运行装置模块示意图;
图8所示为本公开实施例提供的一种算法运行设备模块示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互任意组合。
除非另外定义,本公开实施例公开使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语一直出该词前面的元件或误检涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者误检。
在本说明书中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解。例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间件间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以结合具体情况理解上述术语在本发明中的具体含义。
完成算法研发之后,算法工程化落地过程中会遇到诸多问题,比如算法与服务器环境适配问题、模型推理速度慢、资源占用高以及算法部署后测试流程繁琐等问题,从而导致AI算法工程化效率低、成本高。
本公开实施例提供了一种算法运行方法,如图1所示,算法运行方法可以包括:
步骤M1:获取多组目标算法的分组信息;
步骤M2:根据多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
本公开实施例提供的算法运行方法,根据多组目标算法的分组信息在多个数据处理设备上运行多组目标算法,同一组分组信息所对应目标算法在同一个数据处理设备上运行。本公开实施例提供的方法,可以克服算法部署资、运行过程中源占用高的问题,从而使得AI算法工程化效率高、成本低。
在示例性实施方式中,任意一组分组信息中包括至少一个目标算法信息以及至少一个目标算法信息所对应的算法模型信息。在本公开实施例中,在同一个数据处理设备中运行的多个目标算法为同一组目标算法,多个目标算法所对应的算法模型与对应的多个目标算法均在同一个数据处理设备中运行,其中,划分到同一组的多个目标算法和对应的多个模型算法,通常情况下可以根据实际业务需要进行划分,比如,在禁区监控和警告业务流程下,可以有人体识别算法、车辆识别算法,则人体识别算法对应的算法模型包括经过深度学习/训练的人体检测算法模型,车辆识别算法对应的算法模型包括经过深度学习/训练的车辆检测算法模型;在实际运行算法的过程中,以人体识别算法为例进行说明:在运行算法过程中,需要检测人体是否进入禁区,则人体识别算法调用人体检测算法模型,检测人体是否进入禁区,当人体进入禁区时输出警告信息。
在本公开实施例中,运行在同一个数据处理设备上的多个目标算法以及多个算法模型中,目标算法的数量和算法模型的数量可以不是一对一关系,但是运行在同一个数据处理设备上的多个模型算法是多个目标算法中至少一个目标算法运行时会调用,比如一组目标算法中可以包括十个目标算法和五个算法模型,其中三个目标算法运行过程中均用到五个算法模型,另外两个目标算法运行过程中仅调用其中一个或两个目标算法。
在本公开实施例中,同一组目标算法中的多个目标算法,以及多个目标算法所对应的算法模型在同一个数据处理设备上运行,可以节省资源,在数据处理设备出现问题或承载数据处理设备的平台出现故障的情况下,可以将多组目标算法在其他未出现故障的平台以及未出现问题的数据处理设备上运行,提高了算法运行的容灾性。
在示例性实施方式中,步骤M1之前,可以包括步骤S1-步骤S2:
步骤S1:获取多个数据处理设备的可用资源和部署任意一个目标算法所需的资源消耗;
步骤S2:根据可用资源和资源消耗将多个目标算法以数据处理设备为单位进行分组;同一个目标算法以及该算法所对应的算法模型划分到同一组数据处理设备,同一组数据处理设备对应至少一个目标算法以及至少一个目标算法所对应的算法模型。
在本公开实施例中,步骤S1至步骤S2可以人工手动执行,也可以通过脚本程序或算法自动执行。
在本公开实施例中,上述步骤M1-步骤M2的运行方法可以应用于算法部署流程中。
在本公开实施例中,数据处理设备可以为GPU卡(或GPU处理器),但不限于GUP卡(或GPU处理器),例如,数据处理设备可以为CPU处理器;数据处理设备可以设置于目标装置中,目标装置可以为云服务器,但不限于云服务器,比如目标装置可以为一个服务器集群中任意一个服务器。
在本公开实施例中,目标算法的资源消耗可以为运行目标算法时所消耗的数据处理设备的资源。例如,目标算法的资源消耗可以为目标算法运行过程中占用GPU和/或CPU的空间,比如,一个目标算法在运行时需要占用50MB的GPU,则该目标算法的资源消耗包括50MB的GPU空间。
在示例性实施方式中,步骤S2中,根据可用资源和资源消耗将多个目标算法以数据处理设备为单位进行分组,可以包括步骤S21-步骤S23:
步骤S21:将多个目标算法中最常用的一组算法模型作为当前算法模型组,选择其中一组数据处理设备作为当前数据处理设备;
步骤S22:将当前算法模型组添加到当前数据处理设备中;
步骤S23:根据当前数据处理设备的可用资源和部署当前算法模型组对应的所有目标算法的资源消耗,判断当前数据处理设备的可用资源能否容纳部署当前算法模型组对应的所有目标算法;判定当前数据处理设备能够容纳部署当前算法模型组所对应的所有目标算法的状态下,将当前算法模型组所对应的所有目标算法添加到当前数据处理设备中;将未分组的多个目标算法中最常用的一组算法模型作为当前算法模型,继续将当前算法模型组添加到当前数据处理设备中。
在示例性实施方式中,步骤S23中,判定当前数据处理设备不能够容纳部署当前算法模型组所对应的所有目标算法的状态下,还可以包括:
将当前数据处理设备能够容纳的与当前算法模型组对应的目标算法添加到当前数据处理设备中,新增一组数据处理设备作为当前数据处理设备,将前一组数据处理设备中的算法模型添加到当前数据处理设备中,将未分组的与当前算法模型组对应的目标算法添加到当前数据处理设备中;将未分组的多个目标算法中最常用的一组算法模型作为当前算法模型组,继续将当前算法模型组添加到当前数据处理设备中。
在示例性实施方式中,步骤M1可以包括:获取算法部署表,算法部署表包括所述多组目标算法的分组信息和目标算法的资源配置信息,所述分组信息包括多个算法标识信息;
在示例性实施方式中,算法部署表可以为CSV文件,算法部署表可以由算法开发人员填写,或者根据用户填写的信息生成CSV文件。
步骤M2可以包括:
步骤M21:根据多个算法分组标识生成多个第一配置文件,将同一算法分组标识对应的所有目标算法的启动命令写入该组算法标识所对应的第一配置文件;
步骤M22:根据第一配置文件所对应的多组目标算法的资源配置信息,给多个第一配置文件分别配置一个数据处理设备;步骤M23:根据第一配置文件在对应的数据处理设备中启动微服务容器,在微服务容器中启动模型管理器;
在本公开实施例中,第一配置文件可以为kubernetes配置文件,微服务容器可以为kubernetes容器,模型管理器可以为triton server。
步骤M2:控制模型管理器加载目标算法对应的算法模型;
步骤M25:在对应的微服务容器中运行对应的目标算法;同一组算法分组标识对应的算法和模型管理器在同一个数据处理设备中启动。
在示例性实施方式中,在对应的微服务容器中运行对应的目标算法之后,还包括:输出并保存算法运行结果。
在示例性实施方式中,在对应的微服务容器中运行对应的目标算法,包括:在对应的微服务容器中运行对应的目标算法,并调用目标算法所需要的算法模型。
在示例性实施方式中,可以将输出的算法运行结果通过JIRA接口反馈至JIRA平台,相关负责人通过登录JIRA平台可以获取相应的运行结果,从而可以实现算法部署的闭环管理,提高算法部署效率。
在本公开实施例中,在同一组算法分组标识对应的算法和模型管理器在同一个数据处理设备中启动,使得同一组的算法和模型管理器运行起来只需要一块GUP资源,不需要其他环境的要求,可以在同一个集群中任意一个GPU上运行,从而容灾性比较高。
在示例性实施方式中,算法部署表还可以包括算法代码地址和算法运行路径;
执行步骤M25中在对应的微服务容器中启动对应的目标算法之前,还可以包括:根据算法代码地址获取目标算法的代码;
步骤M25中,在对应的微服务容器中启动对应的目标算法,可以包括:根据算法运行路径在对应的微服务器中运行对应的目标算法代码。
在示例性实施方式中,算法部署表还包括测试视频流地址、算法名称和反馈测试输出地址;
执行步骤M1中获取算法部署表之后,还可以包括:根据测试视频流地址获取视频源文件,通过预设的推流镜像将目标算法测试用的视频源文件推流成视频流,生成拉流地址,使用拉流地址对对应目标算法的第一配置文件进行更新;视频流地址和拉流地址包含视频名称,视频名称与对应的算法名称具有对应关系;
步骤M21中,在对应的微服务容器中运行对应的目标算法之后,还可以包括:根据算法部署表遍历需要测试视频流的目标算法,启动测试平台,启动需要测试视频流的目标算法根据相应的视频流地址进行播放测试,等待预设时间,收集多个目标算法反馈的测试报告,将未通过测试的信息通过反馈测试输出地址发送至异常信息反馈平台。
在示例性实施方式中,视频名称与对应的算法名称具有对应关系,可以包括:视频名称与对应的算法名称相同,或其他对应关系。
在示例性实施方式中,异常信息反馈平台可以为JIRA平台,反馈测试输出地址可以为对应目标算法的jiraID。
在示例性实施方式中,算法部署表中还可以包括算法模型信息;
执行步骤M1中获取多组目标算法的分组信息之前,还可以包括:将模型仓库中的原始算法模型转换为开放式神经网络交换格式,将开放式神经网络交换格式进行转换得到TensorRT模型,将TensorRT模型保存至模型仓库中;在转换为TensorRT模型的过程中,合并原始算法模型中的一部分网络层;
步骤M24中,控制模型管理器加载目标算法对应的算法模型,可以包括:获取目标算法对应的算模型法信息,控制模型管理器从模型仓库中加载与算法模型信息对应的TensorRT模型。
在本公开实施例中,原始算法模型可以为pytorch模型。在本公开实施例中,将模型仓库中的原始pytorch算法模型转换为开放式神经网络交换格式,将开放式神经网络交换格式进行转换得到TensorRT模型,可以提升模型的推理速度。
在示例性实施方式中,步骤M25,在对应的微服务容器中运行对应的目标算法之后,还可以包括:根据业务部署表测试所有目标算法,输出并保存测试结果。在示例性实施方式中,可以将输出的测试结果通过JIRA接口反馈至JIRA平台,相关负责人通过登录JIRA平台可以获取相应的测试结果,从而可以实现算法部署的闭环管理,提高算法部署效率。
在示例性实施方式中,执行步骤M1之前,还可以包括:触发周期性部署。在本公开实施例中,在部署大规模算法的情况下,上述算法部署过程中可以通过自动化部署脚本进行流程控制,自动化部署方式有两种:一种是用户登录部署服务器手动执行,另一种是通过jenkins周期性触发自动化部署平台,自动将目标算法部署于目标装置。
在示例性实施方式中,执行步骤M2之后,还可以包括:触发周期性检测。
在示例性是实施方式中,可以通过jenkins周期性触发自动化检测平台(以下简称为检测平台)自动对部署于目标装置上的目标算法进行检测,可以提高算法检测的实时性和检测效率。
在本公开实施例中,通过jenkins周期性触发自动化检测和周期性触发自动化部署,并将测试结果和算法部署后的运行结果通过JIRA接口反馈至JIRA平台,用户通过登录JIRA平台可以获取相应的测试结果或部署运行结果,从而形成闭环开发,提高开发效率,从而提高算法工程化落地效率并降低算法工程化落地成本。
在本公开实施例中,上述周期性触发自动化检测可以通过测试脚本进行流程控制。
在本公开实施例中,上述目标算法可以为AI算法。下面对算法部署进行详细说明:在本公开实施例中,目标算法经过模型训练之后以及算法代码编写之后,AI算法面临的下一个步骤就是部署。模型部署与模型训练不同,AI各种算法在产品化落地时,即要保持算法的各种性能指标,又要足够的快(起码的要求必须能实时处理)。各种算法根据不同业务场景,大多数是部署到云端服务器中,主要挑战是并发服务能力,主要指标是吞吐率和延时。
TensorRT是英伟达的一个深度学习模型加速的一个软件栈。它提供了非常多模型优化的手段,包括深度神经网络层的融合,自动的根据目标的GPU选择最佳的kernel实现,内存复用,int8类型量化。
Triton inference server是一个用来把AI推理服务化的一个开源的软件栈。它可以将不同的深度学习框架的模型统一管理起来,如TensorFlow、PyTorch、TensorRT、ONNX,Triton inference server还可以支持模型推理的并发。
如图2a所示,为部署目标算法的自动化部署模块逻辑结构示意图,自动化部署模块可以包括以下几个模块:
一、资源仓库:包括模型仓库、算法代码仓库、镜像仓库。
模型仓库:用于存储各功能模型训练后的权重文件,AI算法部署时根据各业务所需的模型统一从模型仓库中拉取模型权重。
算法代码仓库:算法代码仓库用于存储各业务的策略代码以及对应的算法代码,AI算法部署时根据算法业务统一从算法代码仓库拉取算法代码。
镜像仓库:可以为Docker镜像仓库,用于存储AI算法部署过程中所用到的docker镜像,部署时直接使用固定版本的镜像启动kubernetes容器。
二、模型加速模块
本公开实施例中采用pytorch–>onnx->TensorRT的模型加速技术栈。首先将原始模型转换为onnx(开放式神经网络交换格式,Open Neural Network Exchange),然后再转换为TensorRT模型,转换为TensorRT模型的过程中会合并原始模型的一些网络层,并且针对NVIDIA GPU做特殊优化,从而提升模型的推理速度。转换后的模型同样放入模型仓库中保存,以便部署时使用。
三、算法部署表
算法部署表可以称为业务部署表,是本系统自动化部署与测试的核心文件。算法部署和算法测试过程中使用的业务部署表为CSV文件,其中各列分别为:算法名称,作者,算法路径,使用到的模型,测试视频地址,模型分组,jiraID。此业务部署表中包含了部署及测试AI算法所需的所有信息,后续自动化部署时,自动化部署脚本会根据业务部署表的中的信息将所有需要部署的AI算法启动。业务部署表由业务开发人员填写。其中:
算法名称字段:可以唯一标识一个算法,同时测试视频名称与算法名称相同;
算法路径字段:可以为上述算法分组标识,为目标算法的入口文件所在路径,自动部署程序会直接运行此文件启动AI业务;
模型分组字段:可以为上述算法分组标识,用于标识目标算法的组别,同一组别的算法业务与其所需要的算法模型会运行在同一块GPU上,对应kubernetes的一个pod。
jiraID字段为此业务的jira bug报告地址,若自动化测试此业务未通过,则将此业务的日志文件以及未通过信息自动报告至此地址。
四、模型、业务分组
本公开实施例采用分组的方式对大规范AI算法进行部署,由于大规模部署时业务所需模型众多,单一显卡不足以支撑所有业务,所以本发明创新性地以GPU显卡为单位将部署业务分组。
分组方法可以包括:
步骤001:将多个目标算法中最常用的一组算法模型作为当前算法模型组,选择其中一组数据处理设备作为当前数据处理设备;
步骤002:将当前算法模型组添加到当前数据处理设备中;
步骤003:根据当前数据处理设备的可用资源和部署当前算法模型组对应的所有目标算法的资源消耗,判断当前数据处理设备的可用资源能否容纳部署当前算法模型组对应的所有目标算法;
判定当前数据处理设备能够容纳部署当前算法模型组所对应的所有目标算法的状态下,将当前算法模型组所对应的所有目标算法添加到当前数据处理设备中;将未分组的多个目标算法中最常用的一组算法模型作为当前算法模型,继续执行步骤002;
判定当前数据处理设备不能够容纳部署当前算法模型组所对应的所有目标算法的状态下,将当前数据处理设备能够容纳的与当前算法模型组对应的目标算法添加到当前数据处理设备中,新增一组数据处理设备作为当前数据处理设备,将前一组数据处理设备中的算法模型添加到当前数据处理设备中,判断是否还有与当前算法模型对应的未分组的目标算法,是则将未分组的与当前算法模型组对应的目标算法添加到当前数据处理设备中,否则执行步骤004;
步骤004:将未分组的多个目标算法中最常用的一组算法模型作为当前算法模型组,继续执行步骤002。
五、自动化部署模块
本公开实施例中,自动化部署模块的触发为一个入口脚本文件,此脚本文件可以将所有部署程序模块按顺序调用。自动化部署脚本触发方式有两种:一种是部署人员登录服务器手动执行,另一种是使用Jenkins定时自动执行。Jenkins是基于Java开发的一种持续集成工具,本公开实施例中采用Jenkins定时部署与测试的方式,及时反馈bug,加速开发迭代。
如图2a所示,自动化部署模块可以包括:
自动拉取最新代码:在代码仓库中拉取最新的AI算法代码,以保证部署的AI算法与远程代码仓库中一致。
自动推流:根据算法部署表中的测试视频地址字段将各算法所需要的测试视频推成实时视频流,供算法拉取。
自动推流的方法可以包括:目标算法对应的测试视频名称与算法名称相同,找到属于同一组别的目标算法和对应的测试视频地址,使用镜像仓库中的推流镜像将此视频推成视频流,将目标算法配置文件中的拉流地址更新为此视频流地址。
自动生成kubernetes配置文件并启动容器:自动部署模块会根据算法部署表将同一组的所有AI算法的启动命令写入kubernetes的配置文件中,然后根据一个kubernetes的配置模板配置容器的挂载目录,镜像名称等。kubernetes配置文件可以理解为上述第一配置文件,kubernetes的配置模板可以理解为与第一配置文件不同的第二配置文件,第二配置文件可以单独设置或者可以设置于第一配置文件中。
启动Triton server:在本公开实施例中triton server与AI算法启动在同一kubernetes容器中,triton server管理的模型与AI算法同为一组。这样做的优点是该组的AI算法与模型运行起来只需要一块GPU资源,无其他任何环境要求,所以该方法的容灾性极高,它可以再kubernetes集群中任意一个GPU上运行。Kubernetes容器启动之后会首先启动triton server来加载该组AI算法所需的深度学习模型。
启动目标算法:
自动化部署模块加载好模型之后,自动部署模块会启动同一组中所有AI算法,并将AI算法的输出日志存放到固定目录,供调试人员查看。
启动自动测试程序:自动化部署模块最后一步是启动自动测试程序,自动测试程序会根据算法部署表测试同一组中所有的AI算法,并对算法运行结果进行自动报告。
六、自动化测试模块
自动测试程序会根据算法部署表测试同一组所有的AI算法,并对结果进行自动报告。
自动化测试方法可以包括:自动测试程序根据算法部署表遍历同一组所有需要自动测试的程序,若算法部署表中其中一个算法业务属于需要检查的组别,则启动一个进程检查此AI算法在测试视频测试过程中本该输出的所有文件,等待15分钟后,每个进程会将各自负责的业务测试结果反馈给父进程,父进程收集这些测试信息,汇总之后发送至jira测试报告,若有未通过测试的业务,会单独向算法部署表中的此算法业务对应的jiraID发送失败结果和算法日志。
如图2b所示,为自动化测试模块中自动化检测平台的逻辑框架示意图,研发人员在完成模型开发和策略开发之后,将算法提交至代码存储服务器(可以理解为上述代码库),运维平台或测试平台通过jenkins周期性触发对代码存储服务器中算法的自动化检测,算法检测内容可以包括配置检测、编译检测、模型检测、AI平台的启动状态检测和算法运行状态检测。本公开实施例中AI平台可以理解为上述目标装置或上述目标装置中的数据处理设备。
如图2c所示,Jenkins框架可以包括六个配置模块:
General模块:构建任务的一些基本配置,丢弃旧的构建,设置构建历史的保存策略;选择设置参数化构建过程,可以配置不同的参数,便于在构建时引用这些参数。
源码管理模块:选择GIT,设置对应GIT参数。在示例性实施方式中,设置GIT参数可以为设置GIT地址,GIT地址可以为用于访问代码存储服务器的SVN地址。
构建触发器模块:选择定时构建,设置对应的时间参数。构建触发器模块以后,可以周期性触发测试。
构建环境模块:选择Delete workspace before build starts构建工具。
构建模块:通常情况下,构建模块环境是写执行文件。本公开实施例对此模块没有做设置。
构建后操作模块:采用设计调用命令和编写脚本的方式实现。
根据构建触发器模块设定的周期以及源码管理模块设置的GIT参数,周期性从GIT地址拉取算法代码进行测试。
下面详细描述算法检测方法:
(1)jenkins自动拉取git代码:测试周期到达时,触发周期性自动化检测,检测平台通过jenkins自动从代码存储服务器拉取git地址对应的算法代码。代码存储服务器中每个算法代码都对应有一个git地址,检测平台可以通过git地址访问代码存储服务器中对应的算法代码。在示例性实施方式中,代码存储服务器可以称为代码存储平台。
在示例性实施方式中,运维平台通过git地址获取到对应的算法代码,在批量算法上线或批量算法检测时,可以通过jenkins从代码存储服务器中获取批量算法对应的git地址,根据git地址获取对应的多个算法代码,从而实现批量算法上线或批量算法检测。在示例性实施方式中,同一个git地址可对应批量算法中的多个算法,或者每一个算法对应一个git地址。
(2)生成配置基准文件:根据算法代码生成配置基准文件。
在示例性实施方式中,配置基准文件可以包括批量算法中多个算法的算法名称、算法模型参数、算法运行所需要的数据库的路径参数、资源配置参数以及作为算法输入的视频流信息,其中视频流信息中包含对应的算法名称、算法策略信息、帧率阈值等信息。在示例性实施方式中,配置基准文件中还可以包括算法研发负责人和平台负责人的相关信息。
在示例性实施方式中,资源配置参数可以包括占用CPU、GPU等资源,比如一个算法需要占用CPU或GPU的空间为100M,占用GPU的空间位50M。
(3)基于配置基准文件生成CSV格式的配置文件。
在示例性实施方式中,为了适应检测平台对配置文件的格式要求,根据配置基准文件生成CSV格式的配置文件,在后续检测过程中以CSV格式的配置文件为标准。
在示例性实施方式中,CSV格式的配置文件中可以包括依次排列的两部分,第一部分可以包括多个算法的基本信息,基本信息可以包括上述的算法名称、算法模型参数、算法运行所需要的数据库的路径参数,第二部分可以包括算法输入信息,算法输入信息包括上述视频流信息。其中,第一部分中多个算法的基本信息可以依次排列,第二部分中多个算法的算法输入信息可以依次排列。
(4)CSV生成检查:检查CSV格式的配置文件是否为检测平台规定的标准格式,如果不是检测平台规定的标准格式,则调用JIRA接口反馈对应算法的配置bug。
在示例性实施方式中,逗号分隔值(Comma-Separated Values,简写为CSV)有时也称为字符分隔值,因为分隔字符可以不是逗号,其文件以纯文本形式存储表格数据(数字和文本)。纯文本是指文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。
在示例性实施方式中,CSV检查可以包括检查CSV格式的配置文件是否符合标准配置文件的格式要求,例如,标准配置文件的格式为记录间以逗号分隔,如果检查CSV格式配置文件中记录间以分号则CSV生成出现异常。
(5)配置检查可以包括:检查配置文件基本信息中的算法名称是否与算法输入信息中的算法名称一致,如果不一致,则调用JIRA接口反馈对应算法的配置bug。
在示例性实施方式中,有些算法不需要输入的视频流,则可以在基本信息的算法名称中标注没有输入视频流信息,检测到算法名称标注没有输入视频流信息,根据该标注可以确定并未发生异常,可以不调用JIRA接口反馈对应算法的bug。
在示例性实施方式中,有些多算法在实际运行过程中即便不用视频流信息作为输入,但是在在模型开发和策略开发过程中配置了视频流信息,只不过在运行过程中不用相应的视频流资源,这种情况下如果在配置检查过程中没有检测到算法名称对应的视频流信息时,可以调用JIRA接口反馈对应算法的bug。
在示例性实施方式中,bug为软件、程序、代码、算法、计算机系统中漏洞、缺陷、错误问题的统称。
(6)编译代码:jenkins根据编译指令调用编译接口对算法代码进行编译。
在示例性实施方式中,jenkins从git地址中获取对应算法的编译指令,自动调用编译接口对算法代码进行编译,可以减少人工对编译环境的部署以及人工编译过程,从而减少人工成本,提高效率。
(7)编译检查可以包括:检查算法编译过程是否报错以及检查算法编译结果是否成功,如果编译过程报错或者编译结果未成功,则调用JIRA接口反馈对应算法的编译bug。在示例性实施方式中,检查算法编译过程是否报错以及检查算法编译结果是否成功,可以包括:获取jenkins编译的日志,检查编译日志中是否存在错误。例如,检查编译日志中是否存在“error”等信息。
(8)模型检可以包括:根据配置文件,检查本次上线的算法所需的模型文件是否准备无误,如果检测出模型文件没有准备好,则调用JIRA接口反馈对应算法的模型bug。
在示例性实施方式中,检查本次上线的算法所需的模型文件是否准备无误,可以包括:根据配置文件中的模型参数查找对应算法的模型文件是否存在。
在示例性实施方式中,上述CSV生成检查、配置检查、模型检查过程中,一旦出现异常,则调用JIRA的接口服务,自动提交相应bug到JIRA服务器,JIRA服务器通过浏览器向用户展示相应bug,对应的开发人员通过相应浏览器可以查看相应的bug。
在人工上线过程中,运维或测试出现问题后,通常由运维或测试人员与开发人员沟通,而且运维或测试人员并不完全了解开发出现的bug哪里出现问题,沟通成本较高。本公开实施例中,通过JIRA接口将bug信息上传到JIRA服务器,开发人员以及平台负责人、测试或运维人员通过登录JIRA账号即可查看相应的bug信息,在很大程度上减少了沟通成本。在示例性实施方式中,Jenkins是一个开源的、提供友好操作界面的持续集成(Continuousintegration,简称CI)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。
(8)AI平台运行状态检查。
本公开实施例中,AI平台可以理解为云平台,或其他部署有AI算法的平台。
如图3所示,AI平台运行状态检查可以包括如下步骤:
步骤11:启动AI平台,等待第一预设时间执行步骤12。
在示例性实施方式中,第一预设时间可以为1分钟至5分钟,例如,第一预设时间可以为3分钟。
在示例性实施方式中,可以在完成编译代码之后就开始启动AI平台,在执行完编译检查和模型检查之后开始执行AI平台运行状态的检查,自执行AI平台运行状态检查开始,等待第一预设时间执行步骤12。
步骤12:检查AI平台服务是否存在,是则完成检查,否则执行步骤13。
在示例性实施方式中,检查AI平台服务是否存在,可以检查AI平台的进程是否启动,若进程未启动则执行步骤13,若进程已经启动则完成检查。
步骤13:联动JIRA接口,提交bug。
在步骤13中,通过JIRA接口将AI平台启动异常提交至JIRA服务器,用户(AI平台负责人或开发人员)登录JIRA服务器可以查看相应bug,以解决相应的问题。在本公开实施例中,JIRA服务器可以为上述异常信息反馈平台。
(9)算法运行状态检查。
如图4所示,AI算法运行状态检查可以包括如下步骤:
步骤21:启动算法对应的线程组。
在示例性实施方式中,AI平台中的进程启动之后即可执行启动算法的操作。
在示例性实施方式中,启动算法可以在AI平台进程启动后启动与算法数量相应的线程,启动多个算法时,每个算法对应一个线程,在进程中启动多个线程的线程组。
步骤22:读取配置文件,将配置文件中标记需要检测的算法加入到AI平台的线程组中。
在示例性实施方式中,在批量算法测试或批量算法上线过程中,有些由于线程组资源有限,只能将一部分算法加入当前线程组中,剩余算法可以加入到其他线程组或者下次测试时再测试。在示例性实施方式中,配置文件中记录的算法可以默认均需要检测,不设置是否需要检测的标识。
在示例性实施方式中,每个算法加载到线程组中的其中一个线程。
步骤23:运行多个线程组,多个线程组中任意一个AI算法运行出现异常时,向异常信息反馈平台发送相应AI算法运行异常的信息。
在示例性实施方式中,检测算法出现异常时,会联动JIRA接口,提交bug并反馈到JIRA服务平台(即异常反馈平台),算法负责人可以登录JIRA服务器,查看JIRA bug,并处理相应的算法异常。
在示例性实施方式中,执行完算法检测后,检测结果未出现异常的情况下可以得到算法的输出结果。
步骤24:启动汇总线程,汇总检测结果并通过JIRA接口反馈至JIRA平台。
在示例性实施方式中,配置文件中可以包括研发负责人和AI平台负责人的邮箱地址,JIRA平台收到相应bug后,可以将相应bug信息通过邮箱地址发送给相应的研发负责人或AI平台负责人。
在示例性实施方式中,汇总线程将总的检测结果通过JIRA接口反馈到JIRA服务器,AI平台负责人登录JIRA服务器获取检测结果,根据检测结果确认算法上线结果是否满足预期。在示例性实施方式中,总的检测结果可以包括:共检测多少个算法的代码、算法测试成功数量、算法测试失败数量、成功列表、失败列表。
在示例性实施方式中,线程执行算法检测过程中存在bug则认为测试不成功,并将相应bug信息通过JIRA上传到JIRA平台。
在示例性实施方式中,成功列表中包含算法测试成功的算法清单,失败列表中包含算法测试失败的算法清单。
在示例性实施方式中,AI平台负责人根据检测结果确认算法上线结果是否满足预期,可以根据检测失败或成功算法的类型来判断,例如批量测试的算法总共21个,如果有一个算法测试出现异常,通过平台负责人评估,出现异常的算法不是本次必须上线的,则可以只上线20个检测成功的算法,此次算法测试满足预期;如果检测的算法中总共21个,有10必须上线的算法检测出现异常,则不能满足预期,不能够上线,需要相应的研发负责人将相应bug解决以后重新测试,即重复上述(1)至(9)的检测过程,直到满足测试预期方可上线。
在示例性实施方式中,将检测结果自动提交至JIRA平台服务器,可以实现流水线作用,不需要人工操作,节省人力成本。
在示例性实施方式中,检测结果中可以包括检测日志和异常记录,检测日志可以包括检测时间以及上述的成功列表、失败列表。例如,检测日志如下:
2021-10-18 16:10:25[model_repository2]auto test end!total:16failed:7
FAILED LIST:['highway_lowspeed','drive_without_license',drive_license_without_permission’,'drive_inout','driver_car_match','station_leave','wandering_alarm']
NEW JIRA LIST:[]
YF2021430-131
上述检测日志中记录检测结束时间为2021年10月18日16点10分25秒,总共检测数量为16,失败数量为7,失败列表中检测失败的算法包括:
'highwayjowspeed','drive_withoutjicense','drive_license_without_permission','drivejncut','driver_car_match','stationjeave','wandering_alarm'
异常记录摘要包括:
[AI300OnlineCheck:C-Video][check.CorfigCheckLog]ERRORBUG exists invehiclebreakin
[AI300OnlineCheck:C-Video][CHECK_CompleCheckLog]ERRORBUG exists inNonVehiclelllegalParkingDetect
[Al300OnlineCheck:C-Video][check_CorfigCheckLog]ERRORBUG exists invehiclebreakin
在示例性实施方式中,可以在jenkins集成设置定时运行自动上线检测,来提升检测效率,例如,可以在jenkins上设置每周工作日上午11点30、下午16:30周期性自动运行上线检测服务,方便算法在上午或下午集中进行上线。
在本公开实施例中,算法运行在AI平台上对业务提供消息接口,实际业务场景时可能会需要接入1个或多个摄像头。如果平台资源不足,可能会出现视频流处理失败、服务挂掉等问题。为了避免接入后因平台资源不足导致视频流处理失败、服务挂掉等问题,在算法检测未出现异常且成功上线之后、多路摄像头接入之前,可以对多路摄像头接入AI平台时的算法指标进行测试。在示例性实施方式中,可以对单卡/单机配置下N路摄像头接入AI平台时的算法指标进行测试,获取到平台现有服务配置下算法指标值与摄像头路数的曲线关系图,对产品落地和资源配置的提前规划和设计具有数据意义。本公开实施例中,单卡可以指图形处理器(Graphics Processing Unit,简写为GPU),又称显示核心、视觉处理器、显示芯片,单机可以为配置多个GPU卡的物理机。
在本公开实施例中,算法指标测试的逻辑如图5所示,下面对视频流、AI服务平台、指标项数据进行说明:
视频流:AI平台服务的输入源。可采用视频文件的方式模拟多路视频流,或采用一路视频流转多路流的方式进行模拟。
在示例性实施方式中,可以将一个视频文件复制为N份,分别将N份视频文件进行转流形成N路视频流;或者将一份视频文件进行转流形成视频流,将视频流进行复制N份形成N路视频流。
AI平台服务:基于AI平台框架的算法服务。其输入为1路或多路的视频流;输出为帧率、处理消息个数、消息文件、系统资源占用情况(如CPU/GPU占用率)等。AI平台服务包含了视频流的解码、算法处理、指标数据的记录和输出等功能。
指标项数据:AI平台服务处理N路流时要求的指标项输出。以周界入侵算法为例,要求输出需包含告警消息个数、平均处理帧率(fps)、告警图片检测框的像素位置、系统资源占用率(CPU/GPU)。
在示例性实施方式中,如图6a和图6b所示,为两种视频源处理的逻辑框架图,如图6a所示,为以视频文件作为视频源:
流媒体服务:提供视频文件转流服务。可将一个视频文件转成指定要求的N路视频流。其转出的视频流作为AI平台服务的视频流输入。
AI平台服务:为图5所示AI服务平台提供的服务,具体服务参考上述AI服务平台的描述,在此不再赘述。
结果数据处理:针对AI平台服务的输出,进行数据处理,得到对应的指标关系图。
如图6b所示,为真实摄像头作为视频源输入:
流媒体服务:提供转流服务。可将一个摄像头的视频流转成指定要求的N路视频流。其转出的视频流作为AI平台服务的视频流输入。
AI平台服务:为图5所示AI服务平台提供的服务,具体服务参考上述AI服务平台的描述,在此不再赘述。
结果数据处理:针对AI平台服务的输出,进行数据处理,得到对应的指标关系图。
在示例性实施方式中,上述得到的指标关系图可以包括准率-摄像头路数曲线图。
在本公开实施例中,图6a和图6b所述的结果数据处理,实施方式可以采用上述步骤S2所述的形式,结果数据处理最终得到的是算法指标的测试结果。
在本公开实施例中,可以采用模拟方式生成视频流,与真实摄像头的视频流相比具有以下优势:
(1)能够保证输入源一致,得出的指标结论具有可对比性。
(2)能够保证单帧画面密度满足特定要求,比如单帧画面人数需达到30人,可得到容量测试的指标值;而真实摄像头很难保证单帧画面密度。
(3)易扩展、易搭建。可根据实际需求变化,对比N路(如8路、16路、32路、100路)指标值。
基于上述3点,对比的路数多时,采用真实摄像头从摄像头的数量、采购、搭建和画面人流密度模拟等都很难去快速实现。
在示例性实施方式中,在图6a和图6b两种视频流模拟方式中,上述图6a采用视频文件得到的视频流,与上述图6b采用真实摄像头模拟得出的视频流相比,可以方便制定满足单帧画面密度的场景视频。
本公开实施例还提供一种算法运行装置,如图7所示,可以包括获取模块01、运行模块02;
获取模块01,可以设置为获取多组目标算法的分组信息;
运行模块02,可以设置为根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
本公开实施例还提供一种算法运行设备,如图8所示,可以包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,以执行:
获取多组目标算法的分组信息;
根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。本公开实施例还提供一种非瞬态计算机可读存储介质,所述存储介质用于存储计算机程序指令,其中,所述计算机程序指令运行时可实现上述任一实施例所述的算法运行方法。
本公开实施例提供的一种算法运行方法、装置、设备及存储介质,算法运行方法中,根据多组目标算法的分组信息在多个数据处理设备上运行多组目标算法,同一组分组信息所对应目标算法在同一个数据处理设备上运行。本公开实施例提供的方法,可以克服算法部署资、运行过程中源占用高的问题,从而使得AI算法工程化效率高、成本低。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本公开实施例附图只涉及本公开实施例涉及到的结构,其他结构可参考通常设计。
在不冲突的情况下,本发明的实施例即实施例中的特征可以相互组合以得到新的实施例。
虽然本发明所揭露的实施方式如上,但的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (16)
1.一种算法运行方法,其特征在于,包括:
获取多组目标算法的分组信息;
根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
2.根据权利要求1所述的算法运行方法,其特征在于,任意一组分组信息中包括至少一个目标算法信息以及所述至少一个目标算法信息所对应的算法模型信息。
3.根据权利要求1所述的算法运行方法,其特征在于,所述获取多组目标算法的分组信息之前,还包括:
获取所述多个数据处理设备的可用资源和部署任意一个目标算法所需的资源消耗;
根据所述可用资源和所述资源消耗将所述多个目标算法以所述数据处理设备为单位进行分组;同一个目标算法以及该算法所对应的算法模型划分到同一组数据处理设备,同一组数据处理设备对应至少一个目标算法以及所述至少一个目标算法所对应的算法模型。
4.根据权利要求3所述的算法部署方法,其特征在于,所述根据所述可用资源和所述资源消耗将所述多个目标算法以所述数据处理设备为单位进行分组,包括:
将所述多个目标算法中最常用的一组算法模型作为当前算法模型组,选择其中一组数据处理设备作为当前数据处理设备;
将所述当前算法模型组添加到所述当前数据处理设备中;
根据所述当前数据处理设备的可用资源和部署所述当前算法模型组对应的所有目标算法的资源消耗,判断所述当前数据处理设备的可用资源能否容纳部署所述当前算法模型组对应的所有目标算法;
判定当前数据处理设备能够容纳部署所述当前算法模型组所对应的所有目标算法的状态下,将当前算法模型组所对应的所有目标算法添加到当前数据处理设备中;将未分组的多个目标算法中最常用的一组算法模型作为当前算法模型,继续将所述当前算法模型组添加到所述当前数据处理设备中。
5.根据权利要求4所述的算法部署方法,其特征在于,判定当前数据处理设备不能够容纳部署当前算法模型组所对应的所有目标算法的状态下,还包括:
将当前数据处理设备能够容纳的与所述当前算法模型组对应的目标算法添加到当前数据处理设备中,新增一组数据处理设备作为当前数据处理设备,将前一组数据处理设备中的算法模型添加到当前数据处理设备中,将未分组的与当前算法模型组对应的目标算法添加到当前数据处理设备中;将未分组的所述多个目标算法中最常用的一组算法模型作为当前算法模型组,继续将所述当前算法模型组添加到所述当前数据处理设备中。
6.根据权利要求1所述的算法部署方法,其特征在于,所述获取多组目标算法的分组信息,包括:获取算法部署表,所述算法部署表包括所述多组目标算法的分组信息和目标算法的资源配置信息,所述分组信息包括多个算法分组标识;
所述根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法,包括:
根据所述多个算法分组标识生成多个第一配置文件,将同一算法分组标识对应的所有目标算法的启动命令写入该组算法标识所对应的第一配置文件;
根据所述第一配置文件所对应的多组目标算法的资源配置信息,给所述多个第一配置文件分别配置一个数据处理设备;
根据所述第一配置文件在对应的数据处理设备中启动微服务容器,在所述微服务容器中启动模型管理器;
控制所述模型管理器加载该组目标算法对应的算法模型;
在对应的微服务容器中运行对应的目标算法;同一组算法分组标识对应的算法和算法模型在同一个数据处理设备中启动。
7.根据权利要求6所述的算法部署方法,其特征在于,在对应的微服务容器中运行对应的目标算法之后,还包括:输出并保存算法运行结果。
8.根据权利要求6所述的算法部署方法,其特征在于,所述在对应的微服务容器中运行对应的目标算法,包括:在对应的微服务容器中运行对应的目标算法,并调用目标算法所需要的算法模型。
9.根据权利要求6所述的算法部署方法,其特征在于,所述算法部署表还包括算法代码地址和算法运行路径;
所述在对应的微服务容器中启动对应的目标算法之前,还包括:根据所述算法代码地址获取目标算法的代码;
所述在对应的微服务容器中启动对应的目标算法,包括:根据所述算法运行路径在对应的微服务器中运行对应的目标算法代码。
10.根据权利要求6所述的算法部署方法,其特征在于,所述算法部署表还包括测试视频流地址、算法名称和反馈测试输出地址;
获取所述算法部署表之后,还包括:根据所述测试视频流地址获取视频源文件,通过预设的推流镜像将所述目标算法测试用的视频源文件推流成视频流,生成拉流地址,使用所述拉流地址对所述对应目标算法的第一配置文件进行更新;所述视频流地址和所述拉流地址包含视频名称,所述视频名称与对应的所述算法名称具有对应关系;
所述在对应的微服务容器中运行对应的目标算法之后,还包括:根据所述算法部署表遍历需要测试视频流的目标算法,启动测试平台,启动需要测试视频流的目标算法根据相应的视频流地址进行播放测试,等待预设时间,收集多个目标算法反馈的测试报告,将未通过测试的信息通过所述反馈测试输出地址发送至异常信息反馈平台。
11.根据权利要求6所述的算法部署方法,其特征在于,所述算法部署表中还包括算法模型信息;
所述获取多组目标算法的分组信息之前,还包括:将模型仓库中的原始算法模型转换为开放式神经网络交换格式,将开放式神经网络交换格式进行转换得到TensorRT模型,将TensorRT模型保存至模型仓库中;在转换为TensorRT模型的过程中,合并原始算法模型中的一部分网络层;
所述控制所述模型管理器加载该组目标算法对应的算法模型,包括:获取所述目标算法对应的算法模型法信息,控制所述模型管理器从所述模型仓库中加载与所述算法模型信息对应的TensorRT模型。
12.根据权利要求6所述的算法运行方法,其特征在于,所述在对应的微服务容器中运行对应的目标算法之后,还包括:
根据所述业务部署表测试所有所述目标算法,输出并保存测试结果。
13.根据权利要求1所述的算法运行方法,其特征在于,所述获取多组目标算法的分组信息之前,还包括:触发周期性部署;
所述根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法之后,还包括:触发周期性检测。
14.一种算法运行装置,其特征在于,包括获取模块、运行模块;
所述获取模块,设置为获取多组目标算法的分组信息;
所述运行模块,设置为根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
15.一种算法运行设备,其特征在于,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,以执行:
获取多组目标算法的分组信息;
根据所述多组目标算法的分组信息在多个数据处理设备上运行多组目标算法;其中,同一组分组信息所对应目标算法在同一个数据处理设备上运行。
16.一种非瞬态计算机可读存储介质,其特征在于,所述存储介质用于存储计算机程序指令,其中,所述计算机程序指令运行时可实现权利要求1至13中任意一项所述的算法运行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210613711.0A CN114968272A (zh) | 2022-05-31 | 2022-05-31 | 一种算法运行方法、装置、设备、存储介质 |
PCT/CN2023/092570 WO2023231704A1 (zh) | 2022-05-31 | 2023-05-06 | 算法运行方法、装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210613711.0A CN114968272A (zh) | 2022-05-31 | 2022-05-31 | 一种算法运行方法、装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114968272A true CN114968272A (zh) | 2022-08-30 |
Family
ID=82957409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210613711.0A Pending CN114968272A (zh) | 2022-05-31 | 2022-05-31 | 一种算法运行方法、装置、设备、存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114968272A (zh) |
WO (1) | WO2023231704A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115587103A (zh) * | 2022-12-07 | 2023-01-10 | 杭州华橙软件技术有限公司 | 算法资源规划方法、装置、终端及计算机可读存储介质 |
WO2023231704A1 (zh) * | 2022-05-31 | 2023-12-07 | 京东方科技集团股份有限公司 | 算法运行方法、装置、设备、存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012387A (zh) * | 2024-02-28 | 2024-05-10 | 西安交通大学 | 大数据分析算法库的构建系统及构建方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014106767A (ja) * | 2012-11-28 | 2014-06-09 | Sony Corp | 情報処理装置、情報処理方法及びコンピュータプログラム |
CN108804378A (zh) * | 2018-05-29 | 2018-11-13 | 郑州易通众联电子科技有限公司 | 一种计算机数据处理方法及系统 |
CN112346859B (zh) * | 2020-10-26 | 2023-06-16 | 北京市商汤科技开发有限公司 | 资源调度方法及装置、电子设备和存储介质 |
CN112927127B (zh) * | 2021-03-11 | 2024-06-28 | 华南理工大学 | 一种运行在边缘设备上的视频隐私数据模糊化方法 |
CN114968272A (zh) * | 2022-05-31 | 2022-08-30 | 京东方科技集团股份有限公司 | 一种算法运行方法、装置、设备、存储介质 |
-
2022
- 2022-05-31 CN CN202210613711.0A patent/CN114968272A/zh active Pending
-
2023
- 2023-05-06 WO PCT/CN2023/092570 patent/WO2023231704A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023231704A1 (zh) * | 2022-05-31 | 2023-12-07 | 京东方科技集团股份有限公司 | 算法运行方法、装置、设备、存储介质 |
CN115587103A (zh) * | 2022-12-07 | 2023-01-10 | 杭州华橙软件技术有限公司 | 算法资源规划方法、装置、终端及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023231704A1 (zh) | 2023-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273286B (zh) | 针对任务应用的场景自动化测试平台及方法 | |
CN114968272A (zh) | 一种算法运行方法、装置、设备、存储介质 | |
CN107291565B (zh) | 运维可视化自动化作业平台及实现方法 | |
CN109683899B (zh) | 一种软件集成方法及装置 | |
US10310968B2 (en) | Developing software project plans based on developer sensitivity ratings detected from monitoring developer error patterns | |
CN109614391B (zh) | 数据库诊断系统、数据库诊断方法及非临时性机器可读介质 | |
CN109271602B (zh) | 深度学习模型发布方法及装置 | |
US20150154233A1 (en) | Dependency manager for databases | |
CN105718570A (zh) | 用于数据库的数据迁移方法和装置 | |
CN111881014B (zh) | 一种系统测试方法、装置、存储介质及电子设备 | |
CN110765018B (zh) | 接口自动化测试方法及设备 | |
CN104166590A (zh) | 一种实现任务调度的方法及系统 | |
CN103150249A (zh) | 一种自动化测试的方法和系统 | |
CN103646104A (zh) | 一种强实时故障诊断方法及系统 | |
CN112507623B (zh) | 一种算法中台构建方法及系统 | |
CN116643950B (zh) | 一种基于FaaS的云原生应用自动化运维方法 | |
CN112650688A (zh) | 自动化回归测试方法、关联设备以及计算机程序产品 | |
CN112162761A (zh) | 自动化部署项目至公有云容器化平台的方法、系统及设备 | |
CN114637511A (zh) | 代码测试系统、方法、装置、电子设备及可读存储介质 | |
CN116010066A (zh) | 一种rpa机器人及实现方法 | |
CN117931620A (zh) | 一种降低智能终端系统测试技术门槛的自动化测试方法 | |
CN113687927A (zh) | Flume任务调度配置方法、装置、设备及存储介质 | |
CN111767218B (zh) | 一种用于持续集成的自动化测试方法、设备及存储介质 | |
CN116627437A (zh) | Airflow服务的部署方法及装置、存储介质、计算机设备 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |