掌桥专利:专业的专利平台
掌桥专利
首页

模型发布方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:32:36


模型发布方法、装置、电子设备及存储介质

技术领域

本申请涉及数据处理技术领域,具体而言,涉及一种模型发布方法、装置、电子设备及存储介质。

背景技术

随着人工智能的发展,在不同的应用领域(例如金融领域)存在大量的模型需要更新、上线以及线上监控。在现阶段,在对模型进行发布时,模型开发工程师开发模型,并把开发好的模型交由上线研发工程师上线发布,由于是不同技术部门进行模型的开发和发布,存在沟通成本大的问题。另一方面,现阶段在进行模型发布时模型发布过程没有记录,容易出生产事故,存在模型发布过程中可靠性低的问题。

发明内容

本申请的实施例在于提供一种模型发布方法、装置、电子设备及存储介质,以解决目前方法在模型发布过程中可靠性低的问题。

本申请的实施例提供了一种模型发布方法,所述方法包括:

基于模型的模型名称对所述模型的模型接口进行发布,得到接口发布结果;

在所述接口发布结果显示所述模型接口成功发布时,开启所述模型的旁路模型进行旁路测试并得到旁路测试结果;

基于所述旁路测试结果对所述模型进行分流测试得到分流测试结果;

当所述分流测试结果显示所述模型符合发布条件时,发布所述模型得到稳定版本模型。

在上述实现过程中,将模型发布过程分为模型接口发布、旁路测试以及分流测试过程,通过模型接口发布、旁路测试以及分流测试过程能够对模型发布的过程进行监控,提高模型监控的可靠性。

可选地,所述基于模型的模型名称对所述模型的模型接口进行发布,得到接口发布结果,包括:

基于Vscode对所述模型的模型代码进行显示得到模型代码显示结果;

当所述模型代码显示结果表明所述模型代码加载正确时,对所述模型代码进行构建得到构建结果;

当所述构建结果表明显示所述模型代码编译正确时,制作所述模型的基础镜像;

基于所述基础镜像、所述模型代码携带的依赖包列表以及所述模型代码构建模型镜像;

基于所述模型镜像中的实例数目对所述模型镜像进行运行以完成对所述模型接口的发布,得到模型接口发布结果。

在上述实现过程中,在对模型接口进行发布的过程中对模型代码进行显示并显示模型代码的编译结果,能够实时定位模型代码的错误便于修改,提高进行模型接口发布的效率。

可选地,在所述接口发布结果显示所述模型接口成功发布时,开启所述模型的旁路模型并得到旁路测试结果,包括:

对获取的在所述模型中进行运行的数据进行模拟得到模拟数据;

在调用所述旁路模型的节点处创建异步请求队列,并将对所述旁路模型进行调用的请求存储在所述异步请求队列中;

在所述异步请求队列中调取所述请求并基于所述模拟数据对所述旁路模型进行执行得到旁路测试结果。

在上述实现过程中,通过所述模型的旁路模型对所述模型中进行运行的数据进行模拟得到模拟数据,能够在基于模拟数据对旁路模型进行旁路测试的过程中能够对旁路模型的结果和中间过程生成记录日志作为测试参考直到以后的模型开发和模型发布,并且不会对模型的发布不产生影响,提高模型发布的可靠性。

可选地,所述基于所述旁路测试结果对所述模型进行分流测试得到分流测试结果,包括:

在所述旁路测试结果显示所述旁路模型运行正确时,获取所述旁路测试的数据条数以及所述旁路测试结果;

在获取所述旁路测试的数据条数以及所述旁路测试结果后,对获取的在所述模型中进行运行的数据设置分流比例;

基于所述分流比例得到所述模型的各个分流模型对应的分流数据;

基于各个所述分流数据分别对所述各个分流模型进行分流测试,得到各个所述分流模型对应的分流测试结果。

在上述实现过程中,分流测试能够对在所述模型中实际运行的数据进行分流,并基于分流后的各个所述分流数据对各个分流模型进行分流测试,以基于各个所述分流测试结果对所述模型进行分析,保证所述模型的准确性。

可选地,在所述当所述分流测试结果显示所述模型符合发布条件时,发布所述模型得到稳定版本模型之后,所述方法还包括:

获取所述稳定版本模型的模型性能指标以及所述模型性能指标对应的数据;

读取已设置的模型预警规则,并基于所述模型性能指标对应的数据执行所述预警规则得到预警结果;

当所述预警结果显示所述模型满足预警条件时,基于所述预警结果生成预警信息并发送所述预警信息;

将所述稳定版本模型进行回退,循环执行所述基于模型的模型名称对所述模型的模型接口进行发布,得到接口发布结果至当所述分流测试结果显示所述模型符合发布条件时,发布所述模型得到稳定版本模型的步骤。

在上述实现过程中,基于所述模型性能指标对应的数据执行所述预警规则得到预警结果,能够对模型发布时遇到的问题进行预警,并将生成的所述稳定版本模型进行回退,提高模型发布的准确性。

可选地,在所述读取已设置的模型预警规则之前,所述方法还包括:

基于Scala以及运算符对所述预警规则进行编码得到所述模型预警规则代码,并将所述模型预警代码进行封装得到预警规则接口。

在上述实现过程中,基于Scala以及运算符对所述预警规则进行编码,能够将数值运算、逻辑运算进行代码实现,以生成不同的预警规则,提高预警规则的灵活性。

本申请的实施例提供了一种模型发布装置,所述装置包括:

接口发布模块,用于基于模型的模型名称对所述模型的模型接口进行发布,得到接口发布结果;

旁路测试模块,用于在所述接口发布结果显示所述模型接口成功发布时,开启所述模型的旁路模型进行旁路测试并得到旁路测试结果;

分流测试模块,用于基于所述旁路测试结果对所述模型进行分流测试得到分流测试结果;

版本发布模块,用于当所述分流测试结果显示所述模型符合发布条件时,发布所述模型得到稳定版本模型。

在上述实现过程中,将模型发布过程分为模型接口发布、旁路测试以及分流测试过程,通过模型接口发布、旁路测试以及分流测试过程能够对模型发布的过程进行监控,提高模型监控的可靠性。

可选地,所述接口发布模块用于:

基于Vscode对所述模型的模型代码进行显示得到模型代码显示结果;

当所述模型代码显示结果表明所述模型代码加载正确时,对所述模型代码进行构建得到构建结果;

当所述构建结果表明显示所述模型代码编译正确时,制作所述模型的基础镜像;

基于所述基础镜像、所述模型代码携带的依赖包列表以及所述模型代码构建模型镜像;

基于所述模型镜像中的实例数目对所述模型镜像进行运行以完成对所述模型接口的发布,得到模型接口发布结果。

在上述实现过程中,在对模型接口进行发布的过程中对模型代码进行显示并显示模型代码的编译结果,能够实时定位模型代码的错误便于修改,提高进行模型接口发布的效率。

可选地,所述旁路测试模块用于:

对获取的在所述模型中进行运行的数据进行模拟得到模拟数据;

在调用所述旁路模型的节点处创建异步请求队列,并将对所述旁路模型进行调用的请求存储在所述异步请求队列中;

在所述异步请求队列中调取所述请求并基于所述模拟数据对所述旁路模型进行执行得到旁路测试结果。

在上述实现过程中,通过所述模型的旁路模型对所述模型中进行运行的数据进行模拟得到模拟数据,能够在基于模拟数据对旁路模型进行旁路测试的过程中能够对旁路模型的结果和中间过程生成记录日志作为测试参考直到以后的模型开发和模型发布,并且不会对模型的发布不产生影响,提高模型发布的可靠性。

可选地,所述分流测试模块用于:

在所述旁路测试结果显示所述旁路模型运行正确时,获取所述旁路测试的数据条数以及所述旁路测试结果;

在获取所述旁路测试的数据条数以及所述旁路测试结果后,对获取的在所述模型中进行运行的数据设置分流比例;

基于所述分流比例得到所述模型的各个分流模型对应的分流数据;

基于各个所述分流数据分别对所述各个分流模型进行分流测试,得到各个所述分流模型对应的分流测试结果。

在上述实现过程中,分流测试能够对在所述模型中实际运行的数据进行分流,并基于分流后的各个所述分流数据对各个分流模型进行分流测试,以基于各个所述分流测试结果对所述模型进行分析,保证所述模型的准确性。

可选地,所述模型发布装置还包括预警回退模块,所述预警回退模块用于:

获取所述稳定版本模型的模型性能指标以及所述模型性能指标对应的数据;

读取已设置的模型预警规则,并基于所述模型性能指标对应的数据执行所述预警规则得到预警结果;

当所述预警结果显示所述模型满足预警条件时,基于所述预警结果生成预警信息并发送所述预警信息;

将所述稳定版本模型进行回退,循环执行所述基于模型的模型名称对所述模型的模型接口进行发布,得到接口发布结果至当所述分流测试结果显示所述模型符合发布条件时,发布所述模型得到稳定版本模型的步骤。

在上述实现过程中,基于所述模型性能指标对应的数据执行所述预警规则得到预警结果,能够对模型发布时遇到的问题进行预警,并将生成的所述稳定版本模型进行回退,提高模型发布的准确性。

可选地,所述预警回退模块用于:

基于Scala以及运算符对所述预警规则进行编码得到所述模型预警规则代码,并将所述模型预警代码进行封装得到预警规则接口。

在上述实现过程中,基于Scala以及运算符对所述预警规则进行编码,能够将数值运算、逻辑运算进行代码实现,以生成不同的预警规则,提高预警规则的灵活性。

本实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任意方法中的步骤。

本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行上述任意方法中的步骤。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

图1为本申请实施例提供的一种模型发布方法的流程图。

图2为本申请实施例提供的一种模型发布的用户界面的示意图。

图3为本申请实施例提供的一种模型接口发布的步骤的流程图。

图4为本申请实施例提供的一种模型接口测试界面的示意图。

图5为本申请实施例提供的一种对模型进行旁路测试的步骤的流程图。

图6为本申请实施例提供的一种模型发布流程的框图示意图。

图7为本申请实施例提供的一种对模型进行分流测试的步骤的流程图。

图8为本申请实施例提供的一种模型退回的步骤的流程图。

图9为本申请实施例提供的一种进行预警规则配置的页面示意图。

图10为本申请实施例提供的一种模型发布装置的示意图。

图例:60-模型发布装置;601-接口发布模块;602-旁路测试模块;603-分流测试模块;604-版本发布模块;605-预警回退模块。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

在本申请的描述中,需要说明的是,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书、以及附图中所特别指出的结构来实现和获得。

为了提高模型发布的可靠性,本申请的实施例提供了一种模型发布方法,请参看图1,图1为本申请实施例提供的一种模型发布方法的流程图,所述模型发布方法包括以下分步骤:

步骤S1:基于模型的模型名称对模型的模型接口进行发布,得到接口发布结果。

可以理解的是,进行模型发布的模型可以从任何外部平台导入也可以是建模平台导入。作为一种实施方式,可以根据模型发布的流程面向用户开发用户界面,请参看图2,图2为本申请实施例提供的一种模型发布的用户界面的示意图。用户界面上呈现模型发布的各个阶段(包括接口发布、旁路测试、分流测试等阶段)以及模型的名称标识等信息,通过将控制组件(例如按钮)与各个阶段绑定,并基于各个阶段生成对应的事件,便于用户通过用户界面控制模型发布的进程,实现一站式完成模型发布。模型的名称标识是模型的唯一标识以及模型接口的唯一标识,因此需要基于模型的模型名称对模型接口进行发布,以区分不同模型的模型接口。在图2中可以看到模型的序号为“0001”,模型的名称为“活体检测”,模型的版本号为“20191211150200”,模型变更操作通过按钮组件分别进行停用、编辑、复制、删除等变更操作,变更操作指的是在流程进入某一阶段例如进入旁路测试阶段时,可以通过控制停用按钮,以使旁路测试进入停用状态,通过表更操作提高对模型发布流程管控的灵活程度。通过按钮组件进行流程管控,如模型发布、旁路测试、分流测试、回退等步骤,为了对模型进行评估,增加对模型的稳定性的评估,也就是通过控制组件发起稳定性评估。作为一种实施方式,可以对同一模型的不同版本通过用户界面便于用户进行选择并进行控制,图2中以“实验版”、“稳定版”、“稳定版历史”三个不同版本分别进行上述操作。模型名称、版本名称等根据实际需要进行,并不唯一。

可以理解的是,在开启对模型的发布之前,需要对需要进行发布的模型进行注册,注册过程包括:将模型上传到对象存储服务系统(Object Storage Service,OSS)中,利用分布式版本控制系统(例如Git系统)将模型的运行代码提交到代码仓库(例如Gitlab)中。将OSS中的模型进行命名并选择模型的运行模式,运行模式包括PMML(预言模型标记语言,Predictive Model Markup Language)格式,Torchscript格式,Keras H5格式,Frozen Pb格式,BladeModel格式或者Caffe模式,具体模式的选用根据实际情况进行选择。将OSS中的模型信息插入到数据库中进行存储,供本申请中进行模型发布时使用。

可以理解的是,实现步骤S1之前也就是在发布模型接口之间,需要对模型发布需要的模型资源进行配置,模型资源包括:处理器种类、处理器的核数、模型发布需要的内存、模型需要的实例数等。对模型资源进行配置能够保证在发布模型的过程中资源充足,避免出现因诸如内存不够、实例数不够等原因引起的模型发布失败的情况。

请参看图3,图3为本申请实施例提供的一种模型接口发布的步骤的流程图。可选地,步骤S1包括以下分步骤:

步骤S11:基于Vscode对模型的模型代码进行显示得到模型代码显示结果。

步骤S12:当模型代码显示结果表明模型代码加载正确时,对模型代码进行构建得到构建结果。

作为一种实施方式,可以使用Pyhton对代码进行构建,基于步骤S11中的Vscode能够对构建结果以及构建日志进行实时显示,便于用户实时查看构建结果。可以理解的是代码构建能够在不改变模型代码的代码行为的情况下对模型代码的结构进行调整优化,降低修改模型代码的修改成本。

步骤S13:当构建结果表明显示模型代码编译正确时,制作模型的基础镜像。

作为一种实施方式,在构建结果表明模型代码编译正确时,可以基于Docker制作模型的基础镜像。步骤S15中的模型镜像是基于基础镜像来构建的,选择的基础镜像越高级,进行模型发布时底层工作就越简单。比如,构建一个Java应用模型的镜像时,选择一个openjdk的镜像作为基础镜像比选择一个alpine镜像作为基础镜像在发布该应用模型时的底层工作少。

可以理解的是,不同类型的模型在制作基础镜像时的方法不同,例如对机器学习模型构建基础镜像时,可以基于Python的不同版本进行镜像制作。在对深度学习模型构建基础镜像时,则基于Python的不同版本、计算框架(如Mxnet、Caffe、Pytorch或者Tensorflow等)的不同版本、不同计算模块CPU(Central Processing Unit Processor,中央处理器)、GPU(Graphics Processing Unit,图形处理器)进行组合,形成深度学习模型的不同基础镜像,比如基于环境为3.6的Python版本(py36-pytorch1.1-cudda10.0)、版本为1.1的Pytorch以及计算版本为cudda10.0的CPU以及计算版本为cudda10.0的GPU创建基础镜像。

步骤S14:基于基础镜像、模型代码携带的依赖包列表以及模型代码构建模型镜像。

可以理解的是,将模型代码从步骤S1相关描述中的代码仓进行加载并基于Vscode进行显示的过程中,会携带模型运行的依赖包列表,依赖包列表中每个依赖包的版本不同。作为一种实施方式,依赖包列表的代码可以如下所示:

pip=20.2.2

bump2version==10.0.0

wheel==0.35.1

watchdog==0.10.3

flake8==3.8.3

tox==3.19.0

coverage==5.2.1

Sphinx=3.2.1

twine==3.2.0

Click==7.1.2

pytest==6.0.1

pytest-runner==5.2

pandas==1.1.1

PyYAML==5.3.1

scikit-learn==0.23.2

sphinx-copybutton==0.3.0

sphinx_glpi_theme==0.3

作为一种实施方式,在构建模型镜像时,首先,动态创建Dockfile文件,Dockfile文件能够用于编写模型镜像生成过程。其次,编写从基础镜像开始构建模型镜像的命令,例如基础镜像是py36-pytorch1.1-cudda10.0,则编写命令FROM py36-pytorch1.1-cudda10.0。再次,将模型代码进行挂载,例如模型代码在目录/opt/credit_v2下,则编写命令,ADD/opt/credit_v2/opt。最后,基于Docker中的docker build方法对Dockfile文件进行构建以得到模型镜像。

从步骤S13中得到的基础镜像开始打新的镜像,比如基础镜像是py36-pytorch1.1-cudda10.0,则编写命令FROM py36-pytorch1.1-cudda10.0

步骤S15:基于模型镜像中的实例数目对模型镜像进行运行以完成对模型接口的发布,得到模型接口发布结果。

可以理解的是,基于步骤S1相关描述中的模型资源配置,采用Docker中的dockerrun方法对模型镜像进行运行,则完成对模型接口的发布,并得到模型发布结果。

在步骤S11-S15中,可以理解的是,Vscode是一个在线版的IDE(IntegratedDevelopment Environment,集成开发环境),能够对模型代码进行显示并实现模型代码的错误提示和高亮提示,使用户能够直观的看到模型代码以及模型代码的编译结果,在模型代码出现加载错误或者编译错误的时候,能够针对错误提示以及高亮提示修改模型代码,提高模型接口发布的效率。

作为一种实施方式,在完成对模型接口发布的流程之后,可以对模型接口进行测试,参看图4,图4为本申请实施例提供的一种模型接口测试界面的示意图。在图4中通过“发送请求”按钮发起测试模型接口请求,在获取模型接口测试结果之后,将模型接口测试结果返回在“调用返回”区域中。

步骤S2:在接口发布结果显示模型接口成功发布时,开启模型的旁路模型进行旁路测试并得到旁路测试结果。

请参看图5,图5为本申请实施例提供的一种对模型进行旁路测试的步骤的流程图。可选地,步骤S2包括以下分步骤:

步骤S21:对获取的在模型中进行运行的数据进行模拟得到模拟数据。

可以理解的是,获取的模型可以处于禁用状态,对禁用的模型进行开启之后,模型可以进入旁路测试过程,也可以回归禁用状态。作为一种实施方式,对开启状态的模型进行禁用可以通过直接禁用或者模型代码修改的方式。

请参看图6,图6为本申请实施例提供的一种模型发布流程的框图示意图。作为一种实施方式,模型发布开始后,模型可以是模型开发人员新建的模型也可以是复制的已经上线的模型,模型刚开始的状态为停用状态,在对停用状态的模型开启之后,模型进入启用状态,随后对模型开启旁路测试,在完成模型旁路测试之后开启分流测试,在分流测试结果显示模型符合发布条件时,将分流测试结果同步到稳定版本模型并发布稳定版本模型,模型发布结束。其中,开启旁路测试之后,模型发布流程可以进入停用状态,开启分流测试之后模型发布流程可以进入停用状态,发布稳定版本模型之后也可以进入停用状态。

步骤S22:在调用旁路模型的节点处创建异步请求队列,并将对旁路模型进行调用的请求存储在异步请求队列中。

可以理解的是,创建异步请求队列能够将不同旁路中的旁路测试请求进行有序执行。

步骤S23:在异步请求队列中调取请求并基于模拟数据对旁路模型进行执行得到旁路测试结果。

在步骤S21-S23中,可以理解的是,进行旁路测试时,对模型中运行的数据进行模拟(mock),通过mock在模型中运行的数据得到与所述在模型中运行的数据相同的数据也就是模拟数据,通过所述模型的旁路模型对所述模型中进行运行的数据进行模拟得到模拟数据。能够在基于模拟数据对旁路模型进行旁路测试的过程中能够对旁路模型的结果和中间过程生成记录日志作为测试参考直到以后的模型开发和模型发布,并且不会对模型的发布不产生影响,能够提高模型发布的可靠性。

步骤S3:基于旁路测试结果对模型进行分流测试得到分流测试结果。

请参看图7,图7为本申请实施例提供的一种对模型进行分流测试的步骤的流程图。可选地,步骤S3包括以下分步骤:

步骤S31:在旁路测试结果显示旁路模型运行正确时,获取旁路测试的数据条数以及旁路测试结果。

可以理解的是,在获取旁路测试的数据条数以及旁路测试结果时后,证明已将完成了旁路测试,为了确保模型的可靠性,在旁路测试完成后进入分流测试。

步骤S32:在获取旁路测试的数据条数以及旁路测试结果后,对获取的在模型中进行运行的数据设置分流比例。

作为一种实施方式,可以设置N(N≥2)个分流测试支路,每一个分流测试支路中的分流比例加起来是100%,分流比例可以根据实际情况进行设置,并不唯一。每一个分流支路中的都包含一个模型对应的分流模型。

步骤S33:基于分流比例得到模型的各个分流模型对应的分流数据。

步骤S34:基于各个分流数据分别对各个分流模型进行分流测试,得到各个分流模型对应的分流测试结果。

可以理解的是,分流测试结果会存入数据库中,用户可以根据分流测试结果分析模型的准确性。为了保证模型的准确性,需要模型执行一定量的模型实例,模型实例的数目可以根据实际情况设定,例如模型实例以100起。

作为一种实施方式,为了保证各个分流支路上的各个分流模型基于对应的分流数据进行的分流测试顺利执行,可以将各个请求分流测试的请求发送到已经创建的分流测试队列中,在进行分流测试时,从分流测试队列中调用各个请求,命令完成对各个不同分流模型的分流测试,并将各个分流模型的分流测试结果和中间过程进行储存。

步骤S4:当分流测试结果显示模型符合发布条件时,发布模型得到稳定版本模型。

可以理解的是,发布条件可以是当模型的稳定性指标例如PSI(PopulationStability Index,人群的偏移度)大于0.1时,认为模型符合发布条件,则对模型进行发布得到稳定模型版本。

请参看图8,图8为本申请实施例提供的一种模型退回的步骤的流程图。可选地,在步骤S4之后,所述模型发布的方法还包括步骤S5,步骤S5包括以下分步骤:

步骤S52:获取稳定版本模型的模型性能指标以及模型性能指标对应的数据。

可以理解的是,模型性能指标包括模型稳定性、模型指标、模型耗时、模型错误量、模型超时量以及模型拒绝量、模型调用次数等指标。

步骤S53:读取已设置的模型预警规则,并基于模型性能指标对应的数据执行预警规则得到预警结果。

步骤S54:当预警结果显示模型满足预警条件时,基于预警结果生成预警信息并发送预警信息。

在步骤S53-54中,模型预警规则可以根据实际情况进行设置,并不唯一。作为一种实施方式,模型预警规则可以设置为“模型调用次数>5”,基于步骤S52中获得的模型调用次数,判断模型调用次数是否满足模型预警规则“模型调用次数>5”,当模型调用次数小于5或者等于5时,不需要生成预警信息并发送预警信息。当模型调用次数大于5时,生成预警信息例如“模型调用次数过多,请检查”。可以通过短信、微信、钉钉等方式将预警信息发送给用户。

步骤S55:将稳定版本模型进行回退,循环执行基于模型的模型名称对模型的模型接口进行发布,得到接口发布结果至当分流测试结果显示模型符合发布条件时,发布模型得到稳定版本模型的步骤。

可以理解的是,在步骤S54中已经发布预警信息的情况下,可以将稳定版本模型进行回退,以及时撤回出现问题的该稳定版本模型,提高模型发布的可靠性。

作为一种实施方式,执行步骤S55中回退方案,可以将稳定版本进行回退,循环执行步骤S1-S4,但是模型镜像可以通过Docker中docker run方法执行不同于步骤S15中的其他模型镜像。

可选地,在步骤S52之前,步骤S5还包括:

步骤S51:基于Scala以及运算符对预警规则进行编码得到模型预警规则代码,并将模型预警代码进行封装得到预警规则接口。

可以理解的是,运算符包括:“+”(加)、“-”(减)、“*”(乘)、/(除)、“avg”(平均值)、“abs”(绝对值)、“sum”(求和)、“sqrt”(平方根)、“min”(最小值)、“max”(最大值)等算数运算符以及“>”(大于)、“<”(小于)、“>=”(大于等于)、“<=”(小于等于)、“==”(等于)、“true”(真)、“false”(假)、“or”(或)、“and”(与)以及“not”(非)等逻辑运算符。

作为一种实施方式,可以通过public boolean getBool方法开发预警规则接口中的逻辑接口,通过public boolean getValue开发预警规则接口中的数值接口。

可以理解的是,通预警规则接口中的逻辑接口读取预警规则之后,通过数值接口调用模型性能指标对应的数据,将获取到的预警规则和模型性能指标对应的数据组装成Map并通过getBool方法得到布尔预警信息,布尔预警信息为是时,表示需要进行预警。布尔预警信息为否时,表示不需要预警信息。

可以理解的是,在步骤S1-S5中,能够一站式完成模型的发布,打破了模型开发和模型发布之间的技术壁垒,降低了模型开发者与模型发布者之间的沟通成本,能够在确保模型发布准确度的情况下,降低模型发布的成本。并且将模型发布过程分为模型接口发布、旁路测试以及分流测试过程,对每一个过程进行监控以实现对模型发布的监控,避免在模型发布过程中出现由于模型出现雾引起的生产事故,提高模型发布的可靠性。可以理解的是,旁路测试、分流测试以及稳定版本模型发布都可以随时通过用户页面设置进入禁用状态,能够提高模型发布的灵活性。

作为一种实施方式,可以通过可视化的方式进行预警规则的配置的页面示意图。请参看图9,图9为本申请实施例提供的一种进行预警规则配置的页面示意图。在图9中可以对规则对预警规则分等级,例如红色等级为最高等级,最高等级表示最紧急的状态,需要用户高度重视处理。红色等级之后依次为橙色等级、黄色等级、蓝色等级。等级的设置根据实际情况设置,并不唯一。在图9中的各个可下拉列表中选择模型的各种指标,例如模型失败次数、模型调用次数、模型耗时、模型错误量、模型稳定性等,并通过添加按钮将指标与运算符进行组合生成预警规则显示在文本框中进行显示,并对预警消息推送方式进行选择。并能通过输入时间段,对预警规则的生效时间进行设定。

请参看图10,图10为本申请实施例提供的一种模型发布装置的示意图。模型发布装置60包括:

接口发布模块601,用于基于模型的模型名称对模型的模型接口进行发布,得到接口发布结果。

旁路测试模块602,用于在接口发布结果显示模型接口成功发布时,开启模型的旁路模型进行旁路测试并得到旁路测试结果。

分流测试模块603,用于基于旁路测试结果对模型进行分流测试得到分流测试结果。

版本发布模块604,用于当分流测试结果显示模型符合发布条件时,发布模型得到稳定版本模型。

可选地,接口发布模块601用于:

基于Vscode对模型的模型代码进行显示得到模型代码显示结果;

当模型代码显示结果表明模型代码加载正确时,对模型代码进行构建得到构建结果;

当构建结果表明显示模型代码编译正确时,制作模型的基础镜像;

基于基础镜像、模型代码携带的依赖包列表以及模型代码构建模型镜像;

基于模型镜像中的实例数目对模型镜像进行运行以完成对模型接口的发布,得到模型接口发布结果。

可选地,旁路测试模块602用于:

对获取的在模型中进行运行的数据进行模拟得到模拟数据;

在调用旁路模型的节点处创建异步请求队列,并将对旁路模型进行调用的请求存储在异步请求队列中;

在异步请求队列中调取请求并基于模拟数据对旁路模型进行执行得到旁路测试结果。

可选地,分流测试模块603用于:

在旁路测试结果显示旁路模型运行正确时,获取旁路测试的数据条数以及旁路测试结果;

在获取旁路测试的数据条数以及旁路测试结果后,对获取的在模型中进行运行的数据设置分流比例;

基于分流比例得到模型的各个分流模型对应的分流数据;

基于各个分流数据分别对各个分流模型进行分流测试,得到各个分流模型对应的分流测试结果。

可选地,模型发布装置60还包括预警回退模块605,预警回退模块605用于:

获取稳定版本模型的模型性能指标以及模型性能指标对应的数据;

读取已设置的模型预警规则,并基于模型性能指标对应的数据执行预警规则得到预警结果;

当预警结果显示模型满足预警条件时,基于预警结果生成预警信息并发送预警信息;

将稳定版本模型进行回退,循环执行基于模型的模型名称对模型的模型接口进行发布,得到接口发布结果至当分流测试结果显示模型符合发布条件时,发布模型得到稳定版本模型的步骤。

可选地,预警回退模块605用于:

基于Scala以及运算符对预警规则进行编码得到模型预警规则代码,并将模型预警代码进行封装得到预警规则接口。

本实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任意方法中的步骤。

本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行上述任意方法中的步骤。本实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行上述任意方法中的步骤。

综上所述,本申请的实施例提供了一种模型发布方法、装置、电子设备及存储介质,涉及数据处理技术领域,所述模型发布方法包括:基于模型的模型名称对所述模型的模型接口进行发布,得到接口发布结果。在所述接口发布结果显示所述模型接口成功发布时,开启所述模型的旁路模型进行旁路测试并得到旁路测试结果。基于所述旁路测试结果对所述模型进行分流测试得到分流测试结果。当所述分流测试结果显示所述模型符合发布条件时,发布所述模型得到稳定版本模型。

在上述实现过程中,将模型发布过程分为模型接口发布、旁路测试以及分流测试过程,通过模型接口发布、旁路测试以及分流测试过程能够对模型发布的过程进行监控,提高模型监控的可靠性。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 网络模型的发布方法及装置、存储介质、电子设备
  • 模型发布方法、模型部署方法、装置、设备及存储介质
技术分类

06120112966009